@aephia/atlas-kit 0.6.0-next.7 → 0.6.0-next.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cargo/actions/deposit.d.ts +1 -1
- package/dist/cargo/actions/deposit.d.ts.map +1 -1
- package/dist/cargo/actions/deposit.js +25 -12
- package/dist/cargo/actions/deposit.js.map +1 -1
- package/dist/cargo/actions/index.d.ts.map +1 -1
- package/dist/cargo/actions/index.js +3 -2
- package/dist/cargo/actions/index.js.map +1 -1
- package/dist/cargo/actions/wallet-token.d.ts +1 -1
- package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-token.js +1 -9
- package/dist/cargo/actions/wallet-token.js.map +1 -1
- package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
- package/dist/cargo/actions/withdrawal.js +22 -10
- package/dist/cargo/actions/withdrawal.js.map +1 -1
- package/dist/claim-stakes/actions/index.d.ts +13 -0
- package/dist/claim-stakes/actions/index.d.ts.map +1 -1
- package/dist/claim-stakes/actions/index.js +87 -37
- package/dist/claim-stakes/actions/index.js.map +1 -1
- package/dist/client/contracts.d.ts +16 -6
- package/dist/client/contracts.d.ts.map +1 -1
- package/dist/client/errors.d.ts +6 -2
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +31 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/rpc-subscription-provider.d.ts +35 -0
- package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
- package/dist/client/rpc-subscription-provider.js +190 -0
- package/dist/client/rpc-subscription-provider.js.map +1 -0
- package/dist/combat/actions/index.d.ts.map +1 -1
- package/dist/combat/actions/index.js +98 -50
- package/dist/combat/actions/index.js.map +1 -1
- package/dist/crafting/actions/index.d.ts.map +1 -1
- package/dist/crafting/actions/index.js +49 -29
- package/dist/crafting/actions/index.js.map +1 -1
- package/dist/crafting/index.d.ts +24 -2
- package/dist/crafting/index.d.ts.map +1 -1
- package/dist/crafting/index.js +31 -2
- package/dist/crafting/index.js.map +1 -1
- package/dist/factions/actions/index.d.ts +1 -0
- package/dist/factions/actions/index.d.ts.map +1 -1
- package/dist/factions/actions/index.js.map +1 -1
- package/dist/factions/index.d.ts +1 -1
- package/dist/factions/index.d.ts.map +1 -1
- package/dist/factions/index.js +1 -1
- package/dist/factions/index.js.map +1 -1
- package/dist/factions/profile-faction.d.ts +20 -8
- package/dist/factions/profile-faction.d.ts.map +1 -1
- package/dist/factions/profile-faction.js +20 -8
- package/dist/factions/profile-faction.js.map +1 -1
- package/dist/fleets/actions/add-ship.d.ts +35 -0
- package/dist/fleets/actions/add-ship.d.ts.map +1 -0
- package/dist/fleets/actions/add-ship.js +149 -0
- package/dist/fleets/actions/add-ship.js.map +1 -0
- package/dist/fleets/actions/create-fleet.d.ts +36 -0
- package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
- package/dist/fleets/actions/create-fleet.js +138 -0
- package/dist/fleets/actions/create-fleet.js.map +1 -0
- package/dist/fleets/actions/crew-transfer.d.ts +41 -0
- package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
- package/dist/fleets/actions/crew-transfer.js +114 -0
- package/dist/fleets/actions/crew-transfer.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +34 -15
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +168 -109
- package/dist/fleets/actions/index.js.map +1 -1
- package/dist/fleets/actions/respawn.d.ts +38 -0
- package/dist/fleets/actions/respawn.d.ts.map +1 -0
- package/dist/fleets/actions/respawn.js +122 -0
- package/dist/fleets/actions/respawn.js.map +1 -0
- package/dist/fleets/actions/ship-import.d.ts +48 -0
- package/dist/fleets/actions/ship-import.d.ts.map +1 -0
- package/dist/fleets/actions/ship-import.js +330 -0
- package/dist/fleets/actions/ship-import.js.map +1 -0
- package/dist/fleets/cooldown.d.ts +44 -0
- package/dist/fleets/cooldown.d.ts.map +1 -0
- package/dist/fleets/cooldown.js +43 -0
- package/dist/fleets/cooldown.js.map +1 -0
- package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
- package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
- package/dist/fleets/coordinate-warp-estimate.js +46 -0
- package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
- package/dist/fleets/index.d.ts +5 -0
- package/dist/fleets/index.d.ts.map +1 -1
- package/dist/fleets/index.js +5 -0
- package/dist/fleets/index.js.map +1 -1
- package/dist/fleets/movement-arithmetic.d.ts +21 -0
- package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
- package/dist/fleets/movement-arithmetic.js +41 -0
- package/dist/fleets/movement-arithmetic.js.map +1 -0
- package/dist/fleets/subwarp-estimate.d.ts +70 -0
- package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
- package/dist/fleets/subwarp-estimate.js +38 -0
- package/dist/fleets/subwarp-estimate.js.map +1 -0
- package/dist/fleets/warp-lane-estimate.d.ts +59 -0
- package/dist/fleets/warp-lane-estimate.d.ts.map +1 -0
- package/dist/fleets/warp-lane-estimate.js +36 -0
- package/dist/fleets/warp-lane-estimate.js.map +1 -0
- package/dist/fleets/warp-lane-toll.d.ts +55 -0
- package/dist/fleets/warp-lane-toll.d.ts.map +1 -0
- package/dist/fleets/warp-lane-toll.js +79 -0
- package/dist/fleets/warp-lane-toll.js.map +1 -0
- package/dist/identity/actions/create-profile.d.ts +56 -0
- package/dist/identity/actions/create-profile.d.ts.map +1 -0
- package/dist/identity/actions/create-profile.js +139 -0
- package/dist/identity/actions/create-profile.js.map +1 -0
- package/dist/identity/actions/index.d.ts +4 -3
- package/dist/identity/actions/index.d.ts.map +1 -1
- package/dist/identity/actions/index.js +49 -27
- package/dist/identity/actions/index.js.map +1 -1
- package/dist/identity/index.d.ts +15 -0
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +15 -0
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/permissions.d.ts +124 -0
- package/dist/identity/permissions.d.ts.map +1 -0
- package/dist/identity/permissions.js +171 -0
- package/dist/identity/permissions.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
- package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
- package/dist/internal/c4/cargo-bytes-config.js +19 -0
- package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
- package/dist/internal/c4/character-registration.d.ts +2 -0
- package/dist/internal/c4/character-registration.d.ts.map +1 -1
- package/dist/internal/c4/character-registration.js +2 -0
- package/dist/internal/c4/character-registration.js.map +1 -1
- package/dist/internal/c4/claim-stake.d.ts +0 -27
- package/dist/internal/c4/claim-stake.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake.js +0 -33
- package/dist/internal/c4/claim-stake.js.map +1 -1
- package/dist/internal/c4/combat.d.ts +0 -27
- package/dist/internal/c4/combat.d.ts.map +1 -1
- package/dist/internal/c4/combat.js +0 -33
- package/dist/internal/c4/combat.js.map +1 -1
- package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
- package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
- package/dist/internal/c4/crafting-process-codec.js +34 -0
- package/dist/internal/c4/crafting-process-codec.js.map +1 -0
- package/dist/internal/c4/crafting.d.ts +11 -31
- package/dist/internal/c4/crafting.d.ts.map +1 -1
- package/dist/internal/c4/crafting.js +26 -43
- package/dist/internal/c4/crafting.js.map +1 -1
- package/dist/internal/c4/faction-adapter.d.ts +12 -0
- package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
- package/dist/internal/c4/faction-adapter.js +52 -0
- package/dist/internal/c4/faction-adapter.js.map +1 -0
- package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
- package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
- package/dist/internal/c4/faction-epoch-meter.js +31 -0
- package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
- package/dist/internal/c4/faction-treasury.d.ts +23 -0
- package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
- package/dist/internal/c4/faction-treasury.js +48 -0
- package/dist/internal/c4/faction-treasury.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +9 -57
- package/dist/internal/c4/factions.d.ts.map +1 -1
- package/dist/internal/c4/factions.js +21 -139
- package/dist/internal/c4/factions.js.map +1 -1
- package/dist/internal/c4/fleet-arrival.d.ts +28 -0
- package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/c4/fleet-arrival.js +42 -0
- package/dist/internal/c4/fleet-arrival.js.map +1 -0
- package/dist/internal/c4/fleet-creation.d.ts +7 -0
- package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
- package/dist/internal/c4/fleet-creation.js +180 -0
- package/dist/internal/c4/fleet-creation.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
- package/dist/internal/c4/fleet-crew-binding.js +15 -0
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
- package/dist/internal/c4/fleet-respawn.d.ts +19 -0
- package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
- package/dist/internal/c4/fleet-respawn.js +91 -0
- package/dist/internal/c4/fleet-respawn.js.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.js +44 -0
- package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/c4/fleet.d.ts +43 -19
- package/dist/internal/c4/fleet.d.ts.map +1 -1
- package/dist/internal/c4/fleet.js +1 -0
- package/dist/internal/c4/fleet.js.map +1 -1
- package/dist/internal/c4/game.d.ts +31 -8
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +88 -12
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/c4/identity.d.ts +2 -7
- package/dist/internal/c4/identity.d.ts.map +1 -1
- package/dist/internal/c4/identity.js +2 -23
- package/dist/internal/c4/identity.js.map +1 -1
- package/dist/internal/c4/loyalty.d.ts +0 -27
- package/dist/internal/c4/loyalty.d.ts.map +1 -1
- package/dist/internal/c4/loyalty.js +0 -33
- package/dist/internal/c4/loyalty.js.map +1 -1
- package/dist/internal/c4/market.d.ts +1 -37
- package/dist/internal/c4/market.d.ts.map +1 -1
- package/dist/internal/c4/market.js +11 -49
- package/dist/internal/c4/market.js.map +1 -1
- package/dist/internal/c4/mining-instructions.d.ts +2 -0
- package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
- package/dist/internal/c4/mining-instructions.js +3 -0
- package/dist/internal/c4/mining-instructions.js.map +1 -0
- package/dist/internal/c4/open-signal.d.ts +8 -0
- package/dist/internal/c4/open-signal.d.ts.map +1 -0
- package/dist/internal/c4/open-signal.js +37 -0
- package/dist/internal/c4/open-signal.js.map +1 -0
- package/dist/internal/c4/profile-creation.d.ts +17 -0
- package/dist/internal/c4/profile-creation.d.ts.map +1 -0
- package/dist/internal/c4/profile-creation.js +36 -0
- package/dist/internal/c4/profile-creation.js.map +1 -0
- package/dist/internal/c4/profile-permissions.d.ts +14 -0
- package/dist/internal/c4/profile-permissions.d.ts.map +1 -0
- package/dist/internal/c4/profile-permissions.js +81 -0
- package/dist/internal/c4/profile-permissions.js.map +1 -0
- package/dist/internal/c4/region-geometry.d.ts +8 -0
- package/dist/internal/c4/region-geometry.d.ts.map +1 -0
- package/dist/internal/c4/region-geometry.js +43 -0
- package/dist/internal/c4/region-geometry.js.map +1 -0
- package/dist/internal/c4/rewards.d.ts +0 -27
- package/dist/internal/c4/rewards.d.ts.map +1 -1
- package/dist/internal/c4/rewards.js +0 -33
- package/dist/internal/c4/rewards.js.map +1 -1
- package/dist/internal/c4/runtime-bindings.d.ts +3 -0
- package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
- package/dist/internal/c4/runtime-bindings.js +4 -0
- package/dist/internal/c4/runtime-bindings.js.map +1 -0
- package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
- package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
- package/dist/internal/c4/scan-detection-codecs.js +3 -0
- package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
- package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
- package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
- package/dist/internal/c4/scan-lifecycle.js +258 -0
- package/dist/internal/c4/scan-lifecycle.js.map +1 -0
- package/dist/internal/c4/scanning.d.ts +1 -28
- package/dist/internal/c4/scanning.d.ts.map +1 -1
- package/dist/internal/c4/scanning.js +2 -33
- package/dist/internal/c4/scanning.js.map +1 -1
- package/dist/internal/c4/ship-import.d.ts +4 -0
- package/dist/internal/c4/ship-import.d.ts.map +1 -0
- package/dist/internal/c4/ship-import.js +13 -0
- package/dist/internal/c4/ship-import.js.map +1 -0
- package/dist/internal/c4/ship-stats.d.ts.map +1 -1
- package/dist/internal/c4/ship-stats.js +25 -21
- package/dist/internal/c4/ship-stats.js.map +1 -1
- package/dist/internal/c4/starbase.d.ts +0 -32
- package/dist/internal/c4/starbase.d.ts.map +1 -1
- package/dist/internal/c4/starbase.js +3 -41
- package/dist/internal/c4/starbase.js.map +1 -1
- package/dist/internal/c4/world.d.ts +17 -2
- package/dist/internal/c4/world.d.ts.map +1 -1
- package/dist/internal/c4/world.js +32 -6
- package/dist/internal/c4/world.js.map +1 -1
- package/dist/internal/cargo.d.ts +2 -0
- package/dist/internal/cargo.d.ts.map +1 -1
- package/dist/internal/cargo.js +8 -0
- package/dist/internal/cargo.js.map +1 -1
- package/dist/internal/fleet.d.ts +1 -0
- package/dist/internal/fleet.d.ts.map +1 -1
- package/dist/internal/fleet.js +3 -1
- package/dist/internal/fleet.js.map +1 -1
- package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
- package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
- package/dist/internal/loyalty-atlas-bank-state.js +10 -0
- package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
- package/dist/internal/planning/action-runtime.d.ts +38 -0
- package/dist/internal/planning/action-runtime.d.ts.map +1 -0
- package/dist/internal/planning/action-runtime.js +63 -0
- package/dist/internal/planning/action-runtime.js.map +1 -0
- package/dist/internal/planning/arrival-guards.d.ts +20 -0
- package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
- package/dist/internal/planning/arrival-guards.js +187 -0
- package/dist/internal/planning/arrival-guards.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +19 -6
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
- package/dist/internal/planning/authorization-adapter.js +102 -16
- package/dist/internal/planning/authorization-adapter.js.map +1 -1
- package/dist/internal/planning/character-registration-guard.d.ts +4 -0
- package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
- package/dist/internal/planning/character-registration-guard.js +58 -0
- package/dist/internal/planning/character-registration-guard.js.map +1 -0
- package/dist/internal/planning/character-registration.d.ts +23 -0
- package/dist/internal/planning/character-registration.d.ts.map +1 -0
- package/dist/internal/planning/character-registration.js +86 -0
- package/dist/internal/planning/character-registration.js.map +1 -0
- package/dist/internal/planning/democracy-history.d.ts +50 -0
- package/dist/internal/planning/democracy-history.d.ts.map +1 -0
- package/dist/internal/planning/democracy-history.js +198 -0
- package/dist/internal/planning/democracy-history.js.map +1 -0
- package/dist/internal/planning/faction-enrollment.js +2 -2
- package/dist/internal/planning/faction-enrollment.js.map +1 -1
- package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
- package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
- package/dist/internal/planning/faction-trade-guards.js +15 -0
- package/dist/internal/planning/faction-trade-guards.js.map +1 -0
- package/dist/internal/planning/faction-trade-state.d.ts +16 -0
- package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
- package/dist/internal/planning/faction-trade-state.js +43 -0
- package/dist/internal/planning/faction-trade-state.js.map +1 -0
- package/dist/internal/planning/fleet-arrival.d.ts +40 -0
- package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/planning/fleet-arrival.js +106 -0
- package/dist/internal/planning/fleet-arrival.js.map +1 -0
- package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
- package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
- package/dist/internal/planning/fleet-attack-xp.js +110 -0
- package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
- package/dist/internal/planning/fleet-creation.d.ts +30 -0
- package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
- package/dist/internal/planning/fleet-creation.js +107 -0
- package/dist/internal/planning/fleet-creation.js.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.js +47 -0
- package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.js +131 -0
- package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
- package/dist/internal/planning/fleet-respawn.d.ts +28 -0
- package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
- package/dist/internal/planning/fleet-respawn.js +164 -0
- package/dist/internal/planning/fleet-respawn.js.map +1 -0
- package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
- package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/planning/fleet-ship-assembly.js +136 -0
- package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/planning/governance-fees.d.ts +64 -0
- package/dist/internal/planning/governance-fees.d.ts.map +1 -0
- package/dist/internal/planning/governance-fees.js +239 -0
- package/dist/internal/planning/governance-fees.js.map +1 -0
- package/dist/internal/planning/mining-stop.d.ts +14 -0
- package/dist/internal/planning/mining-stop.d.ts.map +1 -0
- package/dist/internal/planning/mining-stop.js +41 -0
- package/dist/internal/planning/mining-stop.js.map +1 -0
- package/dist/internal/planning/movement-character.d.ts +7 -0
- package/dist/internal/planning/movement-character.d.ts.map +1 -0
- package/dist/internal/planning/movement-character.js +41 -0
- package/dist/internal/planning/movement-character.js.map +1 -0
- package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
- package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
- package/dist/internal/planning/movement-xp-guard.js +103 -0
- package/dist/internal/planning/movement-xp-guard.js.map +1 -0
- package/dist/internal/planning/open-signal-guard.d.ts +3 -0
- package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
- package/dist/internal/planning/open-signal-guard.js +31 -0
- package/dist/internal/planning/open-signal-guard.js.map +1 -0
- package/dist/internal/planning/open-signal.d.ts +31 -0
- package/dist/internal/planning/open-signal.d.ts.map +1 -0
- package/dist/internal/planning/open-signal.js +84 -0
- package/dist/internal/planning/open-signal.js.map +1 -0
- package/dist/internal/planning/respawn-guards.d.ts +3 -0
- package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
- package/dist/internal/planning/respawn-guards.js +41 -0
- package/dist/internal/planning/respawn-guards.js.map +1 -0
- package/dist/internal/planning/runtime-guards.d.ts +43 -0
- package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
- package/dist/internal/planning/runtime-guards.js +636 -0
- package/dist/internal/planning/runtime-guards.js.map +1 -0
- package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
- package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion-guard.js +94 -0
- package/dist/internal/planning/scan-completion-guard.js.map +1 -0
- package/dist/internal/planning/scan-completion.d.ts +20 -0
- package/dist/internal/planning/scan-completion.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion.js +220 -0
- package/dist/internal/planning/scan-completion.js.map +1 -0
- package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
- package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-detect-guard.js +77 -0
- package/dist/internal/planning/scan-detect-guard.js.map +1 -0
- package/dist/internal/planning/scan-detect.d.ts +24 -0
- package/dist/internal/planning/scan-detect.d.ts.map +1 -0
- package/dist/internal/planning/scan-detect.js +244 -0
- package/dist/internal/planning/scan-detect.js.map +1 -0
- package/dist/internal/planning/ship-import-funding.d.ts +22 -0
- package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
- package/dist/internal/planning/ship-import-funding.js +52 -0
- package/dist/internal/planning/ship-import-funding.js.map +1 -0
- package/dist/internal/planning/ship-token.d.ts +10 -0
- package/dist/internal/planning/ship-token.d.ts.map +1 -0
- package/dist/internal/planning/ship-token.js +47 -0
- package/dist/internal/planning/ship-token.js.map +1 -0
- package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
- package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system-guard.js +93 -0
- package/dist/internal/planning/starbase-system-guard.js.map +1 -0
- package/dist/internal/planning/starbase-system.d.ts +12 -0
- package/dist/internal/planning/starbase-system.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system.js +22 -0
- package/dist/internal/planning/starbase-system.js.map +1 -0
- package/dist/internal/planning/token-mint.d.ts +4 -0
- package/dist/internal/planning/token-mint.d.ts.map +1 -0
- package/dist/internal/planning/token-mint.js +15 -0
- package/dist/internal/planning/token-mint.js.map +1 -0
- package/dist/internal/planning/trade-faction-market.d.ts +20 -0
- package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
- package/dist/internal/planning/trade-faction-market.js +56 -0
- package/dist/internal/planning/trade-faction-market.js.map +1 -0
- package/dist/internal/planning/xp-runtime.d.ts +36 -0
- package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
- package/dist/internal/planning/xp-runtime.js +126 -0
- package/dist/internal/planning/xp-runtime.js.map +1 -0
- package/dist/loyalty/actions/index.d.ts.map +1 -1
- package/dist/loyalty/actions/index.js +4 -3
- package/dist/loyalty/actions/index.js.map +1 -1
- package/dist/loyalty/index.d.ts.map +1 -1
- package/dist/loyalty/index.js +2 -6
- package/dist/loyalty/index.js.map +1 -1
- package/dist/markets/actions/index.d.ts +1 -0
- package/dist/markets/actions/index.d.ts.map +1 -1
- package/dist/markets/actions/index.js +40 -16
- package/dist/markets/actions/index.js.map +1 -1
- package/dist/markets/actions/trade-faction-market.d.ts +43 -0
- package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
- package/dist/markets/actions/trade-faction-market.js +291 -0
- package/dist/markets/actions/trade-faction-market.js.map +1 -0
- package/dist/mining/actions/index.d.ts +84 -0
- package/dist/mining/actions/index.d.ts.map +1 -0
- package/dist/mining/actions/index.js +328 -0
- package/dist/mining/actions/index.js.map +1 -0
- package/dist/mining/estimate.d.ts +114 -0
- package/dist/mining/estimate.d.ts.map +1 -0
- package/dist/mining/estimate.js +127 -0
- package/dist/mining/estimate.js.map +1 -0
- package/dist/mining/index.d.ts +8 -2
- package/dist/mining/index.d.ts.map +1 -1
- package/dist/mining/index.js +6 -2
- package/dist/mining/index.js.map +1 -1
- package/dist/planning/assembly.d.ts.map +1 -1
- package/dist/planning/assembly.js +18 -0
- package/dist/planning/assembly.js.map +1 -1
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +378 -12
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +180 -132
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +845 -104
- package/dist/planning/index.js.map +1 -1
- package/dist/planning/simulation.d.ts +25 -1
- package/dist/planning/simulation.d.ts.map +1 -1
- package/dist/planning/simulation.js +111 -11
- package/dist/planning/simulation.js.map +1 -1
- package/dist/registry/cargo.d.ts +6 -11
- package/dist/registry/cargo.d.ts.map +1 -1
- package/dist/registry/cargo.js +19 -19
- package/dist/registry/cargo.js.map +1 -1
- package/dist/registry/index.d.ts +4 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/onboarding.d.ts +8 -1
- package/dist/registry/onboarding.d.ts.map +1 -1
- package/dist/registry/onboarding.js +18 -5
- package/dist/registry/onboarding.js.map +1 -1
- package/dist/registry/scanning.d.ts +7 -0
- package/dist/registry/scanning.d.ts.map +1 -0
- package/dist/registry/scanning.js +13 -0
- package/dist/registry/scanning.js.map +1 -0
- package/dist/registry/ship-stats-snapshot.js +19 -19
- package/dist/registry/ship-stats-snapshot.js.map +1 -1
- package/dist/registry/ships.d.ts +30 -0
- package/dist/registry/ships.d.ts.map +1 -0
- package/dist/registry/ships.js +59 -0
- package/dist/registry/ships.js.map +1 -0
- package/dist/registry/xp-runtime.d.ts +4 -0
- package/dist/registry/xp-runtime.d.ts.map +1 -0
- package/dist/registry/xp-runtime.js +14 -0
- package/dist/registry/xp-runtime.js.map +1 -0
- package/dist/scanning/actions/index.d.ts +116 -0
- package/dist/scanning/actions/index.d.ts.map +1 -0
- package/dist/scanning/actions/index.js +209 -0
- package/dist/scanning/actions/index.js.map +1 -0
- package/dist/scanning/index.d.ts +4 -1
- package/dist/scanning/index.d.ts.map +1 -1
- package/dist/scanning/index.js +5 -2
- package/dist/scanning/index.js.map +1 -1
- package/dist/scanning/lifecycle.d.ts +77 -0
- package/dist/scanning/lifecycle.d.ts.map +1 -0
- package/dist/scanning/lifecycle.js +93 -0
- package/dist/scanning/lifecycle.js.map +1 -0
- package/dist/scanning/odds.d.ts +111 -0
- package/dist/scanning/odds.d.ts.map +1 -0
- package/dist/scanning/odds.js +294 -0
- package/dist/scanning/odds.js.map +1 -0
- package/dist/scanning/signals.d.ts +121 -0
- package/dist/scanning/signals.d.ts.map +1 -0
- package/dist/scanning/signals.js +171 -0
- package/dist/scanning/signals.js.map +1 -0
- package/dist/world/index.d.ts +64 -5
- package/dist/world/index.d.ts.map +1 -1
- package/dist/world/index.js +53 -4
- package/dist/world/index.js.map +1 -1
- package/package.json +10 -2
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { isAddress, isOffCurveAddress } from '@solana/kit';
|
|
2
|
+
import { InvalidActionInputError } from '../../client/errors.js';
|
|
3
|
+
import { requireGameAddress } from '../../internal/game-context.js';
|
|
4
|
+
import { resolveFleetRespawn } from '../../internal/planning/fleet-respawn.js';
|
|
5
|
+
import { createPlan } from '../../planning/index.js';
|
|
6
|
+
function options(input) {
|
|
7
|
+
const bad = () => {
|
|
8
|
+
throw new InvalidActionInputError('options', input, 'authorization and system only; direct authority, Profile and u16 keyIndex', 'Pass address-only Fleet recovery options. Certificates and other access routes are unsupported; use a direct Profile key and an existing own-faction StarbasePlayer.');
|
|
9
|
+
};
|
|
10
|
+
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
11
|
+
bad();
|
|
12
|
+
const value = input;
|
|
13
|
+
if (Object.keys(value).length !== 2 ||
|
|
14
|
+
!Object.hasOwn(value, 'authorization') ||
|
|
15
|
+
!Object.hasOwn(value, 'system'))
|
|
16
|
+
bad();
|
|
17
|
+
const authorization = value.authorization;
|
|
18
|
+
if (authorization === null ||
|
|
19
|
+
typeof authorization !== 'object' ||
|
|
20
|
+
Array.isArray(authorization))
|
|
21
|
+
bad();
|
|
22
|
+
const a = authorization;
|
|
23
|
+
if (Object.keys(a).length !== 3 ||
|
|
24
|
+
!Object.hasOwn(a, 'profile') ||
|
|
25
|
+
!Object.hasOwn(a, 'authority') ||
|
|
26
|
+
!Object.hasOwn(a, 'keyIndex') ||
|
|
27
|
+
typeof a.profile !== 'string' ||
|
|
28
|
+
!isAddress(a.profile) ||
|
|
29
|
+
typeof a.authority !== 'string' ||
|
|
30
|
+
!isAddress(a.authority) ||
|
|
31
|
+
isOffCurveAddress(a.authority) ||
|
|
32
|
+
!Number.isInteger(a.keyIndex) ||
|
|
33
|
+
typeof a.keyIndex !== 'number' ||
|
|
34
|
+
a.keyIndex < 0 ||
|
|
35
|
+
a.keyIndex > 65535 ||
|
|
36
|
+
typeof value.system !== 'string' ||
|
|
37
|
+
!isAddress(value.system))
|
|
38
|
+
bad();
|
|
39
|
+
return {
|
|
40
|
+
authorization: {
|
|
41
|
+
profile: a.profile,
|
|
42
|
+
authority: a.authority,
|
|
43
|
+
keyIndex: a.keyIndex,
|
|
44
|
+
},
|
|
45
|
+
system: value.system,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function planRecovery(ctx, fleet, input, phase) {
|
|
49
|
+
const captured = options(input);
|
|
50
|
+
if (typeof fleet !== 'string' || !isAddress(fleet))
|
|
51
|
+
throw new InvalidActionInputError('fleet', fleet, 'a Fleet address', 'Pass the owned Fleet address to prepare recovery.');
|
|
52
|
+
const intent = {
|
|
53
|
+
phase,
|
|
54
|
+
fleet,
|
|
55
|
+
game: requireGameAddress(ctx),
|
|
56
|
+
...captured.authorization,
|
|
57
|
+
system: captured.system,
|
|
58
|
+
};
|
|
59
|
+
const current = await resolveFleetRespawn(ctx, intent);
|
|
60
|
+
const inventory = current.inventory;
|
|
61
|
+
const cargo = inventory.cargo
|
|
62
|
+
.map((item) => `cargo ID ${item.cargoId}: ${item.amount} raw units`)
|
|
63
|
+
.join(', ') || 'empty';
|
|
64
|
+
const inventoryDisclosure = phase === 'start'
|
|
65
|
+
? ` Inventory exposed to recovery: cargo hold [${cargo}]; ammunition (cargo ID ${inventory.ammunition.cargoId}): ${inventory.ammunition.amount} raw units; Fuel (cargo ID ${inventory.fuel.cargoId}): ${inventory.fuel.amount} raw units.`
|
|
66
|
+
: '';
|
|
67
|
+
const summary = `${phase === 'start' ? 'Start timed recovery for Idle' : 'Complete elapsed recovery for'} Fleet ${fleet} at faction CSS ${intent.system}. Observed recovery fee: ${current.recoveryFee} ATLAS Floyds (100,000,000 Floyds per ATLAS); Profile storage debit: ${current.profileDebit} lamports. These amounts are rechecked before signing, not atomic spending caps. Transaction fees are separate.${inventoryDisclosure} Recovery can destroy cargo or other assets; preservation of ships, crew and HP is not guaranteed. Simulate and inspect before signing. Refresh the Fleet after confirmation; completion is established only by Docked state at this CSS. Start and completion must be separate transactions.`;
|
|
68
|
+
return createPlan({
|
|
69
|
+
kind: `fleets.${phase}-respawn`,
|
|
70
|
+
summary,
|
|
71
|
+
preconditions: [
|
|
72
|
+
{
|
|
73
|
+
kind: 'fleet-respawn',
|
|
74
|
+
address: fleet,
|
|
75
|
+
game: intent.game,
|
|
76
|
+
profile: intent.profile,
|
|
77
|
+
authority: intent.authority,
|
|
78
|
+
keyIndex: intent.keyIndex,
|
|
79
|
+
system: intent.system,
|
|
80
|
+
phase,
|
|
81
|
+
fleetHash: current.fleetHash,
|
|
82
|
+
maximumRecoveryFee: current.recoveryFee,
|
|
83
|
+
maximumProfileDebit: current.profileDebit,
|
|
84
|
+
describes: 'Selected Fleet state and assets remain unchanged since planning; canonical faction CSS, direct permission, chain timer and funding remain valid within the reviewed amounts.',
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
steps: [
|
|
88
|
+
{
|
|
89
|
+
instruction: current.instruction,
|
|
90
|
+
signers: [intent.authority],
|
|
91
|
+
describes: summary,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/** Prepares explicit timed recovery for an owned Idle Fleet, including a zero-Fuel Fleet.
|
|
97
|
+
* Requires Character ATLAS for the current hull recovery fees. Never deposits funds,
|
|
98
|
+
* signs, submits, waits or automatically falls back from movement. Recovery may lose assets.
|
|
99
|
+
* @example
|
|
100
|
+
* ```ts
|
|
101
|
+
* declare const ctx: SageContext, fleet: Address, options: PlanFleetRespawnOptions;
|
|
102
|
+
* const plan = await planFleetStartRespawn(ctx, fleet, options);
|
|
103
|
+
* console.log(plan.describe());
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export function planFleetStartRespawn(ctx, fleet, options) {
|
|
107
|
+
return planRecovery(ctx, fleet, options, 'start');
|
|
108
|
+
}
|
|
109
|
+
/** Prepares timed completion only after the stored Respawn end time according to chain Clock.
|
|
110
|
+
* Uses the explicit Respawn-to-Docked route; never pays to bypass the timer.
|
|
111
|
+
* Refresh confirmed state to establish arrival at the faction CSS; simulation is not confirmation.
|
|
112
|
+
* @example
|
|
113
|
+
* ```ts
|
|
114
|
+
* declare const ctx: SageContext, fleet: Address, options: PlanFleetRespawnOptions;
|
|
115
|
+
* const plan = await planFleetCompleteRespawn(ctx, fleet, options);
|
|
116
|
+
* console.log(plan.describe());
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export function planFleetCompleteRespawn(ctx, fleet, options) {
|
|
120
|
+
return planRecovery(ctx, fleet, options, 'complete');
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=respawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"respawn.js","sourceRoot":"","sources":["../../../src/fleets/actions/respawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
import type { SageContext } from '../../client/contracts.js';
|
|
3
|
+
import type { EntityRef } from '../../client/refs.js';
|
|
4
|
+
import { type PlanAuthorization } from '../../internal/planning/authorization-adapter.js';
|
|
5
|
+
import { type Plan } from '../../planning/index.js';
|
|
6
|
+
interface ShipImportStarbaseIntent {
|
|
7
|
+
readonly kind: 'starbasePlayer';
|
|
8
|
+
readonly address: Address;
|
|
9
|
+
readonly playerProfile: EntityRef<'profile'>;
|
|
10
|
+
readonly character: EntityRef<'character'>;
|
|
11
|
+
readonly system: EntityRef<'starSystem'>;
|
|
12
|
+
}
|
|
13
|
+
/** Exact whole ships to import under one explicit configuration ID.
|
|
14
|
+
* Optional escrow creation requires an explicit payer; it never registers onboarding accounts.
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* declare const owner: Address;
|
|
18
|
+
* declare const authorization: PlanAuthorization;
|
|
19
|
+
* const options: PlanDepositShipsToGameOptions = { shipId: 1, amount: 2n, owner, authorization };
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface PlanDepositShipsToGameOptions {
|
|
23
|
+
readonly shipId: number;
|
|
24
|
+
readonly amount: bigint;
|
|
25
|
+
readonly owner: Address;
|
|
26
|
+
readonly authorization: PlanAuthorization;
|
|
27
|
+
readonly source?: Address;
|
|
28
|
+
readonly escrowAccount?: {
|
|
29
|
+
readonly mode: 'create-if-missing';
|
|
30
|
+
readonly payer: Address;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/** Plans importing whole ship tokens into a registered player's CSS ship escrow.
|
|
34
|
+
* Requires direct Profile AUTH and token-owner authorization. The Profile vault
|
|
35
|
+
* funds any StarbasePlayer storage shortfall; an explicit ATA payer funds optional
|
|
36
|
+
* escrow creation. Fees are separate. No Fleet is created and no signer is retained.
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* declare const ctx: SageContext;
|
|
40
|
+
* declare const starbase: import('@aephia/atlas-kit/starbases').StarbasePlayerSnapshot;
|
|
41
|
+
* declare const options: PlanDepositShipsToGameOptions;
|
|
42
|
+
* const plan = await planDepositShipsToGame(ctx, starbase, options);
|
|
43
|
+
* console.log(plan.describe());
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function planDepositShipsToGame(ctx: SageContext, starbase: ShipImportStarbaseIntent, options: PlanDepositShipsToGameOptions): Promise<Plan>;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=ship-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-import.d.ts","sourceRoot":"","sources":["../../../src/fleets/actions/ship-import.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAkBtD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,kDAAkD,CAAC;AAkB1D,OAAO,EAEL,KAAK,IAAI,EAGV,MAAM,yBAAyB,CAAC;AAEjC,UAAU,wBAAwB;IAChC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CAC1C;AACD;;;;;;;;GAQG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE;QACvB,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;QACnC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AA2GD;;;;;;;;;;;;GAYG;AACH,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,WAAW,EAChB,QAAQ,EAAE,wBAAwB,EAClC,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,IAAI,CAAC,CAyUf"}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
import { validateStarbaseSystem } from '../../internal/planning/starbase-system.js';
|
|
2
|
+
import { resolveShipImportFunding, validateShipImportFunding, } from '../../internal/planning/ship-import-funding.js';
|
|
3
|
+
import { isAddress, isOffCurveAddress } from '@solana/kit';
|
|
4
|
+
import { InvalidActionInputError } from '../../client/errors.js';
|
|
5
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
6
|
+
import { characterAccountDefinition, profileAccountDefinition, findCharacterPda, } from '../../internal/c4/identity.js';
|
|
7
|
+
import { deriveStarbasePlayerAddress, starbasePlayerAccountDefinition, } from '../../internal/c4/starbase.js';
|
|
8
|
+
import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../../internal/c4/world.js';
|
|
9
|
+
import { PLAYER_PROFILE_PROGRAM_ADDRESS } from '../../internal/c4/faction-enrollment.js';
|
|
10
|
+
import { requireGameAddress } from '../../internal/game-context.js';
|
|
11
|
+
import { adaptAddShipEscrowInstruction, validatePlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
|
|
12
|
+
import { hashAccountState } from '../../internal/planning/account-state.js';
|
|
13
|
+
import { readRent, readClock, RENT_ADDRESS, CLOCK_ADDRESS, } from '../../internal/planning/faction-enrollment.js';
|
|
14
|
+
import { deriveShipTokenAddress, validateShipMint, validateShipToken, failShipImport, ORIGINAL_TOKEN_PROGRAM, ATA_PROGRAM, SYSTEM_PROGRAM, } from '../../internal/planning/ship-token.js';
|
|
15
|
+
import { readFreshGameShipConfiguration } from '../../registry/ships.js';
|
|
16
|
+
import { createPlan, } from '../../planning/index.js';
|
|
17
|
+
function address(value) {
|
|
18
|
+
return typeof value === 'string' && isAddress(value);
|
|
19
|
+
}
|
|
20
|
+
function invalid(field, value, expected) {
|
|
21
|
+
throw new InvalidActionInputError(field, value, expected, 'Select an explicit ship configuration, positive bigint amount and address-only authorization before planning again.');
|
|
22
|
+
}
|
|
23
|
+
function validate(options) {
|
|
24
|
+
if (!options ||
|
|
25
|
+
typeof options !== 'object' ||
|
|
26
|
+
Array.isArray(options) ||
|
|
27
|
+
Object.keys(options).some((k) => ![
|
|
28
|
+
'shipId',
|
|
29
|
+
'amount',
|
|
30
|
+
'owner',
|
|
31
|
+
'authorization',
|
|
32
|
+
'source',
|
|
33
|
+
'escrowAccount',
|
|
34
|
+
].includes(k)))
|
|
35
|
+
invalid('options', options, 'ship import options only');
|
|
36
|
+
if (typeof options.amount !== 'bigint' ||
|
|
37
|
+
options.amount <= 0n ||
|
|
38
|
+
options.amount > (1n << 64n) - 1n)
|
|
39
|
+
invalid('amount', options.amount, 'a positive u64 bigint');
|
|
40
|
+
if (typeof options.shipId !== 'number' ||
|
|
41
|
+
!Number.isInteger(options.shipId) ||
|
|
42
|
+
options.shipId < 0 ||
|
|
43
|
+
options.shipId > 65535)
|
|
44
|
+
invalid('shipId', options.shipId, 'an explicit u16 ship configuration ID');
|
|
45
|
+
if (!address(options.owner) || isOffCurveAddress(options.owner))
|
|
46
|
+
invalid('owner', options.owner, 'a directly signing token owner address');
|
|
47
|
+
if (options.source !== undefined && !address(options.source))
|
|
48
|
+
invalid('source', options.source, 'an existing token account address');
|
|
49
|
+
const a = options.authorization;
|
|
50
|
+
if (!a ||
|
|
51
|
+
typeof a !== 'object' ||
|
|
52
|
+
Array.isArray(a) ||
|
|
53
|
+
Object.keys(a).some((k) => !['profile', 'authority', 'keyIndex', 'certificate'].includes(k)) ||
|
|
54
|
+
!address(a.profile) ||
|
|
55
|
+
!address(a.authority) ||
|
|
56
|
+
isOffCurveAddress(a.authority) ||
|
|
57
|
+
(a.certificate !== undefined && !address(a.certificate)))
|
|
58
|
+
invalid('authorization', a, 'valid Profile, direct authority, keyIndex and optional certificate addresses');
|
|
59
|
+
validatePlanAuthorization(a);
|
|
60
|
+
const e = options.escrowAccount;
|
|
61
|
+
if (e !== undefined &&
|
|
62
|
+
(!e ||
|
|
63
|
+
typeof e !== 'object' ||
|
|
64
|
+
Array.isArray(e) ||
|
|
65
|
+
Object.keys(e).some((k) => !['mode', 'payer'].includes(k)) ||
|
|
66
|
+
e.mode !== 'create-if-missing' ||
|
|
67
|
+
!address(e.payer) ||
|
|
68
|
+
isOffCurveAddress(e.payer)))
|
|
69
|
+
invalid('escrowAccount', e, '{ mode: create-if-missing, payer: a directly signing address }');
|
|
70
|
+
}
|
|
71
|
+
function required(raw, account, role) {
|
|
72
|
+
return (raw ??
|
|
73
|
+
failShipImport(`${role} ${account} is missing. Complete onboarding or create the required account separately.`, account));
|
|
74
|
+
}
|
|
75
|
+
async function observe(raw, role) {
|
|
76
|
+
return {
|
|
77
|
+
kind: 'account-state',
|
|
78
|
+
address: raw.address,
|
|
79
|
+
dataHash: await hashAccountState(raw.owner, raw.data),
|
|
80
|
+
describes: `${role} ${raw.address} retains its observed owner and data; native balance is an observation, not reserved. Refresh and replan if it changes.`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Plans importing whole ship tokens into a registered player's CSS ship escrow.
|
|
84
|
+
* Requires direct Profile AUTH and token-owner authorization. The Profile vault
|
|
85
|
+
* funds any StarbasePlayer storage shortfall; an explicit ATA payer funds optional
|
|
86
|
+
* escrow creation. Fees are separate. No Fleet is created and no signer is retained.
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* declare const ctx: SageContext;
|
|
90
|
+
* declare const starbase: import('@aephia/atlas-kit/starbases').StarbasePlayerSnapshot;
|
|
91
|
+
* declare const options: PlanDepositShipsToGameOptions;
|
|
92
|
+
* const plan = await planDepositShipsToGame(ctx, starbase, options);
|
|
93
|
+
* console.log(plan.describe());
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export async function planDepositShipsToGame(ctx, starbase, options) {
|
|
97
|
+
validate(options);
|
|
98
|
+
if (!starbase ||
|
|
99
|
+
starbase.kind !== 'starbasePlayer' ||
|
|
100
|
+
!address(starbase.address) ||
|
|
101
|
+
!address(starbase.system?.address) ||
|
|
102
|
+
!address(starbase.playerProfile?.address) ||
|
|
103
|
+
!address(starbase.character?.address))
|
|
104
|
+
invalid('starbase', starbase, 'a loaded StarbasePlayer snapshot');
|
|
105
|
+
// Capture caller-owned input before PDA derivation or the first asynchronous read.
|
|
106
|
+
// Plans must retain the validated intent even if the application edits its form.
|
|
107
|
+
options = {
|
|
108
|
+
...options,
|
|
109
|
+
authorization: { ...options.authorization },
|
|
110
|
+
...(options.escrowAccount
|
|
111
|
+
? { escrowAccount: { ...options.escrowAccount } }
|
|
112
|
+
: {}),
|
|
113
|
+
};
|
|
114
|
+
starbase = {
|
|
115
|
+
kind: 'starbasePlayer',
|
|
116
|
+
address: starbase.address,
|
|
117
|
+
system: { ...starbase.system },
|
|
118
|
+
character: { ...starbase.character },
|
|
119
|
+
playerProfile: { ...starbase.playerProfile },
|
|
120
|
+
};
|
|
121
|
+
const { authorization, owner, shipId, amount } = options;
|
|
122
|
+
const game = requireGameAddress(ctx), character = await findCharacterPda(authorization.profile, game), player = await deriveStarbasePlayerAddress(starbase.system.address, character);
|
|
123
|
+
if (starbase.address !== player ||
|
|
124
|
+
starbase.character.address !== character ||
|
|
125
|
+
starbase.playerProfile.address !== authorization.profile)
|
|
126
|
+
failShipImport('The loaded StarbasePlayer must be the canonical registration for the authorized Profile and Character.', starbase.address);
|
|
127
|
+
const config = await readFreshGameShipConfiguration(ctx, shipId), mint = config.ship.mint;
|
|
128
|
+
const source = options.source ?? (await deriveShipTokenAddress(owner, mint)), escrow = await deriveShipTokenAddress(character, mint);
|
|
129
|
+
if (source === escrow)
|
|
130
|
+
failShipImport('Source and Character escrow must be different token accounts.', source);
|
|
131
|
+
const addresses = [
|
|
132
|
+
authorization.profile,
|
|
133
|
+
character,
|
|
134
|
+
player,
|
|
135
|
+
starbase.system.address,
|
|
136
|
+
mint,
|
|
137
|
+
source,
|
|
138
|
+
RENT_ADDRESS,
|
|
139
|
+
CLOCK_ADDRESS,
|
|
140
|
+
escrow,
|
|
141
|
+
owner,
|
|
142
|
+
];
|
|
143
|
+
const values = await readContextRawAccounts(ctx, addresses);
|
|
144
|
+
const profileRaw = required(values[0], addresses[0], 'Profile'), characterRaw = required(values[1], character, 'Character'), playerRaw = required(values[2], player, 'StarbasePlayer'), systemRaw = required(values[3], addresses[3], 'System'), mintRaw = required(values[4], mint, 'Ship mint'), sourceRaw = required(values[5], source, 'Ship source'), rentRaw = required(values[6], RENT_ADDRESS, 'Rent sysvar'), clockRaw = required(values[7], CLOCK_ADDRESS, 'Clock sysvar');
|
|
145
|
+
const escrowRaw = values[8], ownerRaw = values[9];
|
|
146
|
+
for (const raw of [profileRaw, characterRaw, playerRaw, systemRaw])
|
|
147
|
+
if (raw.executable)
|
|
148
|
+
failShipImport('A gameplay prerequisite is executable rather than account state.', raw.address);
|
|
149
|
+
const p = profileAccountDefinition.decode(profileRaw), c = characterAccountDefinition.decode(characterRaw), s = starbasePlayerAccountDefinition.decode(playerRaw), w = starSystemAccountDefinition.decode(systemRaw);
|
|
150
|
+
if (c.playerProfile !== authorization.profile ||
|
|
151
|
+
c.game !== game ||
|
|
152
|
+
s.playerProfile !== authorization.profile ||
|
|
153
|
+
s.character !== character ||
|
|
154
|
+
s.system !== starbase.system.address ||
|
|
155
|
+
w.game !== game ||
|
|
156
|
+
(await deriveStarSystemAddress(game, w.systemId)) !==
|
|
157
|
+
starbase.system.address)
|
|
158
|
+
failShipImport('Fresh Character, StarbasePlayer and System relationships must match the configured Game and authorized Profile.', player);
|
|
159
|
+
const systemGuard = {
|
|
160
|
+
kind: 'starbase-system',
|
|
161
|
+
address: systemRaw.address,
|
|
162
|
+
game,
|
|
163
|
+
starbaseSequenceId: w.sequenceId,
|
|
164
|
+
requireCss: true,
|
|
165
|
+
describes: 'The canonical Star System retains its active Starbase and generation as a Central Space Station; unrelated shared activity may change.',
|
|
166
|
+
};
|
|
167
|
+
await validateStarbaseSystem(systemRaw, systemGuard);
|
|
168
|
+
const key = p.keys[authorization.keyIndex], now = readClock(clockRaw);
|
|
169
|
+
if (!key ||
|
|
170
|
+
key.address !== authorization.authority ||
|
|
171
|
+
key.scope !== PLAYER_PROFILE_PROGRAM_ADDRESS ||
|
|
172
|
+
(key.permissionsRaw & 1n) === 0n)
|
|
173
|
+
failShipImport('Ship import supports a direct Profile AUTH key. Select a matching authorized Profile key; delegated certificates and other permission scopes are not yet verified.', profileRaw.address);
|
|
174
|
+
if (key.expiresAtRaw >= 0n && key.expiresAtRaw < now)
|
|
175
|
+
failShipImport('The selected Profile key has expired. Choose a current AUTH key.', profileRaw.address);
|
|
176
|
+
if (ownerRaw &&
|
|
177
|
+
ownerRaw.data.length === 355 &&
|
|
178
|
+
(ownerRaw.owner === ORIGINAL_TOKEN_PROGRAM ||
|
|
179
|
+
ownerRaw.owner === 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'))
|
|
180
|
+
failShipImport('Token multisig owners are unsupported. Use a directly signing token owner.', owner);
|
|
181
|
+
validateShipMint(mintRaw);
|
|
182
|
+
const sourceAmount = validateShipToken(sourceRaw, mint, owner);
|
|
183
|
+
if (sourceAmount < amount)
|
|
184
|
+
failShipImport(`Source has ${sourceAmount} ships but import requests ${amount}. Reduce the amount.`, source);
|
|
185
|
+
const existingCredit = s.shipsInEscrow.find((item) => item.shipId === shipId);
|
|
186
|
+
if ((existingCredit?.quantityRaw ?? 0n) + amount > (1n << 64n) - 1n)
|
|
187
|
+
failShipImport('The selected ship inventory would exceed u64 capacity. Reduce the amount.', player);
|
|
188
|
+
const fundingIntent = {
|
|
189
|
+
address: player,
|
|
190
|
+
game,
|
|
191
|
+
profile: authorization.profile,
|
|
192
|
+
system: starbase.system.address,
|
|
193
|
+
shipId,
|
|
194
|
+
};
|
|
195
|
+
const resolvedFunding = await resolveShipImportFunding(fundingIntent);
|
|
196
|
+
const { profileDebit: growthFunding } = validateShipImportFunding(fundingIntent, resolvedFunding, new Map(addresses.map((address, index) => [address, values[index]])));
|
|
197
|
+
const minimum = readRent(rentRaw);
|
|
198
|
+
const preconditions = [
|
|
199
|
+
systemGuard,
|
|
200
|
+
{
|
|
201
|
+
kind: 'ship-import-funding',
|
|
202
|
+
...fundingIntent,
|
|
203
|
+
maximumProfileDebit: growthFunding,
|
|
204
|
+
describes: 'Profile reserve and actual StarbasePlayer storage shortfall remain affordable within the approved debit ceiling; target prefunding may reduce the debit.',
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
kind: 'token-mint',
|
|
208
|
+
address: mintRaw.address,
|
|
209
|
+
decimals: 0,
|
|
210
|
+
describes: `Mint ${mintRaw.address} remains a valid initialized original Token Mint with unchanged decimals; supply and authorities may change.`,
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
kind: 'game-ship-config',
|
|
214
|
+
address: game,
|
|
215
|
+
shipId,
|
|
216
|
+
configHash: config.configHash,
|
|
217
|
+
describes: 'The selected ship configuration remains unchanged; unrelated Game definitions may change.',
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
kind: 'token-account',
|
|
221
|
+
address: source,
|
|
222
|
+
mint,
|
|
223
|
+
owner,
|
|
224
|
+
minimumBalance: amount,
|
|
225
|
+
describes: 'Source remains an initialized unfrozen original Token account with sufficient whole ships.',
|
|
226
|
+
},
|
|
227
|
+
...(await Promise.all([
|
|
228
|
+
[profileRaw, 'Profile authorization'],
|
|
229
|
+
[characterRaw, 'Character identity'],
|
|
230
|
+
[playerRaw, 'Player ship inventory'],
|
|
231
|
+
[rentRaw, 'Rent pricing'],
|
|
232
|
+
...(ownerRaw ? [[ownerRaw, 'Token owner identity']] : []),
|
|
233
|
+
].map(([raw, role]) => observe(raw, role)))),
|
|
234
|
+
];
|
|
235
|
+
if (!ownerRaw)
|
|
236
|
+
preconditions.push({
|
|
237
|
+
kind: 'system-account-or-absent',
|
|
238
|
+
address: owner,
|
|
239
|
+
describes: 'The token owner wallet may remain absent or receive native funding as an empty, non-executable System account.',
|
|
240
|
+
});
|
|
241
|
+
const steps = [];
|
|
242
|
+
let ataFunding = 0n;
|
|
243
|
+
if (escrowRaw) {
|
|
244
|
+
const balance = validateShipToken(escrowRaw, mint, character);
|
|
245
|
+
if (balance + amount > (1n << 64n) - 1n)
|
|
246
|
+
failShipImport('Escrow token balance would exceed u64 capacity. Reduce the amount.', escrow);
|
|
247
|
+
preconditions.push({
|
|
248
|
+
kind: 'token-account',
|
|
249
|
+
address: escrow,
|
|
250
|
+
mint,
|
|
251
|
+
owner: character,
|
|
252
|
+
minimumBalance: 0n,
|
|
253
|
+
describes: 'Existing Character escrow remains initialized and unfrozen with the selected mint and Character owner; incoming tokens are allowed.',
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const creation = options.escrowAccount;
|
|
258
|
+
if (!creation)
|
|
259
|
+
failShipImport('Character ship escrow is missing. Explicitly select escrowAccount create-if-missing with a payer or create it separately.', escrow);
|
|
260
|
+
const extraAddresses = [
|
|
261
|
+
creation.payer,
|
|
262
|
+
ATA_PROGRAM,
|
|
263
|
+
SYSTEM_PROGRAM,
|
|
264
|
+
ORIGINAL_TOKEN_PROGRAM,
|
|
265
|
+
];
|
|
266
|
+
const extraValues = await readContextRawAccounts(ctx, extraAddresses);
|
|
267
|
+
const extras = extraAddresses.map((a, i) => required(extraValues[i], a, 'ATA prerequisite'));
|
|
268
|
+
const payer = extras[0];
|
|
269
|
+
ataFunding = minimum(165);
|
|
270
|
+
if (payer.owner !== SYSTEM_PROGRAM ||
|
|
271
|
+
payer.executable ||
|
|
272
|
+
payer.data.length !== 0 ||
|
|
273
|
+
payer.lamports < ataFunding)
|
|
274
|
+
failShipImport(`ATA payer must be a System wallet with at least ${ataFunding} native lamports for escrow storage plus separate fees.`, creation.payer);
|
|
275
|
+
if (extras.slice(1).some((a) => !a.executable))
|
|
276
|
+
failShipImport('ATA creation requires executable associated-token, System and original Token programs.', ATA_PROGRAM);
|
|
277
|
+
preconditions.push(...(await Promise.all(extras.map((raw, i) => observe(raw, [
|
|
278
|
+
'ATA payer identity',
|
|
279
|
+
'Associated-token program',
|
|
280
|
+
'System program',
|
|
281
|
+
'Token program',
|
|
282
|
+
][i])))), {
|
|
283
|
+
kind: 'token-account-or-absent',
|
|
284
|
+
address: escrow,
|
|
285
|
+
mint,
|
|
286
|
+
owner: character,
|
|
287
|
+
describes: 'Explicit idempotent creation permits an absent or already valid canonical Character ATA.',
|
|
288
|
+
});
|
|
289
|
+
steps.push({
|
|
290
|
+
instruction: {
|
|
291
|
+
programAddress: ATA_PROGRAM,
|
|
292
|
+
accounts: [
|
|
293
|
+
{ address: creation.payer, role: 3 },
|
|
294
|
+
{ address: escrow, role: 1 },
|
|
295
|
+
{ address: character, role: 0 },
|
|
296
|
+
{ address: mint, role: 0 },
|
|
297
|
+
{ address: SYSTEM_PROGRAM, role: 0 },
|
|
298
|
+
{ address: ORIGINAL_TOKEN_PROGRAM, role: 0 },
|
|
299
|
+
],
|
|
300
|
+
data: Uint8Array.of(1),
|
|
301
|
+
},
|
|
302
|
+
signers: [creation.payer],
|
|
303
|
+
describes: `Create the canonical Character ship ATA idempotently; payer ${creation.payer} provides observed storage funding ${ataFunding} native lamports, separate from transaction fees.`,
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
const describes = `Import ${amount} whole ships for configuration ${shipId} (mint ${mint}): source ${source} decreases by ${amount}, Character escrow ${escrow} increases by ${amount}, and StarbasePlayer ${player} shipsInEscrow[${shipId}] increases by ${amount}. Profile authority ${authorization.authority} and token owner ${owner} authorize import. Profile ${authorization.profile} provides observed StarbasePlayer storage funding ${growthFunding} native lamports; ATA storage funding ${ataFunding} and execution fees are separate. The actual Profile debit and its rent reserve are rechecked before signing within the approved storage ceiling; compatible creation/assembly debits are combined per Profile. Different ship configurations for one StarbasePlayer require separate confirmed imports. Funding is not reserved; permissions, current access and outcomes remain chain-authoritative. Simulate before signing and verify all three balances after confirmation; never automatically retry an unknown outcome. Import does not create a Fleet. System identity, active Starbase generation and applicable CSS requirements are rechecked before signing; unrelated System combat, shield, health and hab activity is not equality-bound. Execution access checks remain chain-authoritative, not a client-side atomicity guarantee. Mint supply and authorities may change; initialized original Token mint layout and decimals are rechecked before signing.${ownerRaw ? '' : ' An absent token owner wallet may receive native funding as an empty, non-executable System account.'}`;
|
|
307
|
+
steps.push({
|
|
308
|
+
instruction: adaptAddShipEscrowInstruction({
|
|
309
|
+
authorization,
|
|
310
|
+
owner,
|
|
311
|
+
character,
|
|
312
|
+
source,
|
|
313
|
+
escrow,
|
|
314
|
+
system: starbase.system.address,
|
|
315
|
+
starbasePlayer: player,
|
|
316
|
+
game,
|
|
317
|
+
amount,
|
|
318
|
+
shipId,
|
|
319
|
+
}),
|
|
320
|
+
signers: [...new Set([authorization.authority, owner])],
|
|
321
|
+
describes,
|
|
322
|
+
});
|
|
323
|
+
return createPlan({
|
|
324
|
+
kind: 'fleet.ship-import',
|
|
325
|
+
summary: describes,
|
|
326
|
+
preconditions,
|
|
327
|
+
steps,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=ship-import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ship-import.js","sourceRoot":"","sources":["../../../src/fleets/actions/ship-import.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/** Explicit inputs for cooldown assignment, not permission to move.
|
|
2
|
+
* The Character modifier is its raw I32F32 value, not its display number.
|
|
3
|
+
* @example
|
|
4
|
+
* ```ts
|
|
5
|
+
* const input: FleetMovementCooldownInput = {
|
|
6
|
+
* kind: 'coordinateWarp', arrivesAtUnixSeconds: 1_800_000_000n,
|
|
7
|
+
* baseCooldownSeconds: 60, cooldownModifierRaw: 4_294_967_296n,
|
|
8
|
+
* };
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export type FleetMovementCooldownInput = {
|
|
12
|
+
readonly kind: 'coordinateWarp';
|
|
13
|
+
readonly arrivesAtUnixSeconds: bigint;
|
|
14
|
+
readonly baseCooldownSeconds: number;
|
|
15
|
+
readonly cooldownModifierRaw: bigint;
|
|
16
|
+
} | {
|
|
17
|
+
readonly kind: 'warpLane';
|
|
18
|
+
readonly departsAtUnixSeconds: bigint;
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: 'subwarp';
|
|
21
|
+
readonly existingCooldownExpiresAt: bigint;
|
|
22
|
+
};
|
|
23
|
+
/** Predicts the assigned warp-cooldown expiry in Unix seconds for a movement.
|
|
24
|
+
* Coordinate warp anchors at arrival and rounds the modified base upward;
|
|
25
|
+
* a zero modifier uses the unmodified base. Lane warp assigns departure time,
|
|
26
|
+
* replacing even a later expiry. Subwarp preserves the existing expiry.
|
|
27
|
+
*
|
|
28
|
+
* Qualified against PTR deployment slot 54356023. Coordinate/lane timestamps
|
|
29
|
+
* must be nonnegative signed-i64 values, base seconds an integer in 0..65535,
|
|
30
|
+
* and modifier raw a nonnegative signed-i64 value. Overflow is rejected.
|
|
31
|
+
* Existing subwarp expiry may be any signed-i64 value, including sentinels.
|
|
32
|
+
* This pure helper does not calculate journey duration or check state, active
|
|
33
|
+
* cooldown, permissions, Fuel or lane eligibility. Use deriveFleetTimers for
|
|
34
|
+
* observed timer display and simulate the intended action before signing.
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* const expiry = deriveFleetMovementCooldown({
|
|
38
|
+
* kind: 'coordinateWarp', arrivesAtUnixSeconds: 1_800_000_000n,
|
|
39
|
+
* baseCooldownSeconds: 61, cooldownModifierRaw: 2_147_483_648n,
|
|
40
|
+
* }); // 1_800_000_031n
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function deriveFleetMovementCooldown(input: FleetMovementCooldownInput): bigint;
|
|
44
|
+
//# sourceMappingURL=cooldown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooldown.d.ts","sourceRoot":"","sources":["../../src/fleets/cooldown.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,MAAM,0BAA0B,GAClC;IACE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAA;CAAE,CAAC;AAY7E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,0BAA0B,GAChC,MAAM,CA2BR"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { InvalidDerivationInputError } from '../client/index.js';
|
|
2
|
+
const maxTimestamp = (1n << 63n) - 1n;
|
|
3
|
+
const scale = 1n << 32n;
|
|
4
|
+
const remedy = 'Use current Fleet and Character values within the documented cooldown bounds; this calculation does not establish movement eligibility.';
|
|
5
|
+
function bounded(field, value, minimum = 0n) {
|
|
6
|
+
if (value < minimum || value > maxTimestamp)
|
|
7
|
+
throw new InvalidDerivationInputError(field, value, remedy);
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
/** Predicts the assigned warp-cooldown expiry in Unix seconds for a movement.
|
|
11
|
+
* Coordinate warp anchors at arrival and rounds the modified base upward;
|
|
12
|
+
* a zero modifier uses the unmodified base. Lane warp assigns departure time,
|
|
13
|
+
* replacing even a later expiry. Subwarp preserves the existing expiry.
|
|
14
|
+
*
|
|
15
|
+
* Qualified against PTR deployment slot 54356023. Coordinate/lane timestamps
|
|
16
|
+
* must be nonnegative signed-i64 values, base seconds an integer in 0..65535,
|
|
17
|
+
* and modifier raw a nonnegative signed-i64 value. Overflow is rejected.
|
|
18
|
+
* Existing subwarp expiry may be any signed-i64 value, including sentinels.
|
|
19
|
+
* This pure helper does not calculate journey duration or check state, active
|
|
20
|
+
* cooldown, permissions, Fuel or lane eligibility. Use deriveFleetTimers for
|
|
21
|
+
* observed timer display and simulate the intended action before signing.
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const expiry = deriveFleetMovementCooldown({
|
|
25
|
+
* kind: 'coordinateWarp', arrivesAtUnixSeconds: 1_800_000_000n,
|
|
26
|
+
* baseCooldownSeconds: 61, cooldownModifierRaw: 2_147_483_648n,
|
|
27
|
+
* }); // 1_800_000_031n
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export function deriveFleetMovementCooldown(input) {
|
|
31
|
+
if (input.kind === 'subwarp')
|
|
32
|
+
return bounded('Existing warp cooldown expiry', input.existingCooldownExpiresAt, -(1n << 63n));
|
|
33
|
+
if (input.kind === 'warpLane')
|
|
34
|
+
return bounded('Warp-lane departure timestamp', input.departsAtUnixSeconds);
|
|
35
|
+
const arrival = bounded('Coordinate-warp arrival timestamp', input.arrivesAtUnixSeconds);
|
|
36
|
+
const base = input.baseCooldownSeconds;
|
|
37
|
+
if (!Number.isInteger(base) || base < 0 || base > 65535)
|
|
38
|
+
throw new InvalidDerivationInputError('Base warp cooldown seconds', base, remedy);
|
|
39
|
+
const modifier = bounded('Character warp cooldown modifier raw', input.cooldownModifierRaw);
|
|
40
|
+
const duration = (BigInt(base) * (modifier === 0n ? scale : modifier) + scale - 1n) / scale;
|
|
41
|
+
return bounded('Predicted warp cooldown expiry', arrival + duration);
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=cooldown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cooldown.js","sourceRoot":"","sources":["../../src/fleets/cooldown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAsBjE,MAAM,YAAY,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACtC,MAAM,KAAK,GAAG,EAAE,IAAI,GAAG,CAAC;AACxB,MAAM,MAAM,GACV,yIAAyI,CAAC;AAC5I,SAAS,OAAO,CAAC,KAAa,EAAE,KAAa,EAAE,OAAO,GAAG,EAAE;IACzD,IAAI,KAAK,GAAG,OAAO,IAAI,KAAK,GAAG,YAAY;QACzC,MAAM,IAAI,2BAA2B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAAiC;IAEjC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAC1B,OAAO,OAAO,CACZ,+BAA+B,EAC/B,KAAK,CAAC,yBAAyB,EAC/B,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CACb,CAAC;IACJ,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAC3B,OAAO,OAAO,CAAC,+BAA+B,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,OAAO,CACrB,mCAAmC,EACnC,KAAK,CAAC,oBAAoB,CAC3B,CAAC;IACF,MAAM,IAAI,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK;QACrD,MAAM,IAAI,2BAA2B,CACnC,4BAA4B,EAC5B,IAAI,EACJ,MAAM,CACP,CAAC;IACJ,MAAM,QAAQ,GAAG,OAAO,CACtB,sCAAsC,EACtC,KAAK,CAAC,mBAAmB,CAC1B,CAAC;IACF,MAAM,QAAQ,GACZ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC;IAC7E,OAAO,OAAO,CAAC,gCAAgC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;AACvE,CAAC"}
|