@aephia/atlas-kit 0.6.0-next.12 → 0.6.0-next.121
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 +2 -2
- package/dist/cargo/actions/deposit.d.ts.map +1 -1
- package/dist/cargo/actions/deposit.js +28 -117
- package/dist/cargo/actions/deposit.js.map +1 -1
- package/dist/cargo/actions/index.d.ts +1 -1
- package/dist/cargo/actions/index.d.ts.map +1 -1
- package/dist/cargo/actions/index.js +28 -84
- package/dist/cargo/actions/index.js.map +1 -1
- package/dist/cargo/actions/wallet-context.d.ts +52 -3
- package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-context.js +118 -7
- package/dist/cargo/actions/wallet-context.js.map +1 -1
- package/dist/cargo/actions/wallet-token.d.ts +1 -6
- package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-token.js +0 -53
- package/dist/cargo/actions/wallet-token.js.map +1 -1
- package/dist/cargo/actions/withdrawal.d.ts +1 -1
- package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
- package/dist/cargo/actions/withdrawal.js +39 -164
- package/dist/cargo/actions/withdrawal.js.map +1 -1
- package/dist/cargo/index.d.ts.map +1 -1
- package/dist/cargo/index.js +2 -10
- package/dist/cargo/index.js.map +1 -1
- package/dist/claim-stakes/actions/index.d.ts +14 -1
- package/dist/claim-stakes/actions/index.d.ts.map +1 -1
- package/dist/claim-stakes/actions/index.js +399 -592
- package/dist/claim-stakes/actions/index.js.map +1 -1
- package/dist/claim-stakes/index.d.ts +14 -0
- package/dist/claim-stakes/index.d.ts.map +1 -1
- package/dist/claim-stakes/index.js +25 -12
- package/dist/claim-stakes/index.js.map +1 -1
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js +1 -1
- package/dist/client/context.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 +35 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +35 -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 +4 -4
- package/dist/combat/actions/index.d.ts.map +1 -1
- package/dist/combat/actions/index.js +207 -261
- package/dist/combat/actions/index.js.map +1 -1
- package/dist/combat/index.d.ts +13 -3
- package/dist/combat/index.d.ts.map +1 -1
- package/dist/combat/index.js +9 -16
- package/dist/combat/index.js.map +1 -1
- package/dist/crafting/actions/index.d.ts +12 -1
- package/dist/crafting/actions/index.d.ts.map +1 -1
- package/dist/crafting/actions/index.js +181 -303
- package/dist/crafting/actions/index.js.map +1 -1
- package/dist/crafting/index.d.ts +33 -3
- package/dist/crafting/index.d.ts.map +1 -1
- package/dist/crafting/index.js +49 -28
- package/dist/crafting/index.js.map +1 -1
- package/dist/factions/actions/index.d.ts +2 -1
- package/dist/factions/actions/index.d.ts.map +1 -1
- package/dist/factions/actions/index.js +6 -4
- 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 +16 -18
- 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 +120 -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 +108 -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 +94 -0
- package/dist/fleets/actions/crew-transfer.js.map +1 -0
- package/dist/fleets/actions/dock-bounds.d.ts +38 -0
- package/dist/fleets/actions/dock-bounds.d.ts.map +1 -0
- package/dist/fleets/actions/dock-bounds.js +46 -0
- package/dist/fleets/actions/dock-bounds.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +64 -24
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +385 -334
- 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 +93 -0
- package/dist/fleets/actions/respawn.js.map +1 -0
- package/dist/fleets/actions/ship-import.d.ts +1 -1
- package/dist/fleets/actions/ship-import.d.ts.map +1 -1
- package/dist/fleets/actions/ship-import.js +67 -91
- package/dist/fleets/actions/ship-import.js.map +1 -1
- 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 +35 -0
- package/dist/fleets/index.d.ts.map +1 -1
- package/dist/fleets/index.js +54 -12
- 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/travel-profile.d.ts +102 -0
- package/dist/fleets/travel-profile.d.ts.map +1 -0
- package/dist/fleets/travel-profile.js +120 -0
- package/dist/fleets/travel-profile.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-policy.d.ts +68 -0
- package/dist/fleets/warp-lane-policy.d.ts.map +1 -0
- package/dist/fleets/warp-lane-policy.js +91 -0
- package/dist/fleets/warp-lane-policy.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 +1 -1
- package/dist/identity/actions/create-profile.d.ts.map +1 -1
- package/dist/identity/actions/create-profile.js +2 -2
- package/dist/identity/actions/create-profile.js.map +1 -1
- package/dist/identity/actions/index.d.ts +4 -4
- package/dist/identity/actions/index.d.ts.map +1 -1
- package/dist/identity/actions/index.js +51 -29
- package/dist/identity/actions/index.js.map +1 -1
- package/dist/identity/index.d.ts +5 -2
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +6 -12
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/research-state.d.ts +60 -0
- package/dist/identity/research-state.d.ts.map +1 -0
- package/dist/identity/research-state.js +68 -0
- package/dist/identity/research-state.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/c4/account-decoding.d.ts +49 -0
- package/dist/internal/c4/account-decoding.d.ts.map +1 -0
- package/dist/internal/c4/account-decoding.js +74 -0
- package/dist/internal/c4/account-decoding.js.map +1 -0
- 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/cargo-pod.d.ts +15 -0
- package/dist/internal/c4/cargo-pod.d.ts.map +1 -0
- package/dist/internal/c4/cargo-pod.js +13 -0
- package/dist/internal/c4/cargo-pod.js.map +1 -0
- package/dist/internal/c4/character-modifier.d.ts +1 -1
- package/dist/internal/c4/character-modifier.d.ts.map +1 -1
- 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/character.d.ts +157 -0
- package/dist/internal/c4/character.d.ts.map +1 -0
- package/dist/internal/c4/character.js +64 -0
- package/dist/internal/c4/character.js.map +1 -0
- package/dist/internal/c4/claim-stake-building-definitions.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake-building-definitions.js +2 -1
- package/dist/internal/c4/claim-stake-building-definitions.js.map +1 -1
- package/dist/internal/c4/claim-stake-configuration.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake-configuration.js +5 -36
- package/dist/internal/c4/claim-stake-configuration.js.map +1 -1
- package/dist/internal/c4/claim-stake-definitions.d.ts +4 -4
- package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake-definitions.js +2 -1
- package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
- package/dist/internal/c4/claim-stake.d.ts +4 -27
- package/dist/internal/c4/claim-stake.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake.js +38 -83
- package/dist/internal/c4/claim-stake.js.map +1 -1
- package/dist/internal/c4/combat.d.ts +1 -82
- package/dist/internal/c4/combat.d.ts.map +1 -1
- package/dist/internal/c4/combat.js +16 -213
- 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 +25 -33
- package/dist/internal/c4/crafting.d.ts.map +1 -1
- package/dist/internal/c4/crafting.js +76 -127
- package/dist/internal/c4/crafting.js.map +1 -1
- package/dist/internal/c4/currency-cache.d.ts +6 -0
- package/dist/internal/c4/currency-cache.d.ts.map +1 -0
- package/dist/internal/c4/currency-cache.js +27 -0
- package/dist/internal/c4/currency-cache.js.map +1 -0
- package/dist/internal/c4/discriminators.d.ts +81 -0
- package/dist/internal/c4/discriminators.d.ts.map +1 -0
- package/dist/internal/c4/discriminators.js +166 -0
- package/dist/internal/c4/discriminators.js.map +1 -0
- package/dist/internal/c4/docking-funding.d.ts +4 -0
- package/dist/internal/c4/docking-funding.d.ts.map +1 -0
- package/dist/internal/c4/docking-funding.js +11 -0
- package/dist/internal/c4/docking-funding.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 +26 -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 +41 -0
- package/dist/internal/c4/faction-treasury.js.map +1 -0
- package/dist/internal/c4/faction.d.ts +21 -0
- package/dist/internal/c4/faction.d.ts.map +1 -0
- package/dist/internal/c4/faction.js +23 -0
- package/dist/internal/c4/faction.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +13 -57
- package/dist/internal/c4/factions.d.ts.map +1 -1
- package/dist/internal/c4/factions.js +79 -222
- 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 +171 -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 +31 -44
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
- package/dist/internal/c4/fleet-respawn.d.ts +17 -0
- package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
- package/dist/internal/c4/fleet-respawn.js +62 -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 +48 -19
- package/dist/internal/c4/fleet.d.ts.map +1 -1
- package/dist/internal/c4/fleet.js +50 -87
- package/dist/internal/c4/fleet.js.map +1 -1
- package/dist/internal/c4/game-definition-layout.d.ts +2 -0
- package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
- package/dist/internal/c4/game-definition-layout.js +4 -0
- package/dist/internal/c4/game-definition-layout.js.map +1 -1
- package/dist/internal/c4/game.d.ts +76 -30
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +173 -124
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/c4/identity.d.ts +3 -152
- package/dist/internal/c4/identity.d.ts.map +1 -1
- package/dist/internal/c4/identity.js +19 -126
- package/dist/internal/c4/identity.js.map +1 -1
- package/dist/internal/c4/local-market-order.d.ts +29 -0
- package/dist/internal/c4/local-market-order.d.ts.map +1 -0
- package/dist/internal/c4/local-market-order.js +46 -0
- package/dist/internal/c4/local-market-order.js.map +1 -0
- package/dist/internal/c4/loot-layout.js +1 -1
- package/dist/internal/c4/loot-layout.js.map +1 -1
- package/dist/internal/c4/loot.d.ts +87 -0
- package/dist/internal/c4/loot.d.ts.map +1 -0
- package/dist/internal/c4/loot.js +108 -0
- package/dist/internal/c4/loot.js.map +1 -0
- 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 +32 -160
- package/dist/internal/c4/loyalty.js.map +1 -1
- package/dist/internal/c4/market.d.ts +2 -38
- package/dist/internal/c4/market.d.ts.map +1 -1
- package/dist/internal/c4/market.js +26 -120
- 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/pda.d.ts +31 -0
- package/dist/internal/c4/pda.d.ts.map +1 -1
- package/dist/internal/c4/pda.js +60 -17
- package/dist/internal/c4/pda.js.map +1 -1
- package/dist/internal/c4/profile-faction.d.ts +2 -1
- package/dist/internal/c4/profile-faction.d.ts.map +1 -1
- package/dist/internal/c4/profile-faction.js +36 -72
- package/dist/internal/c4/profile-faction.js.map +1 -1
- package/dist/internal/c4/profile-permissions.d.ts +1 -1
- package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
- package/dist/internal/c4/profile-permissions.js +2 -1
- package/dist/internal/c4/profile-permissions.js.map +1 -1
- 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 +1 -61
- package/dist/internal/c4/rewards.d.ts.map +1 -1
- package/dist/internal/c4/rewards.js +23 -203
- package/dist/internal/c4/rewards.js.map +1 -1
- package/dist/internal/c4/runtime-bindings.d.ts +4 -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 +235 -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 +32 -103
- 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 +45 -43
- 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 +26 -136
- package/dist/internal/c4/starbase.js.map +1 -1
- package/dist/internal/c4/wallet-cargo-cache.js +2 -1
- package/dist/internal/c4/wallet-cargo-cache.js.map +1 -1
- package/dist/internal/c4/world.d.ts +36 -7
- package/dist/internal/c4/world.d.ts.map +1 -1
- package/dist/internal/c4/world.js +87 -129
- 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/account-state.d.ts +6 -0
- package/dist/internal/planning/account-state.d.ts.map +1 -1
- package/dist/internal/planning/account-state.js +13 -0
- package/dist/internal/planning/account-state.js.map +1 -1
- 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 +19 -0
- package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
- package/dist/internal/planning/arrival-guards.js +172 -0
- package/dist/internal/planning/arrival-guards.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +45 -37
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
- package/dist/internal/planning/authorization-adapter.js +169 -81
- 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 +59 -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 +87 -0
- package/dist/internal/planning/character-registration.js.map +1 -0
- package/dist/internal/planning/currency-cache-guard.d.ts +4 -0
- package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -0
- package/dist/internal/planning/currency-cache-guard.js +33 -0
- package/dist/internal/planning/currency-cache-guard.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 +189 -0
- package/dist/internal/planning/democracy-history.js.map +1 -0
- package/dist/internal/planning/direct-options.d.ts +17 -0
- package/dist/internal/planning/direct-options.d.ts.map +1 -0
- package/dist/internal/planning/direct-options.js +43 -0
- package/dist/internal/planning/direct-options.js.map +1 -0
- package/dist/internal/planning/faction-enrollment.d.ts +0 -4
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
- package/dist/internal/planning/faction-enrollment.js +1 -31
- 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 +107 -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 +104 -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 +89 -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 +48 -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 +123 -0
- package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-dock-funding-guard.js +209 -0
- package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
- package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
- package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
- package/dist/internal/planning/fleet-dock-funding.js +154 -0
- package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
- package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
- package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-docking-guard.js +43 -0
- package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
- package/dist/internal/planning/fleet-docking.d.ts +10 -0
- package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
- package/dist/internal/planning/fleet-docking.js +71 -0
- package/dist/internal/planning/fleet-docking.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 +118 -0
- package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/planning/fleet-state.d.ts +25 -0
- package/dist/internal/planning/fleet-state.d.ts.map +1 -0
- package/dist/internal/planning/fleet-state.js +28 -0
- package/dist/internal/planning/fleet-state.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 +231 -0
- package/dist/internal/planning/governance-fees.js.map +1 -0
- package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
- package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
- package/dist/internal/planning/local-market-order-funding.js +128 -0
- package/dist/internal/planning/local-market-order-funding.js.map +1 -0
- package/dist/internal/planning/local-market-order.d.ts +40 -0
- package/dist/internal/planning/local-market-order.d.ts.map +1 -0
- package/dist/internal/planning/local-market-order.js +139 -0
- package/dist/internal/planning/local-market-order.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 +42 -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 +104 -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 +32 -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 +85 -0
- package/dist/internal/planning/open-signal.js.map +1 -0
- package/dist/internal/planning/original-token.d.ts +40 -0
- package/dist/internal/planning/original-token.d.ts.map +1 -0
- package/dist/internal/planning/original-token.js +112 -0
- package/dist/internal/planning/original-token.js.map +1 -0
- package/dist/internal/planning/own-starbase-facts.d.ts +33 -0
- package/dist/internal/planning/own-starbase-facts.d.ts.map +1 -0
- package/dist/internal/planning/own-starbase-facts.js +49 -0
- package/dist/internal/planning/own-starbase-facts.js.map +1 -0
- package/dist/internal/planning/plan-fields.d.ts +60 -0
- package/dist/internal/planning/plan-fields.d.ts.map +1 -0
- package/dist/internal/planning/plan-fields.js +159 -0
- package/dist/internal/planning/plan-fields.js.map +1 -0
- package/dist/internal/planning/plan-guards.d.ts +4 -0
- package/dist/internal/planning/plan-guards.d.ts.map +1 -0
- package/dist/internal/planning/plan-guards.js +168 -0
- package/dist/internal/planning/plan-guards.js.map +1 -0
- package/dist/internal/planning/profile-key.d.ts +13 -0
- package/dist/internal/planning/profile-key.d.ts.map +1 -0
- package/dist/internal/planning/profile-key.js +20 -0
- package/dist/internal/planning/profile-key.js.map +1 -0
- package/dist/internal/planning/recipe-state.d.ts +6 -0
- package/dist/internal/planning/recipe-state.d.ts.map +1 -0
- package/dist/internal/planning/recipe-state.js +20 -0
- package/dist/internal/planning/recipe-state.js.map +1 -0
- package/dist/internal/planning/rent.d.ts +19 -0
- package/dist/internal/planning/rent.d.ts.map +1 -0
- package/dist/internal/planning/rent.js +35 -0
- package/dist/internal/planning/rent.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 +42 -0
- package/dist/internal/planning/respawn-guards.js.map +1 -0
- package/dist/internal/planning/runtime-guards.d.ts +41 -0
- package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
- package/dist/internal/planning/runtime-guards.js +640 -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 +95 -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 +197 -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 +245 -0
- package/dist/internal/planning/scan-detect.js.map +1 -0
- package/dist/internal/planning/scan-input.d.ts +9 -0
- package/dist/internal/planning/scan-input.d.ts.map +1 -0
- package/dist/internal/planning/scan-input.js +58 -0
- package/dist/internal/planning/scan-input.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 +53 -0
- package/dist/internal/planning/ship-import-funding.js.map +1 -0
- package/dist/internal/planning/ship-token.d.ts +1 -6
- package/dist/internal/planning/ship-token.d.ts.map +1 -1
- package/dist/internal/planning/ship-token.js +2 -41
- package/dist/internal/planning/ship-token.js.map +1 -1
- package/dist/internal/planning/starbase-player-owner.d.ts +21 -0
- package/dist/internal/planning/starbase-player-owner.d.ts.map +1 -0
- package/dist/internal/planning/starbase-player-owner.js +17 -0
- package/dist/internal/planning/starbase-player-owner.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 +94 -0
- package/dist/internal/planning/starbase-system-guard.js.map +1 -0
- package/dist/internal/planning/starbase-system.d.ts +15 -0
- package/dist/internal/planning/starbase-system.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system.js +25 -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 +16 -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/wallet-starbase.d.ts +34 -0
- package/dist/internal/planning/wallet-starbase.d.ts.map +1 -0
- package/dist/internal/planning/wallet-starbase.js +39 -0
- package/dist/internal/planning/wallet-starbase.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 +117 -0
- package/dist/internal/planning/xp-runtime.js.map +1 -0
- package/dist/internal/read-meta.d.ts +12 -0
- package/dist/internal/read-meta.d.ts.map +1 -1
- package/dist/internal/read-meta.js +10 -0
- package/dist/internal/read-meta.js.map +1 -1
- package/dist/internal/system-program.d.ts +4 -0
- package/dist/internal/system-program.d.ts.map +1 -0
- package/dist/internal/system-program.js +3 -0
- package/dist/internal/system-program.js.map +1 -0
- package/dist/loyalty/actions/index.d.ts +1 -1
- package/dist/loyalty/actions/index.d.ts.map +1 -1
- package/dist/loyalty/actions/index.js +15 -45
- package/dist/loyalty/actions/index.js.map +1 -1
- package/dist/loyalty/index.d.ts.map +1 -1
- package/dist/loyalty/index.js +6 -18
- package/dist/loyalty/index.js.map +1 -1
- package/dist/markets/actions/index.d.ts +62 -4
- package/dist/markets/actions/index.d.ts.map +1 -1
- package/dist/markets/actions/index.js +230 -178
- 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 +277 -0
- package/dist/markets/actions/trade-faction-market.js.map +1 -0
- package/dist/markets/index.d.ts +38 -7
- package/dist/markets/index.d.ts.map +1 -1
- package/dist/markets/index.js +59 -20
- package/dist/markets/index.js.map +1 -1
- package/dist/mining/actions/index.d.ts +87 -0
- package/dist/mining/actions/index.d.ts.map +1 -0
- package/dist/mining/actions/index.js +319 -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 +9 -2
- package/dist/mining/index.d.ts.map +1 -1
- package/dist/mining/index.js +10 -13
- package/dist/mining/index.js.map +1 -1
- package/dist/mining/profile.d.ts +82 -0
- package/dist/mining/profile.d.ts.map +1 -0
- package/dist/mining/profile.js +109 -0
- package/dist/mining/profile.js.map +1 -0
- package/dist/planning/assembly.d.ts +6 -1
- package/dist/planning/assembly.d.ts.map +1 -1
- package/dist/planning/assembly.js +12 -8
- package/dist/planning/assembly.js.map +1 -1
- package/dist/planning/execution.d.ts +19 -3
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +504 -72
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +196 -149
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +31 -355
- package/dist/planning/index.js.map +1 -1
- package/dist/planning/plan-construction.d.ts +25 -0
- package/dist/planning/plan-construction.d.ts.map +1 -0
- package/dist/planning/plan-construction.js +143 -0
- package/dist/planning/plan-construction.js.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts +9 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -1
- package/dist/planning/plan-sequence-checkpoint.js +16 -7
- package/dist/planning/plan-sequence-checkpoint.js.map +1 -1
- package/dist/planning/plan-sequence-execution.d.ts +5 -0
- package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
- package/dist/planning/plan-sequence-execution.js +74 -40
- package/dist/planning/plan-sequence-execution.js.map +1 -1
- package/dist/planning/plan-sequence.d.ts +2 -1
- package/dist/planning/plan-sequence.d.ts.map +1 -1
- package/dist/planning/plan-sequence.js +8 -1
- package/dist/planning/plan-sequence.js.map +1 -1
- package/dist/planning/plan-validation.d.ts +17 -0
- package/dist/planning/plan-validation.d.ts.map +1 -0
- package/dist/planning/plan-validation.js +127 -0
- package/dist/planning/plan-validation.js.map +1 -0
- 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 +7 -12
- package/dist/registry/cargo.d.ts.map +1 -1
- package/dist/registry/cargo.js +20 -20
- package/dist/registry/cargo.js.map +1 -1
- package/dist/registry/docking.d.ts +10 -0
- package/dist/registry/docking.d.ts.map +1 -0
- package/dist/registry/docking.js +12 -0
- package/dist/registry/docking.js.map +1 -0
- package/dist/registry/index.d.ts +4 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +190 -224
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/onboarding.d.ts +10 -2
- package/dist/registry/onboarding.d.ts.map +1 -1
- package/dist/registry/onboarding.js +20 -7
- 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 +22 -2
- package/dist/registry/ships.d.ts.map +1 -1
- package/dist/registry/ships.js +31 -4
- package/dist/registry/ships.js.map +1 -1
- 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/rewards/index.d.ts +11 -5
- package/dist/rewards/index.d.ts.map +1 -1
- package/dist/rewards/index.js +10 -21
- package/dist/rewards/index.js.map +1 -1
- 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 +191 -0
- package/dist/scanning/actions/index.js.map +1 -0
- package/dist/scanning/index.d.ts +5 -2
- package/dist/scanning/index.d.ts.map +1 -1
- package/dist/scanning/index.js +17 -21
- 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/starbases/actions/index.d.ts +1 -1
- package/dist/starbases/actions/index.d.ts.map +1 -1
- package/dist/starbases/actions/index.js +16 -58
- package/dist/starbases/actions/index.js.map +1 -1
- package/dist/starbases/index.d.ts.map +1 -1
- package/dist/starbases/index.js +3 -11
- package/dist/starbases/index.js.map +1 -1
- package/dist/world/index.d.ts +110 -5
- package/dist/world/index.d.ts.map +1 -1
- package/dist/world/index.js +112 -15
- package/dist/world/index.js.map +1 -1
- package/dist/world/planet-claim-stake-plots.d.ts +130 -0
- package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
- package/dist/world/planet-claim-stake-plots.js +110 -0
- package/dist/world/planet-claim-stake-plots.js.map +1 -0
- package/dist/world/starbase-status.d.ts +176 -0
- package/dist/world/starbase-status.d.ts.map +1 -0
- package/dist/world/starbase-status.js +153 -0
- package/dist/world/starbase-status.js.map +1 -0
- package/package.json +10 -2
|
@@ -1,20 +1,25 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { fleetAttackInstructionKey, validateFleetAttackActors, } from '../../internal/planning/fleet-attack-xp.js';
|
|
2
|
+
import { resolveXpRuntime } from '../../internal/planning/xp-runtime.js';
|
|
3
|
+
import { isAddress } from '@solana/kit';
|
|
4
|
+
import { resolveActionRuntime } from '../../internal/planning/action-runtime.js';
|
|
2
5
|
import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
|
|
3
6
|
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
4
|
-
import {
|
|
5
|
-
import { lootAccountDefinition, } from '../../internal/c4/
|
|
7
|
+
import { getRetrieveLootInstructionDataEncoder } from '../../internal/c4/runtime-bindings.js';
|
|
8
|
+
import { lootAccountDefinition, } from '../../internal/c4/loot.js';
|
|
6
9
|
import { deriveFleetAddress, fleetAccountDefinition, } from '../../internal/c4/fleet.js';
|
|
7
|
-
import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, } from '../../internal/c4/fleet-crew-binding.js';
|
|
10
|
+
import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, matchesFleetCrewBindingIdentity, } from '../../internal/c4/fleet-crew-binding.js';
|
|
8
11
|
import { deriveFactionAccountAddress, deriveFactionEconomicsConfigAddress, deriveFactionOwnershipAddress, deriveFactionRelationTrackerAddress, deriveFactionTreasuryAddress, deriveKingSystemTrackerAddress, deriveRegionTrackerAddress, factionAccountDefinition, factionEconomicsConfigAccountDefinition, factionOwnershipAccountDefinition, factionRelationTrackerAccountDefinition, factionTreasuryAccountDefinition, kingSystemTrackerAccountDefinition, regionTrackerAccountDefinition, } from '../../internal/c4/factions.js';
|
|
9
|
-
import {
|
|
12
|
+
import { factionValue } from '../../internal/c4/faction.js';
|
|
13
|
+
import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/character.js';
|
|
10
14
|
import { deriveLoyaltyContributionAddress, deriveLoyaltyEpochAddress, loyaltyContributionAccountDefinition, loyaltyEpochAccountDefinition, } from '../../internal/c4/loyalty.js';
|
|
11
15
|
import { atlasRewardConfigAccountDefinition, atlasRewardRegistryAccountDefinition, deriveAtlasRewardConfigAddress, deriveAtlasRewardRegistryAddress, } from '../../internal/c4/rewards.js';
|
|
12
16
|
import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../../internal/c4/world.js';
|
|
13
17
|
import { requireGameAddress } from '../../internal/game-context.js';
|
|
14
|
-
import { adaptApplyCombatStimulantInstruction, adaptAttackFleetInstruction, adaptAttackStarbaseInstruction, adaptRetrieveLootInstruction,
|
|
15
|
-
import {
|
|
18
|
+
import { adaptApplyCombatStimulantInstruction, adaptAttackFleetInstruction, adaptAttackStarbaseInstruction, adaptRetrieveLootInstruction, readPlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
|
|
19
|
+
import { buildPlannerPlan } from '../../planning/plan-construction.js';
|
|
16
20
|
import { readGameCombatConfiguration } from '../../registry/combat.js';
|
|
17
21
|
import { resolveCargo, } from '../../registry/index.js';
|
|
22
|
+
import { accountAbsentPrecondition, accountStatePrecondition, } from '../../internal/planning/account-state.js';
|
|
18
23
|
function invalid(field, value, acceptedRange, remedy) {
|
|
19
24
|
throw new InvalidActionInputError(field, value, acceptedRange, remedy);
|
|
20
25
|
}
|
|
@@ -35,19 +40,13 @@ function assertKeys(value, field, required, optional = []) {
|
|
|
35
40
|
function validateOptions(value) {
|
|
36
41
|
const options = readRecord(value, 'options');
|
|
37
42
|
assertKeys(options, 'options', ['authorization']);
|
|
38
|
-
const
|
|
39
|
-
assertKeys(authorizationRecord, 'authorization', ['profile', 'authority', 'keyIndex'], ['certificate']);
|
|
40
|
-
const authorization = authorizationRecord;
|
|
41
|
-
validatePlanAuthorization(authorization);
|
|
43
|
+
const authorization = readPlanAuthorization(options.authorization);
|
|
42
44
|
return { authorization };
|
|
43
45
|
}
|
|
44
46
|
function validateAttackOptions(value) {
|
|
45
47
|
const options = readRecord(value, 'options');
|
|
46
48
|
assertKeys(options, 'options', ['authorization', 'loot']);
|
|
47
|
-
const
|
|
48
|
-
assertKeys(authorizationRecord, 'authorization', ['profile', 'authority', 'keyIndex'], ['certificate']);
|
|
49
|
-
const authorization = authorizationRecord;
|
|
50
|
-
validatePlanAuthorization(authorization);
|
|
49
|
+
const authorization = readPlanAuthorization(options.authorization);
|
|
51
50
|
if (typeof options.loot !== 'string' || !isAddress(options.loot)) {
|
|
52
51
|
invalid('options.loot', options.loot, 'one valid new Loot account address', 'Generate a new address-only Loot signer and provide its public address before retrying.');
|
|
53
52
|
}
|
|
@@ -66,10 +65,7 @@ function validateAttackStance(value) {
|
|
|
66
65
|
function validateRetrieveOptions(value) {
|
|
67
66
|
const options = readRecord(value, 'options');
|
|
68
67
|
assertKeys(options, 'options', ['authorization', 'atUnixSeconds']);
|
|
69
|
-
const
|
|
70
|
-
assertKeys(authorizationRecord, 'authorization', ['profile', 'authority', 'keyIndex'], ['certificate']);
|
|
71
|
-
const authorization = authorizationRecord;
|
|
72
|
-
validatePlanAuthorization(authorization);
|
|
68
|
+
const authorization = readPlanAuthorization(options.authorization);
|
|
73
69
|
if (typeof options.atUnixSeconds !== 'bigint' || options.atUnixSeconds < 0n) {
|
|
74
70
|
invalid('options.atUnixSeconds', options.atUnixSeconds, 'a non-negative bigint Unix timestamp', 'Provide the explicit current Unix timestamp used to evaluate Loot exclusivity before retrying.');
|
|
75
71
|
}
|
|
@@ -162,9 +158,7 @@ function validateLootSelection(value, loot, fleet, retrievingProfile, atUnixSeco
|
|
|
162
158
|
}
|
|
163
159
|
generated.push([itemIndex, encoded]);
|
|
164
160
|
}
|
|
165
|
-
const instructionDataLength =
|
|
166
|
-
.getRetrieveLootInstructionDataEncoder()
|
|
167
|
-
.encode({
|
|
161
|
+
const instructionDataLength = getRetrieveLootInstructionDataEncoder().encode({
|
|
168
162
|
keyIndex: 0,
|
|
169
163
|
want: generated.map(([itemIndex, cargo]) => [
|
|
170
164
|
itemIndex,
|
|
@@ -209,29 +203,6 @@ function rawCargoFingerprint(fleet) {
|
|
|
209
203
|
.join(',');
|
|
210
204
|
return [fleet.cargoHold.seqId, fleet.cargoHold.storageCost, items].join('|');
|
|
211
205
|
}
|
|
212
|
-
async function hashAccountState(account) {
|
|
213
|
-
const owner = getAddressEncoder().encode(account.owner);
|
|
214
|
-
const canonical = new Uint8Array(owner.length + account.data.length);
|
|
215
|
-
canonical.set(owner);
|
|
216
|
-
canonical.set(account.data, owner.length);
|
|
217
|
-
const digest = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', canonical));
|
|
218
|
-
return [...digest].map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
219
|
-
}
|
|
220
|
-
async function precondition(account, describes) {
|
|
221
|
-
return Object.freeze({
|
|
222
|
-
address: account.address,
|
|
223
|
-
dataHash: await hashAccountState(account),
|
|
224
|
-
describes,
|
|
225
|
-
kind: 'account-state',
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
function absentPrecondition(address, describes) {
|
|
229
|
-
return Object.freeze({
|
|
230
|
-
address,
|
|
231
|
-
describes,
|
|
232
|
-
kind: 'account-absent',
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
206
|
/** Plans application of one configured combat stimulant without predicting its effects.
|
|
236
207
|
*
|
|
237
208
|
* The planner validates Fleet ownership and Game membership, current catalog
|
|
@@ -311,10 +282,10 @@ export async function planFleetApplyCombatStimulant(ctx, fleet, stimulant, input
|
|
|
311
282
|
fail(`Fleet ${fleet.name} (${fleet.address}) has no crew and cannot apply a combat stimulant. Crew the Fleet, refresh it through this context, and retry.`, fleet.address);
|
|
312
283
|
}
|
|
313
284
|
const description = `Apply one ${catalogued.cargo.name} combat stimulant from Fleet ${fleet.name} (${fleet.address}); permission, stacking, charge application, and combat outcomes remain chain-authoritative.`;
|
|
314
|
-
return
|
|
285
|
+
return buildPlannerPlan({
|
|
315
286
|
kind: 'combat.apply-stimulant',
|
|
316
287
|
preconditions: [
|
|
317
|
-
await
|
|
288
|
+
await accountStatePrecondition(account, `Fleet ${fleet.name} retains its configured Game, owning Profile, supported crewed state, and known ${catalogued.cargo.name} cargo balance.`),
|
|
318
289
|
],
|
|
319
290
|
steps: [
|
|
320
291
|
{
|
|
@@ -331,20 +302,6 @@ export async function planFleetApplyCombatStimulant(ctx, fleet, stimulant, input
|
|
|
331
302
|
summary: description,
|
|
332
303
|
});
|
|
333
304
|
}
|
|
334
|
-
function factionId(fleet) {
|
|
335
|
-
if (fleet.npcFactionId > 0)
|
|
336
|
-
return fleet.npcFactionId;
|
|
337
|
-
switch (fleet.faction) {
|
|
338
|
-
case 'mud':
|
|
339
|
-
return 1;
|
|
340
|
-
case 'oni':
|
|
341
|
-
return 2;
|
|
342
|
-
case 'ustur':
|
|
343
|
-
return 3;
|
|
344
|
-
case 'unaligned':
|
|
345
|
-
return 0;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
305
|
function shipFingerprint(fleet) {
|
|
349
306
|
return fleet.ships
|
|
350
307
|
.map(({ id, quantity }) => `${String(id)}:${String(quantity)}`)
|
|
@@ -404,14 +361,13 @@ async function optionalCrewBinding(ctx, fleet) {
|
|
|
404
361
|
const address = await deriveFleetCrewBindingAddress(fleet.address);
|
|
405
362
|
const [envelope] = await ctx.data.readMany(fleetCrewBindingAccountDefinition, [address]);
|
|
406
363
|
if (envelope !== undefined &&
|
|
407
|
-
(envelope.data.
|
|
408
|
-
envelope.data.ownerProfile !== fleet.ownerProfile.address)) {
|
|
364
|
+
!matchesFleetCrewBindingIdentity(envelope.data, fleet.address, fleet.ownerProfile.address)) {
|
|
409
365
|
fail(`FleetCrewBinding ${address} does not belong to Fleet ${fleet.address} and Profile ${fleet.ownerProfile.address}. Refresh the Fleet crew relationship and retry.`, address);
|
|
410
366
|
}
|
|
411
367
|
return envelope?.address;
|
|
412
368
|
}
|
|
413
369
|
async function resolveRewardAccounts(ctx, fleet, registry, config, epochIndex) {
|
|
414
|
-
const resolvedFaction =
|
|
370
|
+
const resolvedFaction = fleet.npcFactionId > 0 ? fleet.npcFactionId : factionValue(fleet.faction);
|
|
415
371
|
if (resolvedFaction === 0)
|
|
416
372
|
return { config, registry };
|
|
417
373
|
const [epochAddress, contributionAddress] = await Promise.all([
|
|
@@ -446,33 +402,82 @@ async function resolveRewardAccounts(ctx, fleet, registry, config, epochIndex) {
|
|
|
446
402
|
registry,
|
|
447
403
|
};
|
|
448
404
|
}
|
|
449
|
-
|
|
405
|
+
/** Reads and requires an NPC Fleet's canonical FactionOwnership and, when
|
|
406
|
+
* `withFaction`, its Faction account; a player Fleet has neither. */
|
|
407
|
+
async function resolveNpcAccounts(ctx, fleet, withFaction) {
|
|
450
408
|
if (fleet.npcFactionId === 0)
|
|
451
409
|
return {};
|
|
452
|
-
const
|
|
453
|
-
|
|
410
|
+
const addresses = await Promise.all([
|
|
411
|
+
deriveFactionOwnershipAddress(fleet.game, 'fleet', fleet.address),
|
|
412
|
+
...(withFaction
|
|
413
|
+
? [deriveFactionAccountAddress(fleet.game, fleet.npcFactionId)]
|
|
414
|
+
: []),
|
|
415
|
+
]);
|
|
416
|
+
const [ownership, faction] = await readContextRawAccounts(ctx, addresses);
|
|
417
|
+
const ownershipData = ownership && factionOwnershipAccountDefinition.decode(ownership);
|
|
454
418
|
if (ownership === undefined ||
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
fail(`NPC Fleet ${fleet.address} has no matching canonical FactionOwnership for faction ${String(fleet.npcFactionId)}. Refresh the Fleet and faction ownership relationship before retrying.`,
|
|
460
|
-
}
|
|
461
|
-
if (!
|
|
462
|
-
return { ownership
|
|
463
|
-
const
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
fail(`Faction ${
|
|
468
|
-
}
|
|
469
|
-
return {
|
|
419
|
+
ownershipData?.game !== fleet.game ||
|
|
420
|
+
ownershipData.asset.kind !== 'fleet' ||
|
|
421
|
+
ownershipData.asset.fleet !== fleet.address ||
|
|
422
|
+
ownershipData.controllingFactionId !== fleet.npcFactionId) {
|
|
423
|
+
fail(`NPC Fleet ${fleet.address} has no matching canonical FactionOwnership for faction ${String(fleet.npcFactionId)}. Refresh the Fleet and faction ownership relationship before retrying.`, addresses[0]);
|
|
424
|
+
}
|
|
425
|
+
if (!withFaction)
|
|
426
|
+
return { ownership };
|
|
427
|
+
const factionData = faction && factionAccountDefinition.decode(faction);
|
|
428
|
+
if (faction === undefined ||
|
|
429
|
+
factionData?.game !== fleet.game ||
|
|
430
|
+
factionData.factionId !== fleet.npcFactionId) {
|
|
431
|
+
fail(`Faction ${addresses[1]} is missing or does not match NPC Fleet ${fleet.address}'s Game and faction id. Refresh the faction registry relationship before retrying.`, addresses[1]);
|
|
432
|
+
}
|
|
433
|
+
return { faction, ownership };
|
|
470
434
|
}
|
|
471
435
|
function generatedStance(stance) {
|
|
472
436
|
return {
|
|
473
437
|
ammoUsage: stance.ammoUsage === 'none' ? 0 : stance.ammoUsage === 'light' ? 1 : 2,
|
|
474
438
|
};
|
|
475
439
|
}
|
|
440
|
+
/** Requires a live Fleet snapshot of the configured Game with known AP, crew
|
|
441
|
+
* and ship composition; an attacking Fleet also needs AP available. */
|
|
442
|
+
function validateAttackFleet(fleet, role, game) {
|
|
443
|
+
const label = `The ${role} Fleet ${fleet.name} (${fleet.address})`;
|
|
444
|
+
if (fleet.game !== game) {
|
|
445
|
+
fail(`${label} belongs to Game ${fleet.game}, not configured Game ${game}. Refresh the Fleet through this context and retry.`, fleet.address);
|
|
446
|
+
}
|
|
447
|
+
if (fleet.state.kind === 'destroyed') {
|
|
448
|
+
fail(`${label} is destroyed and cannot participate in this attack. Refresh the Fleet after respawn and retry.`, fleet.address);
|
|
449
|
+
}
|
|
450
|
+
if (!Number.isSafeInteger(fleet.ap) ||
|
|
451
|
+
fleet.ap < 0 ||
|
|
452
|
+
!Number.isSafeInteger(fleet.crewCount) ||
|
|
453
|
+
fleet.crewCount <= 0) {
|
|
454
|
+
fail(`${label} has unknown or invalid AP or crew state. Refresh the Fleet through this context and retry.`, fleet.address);
|
|
455
|
+
}
|
|
456
|
+
if (fleet.ships.length === 0 ||
|
|
457
|
+
fleet.ships.some(({ quantity }) => quantity <= 0n)) {
|
|
458
|
+
fail(`${label} has no valid known ship composition. Refresh Fleet composition and retry.`, fleet.address);
|
|
459
|
+
}
|
|
460
|
+
if (role === 'attacking' && fleet.ap === 0) {
|
|
461
|
+
fail(`${label} has no known AP available. Wait for AP reload, refresh the Fleet, and retry.`, fleet.address);
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
/** Validates the inputs every attack shares: the stance, an attacking Fleet
|
|
465
|
+
* owned by the authorization Profile that can attack, and a new Loot address
|
|
466
|
+
* distinct from the authorization signers. */
|
|
467
|
+
function validateAttack(ctx, attacker, inputStance, inputOptions) {
|
|
468
|
+
const options = validateAttackOptions(inputOptions);
|
|
469
|
+
const stance = validateAttackStance(inputStance);
|
|
470
|
+
const game = requireGameAddress(ctx);
|
|
471
|
+
if (attacker.ownerProfile.address !== options.authorization.profile) {
|
|
472
|
+
fail(`Attacking Fleet ${attacker.address} does not belong to authorization Profile ${options.authorization.profile}. Choose an owned Fleet and retry.`, attacker.address);
|
|
473
|
+
}
|
|
474
|
+
if (options.loot === options.authorization.authority ||
|
|
475
|
+
options.loot === options.authorization.profile) {
|
|
476
|
+
fail(`The new Loot address ${options.loot} must be distinct from the authorization authority and Profile. Generate a separate Loot signer address and retry.`, options.loot);
|
|
477
|
+
}
|
|
478
|
+
validateAttackFleet(attacker, 'attacking', game);
|
|
479
|
+
return { game, options, stance };
|
|
480
|
+
}
|
|
476
481
|
/** Plans one singleton Fleet-on-Fleet attack without predicting its outcome.
|
|
477
482
|
*
|
|
478
483
|
* Range, randomness, recent slot hashes, final combat arithmetic, and chain
|
|
@@ -497,43 +502,11 @@ function generatedStance(stance) {
|
|
|
497
502
|
* ```
|
|
498
503
|
*/
|
|
499
504
|
export async function planFleetAttackFleet(ctx, attacker, defender, inputStance, inputOptions) {
|
|
500
|
-
const options =
|
|
501
|
-
const stance = validateAttackStance(inputStance);
|
|
502
|
-
const game = requireGameAddress(ctx);
|
|
505
|
+
const { game, options, stance } = validateAttack(ctx, attacker, inputStance, inputOptions);
|
|
503
506
|
if (attacker.address === defender.address) {
|
|
504
507
|
fail(`Fleet ${attacker.address} cannot attack itself. Choose a distinct defending Fleet and retry.`, attacker.address);
|
|
505
508
|
}
|
|
506
|
-
|
|
507
|
-
fail(`Attacking Fleet ${attacker.address} does not belong to authorization Profile ${options.authorization.profile}. Choose an owned Fleet and retry.`, attacker.address);
|
|
508
|
-
}
|
|
509
|
-
if (options.loot === options.authorization.authority ||
|
|
510
|
-
options.loot === options.authorization.profile) {
|
|
511
|
-
fail(`The new Loot address ${options.loot} must be distinct from the authorization authority and Profile. Generate a separate Loot signer address and retry.`, options.loot);
|
|
512
|
-
}
|
|
513
|
-
for (const [role, fleet] of [
|
|
514
|
-
['attacking', attacker],
|
|
515
|
-
['defending', defender],
|
|
516
|
-
]) {
|
|
517
|
-
if (fleet.game !== game) {
|
|
518
|
-
fail(`The ${role} Fleet ${fleet.address} belongs to Game ${fleet.game}, not configured Game ${game}. Refresh both Fleets through this context and retry.`, fleet.address);
|
|
519
|
-
}
|
|
520
|
-
if (fleet.state.kind === 'destroyed') {
|
|
521
|
-
fail(`The ${role} Fleet ${fleet.name} (${fleet.address}) is destroyed and cannot participate in this attack. Refresh the Fleet after respawn and retry.`, fleet.address);
|
|
522
|
-
}
|
|
523
|
-
if (!Number.isSafeInteger(fleet.ap) ||
|
|
524
|
-
fleet.ap < 0 ||
|
|
525
|
-
!Number.isSafeInteger(fleet.crewCount) ||
|
|
526
|
-
fleet.crewCount <= 0) {
|
|
527
|
-
fail(`The ${role} Fleet ${fleet.name} (${fleet.address}) has unknown or invalid AP or crew state. Refresh the Fleet through this context and retry.`, fleet.address);
|
|
528
|
-
}
|
|
529
|
-
if (fleet.ships.length === 0 ||
|
|
530
|
-
fleet.ships.some(({ quantity }) => quantity <= 0n)) {
|
|
531
|
-
fail(`The ${role} Fleet ${fleet.name} (${fleet.address}) has no valid known ship composition. Refresh Fleet composition and retry.`, fleet.address);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
if (attacker.ap === 0) {
|
|
535
|
-
fail(`Attacking Fleet ${attacker.name} (${attacker.address}) has no known AP available. Wait for AP reload, refresh the Fleet, and retry.`, attacker.address);
|
|
536
|
-
}
|
|
509
|
+
validateAttackFleet(defender, 'defending', game);
|
|
537
510
|
const currentAccounts = await readContextRawAccounts(ctx, [
|
|
538
511
|
attacker.address,
|
|
539
512
|
defender.address,
|
|
@@ -565,58 +538,93 @@ export async function planFleetAttackFleet(ctx, attacker, defender, inputStance,
|
|
|
565
538
|
deriveRegionTrackerAddress(game),
|
|
566
539
|
deriveFactionRelationTrackerAddress(game),
|
|
567
540
|
]);
|
|
541
|
+
const actorIntent = {
|
|
542
|
+
address: attacker.address,
|
|
543
|
+
defender: defender.address,
|
|
544
|
+
game,
|
|
545
|
+
profile: attacker.ownerProfile.address,
|
|
546
|
+
defenderProfile: defender.ownerProfile.address,
|
|
547
|
+
};
|
|
548
|
+
await validateFleetAttackActors(ctx, actorIntent);
|
|
549
|
+
const versions = new Map();
|
|
550
|
+
const attackerXp = await resolveXpRuntime(ctx, { game, character, profile: attacker.ownerProfile.address }, versions);
|
|
551
|
+
const defenderXp = character === defenderCharacter
|
|
552
|
+
? attackerXp
|
|
553
|
+
: await resolveXpRuntime(ctx, {
|
|
554
|
+
game,
|
|
555
|
+
character: defenderCharacter,
|
|
556
|
+
profile: defender.ownerProfile.address,
|
|
557
|
+
}, versions);
|
|
558
|
+
const xpGuards = [...new Set([attackerXp, defenderXp])].map((xp) => ({
|
|
559
|
+
kind: 'xp-runtime',
|
|
560
|
+
address: game,
|
|
561
|
+
intent: xp.intent,
|
|
562
|
+
accounts: xp.accounts,
|
|
563
|
+
describes: 'Both operator XP budgets remain canonical and reconciled; earned XP and bank balances may change.',
|
|
564
|
+
}));
|
|
565
|
+
const instruction = adaptAttackFleetInstruction({
|
|
566
|
+
...(attackerNpc.faction === undefined
|
|
567
|
+
? {}
|
|
568
|
+
: { attackerFactionAccount: attackerNpc.faction.address }),
|
|
569
|
+
...(attackerNpc.ownership === undefined
|
|
570
|
+
? {}
|
|
571
|
+
: { attackerFleetOwnership: attackerNpc.ownership.address }),
|
|
572
|
+
attackerRewardsConfig: attackerRewards.config,
|
|
573
|
+
...(attackerRewards.contribution === undefined
|
|
574
|
+
? {}
|
|
575
|
+
: { attackerRewardsContribution: attackerRewards.contribution }),
|
|
576
|
+
...(attackerRewards.epoch === undefined
|
|
577
|
+
? {}
|
|
578
|
+
: { attackerRewardsEpoch: attackerRewards.epoch }),
|
|
579
|
+
attackerRewardsRegistry: attackerRewards.registry,
|
|
580
|
+
...(defender.state.kind === 'mining'
|
|
581
|
+
? { asteroid: defender.state.asteroid.address }
|
|
582
|
+
: {}),
|
|
583
|
+
authorization: options.authorization,
|
|
584
|
+
attackerXpBudget: attackerXp.accounts.xpBudget,
|
|
585
|
+
defenderXpBudget: defenderXp.accounts.xpBudget,
|
|
586
|
+
xpBudgetConfig: attackerXp.accounts.xpBudgetConfig,
|
|
587
|
+
character,
|
|
588
|
+
...(crewBinding === undefined ? {} : { crewBinding }),
|
|
589
|
+
defenderCharacter,
|
|
590
|
+
...(defenderNpc.ownership === undefined
|
|
591
|
+
? {}
|
|
592
|
+
: { defenderFleetOwnership: defenderNpc.ownership.address }),
|
|
593
|
+
defenderRewardsConfig: defenderRewards.config,
|
|
594
|
+
...(defenderRewards.contribution === undefined
|
|
595
|
+
? {}
|
|
596
|
+
: { defenderRewardsContribution: defenderRewards.contribution }),
|
|
597
|
+
...(defenderRewards.epoch === undefined
|
|
598
|
+
? {}
|
|
599
|
+
: { defenderRewardsEpoch: defenderRewards.epoch }),
|
|
600
|
+
defenderRewardsRegistry: defenderRewards.registry,
|
|
601
|
+
defendingFleet: defender.address,
|
|
602
|
+
factionRelationTracker,
|
|
603
|
+
fleet: attacker.address,
|
|
604
|
+
game,
|
|
605
|
+
loot: options.loot,
|
|
606
|
+
recentSlothashes: 'SysvarS1otHashes111111111111111111111111111',
|
|
607
|
+
regionTracker,
|
|
608
|
+
stance: generatedStance(stance),
|
|
609
|
+
});
|
|
568
610
|
const description = `Attack Fleet ${defender.name} (${defender.address}) with Fleet ${attacker.name} (${attacker.address}) using ${stance.ammoUsage} ammunition; range, randomness, rewards, Loot, damage, and final combat arithmetic remain chain-authoritative.`;
|
|
569
|
-
return
|
|
611
|
+
return buildPlannerPlan({
|
|
570
612
|
kind: 'combat.attack-fleet',
|
|
571
613
|
preconditions: [
|
|
572
|
-
|
|
573
|
-
|
|
614
|
+
{
|
|
615
|
+
kind: 'fleet-attack',
|
|
616
|
+
...actorIntent,
|
|
617
|
+
instructionKey: fleetAttackInstructionKey(instruction),
|
|
618
|
+
describes: 'The exact attack instruction and both canonical operators remain bound.',
|
|
619
|
+
},
|
|
620
|
+
...xpGuards,
|
|
621
|
+
await accountStatePrecondition(attackerAccount, `Attacking Fleet ${attacker.name} retains its owner, Game, live state, crew, AP, faction, and ship composition.`),
|
|
622
|
+
await accountStatePrecondition(defenderAccount, `Defending Fleet ${defender.name} retains its owner, Game, live state, crew, faction, and ship composition.`),
|
|
574
623
|
],
|
|
575
624
|
steps: [
|
|
576
625
|
{
|
|
577
626
|
describes: description,
|
|
578
|
-
instruction
|
|
579
|
-
...(attackerNpc.factionAccount === undefined
|
|
580
|
-
? {}
|
|
581
|
-
: { attackerFactionAccount: attackerNpc.factionAccount }),
|
|
582
|
-
...(attackerNpc.ownership === undefined
|
|
583
|
-
? {}
|
|
584
|
-
: { attackerFleetOwnership: attackerNpc.ownership }),
|
|
585
|
-
attackerRewardsConfig: attackerRewards.config,
|
|
586
|
-
...(attackerRewards.contribution === undefined
|
|
587
|
-
? {}
|
|
588
|
-
: { attackerRewardsContribution: attackerRewards.contribution }),
|
|
589
|
-
...(attackerRewards.epoch === undefined
|
|
590
|
-
? {}
|
|
591
|
-
: { attackerRewardsEpoch: attackerRewards.epoch }),
|
|
592
|
-
attackerRewardsRegistry: attackerRewards.registry,
|
|
593
|
-
...(defender.state.kind === 'mining'
|
|
594
|
-
? { asteroid: defender.state.asteroid.address }
|
|
595
|
-
: {}),
|
|
596
|
-
authorization: options.authorization,
|
|
597
|
-
character,
|
|
598
|
-
...(crewBinding === undefined ? {} : { crewBinding }),
|
|
599
|
-
defenderCharacter,
|
|
600
|
-
...(defenderNpc.ownership === undefined
|
|
601
|
-
? {}
|
|
602
|
-
: { defenderFleetOwnership: defenderNpc.ownership }),
|
|
603
|
-
defenderRewardsConfig: defenderRewards.config,
|
|
604
|
-
...(defenderRewards.contribution === undefined
|
|
605
|
-
? {}
|
|
606
|
-
: { defenderRewardsContribution: defenderRewards.contribution }),
|
|
607
|
-
...(defenderRewards.epoch === undefined
|
|
608
|
-
? {}
|
|
609
|
-
: { defenderRewardsEpoch: defenderRewards.epoch }),
|
|
610
|
-
defenderRewardsRegistry: defenderRewards.registry,
|
|
611
|
-
defendingFleet: defender.address,
|
|
612
|
-
factionRelationTracker,
|
|
613
|
-
fleet: attacker.address,
|
|
614
|
-
game,
|
|
615
|
-
loot: options.loot,
|
|
616
|
-
recentSlothashes: 'SysvarS1otHashes111111111111111111111111111',
|
|
617
|
-
regionTracker,
|
|
618
|
-
stance: generatedStance(stance),
|
|
619
|
-
}),
|
|
627
|
+
instruction,
|
|
620
628
|
semantics: [{ kind: 'exclusive', scope: 'transaction' }],
|
|
621
629
|
signers: [options.authorization.authority, options.loot],
|
|
622
630
|
},
|
|
@@ -639,18 +647,6 @@ function systemFingerprint(system) {
|
|
|
639
647
|
version: system.version,
|
|
640
648
|
}, (_key, value) => typeof value === 'bigint' ? value.toString() : value);
|
|
641
649
|
}
|
|
642
|
-
function starbaseFactionId(owner) {
|
|
643
|
-
switch (owner) {
|
|
644
|
-
case 'mud':
|
|
645
|
-
return 1;
|
|
646
|
-
case 'oni':
|
|
647
|
-
return 2;
|
|
648
|
-
case 'ustur':
|
|
649
|
-
return 3;
|
|
650
|
-
case 'unaligned':
|
|
651
|
-
return null;
|
|
652
|
-
}
|
|
653
|
-
}
|
|
654
650
|
/** Plans one singleton Fleet-on-Starbase attack without predicting its outcome.
|
|
655
651
|
*
|
|
656
652
|
* The planner validates the owned attacking Fleet, canonical target System and
|
|
@@ -676,32 +672,7 @@ function starbaseFactionId(owner) {
|
|
|
676
672
|
* ```
|
|
677
673
|
*/
|
|
678
674
|
export async function planFleetAttackStarbase(ctx, attacker, target, inputStance, inputOptions) {
|
|
679
|
-
const options =
|
|
680
|
-
const stance = validateAttackStance(inputStance);
|
|
681
|
-
const game = requireGameAddress(ctx);
|
|
682
|
-
if (attacker.ownerProfile.address !== options.authorization.profile) {
|
|
683
|
-
fail(`Attacking Fleet ${attacker.address} does not belong to authorization Profile ${options.authorization.profile}. Choose an owned Fleet and retry.`, attacker.address);
|
|
684
|
-
}
|
|
685
|
-
if (options.loot === options.authorization.authority ||
|
|
686
|
-
options.loot === options.authorization.profile) {
|
|
687
|
-
fail(`The new Loot address ${options.loot} must be distinct from the authorization authority and Profile. Generate a separate Loot signer address and retry.`, options.loot);
|
|
688
|
-
}
|
|
689
|
-
if (attacker.game !== game) {
|
|
690
|
-
fail(`Attacking Fleet ${attacker.address} belongs to Game ${attacker.game}, not configured Game ${game}. Refresh the Fleet through this context and retry.`, attacker.address);
|
|
691
|
-
}
|
|
692
|
-
if (attacker.state.kind === 'destroyed') {
|
|
693
|
-
fail(`Attacking Fleet ${attacker.name} (${attacker.address}) is destroyed and cannot attack a Starbase. Refresh the Fleet after respawn and retry.`, attacker.address);
|
|
694
|
-
}
|
|
695
|
-
if (!Number.isSafeInteger(attacker.ap) ||
|
|
696
|
-
attacker.ap <= 0 ||
|
|
697
|
-
!Number.isSafeInteger(attacker.crewCount) ||
|
|
698
|
-
attacker.crewCount <= 0) {
|
|
699
|
-
fail(`Attacking Fleet ${attacker.name} (${attacker.address}) has no known positive AP or valid crew state. Wait for AP reload, refresh the Fleet, and retry.`, attacker.address);
|
|
700
|
-
}
|
|
701
|
-
if (attacker.ships.length === 0 ||
|
|
702
|
-
attacker.ships.some(({ quantity }) => quantity <= 0n)) {
|
|
703
|
-
fail(`Attacking Fleet ${attacker.name} (${attacker.address}) has no valid known ship composition. Refresh Fleet composition and retry.`, attacker.address);
|
|
704
|
-
}
|
|
675
|
+
const { game, options, stance } = validateAttack(ctx, attacker, inputStance, inputOptions);
|
|
705
676
|
if (target.game !== game) {
|
|
706
677
|
fail(`Target Star System ${target.address} belongs to Game ${target.game}, not configured Game ${game}. Refresh the target through this context and retry.`, target.address);
|
|
707
678
|
}
|
|
@@ -720,9 +691,9 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
720
691
|
deriveRegionTrackerAddress(game),
|
|
721
692
|
deriveFleetCrewBindingAddress(attacker.address),
|
|
722
693
|
]);
|
|
723
|
-
const [probeRelationsAccount, probeRegistryAccount] = await
|
|
724
|
-
relationTrackerAddress,
|
|
725
|
-
|
|
694
|
+
const [[probeRelationsAccount, probeRegistryAccount], attackerNpc] = await Promise.all([
|
|
695
|
+
readContextRawAccounts(ctx, [relationTrackerAddress, registryAddress]),
|
|
696
|
+
resolveNpcAccounts(ctx, attacker, true),
|
|
726
697
|
]);
|
|
727
698
|
const probeRelations = factionRelationTrackerAccountDefinition.decode(requireAccount(probeRelationsAccount, relationTrackerAddress, `FactionRelationTracker ${relationTrackerAddress} is missing. Refresh faction relationships and retry.`));
|
|
728
699
|
const probeRegistry = atlasRewardRegistryAccountDefinition.decode(requireAccount(probeRegistryAccount, registryAddress, `AtlasRewardRegistry ${registryAddress} is missing. Refresh reward configuration and retry.`));
|
|
@@ -733,12 +704,6 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
733
704
|
fail(`AtlasRewardRegistry ${registryAddress} belongs to another Game. Refresh the configured reward registry and retry.`, registryAddress);
|
|
734
705
|
}
|
|
735
706
|
const rewardConfigAddress = await deriveAtlasRewardConfigAddress(game, probeRegistry.activeConfigVersion);
|
|
736
|
-
const attackerOwnership = attacker.npcFactionId === 0
|
|
737
|
-
? undefined
|
|
738
|
-
: await deriveFactionOwnershipAddress(game, 'fleet', attacker.address);
|
|
739
|
-
const attackerFaction = attacker.npcFactionId === 0
|
|
740
|
-
? undefined
|
|
741
|
-
: await deriveFactionAccountAddress(game, attacker.npcFactionId);
|
|
742
707
|
const requiresNpcEconomy = attacker.npcFactionId > 0 &&
|
|
743
708
|
probeRelations.dynamicCaptureEnabled &&
|
|
744
709
|
probeRelations.nemesisActive;
|
|
@@ -762,8 +727,6 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
762
727
|
character,
|
|
763
728
|
regionTracker,
|
|
764
729
|
crewBindingAddress,
|
|
765
|
-
...(attackerOwnership === undefined ? [] : [attackerOwnership]),
|
|
766
|
-
...(attackerFaction === undefined ? [] : [attackerFaction]),
|
|
767
730
|
...(factionEconomicsConfig === undefined ? [] : [factionEconomicsConfig]),
|
|
768
731
|
...(captorTreasury === undefined ? [] : [captorTreasury]),
|
|
769
732
|
];
|
|
@@ -799,7 +762,8 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
799
762
|
if (ownership === undefined && relations.dynamicCaptureEnabled) {
|
|
800
763
|
fail(`Target Starbase ${target.address} requires canonical FactionOwnership while dynamic capture is enabled. Refresh Starbase ownership and retry.`, ownershipAddress);
|
|
801
764
|
}
|
|
802
|
-
|
|
765
|
+
// KingSystemTracker records an unaligned owner as null.
|
|
766
|
+
const legacyOwner = factionValue(target.starbase.owner) || null;
|
|
803
767
|
if (ownership !== undefined &&
|
|
804
768
|
(ownership.game !== game ||
|
|
805
769
|
ownership.asset.kind !== 'starbase' ||
|
|
@@ -844,32 +808,10 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
844
808
|
const crewBinding = crewBindingAccount === undefined ? undefined : crewBindingAddress;
|
|
845
809
|
if (crewBindingAccount !== undefined) {
|
|
846
810
|
const data = fleetCrewBindingAccountDefinition.decode(crewBindingAccount);
|
|
847
|
-
if (data.
|
|
848
|
-
data.ownerProfile !== attacker.ownerProfile.address) {
|
|
811
|
+
if (!matchesFleetCrewBindingIdentity(data, attacker.address, attacker.ownerProfile.address)) {
|
|
849
812
|
fail(`FleetCrewBinding ${crewBindingAddress} does not belong to Fleet ${attacker.address} and Profile ${attacker.ownerProfile.address}. Refresh the Fleet crew relationship and retry.`, crewBindingAddress);
|
|
850
813
|
}
|
|
851
814
|
}
|
|
852
|
-
const attackerNpc = {};
|
|
853
|
-
let attackerOwnershipAccount;
|
|
854
|
-
let attackerFactionAccount;
|
|
855
|
-
if (attackerOwnership !== undefined && attackerFaction !== undefined) {
|
|
856
|
-
attackerOwnershipAccount = requireAccount(current.get(attackerOwnership), attackerOwnership, `NPC Fleet ${attacker.address} has no canonical FactionOwnership. Refresh the Fleet faction relationship and retry.`);
|
|
857
|
-
const npcOwnership = factionOwnershipAccountDefinition.decode(attackerOwnershipAccount);
|
|
858
|
-
if (npcOwnership.game !== game ||
|
|
859
|
-
npcOwnership.asset.kind !== 'fleet' ||
|
|
860
|
-
npcOwnership.asset.fleet !== attacker.address ||
|
|
861
|
-
npcOwnership.controllingFactionId !== attacker.npcFactionId) {
|
|
862
|
-
fail(`NPC Fleet ${attacker.address} has no matching canonical FactionOwnership for faction ${String(attacker.npcFactionId)}. Refresh the Fleet and faction ownership relationship before retrying.`, attackerOwnership);
|
|
863
|
-
}
|
|
864
|
-
attackerFactionAccount = requireAccount(current.get(attackerFaction), attackerFaction, `Faction ${attackerFaction} is missing for NPC Fleet ${attacker.address}. Refresh the faction registry relationship and retry.`);
|
|
865
|
-
const npcFaction = factionAccountDefinition.decode(attackerFactionAccount);
|
|
866
|
-
if (npcFaction.game !== game ||
|
|
867
|
-
npcFaction.factionId !== attacker.npcFactionId) {
|
|
868
|
-
fail(`Faction ${attackerFaction} does not match NPC Fleet ${attacker.address}'s Game and faction id. Refresh the faction registry relationship before retrying.`, attackerFaction);
|
|
869
|
-
}
|
|
870
|
-
attackerNpc.ownership = attackerOwnership;
|
|
871
|
-
attackerNpc.factionAccount = attackerFaction;
|
|
872
|
-
}
|
|
873
815
|
let economicsAccount;
|
|
874
816
|
let treasuryAccount;
|
|
875
817
|
if (factionEconomicsConfig !== undefined && captorTreasury !== undefined) {
|
|
@@ -928,21 +870,13 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
928
870
|
'The optional Fleet crew binding remains unchanged.',
|
|
929
871
|
],
|
|
930
872
|
]),
|
|
931
|
-
...(
|
|
873
|
+
...(attackerNpc.ownership === undefined
|
|
932
874
|
? []
|
|
933
|
-
: [
|
|
934
|
-
|
|
935
|
-
attackerOwnershipAccount,
|
|
936
|
-
'NPC Fleet ownership remains unchanged.',
|
|
937
|
-
],
|
|
938
|
-
]),
|
|
939
|
-
...(attackerFactionAccount === undefined
|
|
875
|
+
: [[attackerNpc.ownership, 'NPC Fleet ownership remains unchanged.']]),
|
|
876
|
+
...(attackerNpc.faction === undefined
|
|
940
877
|
? []
|
|
941
878
|
: [
|
|
942
|
-
[
|
|
943
|
-
attackerFactionAccount,
|
|
944
|
-
'The NPC faction account remains unchanged.',
|
|
945
|
-
],
|
|
879
|
+
[attackerNpc.faction, 'The NPC faction account remains unchanged.'],
|
|
946
880
|
]),
|
|
947
881
|
...(economicsAccount === undefined
|
|
948
882
|
? []
|
|
@@ -960,29 +894,41 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
960
894
|
'The dynamic-capture treasury remains unchanged.',
|
|
961
895
|
],
|
|
962
896
|
]),
|
|
963
|
-
].map(([account, describes]) =>
|
|
897
|
+
].map(([account, describes]) => accountStatePrecondition(account, describes)));
|
|
964
898
|
const absencePreconditions = [
|
|
965
|
-
|
|
899
|
+
accountAbsentPrecondition(options.loot, `Loot account ${options.loot} remains absent until execution.`),
|
|
966
900
|
...(crewBindingAccount === undefined
|
|
967
901
|
? [
|
|
968
|
-
|
|
902
|
+
accountAbsentPrecondition(crewBindingAddress, 'Optional Fleet crew binding remains absent.'),
|
|
969
903
|
]
|
|
970
904
|
: []),
|
|
971
905
|
];
|
|
906
|
+
const runtime = await resolveActionRuntime(ctx, {
|
|
907
|
+
mode: 'starbase-attack',
|
|
908
|
+
game,
|
|
909
|
+
system: target.address,
|
|
910
|
+
starbaseSeqId: starSystemAccountDefinition.decode(systemAccount).sequenceId,
|
|
911
|
+
character,
|
|
912
|
+
});
|
|
972
913
|
const description = `Attack with Fleet ${attacker.name} (${attacker.address}) against the shared Starbase at ${target.name} (${target.address}) using ${stance.ammoUsage} ammunition; range, capture-cost debit outcome, randomness, rewards, Loot, damage, and final admissibility remain chain-authoritative.`;
|
|
973
|
-
return
|
|
914
|
+
return buildPlannerPlan({
|
|
974
915
|
kind: 'combat.attack-starbase',
|
|
975
|
-
preconditions: [
|
|
916
|
+
preconditions: [
|
|
917
|
+
...statePreconditions,
|
|
918
|
+
...absencePreconditions,
|
|
919
|
+
...runtime.guards,
|
|
920
|
+
],
|
|
976
921
|
steps: [
|
|
977
922
|
{
|
|
978
|
-
describes: description
|
|
923
|
+
describes: `${description} ${runtime.description}`,
|
|
979
924
|
instruction: adaptAttackStarbaseInstruction({
|
|
980
|
-
...
|
|
925
|
+
...runtime.accounts,
|
|
926
|
+
...(attackerNpc.faction === undefined
|
|
981
927
|
? {}
|
|
982
|
-
: { attackerFactionAccount: attackerNpc.
|
|
928
|
+
: { attackerFactionAccount: attackerNpc.faction.address }),
|
|
983
929
|
...(attackerNpc.ownership === undefined
|
|
984
930
|
? {}
|
|
985
|
-
: { attackerFleetOwnership: attackerNpc.ownership }),
|
|
931
|
+
: { attackerFleetOwnership: attackerNpc.ownership.address }),
|
|
986
932
|
authorization: options.authorization,
|
|
987
933
|
...(captorTreasury === undefined ? {} : { captorTreasury }),
|
|
988
934
|
character,
|
|
@@ -1009,7 +955,7 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
|
|
|
1009
955
|
signers: [options.authorization.authority, options.loot],
|
|
1010
956
|
},
|
|
1011
957
|
],
|
|
1012
|
-
summary: description
|
|
958
|
+
summary: `${description} ${runtime.description}`,
|
|
1013
959
|
});
|
|
1014
960
|
}
|
|
1015
961
|
function lootSnapshotFingerprint(loot) {
|
|
@@ -1025,7 +971,7 @@ function lootSnapshotFingerprint(loot) {
|
|
|
1025
971
|
item.exclusivityUnlockAtUnixSeconds,
|
|
1026
972
|
item.rewardReclaimAtUnixSeconds,
|
|
1027
973
|
item.inventory.sequenceId,
|
|
1028
|
-
item.inventory.
|
|
974
|
+
item.inventory.usedStorageUnitsRaw,
|
|
1029
975
|
...item.inventory.items
|
|
1030
976
|
.map(({ cargo, quantityRaw }) => `${String(cargo.id)}:${String(quantityRaw)}`)
|
|
1031
977
|
.sort(),
|
|
@@ -1045,7 +991,7 @@ function rawLootFingerprint(address, loot) {
|
|
|
1045
991
|
item.exclusivityUnlockAtUnixSeconds,
|
|
1046
992
|
item.rewardReclaimAtUnixSeconds,
|
|
1047
993
|
item.inventory.sequenceId,
|
|
1048
|
-
item.inventory.
|
|
994
|
+
item.inventory.usedStorageUnitsRaw,
|
|
1049
995
|
...item.inventory.amounts
|
|
1050
996
|
.map(({ amount, cargoId }) => `${String(cargoId)}:${String(amount)}`)
|
|
1051
997
|
.sort(),
|
|
@@ -1115,11 +1061,11 @@ export async function planFleetRetrieveLoot(ctx, fleet, loot, inputWant, inputOp
|
|
|
1115
1061
|
? undefined
|
|
1116
1062
|
: loot.profile.address;
|
|
1117
1063
|
const description = `Request ${selection.summary} from Loot ${loot.address} with Fleet ${fleet.name} (${fleet.address}); range, recent-slot randomness, cargo capacity, availability races, and final transfer quantities remain chain-authoritative.`;
|
|
1118
|
-
return
|
|
1064
|
+
return buildPlannerPlan({
|
|
1119
1065
|
kind: 'combat.retrieve-loot',
|
|
1120
1066
|
preconditions: [
|
|
1121
|
-
await
|
|
1122
|
-
await
|
|
1067
|
+
await accountStatePrecondition(fleetAccount, `Fleet ${fleet.name} retains its configured Game, owning Profile, idle state, and normalized crew.`),
|
|
1068
|
+
await accountStatePrecondition(lootAccount, `Loot ${loot.address} retains its identity, creator, destroyer exclusivity, and requested known quantities.`),
|
|
1123
1069
|
],
|
|
1124
1070
|
steps: [
|
|
1125
1071
|
{
|