@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-signal-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/open-signal-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,MAAM,UAAU,8BAA8B,CAC5C,KAA0B,EAC1B,MAAmC;IAEnC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAwB,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAC3D,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAC/B,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,EAAE,CACrB,CAAC,CAAC,cAAc,KAAK,oBAAoB;QACzC,8BAA8B,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CACpE,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM;QAAE,OAAO;IACrD,MAAM,GAAG,GAAG,GAAU,EAAE;QACtB,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,wJAAwJ,CACzJ,CAAC;IACJ,CAAC,CAAC;IACF,IACE,QAAQ,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM;QACvC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM;QAEhE,GAAG,EAAE,CAAC;IACR,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3C,IACE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC;YAE1E,GAAG,EAAE,CAAC;QACR,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CACjC,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS;YACnC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,KAAK,EAAE;YACpC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAE,GAAG,GAAG;gBACzD,KAAK,CAAC,QAAQ;YAChB,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,KAAK,QAAQ,CAAC,MAAM;YACrD,QAAQ,CAAC,KAAK,CACZ,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC,OAAO;gBACrD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,CAAC,CAAC,IAAI,CAChD,CACJ,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,GAAG,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import { openSignalInstruction } from '../c4/open-signal.js';
|
|
3
|
+
export { openSignalInstruction };
|
|
4
|
+
import type { RawAccount } from '../../client/contracts.js';
|
|
5
|
+
export interface OpenSignalIntent {
|
|
6
|
+
readonly game: Address;
|
|
7
|
+
readonly fleet: Address;
|
|
8
|
+
readonly profile: Address;
|
|
9
|
+
readonly authority: Address;
|
|
10
|
+
readonly keyIndex: number;
|
|
11
|
+
}
|
|
12
|
+
export interface OpenSignalGuard extends OpenSignalIntent {
|
|
13
|
+
readonly kind: 'scan-signal-open';
|
|
14
|
+
readonly address: Address;
|
|
15
|
+
readonly character: Address;
|
|
16
|
+
readonly maximumProfileDebit: bigint;
|
|
17
|
+
readonly authorityHash: string;
|
|
18
|
+
readonly describes: string;
|
|
19
|
+
readonly dataHash?: never;
|
|
20
|
+
}
|
|
21
|
+
export declare function resolveOpenSignal(intent: OpenSignalIntent): Promise<{
|
|
22
|
+
address: Address;
|
|
23
|
+
character: Address;
|
|
24
|
+
}>;
|
|
25
|
+
export declare function openSignalAddresses(guard: OpenSignalGuard): readonly Address[];
|
|
26
|
+
export declare function validateOpenSignal(guard: OpenSignalGuard, accounts: ReadonlyMap<Address, RawAccount | undefined>, expectedAuthorityHash?: string): Promise<{
|
|
27
|
+
profileDebit: bigint;
|
|
28
|
+
profileReserve: bigint;
|
|
29
|
+
authorityHash: string;
|
|
30
|
+
}>;
|
|
31
|
+
//# sourceMappingURL=open-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-signal.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/open-signal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,qBAAqB,EAItB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,qBAAqB,EAAE,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAa5D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AACD,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B;AACD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAMnD;AAID,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,GACrB,SAAS,OAAO,EAAE,CASpB;AACD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,EACtD,qBAAqB,CAAC,EAAE,MAAM;;;;GAoG/B"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { hashAccountState } from './account-state.js';
|
|
2
|
+
import { openSignalInstruction, scanSignalSize, SAGE_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS, } from '../c4/open-signal.js';
|
|
3
|
+
export { openSignalInstruction };
|
|
4
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
5
|
+
import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
|
|
6
|
+
import { profileAccountDefinition } from '../c4/identity.js';
|
|
7
|
+
import { characterAccountDefinition, findCharacterPda, } from '../c4/character.js';
|
|
8
|
+
import { deriveScanLifecycleAddress } from '../c4/scan-lifecycle.js';
|
|
9
|
+
import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
|
|
10
|
+
import { RENT_ADDRESS, readRent } from './rent.js';
|
|
11
|
+
import { directProfileKey, profileKeyExpired } from './profile-key.js';
|
|
12
|
+
export async function resolveOpenSignal(intent) {
|
|
13
|
+
const [address, character] = await Promise.all([
|
|
14
|
+
deriveScanLifecycleAddress('scanSignal', intent.game, intent.fleet),
|
|
15
|
+
findCharacterPda(intent.profile, intent.game),
|
|
16
|
+
]);
|
|
17
|
+
return { address: address[0], character };
|
|
18
|
+
}
|
|
19
|
+
function fail(address, message) {
|
|
20
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
|
|
21
|
+
}
|
|
22
|
+
export function openSignalAddresses(guard) {
|
|
23
|
+
return [
|
|
24
|
+
guard.address,
|
|
25
|
+
guard.fleet,
|
|
26
|
+
guard.profile,
|
|
27
|
+
guard.character,
|
|
28
|
+
RENT_ADDRESS,
|
|
29
|
+
CLOCK_ADDRESS,
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
export async function validateOpenSignal(guard, accounts, expectedAuthorityHash) {
|
|
33
|
+
const resolved = await resolveOpenSignal(guard);
|
|
34
|
+
if (resolved.address !== guard.address ||
|
|
35
|
+
resolved.character !== guard.character)
|
|
36
|
+
fail(guard.address, 'Signal or Character PDA contradicts the Game, Fleet or Profile. Recreate the setup Plan from fresh canonical accounts.');
|
|
37
|
+
const required = (address) => {
|
|
38
|
+
const raw = accounts.get(address);
|
|
39
|
+
if (!raw || raw.executable)
|
|
40
|
+
fail(address, 'A signal setup prerequisite is missing or executable. Refetch valid accounts and recreate the Plan.');
|
|
41
|
+
return raw;
|
|
42
|
+
};
|
|
43
|
+
if (accounts.get(guard.address))
|
|
44
|
+
fail(guard.address, 'The canonical signal already exists. Refetch and reuse it; setup cannot replace an existing signal.');
|
|
45
|
+
const fleet = fleetAccountDefinition.decode(required(guard.fleet));
|
|
46
|
+
if (fleet.game !== guard.game ||
|
|
47
|
+
fleet.ownerProfile !== guard.profile ||
|
|
48
|
+
(await deriveFleetAddress(fleet)) !== guard.fleet ||
|
|
49
|
+
fleet.subProfile !== '11111111111111111111111111111111')
|
|
50
|
+
fail(guard.fleet, 'The Fleet has a different Game, owner, canonical PDA or delegated controller. Refetch a directly owned Fleet and recreate setup.');
|
|
51
|
+
const character = characterAccountDefinition.decode(required(guard.character));
|
|
52
|
+
if (character.game !== guard.game ||
|
|
53
|
+
character.playerProfile !== guard.profile)
|
|
54
|
+
fail(guard.character, 'The owner/controller Character does not belong to this Game and Profile. Refetch the canonical Character and recreate setup.');
|
|
55
|
+
const profileRaw = required(guard.profile);
|
|
56
|
+
const profile = profileAccountDefinition.decode(profileRaw);
|
|
57
|
+
const now = readClock(required(CLOCK_ADDRESS));
|
|
58
|
+
const key = directProfileKey(profile.keys, guard.keyIndex, guard.authority);
|
|
59
|
+
if (!key || profileKeyExpired(key, now))
|
|
60
|
+
fail(guard.profile, 'The selected direct Profile key is missing, mismatched or expired. Refetch the Profile, select a current key and recreate setup.');
|
|
61
|
+
if (key.scope !== PLAYER_PROFILE_PROGRAM_ADDRESS &&
|
|
62
|
+
key.scope !== SAGE_PROGRAM_ADDRESS)
|
|
63
|
+
fail(guard.profile, 'The selected key has an unrelated program scope. Select a current Profile- or SAGE-scoped direct key and recreate setup; instruction permission acceptance remains chain-authoritative.');
|
|
64
|
+
const authorityHash = await hashAccountState(profileRaw.owner, new TextEncoder().encode(JSON.stringify([
|
|
65
|
+
profile.version,
|
|
66
|
+
profile.authKeyCount,
|
|
67
|
+
profile.keyThreshold,
|
|
68
|
+
key.address,
|
|
69
|
+
key.scope,
|
|
70
|
+
String(key.permissionsRaw),
|
|
71
|
+
String(key.expiresAtRaw),
|
|
72
|
+
])));
|
|
73
|
+
if (expectedAuthorityHash !== undefined &&
|
|
74
|
+
authorityHash !== expectedAuthorityHash)
|
|
75
|
+
fail(guard.profile, 'The selected Profile authorization changed. Refetch the key and recreate setup before signing.');
|
|
76
|
+
const rent = readRent(required(RENT_ADDRESS));
|
|
77
|
+
const profileDebit = rent(scanSignalSize());
|
|
78
|
+
const profileReserve = rent(profileRaw.data.length);
|
|
79
|
+
if (profileDebit > guard.maximumProfileDebit)
|
|
80
|
+
fail(guard.profile, 'Signal rent now exceeds the approved Profile debit. Recreate setup and inspect the new funding ceiling before signing.');
|
|
81
|
+
if (profileRaw.lamports < profileReserve + profileDebit)
|
|
82
|
+
fail(guard.profile, 'The Profile lacks signal rent while retaining its own storage reserve. Fund the Profile explicitly, refetch and recreate setup; transaction fees are separate.');
|
|
83
|
+
return { profileDebit, profileReserve, authorityHash };
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=open-signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-signal.js","sourceRoot":"","sources":["../../../src/internal/planning/open-signal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type Address, type Instruction } from '@solana/kit';
|
|
2
|
+
import type { RawAccount, SageContext } from '../../client/contracts.js';
|
|
3
|
+
import type { PlanPrecondition } from '../../planning/index.js';
|
|
4
|
+
export declare const ORIGINAL_TOKEN_PROGRAM: Address;
|
|
5
|
+
export declare const ATA_PROGRAM: Address;
|
|
6
|
+
/** Rejects with the calling planner's wording and remedy. */
|
|
7
|
+
type Fail = (message: string, address: Address) => never;
|
|
8
|
+
/** What a wallet token transfer Plan rechecks and leaves to the chain. */
|
|
9
|
+
export declare const TOKEN_TRANSFER_DISCLOSURE = "System identity, active Starbase generation and applicable CSS requirements are rechecked before signing; unrelated System combat, shield, health and hab activity is not equality-bound. Execution access checks remain chain-authoritative, not a client-side atomicity guarantee. Mint supply and authorities may change; initialized original Token mint layout and decimals are rechecked before signing.";
|
|
10
|
+
/** The canonical associated token account of `owner` for an original Token `mint`. */
|
|
11
|
+
export declare function deriveAssociatedTokenAddress(owner: Address, mint: Address): Promise<Address>;
|
|
12
|
+
/** Whether a wallet is an original or Token-2022 multisig authority, which
|
|
13
|
+
* needs signer semantics outside the single-owner wallet planners. */
|
|
14
|
+
export declare function isTokenMultisig(account: RawAccount | undefined): boolean;
|
|
15
|
+
/** The raw balance of an initialized, unfrozen original Token account of
|
|
16
|
+
* `mint` owned by `owner`, or why the account is not one: `layout` for
|
|
17
|
+
* anything but a well-formed 165-byte original Token account, `holder` for
|
|
18
|
+
* its state, mint or owner. Mint and authority sit at 0/32, the state at 108
|
|
19
|
+
* and u32 COption tags at 72/109/129. A recorded delegate does not prevent the
|
|
20
|
+
* owner from transferring, so it is accepted. */
|
|
21
|
+
export declare function originalTokenBalance(account: RawAccount, mint: Address, owner: Address): bigint | 'layout' | 'holder';
|
|
22
|
+
/** {@link originalTokenBalance}, failing with the calling planner's wording
|
|
23
|
+
* when the account is not the expected original Token account. */
|
|
24
|
+
export declare function readTokenAccount(account: RawAccount, mint: Address, owner: Address, fail: Fail): bigint;
|
|
25
|
+
/** Validates an explicit payer for idempotent canonical ATA creation and
|
|
26
|
+
* returns the creation instruction, its storage funding, and the payer, Rent
|
|
27
|
+
* and program observations. Reads Rent unless the caller already holds it. */
|
|
28
|
+
export declare function resolveAssociatedTokenCreation(ctx: SageContext, request: {
|
|
29
|
+
readonly payer: Address;
|
|
30
|
+
readonly address: Address;
|
|
31
|
+
readonly owner: Address;
|
|
32
|
+
readonly mint: Address;
|
|
33
|
+
readonly rent?: RawAccount;
|
|
34
|
+
}, fail: Fail, observe: (account: RawAccount, role: string) => Promise<PlanPrecondition>): Promise<{
|
|
35
|
+
readonly instruction: Instruction;
|
|
36
|
+
readonly preconditions: readonly PlanPrecondition[];
|
|
37
|
+
readonly storageFunding: bigint;
|
|
38
|
+
}>;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=original-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"original-token.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/original-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAEzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,eAAO,MAAM,sBAAsB,EACgB,OAAO,CAAC;AAC3D,eAAO,MAAM,WAAW,EAC4B,OAAO,CAAC;AAI5D,6DAA6D;AAC7D,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC;AAEzD,0EAA0E;AAC1E,eAAO,MAAM,yBAAyB,mZAC4W,CAAC;AAEnZ,sFAAsF;AACtF,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,OAAO,CAAC,CAWlB;AAED;sEACsE;AACtE,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAOxE;AAED;;;;;iDAKiD;AACjD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,GACb,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAkB9B;AAED;kEACkE;AAClE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,IAAI,GACT,MAAM,CAcR;AAED;;8EAE8E;AAC9E,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,WAAW,EAChB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;CAC5B,EACD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,GACxE,OAAO,CAAC;IACT,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC,CAAC,CAgED"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { AccountRole, getAddressDecoder, getAddressEncoder, getProgramDerivedAddress, } from '@solana/kit';
|
|
2
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
3
|
+
import { SYSTEM_PROGRAM } from '../system-program.js';
|
|
4
|
+
import { RENT_ADDRESS, readRent } from './rent.js';
|
|
5
|
+
export const ORIGINAL_TOKEN_PROGRAM = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA';
|
|
6
|
+
export const ATA_PROGRAM = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL';
|
|
7
|
+
const TOKEN_2022_PROGRAM = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
|
|
8
|
+
/** What a wallet token transfer Plan rechecks and leaves to the chain. */
|
|
9
|
+
export const TOKEN_TRANSFER_DISCLOSURE = 'System identity, active Starbase generation and applicable CSS requirements are rechecked before signing; unrelated System combat, shield, health and hab activity is not equality-bound. Execution access checks remain chain-authoritative, not a client-side atomicity guarantee. Mint supply and authorities may change; initialized original Token mint layout and decimals are rechecked before signing.';
|
|
10
|
+
/** The canonical associated token account of `owner` for an original Token `mint`. */
|
|
11
|
+
export async function deriveAssociatedTokenAddress(owner, mint) {
|
|
12
|
+
const encoder = getAddressEncoder();
|
|
13
|
+
const [address] = await getProgramDerivedAddress({
|
|
14
|
+
programAddress: ATA_PROGRAM,
|
|
15
|
+
seeds: [
|
|
16
|
+
encoder.encode(owner),
|
|
17
|
+
encoder.encode(ORIGINAL_TOKEN_PROGRAM),
|
|
18
|
+
encoder.encode(mint),
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
return address;
|
|
22
|
+
}
|
|
23
|
+
/** Whether a wallet is an original or Token-2022 multisig authority, which
|
|
24
|
+
* needs signer semantics outside the single-owner wallet planners. */
|
|
25
|
+
export function isTokenMultisig(account) {
|
|
26
|
+
return (account !== undefined &&
|
|
27
|
+
account.data.length === 355 &&
|
|
28
|
+
(account.owner === ORIGINAL_TOKEN_PROGRAM ||
|
|
29
|
+
account.owner === TOKEN_2022_PROGRAM));
|
|
30
|
+
}
|
|
31
|
+
/** The raw balance of an initialized, unfrozen original Token account of
|
|
32
|
+
* `mint` owned by `owner`, or why the account is not one: `layout` for
|
|
33
|
+
* anything but a well-formed 165-byte original Token account, `holder` for
|
|
34
|
+
* its state, mint or owner. Mint and authority sit at 0/32, the state at 108
|
|
35
|
+
* and u32 COption tags at 72/109/129. A recorded delegate does not prevent the
|
|
36
|
+
* owner from transferring, so it is accepted. */
|
|
37
|
+
export function originalTokenBalance(account, mint, owner) {
|
|
38
|
+
const { data } = account;
|
|
39
|
+
const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
|
|
40
|
+
if (account.executable ||
|
|
41
|
+
account.owner !== ORIGINAL_TOKEN_PROGRAM ||
|
|
42
|
+
data.length !== 165 ||
|
|
43
|
+
[72, 109, 129].some((offset) => view.getUint32(offset, true) > 1))
|
|
44
|
+
return 'layout';
|
|
45
|
+
const decoder = getAddressDecoder();
|
|
46
|
+
if (view.getUint8(108) !== 1 ||
|
|
47
|
+
decoder.decode(data.subarray(0, 32)) !== mint ||
|
|
48
|
+
decoder.decode(data.subarray(32, 64)) !== owner)
|
|
49
|
+
return 'holder';
|
|
50
|
+
return view.getBigUint64(64, true);
|
|
51
|
+
}
|
|
52
|
+
/** {@link originalTokenBalance}, failing with the calling planner's wording
|
|
53
|
+
* when the account is not the expected original Token account. */
|
|
54
|
+
export function readTokenAccount(account, mint, owner, fail) {
|
|
55
|
+
const { address } = account;
|
|
56
|
+
const balance = originalTokenBalance(account, mint, owner);
|
|
57
|
+
if (balance === 'layout')
|
|
58
|
+
fail(`Account ${address} must be a well-formed original Token account of exactly 165 bytes; Token-2022 and multisig layouts are unsupported.`, address);
|
|
59
|
+
if (balance === 'holder')
|
|
60
|
+
fail(`Token account ${address} must be initialized, unfrozen and hold mint ${mint} under owner ${owner}; delegated spending is unsupported.`, address);
|
|
61
|
+
return balance;
|
|
62
|
+
}
|
|
63
|
+
/** Validates an explicit payer for idempotent canonical ATA creation and
|
|
64
|
+
* returns the creation instruction, its storage funding, and the payer, Rent
|
|
65
|
+
* and program observations. Reads Rent unless the caller already holds it. */
|
|
66
|
+
export async function resolveAssociatedTokenCreation(ctx, request, fail, observe) {
|
|
67
|
+
const addresses = [
|
|
68
|
+
request.payer,
|
|
69
|
+
ATA_PROGRAM,
|
|
70
|
+
SYSTEM_PROGRAM,
|
|
71
|
+
ORIGINAL_TOKEN_PROGRAM,
|
|
72
|
+
...(request.rent === undefined ? [RENT_ADDRESS] : []),
|
|
73
|
+
];
|
|
74
|
+
const accounts = (await readContextRawAccounts(ctx, addresses)).map((account, index) => account ??
|
|
75
|
+
fail(`ATA creation prerequisite ${addresses[index]} is missing. Create or fund it separately.`, addresses[index]));
|
|
76
|
+
const [payer, ...programs] = accounts.slice(0, 4);
|
|
77
|
+
const rent = request.rent ?? accounts[4];
|
|
78
|
+
if (programs.some((program) => !program.executable))
|
|
79
|
+
fail('ATA creation requires executable associated-token, System and original Token programs in this deployment.', ATA_PROGRAM);
|
|
80
|
+
// Original Token accounts occupy 165 bytes; the shared Rent reader includes
|
|
81
|
+
// the 128-byte account overhead and validates the full sysvar.
|
|
82
|
+
const storageFunding = readRent(rent)(165);
|
|
83
|
+
if (payer.owner !== SYSTEM_PROGRAM ||
|
|
84
|
+
payer.executable ||
|
|
85
|
+
payer.data.length !== 0 ||
|
|
86
|
+
payer.lamports < storageFunding)
|
|
87
|
+
fail(`ATA payer must be a System wallet with at least ${storageFunding} lamports for storage, in addition to transaction fees.`, request.payer);
|
|
88
|
+
const roles = [
|
|
89
|
+
'ATA payer identity',
|
|
90
|
+
'Associated-token program',
|
|
91
|
+
'System program',
|
|
92
|
+
'Token program',
|
|
93
|
+
'Rent configuration',
|
|
94
|
+
];
|
|
95
|
+
return {
|
|
96
|
+
instruction: {
|
|
97
|
+
programAddress: ATA_PROGRAM,
|
|
98
|
+
accounts: [
|
|
99
|
+
{ address: request.payer, role: AccountRole.WRITABLE_SIGNER },
|
|
100
|
+
{ address: request.address, role: AccountRole.WRITABLE },
|
|
101
|
+
{ address: request.owner, role: AccountRole.READONLY },
|
|
102
|
+
{ address: request.mint, role: AccountRole.READONLY },
|
|
103
|
+
{ address: SYSTEM_PROGRAM, role: AccountRole.READONLY },
|
|
104
|
+
{ address: ORIGINAL_TOKEN_PROGRAM, role: AccountRole.READONLY },
|
|
105
|
+
],
|
|
106
|
+
data: Uint8Array.of(1),
|
|
107
|
+
},
|
|
108
|
+
preconditions: await Promise.all(accounts.map((account, index) => observe(account, roles[index]))),
|
|
109
|
+
storageFunding,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=original-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"original-token.js","sourceRoot":"","sources":["../../../src/internal/planning/original-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Address } from '@solana/kit';
|
|
2
|
+
import type { RawAccount } from '../../client/contracts.js';
|
|
3
|
+
/** How a planner names itself in the remedies it shares. */
|
|
4
|
+
export interface OwnStarbaseAction {
|
|
5
|
+
/** Completes "Refresh the canonical Character and …", e.g. `replan Fleet creation`. */
|
|
6
|
+
readonly replan: string;
|
|
7
|
+
/** Completes "Refresh the canonical membership …", e.g. `before creating a Fleet`. */
|
|
8
|
+
readonly before: string;
|
|
9
|
+
}
|
|
10
|
+
/** Decodes and relates the Profile, Character, faction membership, Star System
|
|
11
|
+
* and StarbasePlayer that Fleet creation and ship assembly both require: one
|
|
12
|
+
* canonical Character and membership for the Profile, a canonical Starbase
|
|
13
|
+
* System owned by that faction, and the StarbasePlayer joining them.
|
|
14
|
+
* `required` reads each account with the planner's own wording. */
|
|
15
|
+
export declare function readOwnStarbaseFacts(intent: {
|
|
16
|
+
readonly game: Address;
|
|
17
|
+
readonly profile: Address;
|
|
18
|
+
readonly system: Address;
|
|
19
|
+
}, resolved: {
|
|
20
|
+
readonly profile: Address;
|
|
21
|
+
readonly character: Address;
|
|
22
|
+
readonly profileFaction: Address;
|
|
23
|
+
readonly system: Address;
|
|
24
|
+
readonly starbasePlayer: Address;
|
|
25
|
+
}, required: (address: Address, name: string) => RawAccount, action: OwnStarbaseAction): Promise<{
|
|
26
|
+
profileRaw: RawAccount;
|
|
27
|
+
profile: Readonly<import("../c4/identity.js").ProfileAccountData>;
|
|
28
|
+
character: Readonly<import("../c4/character.js").CharacterAccountData>;
|
|
29
|
+
faction: Readonly<import("../c4/profile-faction.js").ProfileFactionAccountData>;
|
|
30
|
+
starbase: import("../c4/world.js").WorldStarbaseData;
|
|
31
|
+
player: Readonly<import("../c4/starbase.js").StarbasePlayerAccountData>;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=own-starbase-facts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"own-starbase-facts.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/own-starbase-facts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAW5D,4DAA4D;AAC5D,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sFAAsF;IACtF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAMD;;;;mEAImE;AACnE,wBAAsB,oBAAoB,CACxC,MAAM,EAAE;IACN,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B,EACD,QAAQ,EAAE;IACR,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC,EACD,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,UAAU,EACxD,MAAM,EAAE,iBAAiB;;;;;;;GAiE1B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
2
|
+
import { characterAccountDefinition } from '../c4/character.js';
|
|
3
|
+
import { profileAccountDefinition } from '../c4/identity.js';
|
|
4
|
+
import { profileFactionAccountDefinition } from '../c4/profile-faction.js';
|
|
5
|
+
import { starbasePlayerAccountDefinition } from '../c4/starbase.js';
|
|
6
|
+
import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../c4/world.js';
|
|
7
|
+
function fail(address, message) {
|
|
8
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
|
|
9
|
+
}
|
|
10
|
+
/** Decodes and relates the Profile, Character, faction membership, Star System
|
|
11
|
+
* and StarbasePlayer that Fleet creation and ship assembly both require: one
|
|
12
|
+
* canonical Character and membership for the Profile, a canonical Starbase
|
|
13
|
+
* System owned by that faction, and the StarbasePlayer joining them.
|
|
14
|
+
* `required` reads each account with the planner's own wording. */
|
|
15
|
+
export async function readOwnStarbaseFacts(intent, resolved, required, action) {
|
|
16
|
+
const profileRaw = required(resolved.profile, 'Profile');
|
|
17
|
+
const profile = profileAccountDefinition.decode(profileRaw);
|
|
18
|
+
const character = characterAccountDefinition.decode(required(resolved.character, 'Character'));
|
|
19
|
+
const faction = profileFactionAccountDefinition.decode(required(resolved.profileFaction, 'ProfileFaction'));
|
|
20
|
+
const system = starSystemAccountDefinition.decode(required(resolved.system, 'Star System'));
|
|
21
|
+
const player = starbasePlayerAccountDefinition.decode(required(resolved.starbasePlayer, 'StarbasePlayer'));
|
|
22
|
+
if (character.game !== intent.game ||
|
|
23
|
+
character.playerProfile !== intent.profile)
|
|
24
|
+
fail(resolved.character, `The Character belongs to a different Game or Profile. Refresh the canonical Character and ${action.replan}.`);
|
|
25
|
+
if (faction.profile !== intent.profile)
|
|
26
|
+
fail(resolved.profileFaction, `The faction membership belongs to a different Profile. Refresh the canonical membership ${action.before}.`);
|
|
27
|
+
if (system.game !== intent.game ||
|
|
28
|
+
(await deriveStarSystemAddress(system.game, system.systemId)) !==
|
|
29
|
+
intent.system ||
|
|
30
|
+
!system.starbase)
|
|
31
|
+
fail(resolved.system, 'The selected System is not canonical for this Game or has no Starbase. Choose a valid Starbase System and replan.');
|
|
32
|
+
if (player.playerProfile !== intent.profile ||
|
|
33
|
+
player.character !== resolved.character ||
|
|
34
|
+
player.system !== intent.system ||
|
|
35
|
+
player.faction !== faction.faction)
|
|
36
|
+
fail(resolved.starbasePlayer, 'The StarbasePlayer has a different Profile, Character, System or faction relationship. Refresh the canonical StarbasePlayer and replan.');
|
|
37
|
+
if (faction.faction === 'unaligned' ||
|
|
38
|
+
system.starbase.owner !== faction.faction)
|
|
39
|
+
fail(resolved.system, 'This planner supports an existing own-faction StarbasePlayer only. Select an own-faction Starbase; other diplomacy or access routes require separate supported planning.');
|
|
40
|
+
return {
|
|
41
|
+
profileRaw,
|
|
42
|
+
profile,
|
|
43
|
+
character,
|
|
44
|
+
faction,
|
|
45
|
+
starbase: system.starbase,
|
|
46
|
+
player,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=own-starbase-facts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"own-starbase-facts.js","sourceRoot":"","sources":["../../../src/internal/planning/own-starbase-facts.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EACL,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,gBAAgB,CAAC;AAUxB,SAAS,IAAI,CAAC,OAAgB,EAAE,OAAe;IAC7C,MAAM,IAAI,YAAY,CAAC,4BAA4B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;mEAImE;AACnE,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAIC,EACD,QAMC,EACD,QAAwD,EACxD,MAAyB;IAEzB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,wBAAwB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,0BAA0B,CAAC,MAAM,CACjD,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAC1C,CAAC;IACF,MAAM,OAAO,GAAG,+BAA+B,CAAC,MAAM,CACpD,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CACpD,CAAC;IACF,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAC/C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CACzC,CAAC;IACF,MAAM,MAAM,GAAG,+BAA+B,CAAC,MAAM,CACnD,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CACpD,CAAC;IACF,IACE,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAC9B,SAAS,CAAC,aAAa,KAAK,MAAM,CAAC,OAAO;QAE1C,IAAI,CACF,QAAQ,CAAC,SAAS,EAClB,6FAA6F,MAAM,CAAC,MAAM,GAAG,CAC9G,CAAC;IACJ,IAAI,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QACpC,IAAI,CACF,QAAQ,CAAC,cAAc,EACvB,2FAA2F,MAAM,CAAC,MAAM,GAAG,CAC5G,CAAC;IACJ,IACE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QAC3B,CAAC,MAAM,uBAAuB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,CAAC,MAAM;QACf,CAAC,MAAM,CAAC,QAAQ;QAEhB,IAAI,CACF,QAAQ,CAAC,MAAM,EACf,mHAAmH,CACpH,CAAC;IACJ,IACE,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,OAAO;QACvC,MAAM,CAAC,SAAS,KAAK,QAAQ,CAAC,SAAS;QACvC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC/B,MAAM,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;QAElC,IAAI,CACF,QAAQ,CAAC,cAAc,EACvB,yIAAyI,CAC1I,CAAC;IACJ,IACE,OAAO,CAAC,OAAO,KAAK,WAAW;QAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO;QAEzC,IAAI,CACF,QAAQ,CAAC,MAAM,EACf,0KAA0K,CAC3K,CAAC;IACJ,OAAO;QACL,UAAU;QACV,OAAO;QACP,SAAS;QACT,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type Address } from '@solana/kit';
|
|
2
|
+
export type UnknownRecord = Record<string, unknown>;
|
|
3
|
+
export declare const MAX_U64 = 18446744073709551615n;
|
|
4
|
+
/** Rejects one Plan field with the shared recreate-or-hydrate remedy. */
|
|
5
|
+
export declare function invalid(field: string, value: unknown, acceptedRange: string): never;
|
|
6
|
+
export declare function readRecord(value: unknown, field: string): UnknownRecord;
|
|
7
|
+
export declare function assertKeys(value: UnknownRecord, field: string, required: readonly string[], optional?: readonly string[]): void;
|
|
8
|
+
export declare function readString(value: unknown, field: string): string;
|
|
9
|
+
export declare function readAddress(value: unknown, field: string): Address;
|
|
10
|
+
/** An integer, or with `finite` any finite number, in an inclusive range. */
|
|
11
|
+
export interface NumberField {
|
|
12
|
+
readonly min: number;
|
|
13
|
+
readonly max: number;
|
|
14
|
+
readonly accepted: string;
|
|
15
|
+
readonly finite?: true;
|
|
16
|
+
}
|
|
17
|
+
/** A bigint in an inclusive range; Plan JSON carries a canonical decimal string. */
|
|
18
|
+
export interface BigIntField {
|
|
19
|
+
readonly min: bigint;
|
|
20
|
+
readonly max: bigint;
|
|
21
|
+
readonly accepted: string;
|
|
22
|
+
}
|
|
23
|
+
/** One of a fixed set of values. */
|
|
24
|
+
export interface TokenField {
|
|
25
|
+
readonly values: readonly unknown[];
|
|
26
|
+
readonly accepted: string;
|
|
27
|
+
}
|
|
28
|
+
/** How one Plan guard field is validated in memory and decoded from Plan JSON. */
|
|
29
|
+
export type GuardFieldType = 'address' | 'hash' | 'string' | 'text' | 'label' | NumberField | BigIntField | TokenField;
|
|
30
|
+
/** A guard field: key, type and whether it may be omitted. */
|
|
31
|
+
export type GuardFieldEntry = readonly [
|
|
32
|
+
key: string,
|
|
33
|
+
type: GuardFieldType,
|
|
34
|
+
optional?: true
|
|
35
|
+
];
|
|
36
|
+
/** One flat guard kind; field order is the normalized and serialized order. */
|
|
37
|
+
export interface GuardSchema {
|
|
38
|
+
readonly fields: readonly GuardFieldEntry[];
|
|
39
|
+
/** Extra fields for the guard's validated `status`, keyed by status value.
|
|
40
|
+
* Requires a `status` field; a status without an entry adds no fields.
|
|
41
|
+
*/
|
|
42
|
+
readonly byStatus?: Readonly<Record<string, readonly GuardFieldEntry[]>>;
|
|
43
|
+
/** Cross-field invariants, evaluated after every field is valid. */
|
|
44
|
+
readonly check?: (guard: UnknownRecord) => boolean;
|
|
45
|
+
/** Replaces every field-level error with one safeguard-level error. */
|
|
46
|
+
readonly error?: {
|
|
47
|
+
readonly accepted: string;
|
|
48
|
+
readonly remedy: string;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Validates one flat guard against its schema; `wire` decodes Plan JSON values.
|
|
52
|
+
* The result is frozen, with `kind` first, fields in schema order and
|
|
53
|
+
* `describes` last.
|
|
54
|
+
*/
|
|
55
|
+
export declare function normalizeSchemaGuard(guard: UnknownRecord, field: string, schema: GuardSchema, wire: boolean): UnknownRecord;
|
|
56
|
+
/** Converts a guard to Plan JSON: bigint values become decimal strings and
|
|
57
|
+
* undefined members are omitted, at every depth, preserving key order.
|
|
58
|
+
*/
|
|
59
|
+
export declare function guardToWire(value: unknown): unknown;
|
|
60
|
+
//# sourceMappingURL=plan-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-fields.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/plan-fields.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAItD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,eAAO,MAAM,OAAO,wBAAsB,CAAC;AAK3C,yEAAyE;AACzE,wBAAgB,OAAO,CACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,MAAM,GACpB,KAAK,CAOP;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAKvE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,IAAI,CAWN;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAIlE;AAED,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;CACxB;AAED,oFAAoF;AACpF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,oCAAoC;AACpC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,kFAAkF;AAClF,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,MAAM,GACN,OAAO,GACP,WAAW,GACX,WAAW,GACX,UAAU,CAAC;AAEf,8DAA8D;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS;IACrC,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,cAAc;IACpB,QAAQ,CAAC,EAAE,IAAI;CAChB,CAAC;AAEF,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;IAC5C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC,CAAC,CAAC;IACzE,oEAAoE;IACpE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC;IACnD,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACzE;AAoGD;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,aAAa,EACpB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,OAAO,GACZ,aAAa,CA2Cf;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASnD"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { isAddress } from '@solana/kit';
|
|
2
|
+
import { InvalidActionInputError } from '../../client/errors.js';
|
|
3
|
+
export const MAX_U64 = 0xffffffffffffffffn;
|
|
4
|
+
const DATA_HASH_PATTERN = /^[\da-f]{64}$/u;
|
|
5
|
+
const UNSIGNED_DECIMAL = /^(0|[1-9][0-9]*)$/u;
|
|
6
|
+
const SIGNED_DECIMAL = /^(0|-?[1-9][0-9]*)$/u;
|
|
7
|
+
/** Rejects one Plan field with the shared recreate-or-hydrate remedy. */
|
|
8
|
+
export function invalid(field, value, acceptedRange) {
|
|
9
|
+
throw new InvalidActionInputError(field, value, acceptedRange, 'Correct this Plan field and recreate or hydrate the Plan before retrying.');
|
|
10
|
+
}
|
|
11
|
+
export function readRecord(value, field) {
|
|
12
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
13
|
+
return invalid(field, value, 'a plain object');
|
|
14
|
+
}
|
|
15
|
+
return value;
|
|
16
|
+
}
|
|
17
|
+
export function assertKeys(value, field, required, optional = []) {
|
|
18
|
+
const accepted = new Set([...required, ...optional]);
|
|
19
|
+
const missing = required.find((key) => !Object.hasOwn(value, key));
|
|
20
|
+
const unexpected = Object.keys(value).find((key) => !accepted.has(key));
|
|
21
|
+
if (missing !== undefined || unexpected !== undefined) {
|
|
22
|
+
invalid(field, missing === undefined ? unexpected : `missing ${missing}`, `exactly the fields ${[...required, ...optional].join(', ')}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function readString(value, field) {
|
|
26
|
+
return typeof value === 'string' ? value : invalid(field, value, 'a string');
|
|
27
|
+
}
|
|
28
|
+
export function readAddress(value, field) {
|
|
29
|
+
return typeof value === 'string' && isAddress(value)
|
|
30
|
+
? value
|
|
31
|
+
: invalid(field, value, 'a valid base58 Solana address');
|
|
32
|
+
}
|
|
33
|
+
const LABEL_ACCEPTED = 'a nonblank, NUL-free Unicode label of at most 64 UTF-8 bytes';
|
|
34
|
+
function readLabel(value, field, fail) {
|
|
35
|
+
if (typeof value !== 'string')
|
|
36
|
+
return fail(field, value, 'a string');
|
|
37
|
+
const bytes = new TextEncoder().encode(value);
|
|
38
|
+
if (value.trim().length === 0 ||
|
|
39
|
+
value.includes('\0') ||
|
|
40
|
+
bytes.length > 64 ||
|
|
41
|
+
new TextDecoder('utf-8', { ignoreBOM: true }).decode(bytes) !== value)
|
|
42
|
+
fail(field, value, LABEL_ACCEPTED);
|
|
43
|
+
return value;
|
|
44
|
+
}
|
|
45
|
+
function readField(type, value, field, wire, fail) {
|
|
46
|
+
if (type === 'address')
|
|
47
|
+
return typeof value === 'string' && isAddress(value)
|
|
48
|
+
? value
|
|
49
|
+
: fail(field, value, 'a valid base58 Solana address');
|
|
50
|
+
if (type === 'hash')
|
|
51
|
+
return typeof value === 'string' && DATA_HASH_PATTERN.test(value)
|
|
52
|
+
? value
|
|
53
|
+
: fail(field, value, 'a lowercase 64-character SHA-256 hex digest');
|
|
54
|
+
if (type === 'string')
|
|
55
|
+
return typeof value === 'string' ? value : fail(field, value, 'a string');
|
|
56
|
+
if (type === 'text')
|
|
57
|
+
return typeof value === 'string' && value.trim().length > 0
|
|
58
|
+
? value
|
|
59
|
+
: fail(field, value, 'a nonblank string');
|
|
60
|
+
if (type === 'label')
|
|
61
|
+
return readLabel(value, field, fail);
|
|
62
|
+
if ('values' in type)
|
|
63
|
+
return type.values.includes(value)
|
|
64
|
+
? value
|
|
65
|
+
: fail(field, value, type.accepted);
|
|
66
|
+
if (typeof type.min === 'bigint') {
|
|
67
|
+
let parsed = value;
|
|
68
|
+
if (wire) {
|
|
69
|
+
const signed = type.min < 0n;
|
|
70
|
+
if (typeof value !== 'string' ||
|
|
71
|
+
!(signed ? SIGNED_DECIMAL : UNSIGNED_DECIMAL).test(value))
|
|
72
|
+
fail(field, value, signed
|
|
73
|
+
? 'a canonical decimal string'
|
|
74
|
+
: 'a canonical unsigned decimal string');
|
|
75
|
+
parsed = BigInt(value);
|
|
76
|
+
}
|
|
77
|
+
return typeof parsed === 'bigint' &&
|
|
78
|
+
parsed >= type.min &&
|
|
79
|
+
parsed <= type.max
|
|
80
|
+
? parsed
|
|
81
|
+
: fail(field, parsed, type.accepted);
|
|
82
|
+
}
|
|
83
|
+
const range = type;
|
|
84
|
+
return typeof value === 'number' &&
|
|
85
|
+
(range.finite ? Number.isFinite(value) : Number.isInteger(value)) &&
|
|
86
|
+
value >= range.min &&
|
|
87
|
+
value <= range.max
|
|
88
|
+
? value
|
|
89
|
+
: fail(field, value, range.accepted);
|
|
90
|
+
}
|
|
91
|
+
/** Fields for the guard's `status` variant. The status is validated against
|
|
92
|
+
* its `status` field type before the exact-key check, and only own `byStatus`
|
|
93
|
+
* entries are used, so an inherited name such as `__proto__` is a typed status
|
|
94
|
+
* error, never a prototype lookup. A missing status is left to the exact-key
|
|
95
|
+
* check.
|
|
96
|
+
*/
|
|
97
|
+
function variantFields(guard, field, schema, wire, fail) {
|
|
98
|
+
const variants = schema.byStatus;
|
|
99
|
+
if (variants === undefined || !Object.hasOwn(guard, 'status'))
|
|
100
|
+
return [];
|
|
101
|
+
const [, type] = schema.fields.find(([key]) => key === 'status');
|
|
102
|
+
const status = readField(type, guard.status, `${field}.status`, wire, fail);
|
|
103
|
+
return typeof status === 'string' && Object.hasOwn(variants, status)
|
|
104
|
+
? variants[status]
|
|
105
|
+
: [];
|
|
106
|
+
}
|
|
107
|
+
/** Validates one flat guard against its schema; `wire` decodes Plan JSON values.
|
|
108
|
+
* The result is frozen, with `kind` first, fields in schema order and
|
|
109
|
+
* `describes` last.
|
|
110
|
+
*/
|
|
111
|
+
export function normalizeSchemaGuard(guard, field, schema, wire) {
|
|
112
|
+
const fail = schema.error === undefined
|
|
113
|
+
? invalid
|
|
114
|
+
: () => {
|
|
115
|
+
throw new InvalidActionInputError(String(guard.kind), guard, schema.error.accepted, schema.error.remedy);
|
|
116
|
+
};
|
|
117
|
+
const fields = [
|
|
118
|
+
...schema.fields,
|
|
119
|
+
...variantFields(guard, field, schema, wire, fail),
|
|
120
|
+
];
|
|
121
|
+
// `describes` closes every guard, after any status-specific fields.
|
|
122
|
+
const entries = [
|
|
123
|
+
...fields.filter(([key]) => key !== 'describes'),
|
|
124
|
+
...fields.filter(([key]) => key === 'describes'),
|
|
125
|
+
];
|
|
126
|
+
const keys = (optional) => entries.filter((entry) => (entry[2] === true) === optional).map(([k]) => k);
|
|
127
|
+
try {
|
|
128
|
+
assertKeys(guard, field, ['kind', ...keys(false)], keys(true));
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (schema.error === undefined)
|
|
132
|
+
throw error;
|
|
133
|
+
fail(field, guard, 'exact guard fields');
|
|
134
|
+
}
|
|
135
|
+
const normalized = { kind: guard.kind };
|
|
136
|
+
for (const [key, type, optional] of entries) {
|
|
137
|
+
if (optional === true && guard[key] === undefined)
|
|
138
|
+
continue;
|
|
139
|
+
normalized[key] = readField(type, guard[key], `${field}.${key}`, wire, fail);
|
|
140
|
+
}
|
|
141
|
+
if (schema.check !== undefined && !schema.check(normalized))
|
|
142
|
+
fail(field, guard, 'internally consistent guard fields');
|
|
143
|
+
return Object.freeze(normalized);
|
|
144
|
+
}
|
|
145
|
+
/** Converts a guard to Plan JSON: bigint values become decimal strings and
|
|
146
|
+
* undefined members are omitted, at every depth, preserving key order.
|
|
147
|
+
*/
|
|
148
|
+
export function guardToWire(value) {
|
|
149
|
+
if (typeof value === 'bigint')
|
|
150
|
+
return String(value);
|
|
151
|
+
if (Array.isArray(value))
|
|
152
|
+
return value.map(guardToWire);
|
|
153
|
+
if (value === null || typeof value !== 'object')
|
|
154
|
+
return value;
|
|
155
|
+
return Object.fromEntries(Object.entries(value)
|
|
156
|
+
.filter(([, member]) => member !== undefined)
|
|
157
|
+
.map(([key, member]) => [key, guardToWire(member)]));
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=plan-fields.js.map
|