@aephia/atlas-kit 0.6.0-next.6 → 0.6.0-next.61
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-context.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-context.js +3 -9
- package/dist/cargo/actions/wallet-context.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 +4 -0
- 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 +3 -0
- package/dist/factions/actions/index.d.ts.map +1 -1
- package/dist/factions/actions/index.js +19 -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 +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/index.d.ts +27 -15
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +161 -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/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 -1
- package/dist/identity/actions/index.d.ts.map +1 -1
- package/dist/identity/actions/index.js +50 -28
- 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 +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -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 +38 -19
- package/dist/internal/c4/fleet.d.ts.map +1 -1
- 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 +278 -0
- package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
- package/dist/internal/c4/scan-lifecycle.js +236 -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.js +2 -1
- 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 +4 -0
- package/dist/internal/planning/account-state.d.ts.map +1 -0
- package/dist/internal/planning/account-state.js +11 -0
- package/dist/internal/planning/account-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.d.ts +1 -1
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
- package/dist/internal/planning/faction-enrollment.js +7 -13
- 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-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/index.d.ts +7 -2
- package/dist/mining/index.d.ts.map +1 -1
- package/dist/mining/index.js +5 -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 +374 -18
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +185 -117
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +796 -87
- 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 +10 -1
- package/dist/registry/onboarding.d.ts.map +1 -1
- package/dist/registry/onboarding.js +26 -8
- 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 +28 -0
- package/dist/registry/ships.d.ts.map +1 -0
- package/dist/registry/ships.js +51 -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 +3 -1
- package/dist/scanning/index.d.ts.map +1 -1
- package/dist/scanning/index.js +4 -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/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/package.json +10 -2
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hashAccountState } from './account-state.js';
|
|
2
|
+
import { AccountRole } from '@solana/kit';
|
|
2
3
|
import { encodeChooseFactionData, PROFILE_FACTION_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS, } from '../c4/faction-enrollment.js';
|
|
3
4
|
import { SageSdkError } from '../../client/errors.js';
|
|
4
5
|
export const RENT_ADDRESS = 'SysvarRent111111111111111111111111111111111';
|
|
@@ -15,7 +16,7 @@ export function readRent(account) {
|
|
|
15
16
|
const view = new DataView(account.data.buffer, account.data.byteOffset, account.data.byteLength);
|
|
16
17
|
const rate = view.getBigUint64(0, true), threshold = view.getFloat64(8, true);
|
|
17
18
|
if (!Number.isFinite(threshold) || threshold < 0 || view.getUint8(16) > 100)
|
|
18
|
-
enrollmentFailure('The Rent sysvar contains unsupported values. Refresh the deployment or use a supported configuration before
|
|
19
|
+
enrollmentFailure('The Rent sysvar contains unsupported values. Refresh the deployment or use a supported configuration before planning this action.', account.address);
|
|
19
20
|
return (length) => {
|
|
20
21
|
const base = (BigInt(length) + 128n) * rate;
|
|
21
22
|
const result = Number(base) * threshold;
|
|
@@ -23,7 +24,7 @@ export function readRent(account) {
|
|
|
23
24
|
!Number.isFinite(result) ||
|
|
24
25
|
result < 0 ||
|
|
25
26
|
result > Number.MAX_SAFE_INTEGER)
|
|
26
|
-
enrollmentFailure('Profile storage funding exceeds the supported exact calculation range. Use a supported Rent configuration before
|
|
27
|
+
enrollmentFailure('Profile storage funding exceeds the supported exact calculation range. Use a supported Rent configuration before planning this action.', account.address);
|
|
27
28
|
return BigInt(Math.trunc(result));
|
|
28
29
|
};
|
|
29
30
|
}
|
|
@@ -34,19 +35,12 @@ export function readClock(account) {
|
|
|
34
35
|
enrollmentFailure('The Clock sysvar has an unexpected owner or layout. Refresh chain time before checking Profile key expiry.', account.address);
|
|
35
36
|
return new DataView(account.data.buffer, account.data.byteOffset, account.data.byteLength).getBigInt64(32, true);
|
|
36
37
|
}
|
|
37
|
-
export async function observeEnrollmentAccount(account) {
|
|
38
|
-
const owner = getAddressEncoder().encode(account.owner);
|
|
39
|
-
const bytes = new Uint8Array(owner.length + account.data.length);
|
|
40
|
-
bytes.set(owner);
|
|
41
|
-
bytes.set(account.data, owner.length);
|
|
42
|
-
const hash = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', bytes));
|
|
38
|
+
export async function observeEnrollmentAccount(account, describes) {
|
|
43
39
|
return {
|
|
44
40
|
kind: 'account-state',
|
|
45
41
|
address: account.address,
|
|
46
|
-
dataHash:
|
|
47
|
-
|
|
48
|
-
.join(''),
|
|
49
|
-
describes: `Enrollment account ${account.address} retains its observed owner and data; native balance remains chain-authoritative.`,
|
|
42
|
+
dataHash: await hashAccountState(account.owner, account.data),
|
|
43
|
+
describes,
|
|
50
44
|
};
|
|
51
45
|
}
|
|
52
46
|
export function adaptChooseFaction(authorization, target, faction) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faction-enrollment.js","sourceRoot":"","sources":["../../../src/internal/planning/faction-enrollment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"faction-enrollment.js","sourceRoot":"","sources":["../../../src/internal/planning/faction-enrollment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PlanPrecondition } from '../../planning/index.js';
|
|
2
|
+
/** Recognizes schema-bound buy guards. */
|
|
3
|
+
export declare function isTradeBuyGuard(guard: PlanPrecondition): guard is Extract<PlanPrecondition, {
|
|
4
|
+
kind: 'faction-treasury-buy-versioned';
|
|
5
|
+
}>;
|
|
6
|
+
export declare function isTradeBuyGuard(guard: {
|
|
7
|
+
readonly kind?: unknown;
|
|
8
|
+
}): boolean;
|
|
9
|
+
/** Recognizes schema-bound sell guards. */
|
|
10
|
+
export declare function isTradeSellGuard(guard: PlanPrecondition): guard is Extract<PlanPrecondition, {
|
|
11
|
+
kind: 'faction-treasury-sell-versioned';
|
|
12
|
+
}>;
|
|
13
|
+
export declare function isTradeSellGuard(guard: {
|
|
14
|
+
readonly kind?: unknown;
|
|
15
|
+
}): boolean;
|
|
16
|
+
/** Recognizes schema-bound meter guards. */
|
|
17
|
+
export declare function isTradeMeterGuard(guard: PlanPrecondition): guard is Extract<PlanPrecondition, {
|
|
18
|
+
kind: 'faction-epoch-meter-versioned';
|
|
19
|
+
}>;
|
|
20
|
+
export declare function isTradeMeterGuard(guard: {
|
|
21
|
+
readonly kind?: unknown;
|
|
22
|
+
}): boolean;
|
|
23
|
+
/** Finite trade guards share validation without importing account decoders. */
|
|
24
|
+
export declare function isFactionTradeGuard(guard: PlanPrecondition): guard is Extract<PlanPrecondition, {
|
|
25
|
+
kind: 'faction-treasury-buy-versioned' | 'faction-treasury-sell-versioned' | 'faction-epoch-meter-versioned';
|
|
26
|
+
}>;
|
|
27
|
+
export declare function isFactionTradeGuard(guard: {
|
|
28
|
+
readonly kind?: unknown;
|
|
29
|
+
}): boolean;
|
|
30
|
+
//# sourceMappingURL=faction-trade-guards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-trade-guards.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/faction-trade-guards.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,0CAA0C;AAC1C,wBAAgB,eAAe,CAC7B,KAAK,EAAE,gBAAgB,GACtB,KAAK,IAAI,OAAO,CACjB,gBAAgB,EAChB;IAAE,IAAI,EAAE,gCAAgC,CAAA;CAAE,CAC3C,CAAC;AACF,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC;AAK7E,2CAA2C;AAC3C,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,GACtB,KAAK,IAAI,OAAO,CACjB,gBAAgB,EAChB;IAAE,IAAI,EAAE,iCAAiC,CAAA;CAAE,CAC5C,CAAC;AACF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC;AAK9E,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,gBAAgB,GACtB,KAAK,IAAI,OAAO,CACjB,gBAAgB,EAChB;IAAE,IAAI,EAAE,+BAA+B,CAAA;CAAE,CAC1C,CAAC;AACF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC;AAK/E,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,IAAI,OAAO,CAC5E,gBAAgB,EAChB;IACE,IAAI,EACA,gCAAgC,GAChC,iCAAiC,GACjC,+BAA+B,CAAC;CACrC,CACF,CAAC;AACF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function isTradeBuyGuard(guard) {
|
|
2
|
+
return guard.kind === 'faction-treasury-buy-versioned';
|
|
3
|
+
}
|
|
4
|
+
export function isTradeSellGuard(guard) {
|
|
5
|
+
return guard.kind === 'faction-treasury-sell-versioned';
|
|
6
|
+
}
|
|
7
|
+
export function isTradeMeterGuard(guard) {
|
|
8
|
+
return guard.kind === 'faction-epoch-meter-versioned';
|
|
9
|
+
}
|
|
10
|
+
export function isFactionTradeGuard(guard) {
|
|
11
|
+
return (isTradeBuyGuard(guard) ||
|
|
12
|
+
isTradeSellGuard(guard) ||
|
|
13
|
+
isTradeMeterGuard(guard));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=faction-trade-guards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-trade-guards.js","sourceRoot":"","sources":["../../../src/internal/planning/faction-trade-guards.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,eAAe,CAAC,KAAkC;IAChE,OAAO,KAAK,CAAC,IAAI,KAAK,gCAAgC,CAAC;AACzD,CAAC;AAUD,MAAM,UAAU,gBAAgB,CAAC,KAAkC;IACjE,OAAO,KAAK,CAAC,IAAI,KAAK,iCAAiC,CAAC;AAC1D,CAAC;AAUD,MAAM,UAAU,iBAAiB,CAAC,KAAkC;IAClE,OAAO,KAAK,CAAC,IAAI,KAAK,+BAA+B,CAAC;AACxD,CAAC;AAeD,MAAM,UAAU,mBAAmB,CAAC,KAEnC;IACC,OAAO,CACL,eAAe,CAAC,KAAK,CAAC;QACtB,gBAAgB,CAAC,KAAK,CAAC;QACvB,iBAAiB,CAAC,KAAK,CAAC,CACzB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { RawAccount } from '../../client/contracts.js';
|
|
3
|
+
import type { PlanPrecondition } from '../../planning/index.js';
|
|
4
|
+
type Identity = {
|
|
5
|
+
readonly game: Address;
|
|
6
|
+
readonly factionId: number;
|
|
7
|
+
};
|
|
8
|
+
/** Shared preparation/execution validation; no balances or fill assumptions. */
|
|
9
|
+
export declare function readTradeTreasury(account: RawAccount, identity: Identity): Promise<Readonly<import("../c4/faction-treasury.js").FactionTreasuryAccountData>>;
|
|
10
|
+
export declare function validateTradeEpochMeter(account: RawAccount, identity: Identity): Promise<import("@staratlas/dev-sage").FactionEpochMeter>;
|
|
11
|
+
/** D053 finite comparison binds the account schema and selected trade settings. */
|
|
12
|
+
export declare function matchesFactionTradeState(account: RawAccount, guard: Extract<PlanPrecondition, {
|
|
13
|
+
kind: 'faction-treasury-buy-versioned' | 'faction-treasury-sell-versioned' | 'faction-epoch-meter-versioned';
|
|
14
|
+
}>): Promise<boolean>;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=faction-trade-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-trade-state.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/faction-trade-state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAUhE,KAAK,QAAQ,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAUvE,gFAAgF;AAChF,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,qFAYnB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,QAAQ,4DAWnB;AAED,mFAAmF;AACnF,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,UAAU,EACnB,KAAK,EAAE,OAAO,CACZ,gBAAgB,EAChB;IACE,IAAI,EACA,gCAAgC,GAChC,iCAAiC,GACjC,+BAA+B,CAAC;CACrC,CACF,GACA,OAAO,CAAC,OAAO,CAAC,CAYlB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { isTradeBuyGuard, isTradeMeterGuard } from './faction-trade-guards.js';
|
|
2
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { deriveFactionTreasuryAddress, factionTreasuryAccountDefinition, } from '../c4/faction-treasury.js';
|
|
4
|
+
import { decodeTradeEpochMeter, deriveTradeEpochMeterAddress, } from '../c4/faction-epoch-meter.js';
|
|
5
|
+
function invalid(account, role) {
|
|
6
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${role} must match its canonical Game/faction identity and supported account layout. Refresh the Market and canonical faction accounts, then prepare a new trade.`, { address: account.address });
|
|
7
|
+
}
|
|
8
|
+
/** Shared preparation/execution validation; no balances or fill assumptions. */
|
|
9
|
+
export async function readTradeTreasury(account, identity) {
|
|
10
|
+
const treasury = factionTreasuryAccountDefinition.decode(account);
|
|
11
|
+
if (account.executable ||
|
|
12
|
+
treasury.game !== identity.game ||
|
|
13
|
+
treasury.factionId !== identity.factionId ||
|
|
14
|
+
account.address !==
|
|
15
|
+
(await deriveFactionTreasuryAddress(identity.game, identity.factionId)))
|
|
16
|
+
invalid(account, 'Faction Treasury');
|
|
17
|
+
return treasury;
|
|
18
|
+
}
|
|
19
|
+
export async function validateTradeEpochMeter(account, identity) {
|
|
20
|
+
const meter = decodeTradeEpochMeter(account);
|
|
21
|
+
if (account.executable ||
|
|
22
|
+
meter.gameId !== identity.game ||
|
|
23
|
+
meter.factionId !== identity.factionId ||
|
|
24
|
+
account.address !== (await deriveTradeEpochMeterAddress(identity)))
|
|
25
|
+
invalid(account, 'Faction Epoch Meter');
|
|
26
|
+
return meter;
|
|
27
|
+
}
|
|
28
|
+
/** D053 finite comparison binds the account schema and selected trade settings. */
|
|
29
|
+
export async function matchesFactionTradeState(account, guard) {
|
|
30
|
+
if (isTradeMeterGuard(guard)) {
|
|
31
|
+
const meter = await validateTradeEpochMeter(account, guard);
|
|
32
|
+
return meter.version === guard.schemaVersion;
|
|
33
|
+
}
|
|
34
|
+
const treasury = await readTradeTreasury(account, guard);
|
|
35
|
+
if (treasury.version !== guard.schemaVersion)
|
|
36
|
+
return false;
|
|
37
|
+
return isTradeBuyGuard(guard)
|
|
38
|
+
? (treasury.reserves.find((row) => row.cargoId === guard.cargoId)
|
|
39
|
+
?.floorRaw ?? 0n) === guard.floorRaw
|
|
40
|
+
: treasury.atlasOutCapPerEpochRaw === guard.atlasOutCapPerEpochRaw &&
|
|
41
|
+
treasury.epochLengthSeconds === guard.epochLengthSeconds;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=faction-trade-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-trade-state.js","sourceRoot":"","sources":["../../../src/internal/planning/faction-trade-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAG/E,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACL,4BAA4B,EAC5B,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AAItC,SAAS,OAAO,CAAC,OAAmB,EAAE,IAAY;IAChD,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,GAAG,IAAI,4JAA4J,EACnK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAC7B,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAmB,EACnB,QAAkB;IAElB,MAAM,QAAQ,GAAG,gCAAgC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,IACE,OAAO,CAAC,UAAU;QAClB,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI;QAC/B,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QACzC,OAAO,CAAC,OAAO;YACb,CAAC,MAAM,4BAA4B,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEzE,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAmB,EACnB,QAAkB;IAElB,MAAM,KAAK,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC7C,IACE,OAAO,CAAC,UAAU;QAClB,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI;QAC9B,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QACtC,OAAO,CAAC,OAAO,KAAK,CAAC,MAAM,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QAElE,OAAO,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAC1C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAmB,EACnB,KAQC;IAED,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,aAAa,CAAC;IAC/C,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,OAAO,KAAK,KAAK,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,eAAe,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC;YAC7D,EAAE,QAAQ,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,QAAQ;QACxC,CAAC,CAAC,QAAQ,CAAC,sBAAsB,KAAK,KAAK,CAAC,sBAAsB;YAC9D,QAAQ,CAAC,kBAAkB,KAAK,KAAK,CAAC,kBAAkB,CAAC;AACjE,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Address, SageContext } from '../../client/contracts.js';
|
|
2
|
+
import { type FleetArrivalJourney } from '../c4/fleet-arrival.js';
|
|
3
|
+
import type { PlanAuthorization } from './authorization-adapter.js';
|
|
4
|
+
export interface FleetArrivalOptions {
|
|
5
|
+
readonly authorization: PlanAuthorization;
|
|
6
|
+
}
|
|
7
|
+
export interface FleetArrivalIntent {
|
|
8
|
+
readonly fleet: Address;
|
|
9
|
+
readonly game: Address;
|
|
10
|
+
readonly profile: Address;
|
|
11
|
+
readonly journey: Extract<FleetArrivalJourney, {
|
|
12
|
+
kind: 'subwarp';
|
|
13
|
+
}>;
|
|
14
|
+
readonly authorization: Omit<PlanAuthorization, 'certificate'>;
|
|
15
|
+
}
|
|
16
|
+
/** Read fresh movement, chain time and direct authority without retaining signer data. */
|
|
17
|
+
export declare function resolveFleetArrival(ctx: SageContext, fleetAddress: Address, options: FleetArrivalOptions, freshGameVersions?: Map<Address, number>): Promise<{
|
|
18
|
+
intent: FleetArrivalIntent;
|
|
19
|
+
character: Address;
|
|
20
|
+
regionTracker: Address;
|
|
21
|
+
xp: {
|
|
22
|
+
readonly gameVersion: 2;
|
|
23
|
+
readonly intent: import("./xp-runtime.js").XpRuntimeIntent;
|
|
24
|
+
readonly accounts: import("./xp-runtime.js").XpRuntimeAccounts;
|
|
25
|
+
};
|
|
26
|
+
lowFuel: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
/** Recheck only the selected journey/authority, permitting unrelated Fleet and XP changes. */
|
|
29
|
+
export declare function validateFleetArrivalIntent(ctx: SageContext, intent: FleetArrivalIntent, freshGameVersions?: Map<Address, number>): Promise<{
|
|
30
|
+
intent: FleetArrivalIntent;
|
|
31
|
+
character: Address;
|
|
32
|
+
regionTracker: Address;
|
|
33
|
+
xp: {
|
|
34
|
+
readonly gameVersion: 2;
|
|
35
|
+
readonly intent: import("./xp-runtime.js").XpRuntimeIntent;
|
|
36
|
+
readonly accounts: import("./xp-runtime.js").XpRuntimeAccounts;
|
|
37
|
+
};
|
|
38
|
+
lowFuel: boolean;
|
|
39
|
+
}>;
|
|
40
|
+
//# sourceMappingURL=fleet-arrival.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-arrival.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-arrival.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAEP,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAahC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAGpE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;CAC3C;AACD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE;QAAE,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IACpE,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;CAChE;AAaD,0FAA0F;AAC1F,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,YAAY,EAAE,OAAO,EACrB,OAAO,EAAE,mBAAmB,EAC5B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;;;;;;;;;;GAoHzC;AACD,8FAA8F;AAC9F,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,kBAAkB,EAC1B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC;;;;;;;;;;GAwBzC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
2
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
3
|
+
import { decodeFleetArrival, } from '../c4/fleet-arrival.js';
|
|
4
|
+
import { findCharacterPda, characterAccountDefinition, profileAccountDefinition, } from '../c4/identity.js';
|
|
5
|
+
import { deriveRegionTrackerAddress, regionTrackerAccountDefinition, } from '../c4/factions.js';
|
|
6
|
+
import { PROFILE_SCOPE, SAGE_SCOPE } from '../c4/profile-permissions.js';
|
|
7
|
+
import { requireGameAddress } from '../game-context.js';
|
|
8
|
+
import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
|
|
9
|
+
import { resolveXpRuntime } from './xp-runtime.js';
|
|
10
|
+
function fail(address, reason) {
|
|
11
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Arrival settlement ${reason}. Refresh the Fleet and prepare a new arrival Plan after the scheduled travel duration has elapsed.`, { address });
|
|
12
|
+
}
|
|
13
|
+
function required(raw, address) {
|
|
14
|
+
if (!raw || raw.address !== address || raw.executable)
|
|
15
|
+
fail(address, `requires the existing non-executable account ${address}`);
|
|
16
|
+
return raw;
|
|
17
|
+
}
|
|
18
|
+
/** Read fresh movement, chain time and direct authority without retaining signer data. */
|
|
19
|
+
export async function resolveFleetArrival(ctx, fleetAddress, options, freshGameVersions) {
|
|
20
|
+
const game = requireGameAddress(ctx);
|
|
21
|
+
const [fleetRaw, clockRaw] = await readContextRawAccounts(ctx, [
|
|
22
|
+
fleetAddress,
|
|
23
|
+
CLOCK_ADDRESS,
|
|
24
|
+
]);
|
|
25
|
+
const fleet = await decodeFleetArrival(required(fleetRaw, fleetAddress));
|
|
26
|
+
if (fleet.game !== game || fleet.canonical !== fleetAddress)
|
|
27
|
+
fail(fleetAddress, 'requires the canonical Fleet for the configured Game');
|
|
28
|
+
const journey = fleet.journey;
|
|
29
|
+
if (!journey)
|
|
30
|
+
fail(fleetAddress, 'requires a travelling Fleet; Idle and other non-travel states have no arrival to settle');
|
|
31
|
+
if (journey.kind === 'warp')
|
|
32
|
+
fail(fleetAddress, 'for the current Game runtime does not support warp; wait for a separately supported warp settlement route');
|
|
33
|
+
const now = readClock(required(clockRaw, CLOCK_ADDRESS));
|
|
34
|
+
if (journey.duration < 0n)
|
|
35
|
+
fail(fleetAddress, 'found invalid journey timing');
|
|
36
|
+
if (now < journey.departure ||
|
|
37
|
+
(now - journey.departure) * (1n << 56n) < journey.duration)
|
|
38
|
+
fail(fleetAddress, 'cannot settle an unfinished journey; wait for its scheduled duration to elapse on the chain clock or choose the separate intentional early-stop action');
|
|
39
|
+
const character = await findCharacterPda(fleet.profile, game);
|
|
40
|
+
const xp = await resolveXpRuntime(ctx, { game, character }, freshGameVersions);
|
|
41
|
+
const regionTracker = await deriveRegionTrackerAddress(game);
|
|
42
|
+
const addresses = [character, fleet.profile, regionTracker];
|
|
43
|
+
const accounts = await readContextRawAccounts(ctx, addresses);
|
|
44
|
+
const characterData = characterAccountDefinition.decode(required(accounts[0], character));
|
|
45
|
+
if (characterData.game !== game ||
|
|
46
|
+
characterData.playerProfile !== fleet.profile)
|
|
47
|
+
fail(character, 'requires the canonical Character for this Game and owning Profile');
|
|
48
|
+
const authorization = options.authorization;
|
|
49
|
+
if (authorization.certificate !== undefined ||
|
|
50
|
+
authorization.profile !== fleet.profile ||
|
|
51
|
+
// Fleet absence uses the zero/System address, not a Profile key scope.
|
|
52
|
+
fleet.subProfile !== '11111111111111111111111111111111')
|
|
53
|
+
fail(fleetAddress, 'supports only the owning Profile and its direct key, without a certificate or delegated sub-Profile');
|
|
54
|
+
if (!Number.isInteger(authorization.keyIndex) ||
|
|
55
|
+
authorization.keyIndex < 0 ||
|
|
56
|
+
authorization.keyIndex > 65535)
|
|
57
|
+
fail(fleet.profile, 'requires a valid direct Profile key index');
|
|
58
|
+
const profile = profileAccountDefinition.decode(required(accounts[1], fleet.profile));
|
|
59
|
+
const key = profile.keys[authorization.keyIndex];
|
|
60
|
+
if (!key || key.address !== authorization.authority)
|
|
61
|
+
fail(fleet.profile, 'requires the current direct key index for the selected authority');
|
|
62
|
+
if (key.expiresAtRaw >= 0n && key.expiresAtRaw < now)
|
|
63
|
+
fail(fleet.profile, 'cannot use an expired Profile key; renew it or select an unexpired direct key');
|
|
64
|
+
if (!((key.scope === PROFILE_SCOPE && (key.permissionsRaw & 1n) !== 0n) ||
|
|
65
|
+
(key.scope === SAGE_SCOPE && (key.permissionsRaw & (1n << 10n)) !== 0n)))
|
|
66
|
+
fail(fleet.profile, 'requires direct Profile AUTH or SAGE moveFleet permission; select an appropriately scoped key');
|
|
67
|
+
const tracker = regionTrackerAccountDefinition.decode(required(accounts[2], regionTracker));
|
|
68
|
+
if (tracker.game !== game)
|
|
69
|
+
fail(regionTracker, 'requires the canonical RegionTracker bound to this Game');
|
|
70
|
+
const intent = {
|
|
71
|
+
fleet: fleetAddress,
|
|
72
|
+
game,
|
|
73
|
+
profile: fleet.profile,
|
|
74
|
+
journey,
|
|
75
|
+
authorization: {
|
|
76
|
+
profile: authorization.profile,
|
|
77
|
+
authority: authorization.authority,
|
|
78
|
+
keyIndex: authorization.keyIndex,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
intent,
|
|
83
|
+
character,
|
|
84
|
+
regionTracker,
|
|
85
|
+
xp,
|
|
86
|
+
lowFuel: fleet.lowFuel,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** Recheck only the selected journey/authority, permitting unrelated Fleet and XP changes. */
|
|
90
|
+
export async function validateFleetArrivalIntent(ctx, intent, freshGameVersions) {
|
|
91
|
+
const current = await resolveFleetArrival(ctx, intent.fleet, {
|
|
92
|
+
authorization: intent.authorization,
|
|
93
|
+
}, freshGameVersions);
|
|
94
|
+
const a = intent.journey, b = current.intent.journey;
|
|
95
|
+
if (current.intent.game !== intent.game ||
|
|
96
|
+
current.intent.profile !== intent.profile ||
|
|
97
|
+
a.departure !== b.departure ||
|
|
98
|
+
a.from.x !== b.from.x ||
|
|
99
|
+
a.from.y !== b.from.y ||
|
|
100
|
+
a.to.x !== b.to.x ||
|
|
101
|
+
a.to.y !== b.to.y ||
|
|
102
|
+
a.duration !== b.duration)
|
|
103
|
+
fail(intent.fleet, 'journey or ownership changed after planning');
|
|
104
|
+
return current;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=fleet-arrival.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-arrival.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-arrival.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EACL,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAYnD,SAAS,IAAI,CAAC,OAAgB,EAAE,MAAc;IAC5C,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,sBAAsB,MAAM,qGAAqG,EACjI,EAAE,OAAO,EAAE,CACZ,CAAC;AACJ,CAAC;AACD,SAAS,QAAQ,CAAC,GAA2B,EAAE,OAAgB;IAC7D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,UAAU;QACnD,IAAI,CAAC,OAAO,EAAE,gDAAgD,OAAO,EAAE,CAAC,CAAC;IAC3E,OAAO,GAAG,CAAC;AACb,CAAC;AACD,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAgB,EAChB,YAAqB,EACrB,OAA4B,EAC5B,iBAAwC;IAExC,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE;QAC7D,YAAY;QACZ,aAAa;KACd,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,YAAY;QACzD,IAAI,CAAC,YAAY,EAAE,sDAAsD,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,CAAC,OAAO;QACV,IAAI,CACF,YAAY,EACZ,yFAAyF,CAC1F,CAAC;IACJ,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;QACzB,IAAI,CACF,YAAY,EACZ,2GAA2G,CAC5G,CAAC;IACJ,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,QAAQ,GAAG,EAAE;QAAE,IAAI,CAAC,YAAY,EAAE,8BAA8B,CAAC,CAAC;IAC9E,IACE,GAAG,GAAG,OAAO,CAAC,SAAS;QACvB,CAAC,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ;QAE1D,IAAI,CACF,YAAY,EACZ,wJAAwJ,CACzJ,CAAC;IACJ,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAC/B,GAAG,EACH,EAAE,IAAI,EAAE,SAAS,EAAE,EACnB,iBAAiB,CAClB,CAAC;IACF,MAAM,aAAa,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,0BAA0B,CAAC,MAAM,CACrD,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CACjC,CAAC;IACF,IACE,aAAa,CAAC,IAAI,KAAK,IAAI;QAC3B,aAAa,CAAC,aAAa,KAAK,KAAK,CAAC,OAAO;QAE7C,IAAI,CACF,SAAS,EACT,mEAAmE,CACpE,CAAC;IACJ,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,IACE,aAAa,CAAC,WAAW,KAAK,SAAS;QACvC,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QACvC,uEAAuE;QACvE,KAAK,CAAC,UAAU,KAAK,kCAAkC;QAEvD,IAAI,CACF,YAAY,EACZ,qGAAqG,CACtG,CAAC;IACJ,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC;QACzC,aAAa,CAAC,QAAQ,GAAG,CAAC;QAC1B,aAAa,CAAC,QAAQ,GAAG,KAAK;QAE9B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,2CAA2C,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAC7C,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CACrC,CAAC;IACF,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,aAAa,CAAC,SAAS;QACjD,IAAI,CACF,KAAK,CAAC,OAAO,EACb,kEAAkE,CACnE,CAAC;IACJ,IAAI,GAAG,CAAC,YAAY,IAAI,EAAE,IAAI,GAAG,CAAC,YAAY,GAAG,GAAG;QAClD,IAAI,CACF,KAAK,CAAC,OAAO,EACb,+EAA+E,CAChF,CAAC;IACJ,IAAI,CAAC,CACH,CAAC,GAAG,CAAC,KAAK,KAAK,aAAa,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;QACjE,CAAC,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CACxE;QACC,IAAI,CACF,KAAK,CAAC,OAAO,EACb,+FAA+F,CAChG,CAAC;IACJ,MAAM,OAAO,GAAG,8BAA8B,CAAC,MAAM,CACnD,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CACrC,CAAC;IACF,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;QACvB,IAAI,CACF,aAAa,EACb,yDAAyD,CAC1D,CAAC;IACJ,MAAM,MAAM,GAAuB;QACjC,KAAK,EAAE,YAAY;QACnB,IAAI;QACJ,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO;QACP,aAAa,EAAE;YACb,OAAO,EAAE,aAAa,CAAC,OAAO;YAC9B,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,QAAQ,EAAE,aAAa,CAAC,QAAQ;SACjC;KACF,CAAC;IACF,OAAO;QACL,MAAM;QACN,SAAS;QACT,aAAa;QACb,EAAE;QACF,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AACD,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAgB,EAChB,MAA0B,EAC1B,iBAAwC;IAExC,MAAM,OAAO,GAAG,MAAM,mBAAmB,CACvC,GAAG,EACH,MAAM,CAAC,KAAK,EACZ;QACE,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,EACD,iBAAiB,CAClB,CAAC;IACF,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,EACtB,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,IACE,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QACnC,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QACzC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;QAC3B,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ;QAEzB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Address, SageContext } from '../../client/contracts.js';
|
|
2
|
+
import type { PlanPrecondition, PlanStep } from '../../planning/index.js';
|
|
3
|
+
/** Finite actor identity and exact instruction intent; mutable XP is not hashed. */
|
|
4
|
+
export interface FleetAttackGuard {
|
|
5
|
+
readonly kind: 'fleet-attack';
|
|
6
|
+
readonly address: Address;
|
|
7
|
+
readonly defender: Address;
|
|
8
|
+
readonly game: Address;
|
|
9
|
+
readonly profile: Address;
|
|
10
|
+
readonly defenderProfile: Address;
|
|
11
|
+
readonly instructionKey: string;
|
|
12
|
+
readonly describes: string;
|
|
13
|
+
readonly dataHash?: never;
|
|
14
|
+
}
|
|
15
|
+
export declare function fleetAttackInstructionKey(instruction: PlanStep['instruction']): string;
|
|
16
|
+
/** Fully validate each unique operator once per fresh pass. NPCs use their operator, not Fleet-derived Characters. */
|
|
17
|
+
export declare function validateFleetAttackActors(ctx: SageContext, guard: Omit<FleetAttackGuard, 'kind' | 'instructionKey' | 'describes'>): Promise<Map<Address, Address>>;
|
|
18
|
+
/** Bind the whole attack instruction, its two actor identities and required XP guards. */
|
|
19
|
+
export declare function validateFleetAttackInstructions(steps: readonly PlanStep[], guards: readonly PlanPrecondition[]): void;
|
|
20
|
+
//# sourceMappingURL=fleet-attack-xp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-attack-xp.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-attack-xp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAS1E,oFAAoF;AACpF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B;AASD,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,QAAQ,CAAC,aAAa,CAAC,GACnC,MAAM,CAMR;AAED,sHAAsH;AACtH,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,gBAAgB,GAAG,WAAW,CAAC,kCAyCvE;AAED,0FAA0F;AAC1F,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,IAAI,CAqEN"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { AccountRole, getAddressEncoder, getProgramDerivedAddress, } from '@solana/kit';
|
|
2
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
4
|
+
import { characterAccountDefinition } from '../c4/identity.js';
|
|
5
|
+
import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
|
|
6
|
+
import { ATTACK_FLEET_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, getAttackFleetInstructionDataDecoder, } from '../c4/runtime-bindings.js';
|
|
7
|
+
function fail() {
|
|
8
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Fleet attack no longer matches its canonical operators, Characters, XP accounts or exact instruction intent. Refresh both Fleets and repair missing state, then recreate the Plan before signing.');
|
|
9
|
+
}
|
|
10
|
+
export function fleetAttackInstructionKey(instruction) {
|
|
11
|
+
return JSON.stringify([
|
|
12
|
+
instruction.programAddress,
|
|
13
|
+
instruction.accounts?.map((a) => [a.address, a.role]),
|
|
14
|
+
Array.from(instruction.data ?? []),
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
/** Fully validate each unique operator once per fresh pass. NPCs use their operator, not Fleet-derived Characters. */
|
|
18
|
+
export async function validateFleetAttackActors(ctx, guard) {
|
|
19
|
+
const actors = new Map();
|
|
20
|
+
for (const profile of [guard.profile, guard.defenderProfile]) {
|
|
21
|
+
if (actors.has(profile))
|
|
22
|
+
continue;
|
|
23
|
+
const [character, bump] = await getProgramDerivedAddress({
|
|
24
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
25
|
+
seeds: [
|
|
26
|
+
new TextEncoder().encode('Character'),
|
|
27
|
+
getAddressEncoder().encode(profile),
|
|
28
|
+
getAddressEncoder().encode(guard.game),
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
const [raw] = await readContextRawAccounts(ctx, [character]);
|
|
32
|
+
if (!raw || raw.executable)
|
|
33
|
+
fail();
|
|
34
|
+
const value = characterAccountDefinition.decode(raw);
|
|
35
|
+
if (value.version !== 3 ||
|
|
36
|
+
value.bump !== bump ||
|
|
37
|
+
value.game !== guard.game ||
|
|
38
|
+
value.playerProfile !== profile)
|
|
39
|
+
fail();
|
|
40
|
+
actors.set(profile, character);
|
|
41
|
+
}
|
|
42
|
+
const fleets = await readContextRawAccounts(ctx, [
|
|
43
|
+
guard.address,
|
|
44
|
+
guard.defender,
|
|
45
|
+
]);
|
|
46
|
+
for (const [i, profile] of [guard.profile, guard.defenderProfile].entries()) {
|
|
47
|
+
const raw = fleets[i];
|
|
48
|
+
if (!raw || raw.executable)
|
|
49
|
+
fail();
|
|
50
|
+
const value = fleetAccountDefinition.decode(raw);
|
|
51
|
+
if (value.game !== guard.game ||
|
|
52
|
+
value.ownerProfile !== profile ||
|
|
53
|
+
(await deriveFleetAddress(value)) !== raw.address)
|
|
54
|
+
fail();
|
|
55
|
+
}
|
|
56
|
+
return actors;
|
|
57
|
+
}
|
|
58
|
+
/** Bind the whole attack instruction, its two actor identities and required XP guards. */
|
|
59
|
+
export function validateFleetAttackInstructions(steps, guards) {
|
|
60
|
+
for (const { instruction } of steps) {
|
|
61
|
+
if (instruction.programAddress !== SAGE_PROGRAM_ADDRESS ||
|
|
62
|
+
!ATTACK_FLEET_DISCRIMINATOR.every((b, i) => instruction.data?.[i] === b))
|
|
63
|
+
continue;
|
|
64
|
+
const { accounts, data } = instruction;
|
|
65
|
+
if (!accounts || accounts.length !== 31 || !data)
|
|
66
|
+
fail();
|
|
67
|
+
try {
|
|
68
|
+
if (getAttackFleetInstructionDataDecoder().read(data, 0)[1] !== data.length)
|
|
69
|
+
fail();
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
fail();
|
|
73
|
+
}
|
|
74
|
+
const guard = guards.find((g) => g.kind === 'fleet-attack' &&
|
|
75
|
+
g.address === accounts[5].address &&
|
|
76
|
+
g.defender === accounts[6].address);
|
|
77
|
+
if (!guard ||
|
|
78
|
+
guard.instructionKey !== fleetAttackInstructionKey(instruction) ||
|
|
79
|
+
guard.game !== accounts[10].address ||
|
|
80
|
+
guard.profile !== accounts[1].address)
|
|
81
|
+
fail();
|
|
82
|
+
for (const [profile, characterIndex, budgetIndex] of [
|
|
83
|
+
[guard.profile, 4, 28],
|
|
84
|
+
[guard.defenderProfile, 7, 29],
|
|
85
|
+
]) {
|
|
86
|
+
const xp = guards.find((g) => g.kind === 'xp-runtime' &&
|
|
87
|
+
g.intent.game === guard.game &&
|
|
88
|
+
g.intent.profile === profile &&
|
|
89
|
+
g.intent.character === accounts[characterIndex].address &&
|
|
90
|
+
g.intent.structure === undefined);
|
|
91
|
+
if (!xp ||
|
|
92
|
+
xp.kind !== 'xp-runtime' ||
|
|
93
|
+
accounts[characterIndex].role !== AccountRole.WRITABLE ||
|
|
94
|
+
accounts[budgetIndex].role !== AccountRole.WRITABLE ||
|
|
95
|
+
accounts[budgetIndex].address !== xp.accounts.xpBudget ||
|
|
96
|
+
accounts[30].role !== AccountRole.READONLY ||
|
|
97
|
+
accounts[30].address !== xp.accounts.xpBudgetConfig)
|
|
98
|
+
fail();
|
|
99
|
+
}
|
|
100
|
+
for (const fleet of [guard.address, guard.defender])
|
|
101
|
+
if (!guards.some((g) => g.kind === 'account-state' && g.address === fleet))
|
|
102
|
+
fail();
|
|
103
|
+
}
|
|
104
|
+
for (const guard of guards) {
|
|
105
|
+
if (guard.kind === 'fleet-attack' &&
|
|
106
|
+
!steps.some((s) => fleetAttackInstructionKey(s.instruction) === guard.instructionKey))
|
|
107
|
+
fail();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=fleet-attack-xp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-attack-xp.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-attack-xp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { RawAccount } from '../../client/contracts.js';
|
|
3
|
+
export interface FleetCreationIntent {
|
|
4
|
+
readonly game: Address;
|
|
5
|
+
readonly profile: Address;
|
|
6
|
+
readonly authority: Address;
|
|
7
|
+
readonly system: Address;
|
|
8
|
+
readonly keyIndex: number;
|
|
9
|
+
readonly label: string;
|
|
10
|
+
}
|
|
11
|
+
export interface FleetCreationAccounts {
|
|
12
|
+
readonly game: Address;
|
|
13
|
+
readonly profile: Address;
|
|
14
|
+
readonly authority: Address;
|
|
15
|
+
readonly system: Address;
|
|
16
|
+
readonly character: Address;
|
|
17
|
+
readonly profileFaction: Address;
|
|
18
|
+
readonly starbasePlayer: Address;
|
|
19
|
+
readonly fleet: Address;
|
|
20
|
+
readonly rent: Address;
|
|
21
|
+
readonly clock: Address;
|
|
22
|
+
}
|
|
23
|
+
export declare function validateFleetCreationLabel(label: unknown): asserts label is string;
|
|
24
|
+
export declare function resolveFleetCreation(input: FleetCreationIntent): Promise<FleetCreationAccounts>;
|
|
25
|
+
export declare function validateFleetCreation(input: FleetCreationIntent, resolved: FleetCreationAccounts, accounts: ReadonlyMap<Address, RawAccount | undefined>, maximumProfileDebit?: bigint): Promise<{
|
|
26
|
+
profileDebit: bigint;
|
|
27
|
+
profileReserve: bigint;
|
|
28
|
+
fleetRent: bigint;
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=fleet-creation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-creation.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-creation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA8B5D,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AACD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AACD,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,KAAK,IAAI,MAAM,CAgBzB;AACD,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,qBAAqB,CAAC,CAoBhC;AAID,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,QAAQ,EAAE,qBAAqB,EAC/B,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,EACtD,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CAiID"}
|