Skip to content
Next — unreleased

Defined in: packages/sage/src/fleets/actions/add-ship.ts:24

Explicit address-only selection of escrowed ships for an owned Docked Fleet.

declare const profile: Address, authority: Address;
const options: PlanAddShipToFleetOptions = {authorization:{profile,authority,keyIndex:0},shipId:1,amount:1n};

readonly amount: bigint;

Defined in: packages/sage/src/fleets/actions/add-ship.ts:27

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/add-ship.ts:25

readonly shipId: number;

Defined in: packages/sage/src/fleets/actions/add-ship.ts:26


Defined in: packages/sage/src/fleets/actions/create-fleet.ts:24

Address-only options for creating an empty Fleet at an existing own-faction StarbasePlayer.

declare const profile:Address, authority:Address, system:Address;
const options:PlanCreateFleetOptions={authorization:{profile,authority,keyIndex:0},system,label:'Scout'};

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/create-fleet.ts:25

readonly label: string;

Defined in: packages/sage/src/fleets/actions/create-fleet.ts:27

readonly system: Address;

Defined in: packages/sage/src/fleets/actions/create-fleet.ts:26


Defined in: packages/sage/src/fleets/actions/ship-import.ts:61

Exact whole ships to import under one explicit configuration ID. Optional escrow creation requires an explicit payer; it never registers onboarding accounts.

declare const owner: Address;
declare const authorization: PlanAuthorization;
const options: PlanDepositShipsToGameOptions = { shipId: 1, amount: 2n, owner, authorization };

readonly amount: bigint;

Defined in: packages/sage/src/fleets/actions/ship-import.ts:63

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/ship-import.ts:65

readonly optional escrowAccount?: {
mode: "create-if-missing";
payer: Address;
};

Defined in: packages/sage/src/fleets/actions/ship-import.ts:67

readonly mode: "create-if-missing";
readonly payer: Address;

readonly owner: Address;

Defined in: packages/sage/src/fleets/actions/ship-import.ts:64

readonly shipId: number;

Defined in: packages/sage/src/fleets/actions/ship-import.ts:62

readonly optional source?: Address;

Defined in: packages/sage/src/fleets/actions/ship-import.ts:66


Defined in: packages/sage/src/fleets/actions/crew-transfer.ts:18

Direct player authorization and the positive count for ordinary Docked Fleet crew transfer.

declare const authorization: PlanAuthorization;
const options: PlanFleetCrewTransferOptions = { authorization, count: 1 };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/crew-transfer.ts:19

readonly count: number;

Defined in: packages/sage/src/fleets/actions/crew-transfer.ts:20


Defined in: packages/sage/src/fleets/actions/disband.ts:28

Explicit address-only authorization for disbanding an owned Docked Fleet.

declare const profile: Address, authority: Address;
const options: PlanFleetDisbandOptions = { authorization: { profile, authority, keyIndex: 0 } };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/disband.ts:29


Defined in: packages/sage/src/fleets/actions/index.ts:130

Inputs for planning one idle-to-docked Fleet transition.

declare const authorization: PlanAuthorization;
const options: PlanFleetDockOptions = { authorization };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/index.ts:131


Defined in: packages/sage/src/fleets/actions/respawn.ts:17

Direct player authorization and the faction CSS System for explicit timed recovery.

declare const authorization: PlanAuthorization, system: Address;
const options: PlanFleetRespawnOptions = { authorization, system };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/respawn.ts:18

readonly system: Address;

Defined in: packages/sage/src/fleets/actions/respawn.ts:19


Defined in: packages/sage/src/fleets/actions/index.ts:199

Explicit authority for a completed Fleet journey, separate from the fee payer.

Requires direct Profile authorization for current Game subwarp. Certificates are not supported for arrival.

declare const authorization: PlanAuthorization;
const options: PlanFleetSettleArrivalOptions = { authorization };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/index.ts:200


Defined in: packages/sage/src/fleets/actions/index.ts:211

Inputs for stopping one Fleet subwarp early.

declare const authorization: PlanAuthorization;
const options: PlanFleetStopSubwarpOptions = { authorization };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/index.ts:212


Defined in: packages/sage/src/fleets/actions/index.ts:118

Inputs for planning one docked-to-idle Fleet transition.

declare const authorization: PlanAuthorization;
const options: PlanFleetUndockOptions = { authorization };

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/index.ts:119


Defined in: packages/sage/src/fleets/actions/index.ts:183

Inputs for planning one explicit connected-system Fleet warp.

declare const authorization: PlanAuthorization;
declare const destinationSystem: Address;
const options: PlanFleetWarpLaneOptions = {
authorization,
destinationSystem,
};

readonly authorization: PlanAuthorization;

Defined in: packages/sage/src/fleets/actions/index.ts:184

readonly destinationSystem: Address;

Defined in: packages/sage/src/fleets/actions/index.ts:185

type FleetDockDebitBounds =
| {
reason: | DockBoundsUnavailableReason
| "not-fleet-dock"
| "multiple-fleet-docks"
| "combined-plan";
status: "unavailable";
toJSON: unknown;
}
| {
fleet: Address;
maximumFleetGrowthBytes: 40;
maximumProfileDebit: bigint;
profile: Address;
profileUnit: "lamports";
starbasePlayer: Address;
status: "available";
transactionFees: "excluded";
toJSON: unknown;
};

Defined in: packages/sage/src/fleets/actions/dock-bounds.ts:19

Conservative gross Profile storage debit for qualified ordinary docking. Surplus and refunds are not credited; unavailable never implies zero cost.

declare const bounds: FleetDockDebitBounds;
if (bounds.status === 'available') console.log(bounds.maximumProfileDebit);

type PlanFleetCoordinateMovementOptions =
| {
authorization: PlanAuthorization;
destination: FleetSnapshot["location"];
destinationRaw?: never;
}
| {
authorization: PlanAuthorization;
destination?: never;
destinationRaw: {
x: bigint;
y: bigint;
};
};

Defined in: packages/sage/src/fleets/actions/index.ts:156

Inputs for planning one explicit coordinate-destination Fleet movement.

Choose exactly one representation. destination accepts display numbers and applies the generated I8F56 codec’s rounding. destinationRaw preserves an exact signed-I8F56 value, such as a Star System’s coordinatesRaw.

declare const authorization: PlanAuthorization;
declare const destinationSystem: {
readonly coordinatesRaw: { readonly x: bigint; readonly y: bigint };
};
const displayOptions: PlanFleetCoordinateMovementOptions = {
authorization,
destination: { x: 12, y: -7 },
};
const exactOptions: PlanFleetCoordinateMovementOptions = {
authorization,
destinationRaw: destinationSystem.coordinatesRaw,
};

function getFleetDockDebitBounds(plan): FleetDockDebitBounds;

Defined in: packages/sage/src/fleets/actions/dock-bounds.ts:51

Inspects the persisted docking ceiling without network I/O. Inspect individual Plans before combining distinct Fleets. Fresh pre-sign checks are not an atomic on-chain spending cap; state can change before landing.

ParameterType
planPlan

FleetDockDebitBounds

declare const plan: Plan;
const bounds = getFleetDockDebitBounds(plan);
if (bounds.status === 'available') console.log(bounds.maximumProfileDebit);

function planAddShipToFleet(
ctx,
fleet,
input): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/add-ship.ts:90

Plans one singleton transfer of an exact ship configuration from StarbasePlayer entitlement to an owned Docked Fleet. Follows the program’s assembly rules for ships of any size: each ship must be within the Character’s maximum ship size and its research tags must all be held; the resulting Fleet’s points (XXS 1, XS 4, Small 9, Medium 16, Large 25, Capital 36, Commander 49, Titan 128) must fit both the Character’s Fleet size and the Game limit, with at most one Titan and two Commanders and Titans together. Escrowed hulls of any configuration of the same ship count, as the program re-tags them. A configuration’s components, times the amount, move from the StarbasePlayer’s cargo into the Fleet’s components, where they stay; the StarbasePlayer must hold them all. Any Starbase with a current StarbasePlayer of the Fleet’s faction works. Fleets built under older ship definitions are not planned; sync those with planSyncFleetWithGame first. The explicit ship ID must be a u16 and the whole ship amount must be 1n through 255n. Uses a direct Profile AUTH key or a manageFleet key scoped to SAGE or the Fleet; a positive Profile rent shortfall additionally requires vault-funding permission. No token transfer or onboarding occurs. A rented Fleet is refused, as is a Fleet whose HP plus pending repair cannot reach its maximum; the program also needs full AP and SP, which recover on timers and stay chain-authoritative. Final stats, research, refresh and outcomes remain chain-authoritative. Simulate before signing. The observed debit ceiling is rechecked before signing and is not an atomic on-chain spending cap. Two assembly Plans for the same Profile cannot compose because they share funds and assembly state.

ParameterType
ctxSageContext
fleetAddress
inputPlanAddShipToFleetOptions

Promise<Plan>

declare const ctx:SageContext, fleet:Address, profile:Address, authority:Address;
const plan = await planAddShipToFleet(ctx,fleet,{authorization:{profile,authority,keyIndex:0},shipId:1,amount:1n});
console.log(plan.describe());

function planCreateFleet(ctx, input): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/create-fleet.ts:69

Plans a standalone empty Docked Fleet, without signing or submitting. Derives all account addresses from the configured Game, Profile, exact label and System. Accepted label bytes are preserved. Requires an existing own-faction StarbasePlayer, a direct Profile AUTH or SAGE manageFleet key, and available stored Character capacity. The Profile pays only the Fleet target’s rent shortfall; a non-AUTH key needs drainSolVault only for a positive debit. The observed debit is checked again before signing; it is not an atomic on-chain spending cap. Final rent and funding remain chain-authoritative. No implicit key grants, registration or funding occurs. Final modifier refresh and deployed eligibility remain chain-authoritative: simulate before signing. Creation Plans for the same Character cannot be combined.

ParameterType
ctxSageContext
inputPlanCreateFleetOptions

Promise<Plan>

declare const ctx:SageContext, profile:Address, authority:Address, system:Address;
const plan=await planCreateFleet(ctx,{authorization:{profile,authority,keyIndex:0},system,label:'Scout'});
console.log(plan.describe());

function planDepositShipsToGame(
ctx,
starbase,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/ship-import.ts:189

Plans importing whole ship tokens into a registered player’s CSS ship escrow. Requires direct Profile AUTH and token-owner authorization. The Profile vault funds any StarbasePlayer storage shortfall; an explicit ATA payer funds optional escrow creation. Fees are separate. No Fleet is created and no signer is retained.

ParameterType
ctxSageContext
starbaseShipImportStarbaseIntent
optionsPlanDepositShipsToGameOptions

Promise<Plan>

declare const ctx: SageContext;
declare const starbase: import('@aephia/atlas-kit/starbases').StarbasePlayerSnapshot;
declare const options: PlanDepositShipsToGameOptions;
const plan = await planDepositShipsToGame(ctx, starbase, options);
console.log(plan.describe());

function planFleetCompleteRespawn(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/respawn.ts:130

Prepares timed completion only after the stored Respawn end time according to chain Clock. Uses the explicit Respawn-to-Docked route; never pays to bypass the timer. Refresh confirmed state to establish arrival at the faction CSS; simulation is not confirmation.

ParameterType
ctxSageContext
fleetAddress
optionsPlanFleetRespawnOptions

Promise<Plan>

declare const ctx: SageContext, fleet: Address, options: PlanFleetRespawnOptions;
const plan = await planFleetCompleteRespawn(ctx, fleet, options);
console.log(plan.describe());

function planFleetDisband(
ctx,
fleet,
input): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/disband.ts:70

Plans disbanding an owned Docked Fleet, the game’s only way to take a Fleet apart. Verified against the program’s behaviour: the Fleet’s ships return to the StarbasePlayer’s hangar where it is Docked, its crew to that StarbasePlayer, and its fuel, ammo, cargo hold and components merge into the StarbasePlayer’s cargo. The Character’s Fleet slot is freed and the Fleet closes, refunding its rent to the Profile. To replace a composition, disband, confirm, then plan planCreateFleet and planAddShipToFleet from fresh state; disband and creation for the same Character cannot be combined.

The Fleet must be a canonical owned player Fleet, not rented, Docked at a Starbase where the Character has a current StarbasePlayer of its faction, fully repaired, with no warp or scan cooldown running. The program also needs full AP and SP, which recover on timers and stay chain-authoritative. Uses a direct Profile AUTH key or a manageFleet key scoped to SAGE or the Fleet. New hangar entries and cargo lines grow the StarbasePlayer, and the program funds that growth from the Profile vault; that debit is bounded and rechecked before signing, but it is not an atomic on-chain spending cap. Any change to the Fleet after planning refuses the Plan. Simulate before signing, then read the StarbasePlayer back after confirmation.

ParameterType
ctxSageContext
fleetAddress
inputPlanFleetDisbandOptions

Promise<Plan>

declare const ctx: SageContext, fleet: Address, profile: Address, authority: Address;
const plan = await planFleetDisband(ctx, fleet, { authorization: { profile, authority, keyIndex: 0 } });
console.log(plan.describe());

function planFleetDock(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1713

Plans one explicit Fleet dock without signing, simulation, or write RPC.

The planner accepts a loaded idle or refreshable warp Fleet snapshot, resolves the only canonical Character, Star System at its action coordinate, and Starbase Player internally, and returns one inspectable idle-to-docked Plan. A subwarp snapshot is refused: the dock step refreshes the Fleet without its Character and cannot settle a subwarp journey, so settle the arrival or stop the subwarp first.

Docking is admitted when the Starbase Player belongs to the Starbase’s controlling faction, whatever the territory and economics settings. A foreign Starbase Player is refused while territory access is off; foreign docking under territory access and dynamic-faction Starbases are refused as unsupported.

ParameterType
ctxSageContext
fleetFleetSnapshot
optionsPlanFleetDockOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const authorization: PlanAuthorization;
const plan = await planFleetDock(ctx, fleet, { authorization });
console.log(plan.describe());

function planFleetSettleArrival(
ctx,
fleet,
input): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1427

Plans settlement after chain time confirms the scheduled Fleet journey duration has elapsed.

Game version 2 subwarp requires explicit direct Profile authorization and existing reconciled Career XP accounts. Warp settlement is unsupported. Journeys whose scheduled duration has not elapsed and Idle Fleets fail locally. Planning and execution read fresh accounts; no host clock is used.

Settlement does not guarantee reaching the destination: insufficient Fuel can leave the Fleet Idle short of it. Low Fuel produces a planning-time warning, not a rejection. Inspect refreshed state and location after confirmation. Subwarp settles fuel and XP and may refund released storage rent to the Profile. Warp cooldown remains independent. Fresh checks cannot prevent a concurrent transaction from starting another journey before execution; the authorized instruction could stop that new journey. Intentional early stopping remains the separate planFleetStopSubwarp operation.

ParameterType
ctxSageContext
fleetFleetSnapshot
inputPlanFleetSettleArrivalOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const authorization: PlanAuthorization;
const plan = await planFleetSettleArrival(ctx, fleet, { authorization });
console.log(plan.describe());

function planFleetStartRespawn(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/respawn.ts:113

Prepares explicit timed recovery for an owned Idle Fleet, including a zero-Fuel Fleet. Requires Character ATLAS for the current hull recovery fees. Never deposits funds, signs, submits, waits or automatically falls back from movement. Recovery may lose assets.

ParameterType
ctxSageContext
fleetAddress
optionsPlanFleetRespawnOptions

Promise<Plan>

declare const ctx: SageContext, fleet: Address, options: PlanFleetRespawnOptions;
const plan = await planFleetStartRespawn(ctx, fleet, options);
console.log(plan.describe());

function planFleetStopSubwarp(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1496

Plans an early Fleet subwarp stop without signing, simulation, or write RPC.

This operation stops an in-progress subwarp before arrival. Use planFleetSettleArrival for a trip already known to have completed; callers should not deliberately stop a completed trip. An idle Fleet is still accepted so the program’s benign no-op handles the normal race where subwarp completes between planning and execution.

ParameterType
ctxSageContext
fleetFleetSnapshot
optionsPlanFleetStopSubwarpOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const authorization: PlanAuthorization;
const plan = await planFleetStopSubwarp(ctx, fleet, { authorization });
console.log(plan.describe());

function planFleetSubwarp(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1367

Plans one explicit Fleet subwarp to a display or exact raw coordinate without movement estimates.

A coordinate outside every Region is deep space and carries no Region hint. A player Fleet may cross deep space, but stopping there needs the Character’s High Risk zone access; NPC Fleets need none. The Plan guards only the Regions whose bounding boxes overlap the straight path’s, plus the Region count, so a Starbase capture or upgrade elsewhere leaves it valid.

ParameterType
ctxSageContext
fleetFleetSnapshot
optionsPlanFleetCoordinateMovementOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const authorization: PlanAuthorization;
const plan = await planFleetSubwarp(ctx, fleet, {
authorization,
destinationRaw: { x: 12n << 56n, y: -(7n << 56n) },
});

function planFleetUndock(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1577

Plans one explicit Fleet undock without signing, simulation, or write RPC.

The planner accepts a loaded Fleet snapshot, resolves its canonical Character, docked Star System, and Starbase Player internally, and returns one inspectable docked-to-idle Plan.

ParameterType
ctxSageContext
fleetFleetSnapshot
optionsPlanFleetUndockOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const authorization: PlanAuthorization;
const plan = await planFleetUndock(ctx, fleet, { authorization });
console.log(plan.describe());

function planFleetWarpLane(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1242

Plans one explicit connected-system Fleet warp without local economics estimates.

The planner resolves the source Star System from the Fleet’s action coordinate, proves connectivity from that System’s decoded connections, and resolves all generated instruction accounts internally. CurrencyCache shared accounting may change; canonical identity/layout and the existing toll-input guards remain checked before signing. The Regions containing the destination keep their owner, safety status and risk zone, which decide destination access; other Regions may change. Refresh and recreate older Plans to use these guards.

Connectivity does not guarantee eligibility. The program remains authoritative for faction-relationship and destination-risk checks and any ATLAS toll. Tested current PTR routes succeed with empty Fuel tanks. This planner does not estimate lane costs or treat enabled cross-faction economics as blanket permission.

ParameterType
ctxSageContext
fleetFleetSnapshot
optionsPlanFleetWarpLaneOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const destinationSystem: Address;
declare const authorization: PlanAuthorization;
const plan = await planFleetWarpLane(ctx, fleet, {
authorization,
destinationSystem,
});

function planFleetWarpToCoordinate(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/index.ts:1394

Plans one explicit Fleet coordinate warp to a display or exact raw coordinate without movement estimates.

A coordinate outside every Region is deep space and carries no Region hint. A player Fleet may cross deep space, but stopping there needs the Character’s High Risk zone access; NPC Fleets need none. The Plan guards only the Regions whose bounding boxes overlap the straight path’s, plus the Region count, so a Starbase capture or upgrade elsewhere leaves it valid.

ParameterType
ctxSageContext
fleetFleetSnapshot
optionsPlanFleetCoordinateMovementOptions

Promise<Plan>

declare const ctx: SageContext;
declare const fleet: FleetSnapshot;
declare const authorization: PlanAuthorization;
const plan = await planFleetWarpToCoordinate(ctx, fleet, {
authorization,
destinationRaw: { x: 12n << 56n, y: -(7n << 56n) },
});

function planLoadFleetCrew(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/crew-transfer.ts:115

Loads an explicit positive u16 crew count from the canonical StarbasePlayer into a directly owned Docked Fleet. Requires a direct Profile key with AUTH, or with the SAGE manage-crew permission scoped to SAGE or this Fleet; current ship definitions; no Character roster; and an absent or exact-neutral Fleet binding. Rented crew are unsupported. Available Starbase crew exclude busy crew; capacity includes required crew and passengers. Planning never signs or submits. This transfer must execute alone.

ParameterType
ctxSageContext
fleetAddress
optionsPlanFleetCrewTransferOptions

Promise<Plan>

declare const ctx: SageContext, fleet: Address, authorization: PlanAuthorization;
const plan = await planLoadFleetCrew(ctx, fleet, { authorization, count: 1 });
console.log(plan.describe());

function planSyncFleetWithGame(ctx, fleet): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/sync.ts:34

Plans the permissionless Fleet sync with the configured Game. Verified against the program’s behaviour: it rebuilds the Fleet’s ship counts and stats from the current ship definitions and caps its AP, SP, HP and pending repair at the new maxima, in any Fleet state. Run it, confirm it, then replan an action that refuses a Fleet built under older ship definitions, such as ship assembly, crew transfer or signal detection. deriveFleetCompositionStats projects the rebuilt stats beforehand.

Only the Game and the Fleet are involved: no Profile key signs it and no storage is funded, so any fee payer can submit it for any Fleet. A Fleet already on the current definitions only has its pools capped. Simulate before signing, then read the Fleet back after confirmation.

ParameterType
ctxSageContext
fleetAddress

Promise<Plan>

declare const ctx: SageContext, fleet: Address;
const plan = await planSyncFleetWithGame(ctx, fleet);
console.log(plan.describe());

function planUnloadFleetCrew(
ctx,
fleet,
options): Promise<Plan>;

Defined in: packages/sage/src/fleets/actions/crew-transfer.ts:133

Unloads an explicit positive u16 crew count from a directly owned Docked Fleet into its canonical StarbasePlayer. Unloading every crew member is allowed while Docked; departure requires reloading required crew. Supports the same ordinary-crew and direct-key boundary as loading. Execute separately and refresh after confirmation before preparing another transfer or movement.

ParameterType
ctxSageContext
fleetAddress
optionsPlanFleetCrewTransferOptions

Promise<Plan>

declare const ctx: SageContext, fleet: Address, authorization: PlanAuthorization;
const plan = await planUnloadFleetCrew(ctx, fleet, { authorization, count: 1 });
console.log(plan.describe());

Re-exports PlanAuthorization