@aephia/atlas-kit 0.6.0-next.11 → 0.6.0-next.110
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 +26 -115
- 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 +15 -37
- package/dist/cargo/actions/index.js.map +1 -1
- package/dist/cargo/actions/wallet-context.d.ts +51 -2
- package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-context.js +125 -2
- 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.map +1 -1
- package/dist/cargo/actions/withdrawal.js +37 -162
- 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 +373 -544
- 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 +23 -2
- 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 +2 -2
- package/dist/combat/actions/index.d.ts.map +1 -1
- package/dist/combat/actions/index.js +192 -224
- package/dist/combat/actions/index.js.map +1 -1
- package/dist/combat/index.d.ts +4 -3
- package/dist/combat/index.d.ts.map +1 -1
- package/dist/combat/index.js +3 -2
- package/dist/combat/index.js.map +1 -1
- package/dist/crafting/actions/index.d.ts +11 -0
- package/dist/crafting/actions/index.d.ts.map +1 -1
- package/dist/crafting/actions/index.js +175 -283
- 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 +45 -16
- package/dist/crafting/index.js.map +1 -1
- package/dist/factions/actions/index.d.ts +1 -0
- package/dist/factions/actions/index.d.ts.map +1 -1
- package/dist/factions/actions/index.js +2 -1
- package/dist/factions/actions/index.js.map +1 -1
- package/dist/factions/index.d.ts +1 -1
- package/dist/factions/index.d.ts.map +1 -1
- package/dist/factions/index.js +14 -8
- package/dist/factions/index.js.map +1 -1
- package/dist/factions/profile-faction.d.ts +20 -8
- package/dist/factions/profile-faction.d.ts.map +1 -1
- package/dist/factions/profile-faction.js +20 -8
- package/dist/factions/profile-faction.js.map +1 -1
- package/dist/fleets/actions/add-ship.d.ts +35 -0
- package/dist/fleets/actions/add-ship.d.ts.map +1 -0
- package/dist/fleets/actions/add-ship.js +149 -0
- package/dist/fleets/actions/add-ship.js.map +1 -0
- package/dist/fleets/actions/create-fleet.d.ts +36 -0
- package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
- package/dist/fleets/actions/create-fleet.js +138 -0
- package/dist/fleets/actions/create-fleet.js.map +1 -0
- package/dist/fleets/actions/crew-transfer.d.ts +41 -0
- package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
- package/dist/fleets/actions/crew-transfer.js +114 -0
- package/dist/fleets/actions/crew-transfer.js.map +1 -0
- package/dist/fleets/actions/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 +37 -16
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +303 -284
- 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.map +1 -1
- package/dist/fleets/actions/ship-import.js +59 -76
- 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 +52 -2
- 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/index.d.ts +3 -3
- 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 +12 -2
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +10 -1
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/permissions.d.ts +11 -2
- package/dist/identity/permissions.d.ts.map +1 -1
- package/dist/identity/permissions.js +13 -4
- package/dist/identity/permissions.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 +12 -0
- package/dist/internal/c4/account-decoding.d.ts.map +1 -0
- package/dist/internal/c4/account-decoding.js +36 -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/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 +155 -0
- package/dist/internal/c4/character.d.ts.map +1 -0
- package/dist/internal/c4/character.js +79 -0
- package/dist/internal/c4/character.js.map +1 -0
- package/dist/internal/c4/claim-stake-configuration.js +4 -2
- 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.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 +30 -41
- 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 +10 -171
- 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 +61 -49
- 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 +30 -0
- package/dist/internal/c4/currency-cache.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-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/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 +9 -57
- package/dist/internal/c4/factions.d.ts.map +1 -1
- package/dist/internal/c4/factions.js +29 -156
- 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 +20 -3
- 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 +45 -19
- package/dist/internal/c4/fleet.d.ts.map +1 -1
- package/dist/internal/c4/fleet.js +37 -29
- 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 +47 -12
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +110 -21
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/c4/identity.d.ts +2 -152
- package/dist/internal/c4/identity.d.ts.map +1 -1
- package/dist/internal/c4/identity.js +6 -110
- package/dist/internal/c4/identity.js.map +1 -1
- package/dist/internal/c4/local-market-order.d.ts +31 -0
- package/dist/internal/c4/local-market-order.d.ts.map +1 -0
- package/dist/internal/c4/local-market-order.js +47 -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 +58 -0
- package/dist/internal/c4/loot.d.ts.map +1 -0
- package/dist/internal/c4/loot.js +130 -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 +14 -43
- 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 +13 -51
- 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.js +1 -1
- package/dist/internal/c4/pda.js.map +1 -1
- package/dist/internal/c4/profile-faction.d.ts.map +1 -1
- package/dist/internal/c4/profile-faction.js +11 -21
- package/dist/internal/c4/profile-faction.js.map +1 -1
- package/dist/internal/c4/profile-permissions.d.ts +5 -3
- package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
- package/dist/internal/c4/profile-permissions.js +61 -8
- 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 +14 -115
- 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 +261 -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 +7 -36
- 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 +12 -62
- package/dist/internal/c4/starbase.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 +67 -48
- package/dist/internal/c4/world.js.map +1 -1
- package/dist/internal/cargo.d.ts +2 -0
- package/dist/internal/cargo.d.ts.map +1 -1
- package/dist/internal/cargo.js +8 -0
- package/dist/internal/cargo.js.map +1 -1
- package/dist/internal/fleet.d.ts +1 -0
- package/dist/internal/fleet.d.ts.map +1 -1
- package/dist/internal/fleet.js +3 -1
- package/dist/internal/fleet.js.map +1 -1
- package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
- package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
- package/dist/internal/loyalty-atlas-bank-state.js +10 -0
- package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
- package/dist/internal/planning/action-runtime.d.ts +38 -0
- package/dist/internal/planning/action-runtime.d.ts.map +1 -0
- package/dist/internal/planning/action-runtime.js +63 -0
- package/dist/internal/planning/action-runtime.js.map +1 -0
- package/dist/internal/planning/arrival-guards.d.ts +19 -0
- package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
- package/dist/internal/planning/arrival-guards.js +171 -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 +165 -76
- 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 +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 +32 -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 +198 -0
- package/dist/internal/planning/democracy-history.js.map +1 -0
- package/dist/internal/planning/faction-enrollment.d.ts +0 -2
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
- package/dist/internal/planning/faction-enrollment.js +1 -22
- 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 +109 -0
- package/dist/internal/planning/fleet-creation.js.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.js +47 -0
- package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.js +132 -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 +208 -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 +42 -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 +85 -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 +167 -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 +138 -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 +239 -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 +127 -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 +138 -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 +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 +86 -0
- package/dist/internal/planning/open-signal.js.map +1 -0
- package/dist/internal/planning/original-token.d.ts +34 -0
- package/dist/internal/planning/original-token.d.ts.map +1 -0
- package/dist/internal/planning/original-token.js +98 -0
- package/dist/internal/planning/original-token.js.map +1 -0
- package/dist/internal/planning/plan-fields.d.ts +59 -0
- package/dist/internal/planning/plan-fields.d.ts.map +1 -0
- package/dist/internal/planning/plan-fields.js +153 -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/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 +41 -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 +635 -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 +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 +93 -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 +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/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 +126 -0
- package/dist/internal/planning/xp-runtime.js.map +1 -0
- 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.map +1 -1
- package/dist/loyalty/actions/index.js +8 -21
- 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 +61 -3
- package/dist/markets/actions/index.d.ts.map +1 -1
- package/dist/markets/actions/index.js +227 -160
- 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 +282 -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 +57 -10
- 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 +7 -2
- 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 +5 -0
- package/dist/planning/assembly.d.ts.map +1 -1
- package/dist/planning/assembly.js +8 -4
- package/dist/planning/assembly.js.map +1 -1
- package/dist/planning/execution.d.ts +18 -3
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +492 -40
- 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 +44 -292
- package/dist/planning/index.js.map +1 -1
- 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 -30
- 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 +14 -0
- package/dist/planning/plan-validation.d.ts.map +1 -0
- package/dist/planning/plan-validation.js +124 -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 +19 -19
- 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.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.map +1 -1
- package/dist/rewards/index.js +5 -4
- 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 +185 -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 +13 -9
- 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.map +1 -1
- package/dist/starbases/actions/index.js +3 -14
- package/dist/starbases/actions/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 +109 -4
- 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,58 @@
|
|
|
1
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
2
|
+
import { createRegisterCharacterInstruction } from '../c4/character-registration.js';
|
|
3
|
+
import { REGISTER_CHARACTER_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, } from '../c4/runtime-bindings.js';
|
|
4
|
+
function sameInstruction(actual, expected) {
|
|
5
|
+
return (actual.programAddress === expected.programAddress &&
|
|
6
|
+
actual.data?.length === expected.data?.length &&
|
|
7
|
+
expected.data?.every((byte, index) => actual.data?.[index] === byte) ===
|
|
8
|
+
true &&
|
|
9
|
+
actual.accounts?.length === expected.accounts?.length &&
|
|
10
|
+
expected.accounts?.every((account, index) => actual.accounts?.[index]?.address === account.address &&
|
|
11
|
+
actual.accounts[index]?.role === account.role) === true);
|
|
12
|
+
}
|
|
13
|
+
/** Bind every current register-character instruction to its finite persisted guard. */
|
|
14
|
+
export function validateCharacterRegistrationInstructions(steps, preconditions) {
|
|
15
|
+
const guards = preconditions.filter((guard) => guard.kind === 'character-registration');
|
|
16
|
+
const characterTargets = new Set();
|
|
17
|
+
const xpBudgetTargets = new Set();
|
|
18
|
+
for (const guard of guards) {
|
|
19
|
+
if (characterTargets.has(guard.address) ||
|
|
20
|
+
xpBudgetTargets.has(guard.xpBudget))
|
|
21
|
+
throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', 'A combined Plan cannot register the same Character or Career XP budget more than once. Keep exactly one creation instruction for each target.');
|
|
22
|
+
characterTargets.add(guard.address);
|
|
23
|
+
xpBudgetTargets.add(guard.xpBudget);
|
|
24
|
+
}
|
|
25
|
+
const registrations = steps.filter(({ instruction }) => instruction.programAddress === SAGE_PROGRAM_ADDRESS &&
|
|
26
|
+
REGISTER_CHARACTER_DISCRIMINATOR.every((byte, index) => instruction.data?.[index] === byte));
|
|
27
|
+
if (registrations.length !== guards.length)
|
|
28
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Every Character registration instruction requires exactly one matching finite current-runtime registration guard. Recreate the Plan with planRegisterCharacter.');
|
|
29
|
+
// Unqualified instructions may change transaction-wide writable funders or targets.
|
|
30
|
+
// Only other validated registrations may share these accounts in this slice.
|
|
31
|
+
for (const guard of guards)
|
|
32
|
+
for (const step of steps) {
|
|
33
|
+
if (registrations.includes(step))
|
|
34
|
+
continue;
|
|
35
|
+
if (step.instruction.accounts?.some((account) => [guard.funder, guard.address, guard.xpBudget].includes(account.address)))
|
|
36
|
+
throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', 'A Character registration cannot share funding or creation targets with an unqualified instruction. Execute and confirm that instruction separately, then recreate registration.');
|
|
37
|
+
}
|
|
38
|
+
const remaining = [...guards];
|
|
39
|
+
for (const step of registrations) {
|
|
40
|
+
const matchIndex = remaining.findIndex((guard) => {
|
|
41
|
+
const expected = createRegisterCharacterInstruction({
|
|
42
|
+
profile: guard.profile,
|
|
43
|
+
funder: guard.funder,
|
|
44
|
+
character: guard.address,
|
|
45
|
+
game: guard.game,
|
|
46
|
+
xpBudget: guard.xpBudget,
|
|
47
|
+
xpBudgetConfig: guard.xpBudgetConfig,
|
|
48
|
+
});
|
|
49
|
+
return (step.signers.length === 1 &&
|
|
50
|
+
step.signers[0] === guard.funder &&
|
|
51
|
+
sameInstruction(step.instruction, expected));
|
|
52
|
+
});
|
|
53
|
+
if (matchIndex < 0)
|
|
54
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'A Character registration instruction does not match its persisted Profile, Game, funder, Character, or Career XP accounts and roles. Recreate the Plan with planRegisterCharacter.');
|
|
55
|
+
remaining.splice(matchIndex, 1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=character-registration-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-registration-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/character-registration-guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,kCAAkC,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EACL,gCAAgC,EAChC,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAEnC,SAAS,eAAe,CACtB,MAA+B,EAC/B,QAA+D;IAE/D,OAAO,CACL,MAAM,CAAC,cAAc,KAAK,QAAQ,CAAC,cAAc;QACjD,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,MAAM;QAC7C,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;YAClE,IAAI;QACN,MAAM,CAAC,QAAQ,EAAE,MAAM,KAAK,QAAQ,CAAC,QAAQ,EAAE,MAAM;QACrD,QAAQ,CAAC,QAAQ,EAAE,KAAK,CACtB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACjB,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO;YACrD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAChD,KAAK,IAAI,CACX,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,yCAAyC,CACvD,KAA0B,EAC1B,aAA0C;IAE1C,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CACjC,CACE,KAAK,EAIL,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,wBAAwB,CAC7C,CAAC;IACF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAW,CAAC;IAC5C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAW,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IACE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;YACnC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YAEnC,MAAM,IAAI,YAAY,CACpB,+BAA+B,EAC/B,+IAA+I,CAChJ,CAAC;QACJ,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAChC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAClB,WAAW,CAAC,cAAc,KAAK,oBAAoB;QACnD,gCAAgC,CAAC,KAAK,CACpC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CACpD,CACJ,CAAC;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QACxC,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,iKAAiK,CAClK,CAAC;IACJ,oFAAoF;IACpF,6EAA6E;IAC7E,KAAK,MAAM,KAAK,IAAI,MAAM;QACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,SAAS;YAC3C,IACE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,QAAQ,CACpD,OAAO,CAAC,OAAO,CAChB,CACF;gBAED,MAAM,IAAI,YAAY,CACpB,+BAA+B,EAC/B,iLAAiL,CAClL,CAAC;QACN,CAAC;IACH,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/C,MAAM,QAAQ,GAAG,kCAAkC,CAAC;gBAClD,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,OAAO;gBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,cAAc,EAAE,KAAK,CAAC,cAAc;aACrC,CAAC,CAAC;YACH,OAAO,CACL,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM;gBAChC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAC5C,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,IAAI,UAAU,GAAG,CAAC;YAChB,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,oLAAoL,CACrL,CAAC;QACJ,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Address, Commitment } from '@solana/kit';
|
|
2
|
+
import type { RawAccount, SageContext } from '../../client/contracts.js';
|
|
3
|
+
import type { PlanPrecondition } from '../../planning/index.js';
|
|
4
|
+
import { type CharacterInitialization } from '../../registry/onboarding.js';
|
|
5
|
+
export interface CharacterRegistrationFunding {
|
|
6
|
+
readonly funder: Address;
|
|
7
|
+
readonly requiredLamports: bigint;
|
|
8
|
+
readonly observedLamports: bigint;
|
|
9
|
+
readonly netDebit: bigint;
|
|
10
|
+
readonly minimumBalance: bigint;
|
|
11
|
+
}
|
|
12
|
+
/** Revalidate one finite current-runtime Character creation intent before signing. */
|
|
13
|
+
export declare function revalidateCharacterRegistration(ctx: SageContext, guard: Extract<PlanPrecondition, {
|
|
14
|
+
readonly kind: 'character-registration';
|
|
15
|
+
}>, commitment: Commitment, freshGameVersions?: Map<Address, number>, initializations?: Map<Address, CharacterInitialization>): Promise<CharacterRegistrationFunding>;
|
|
16
|
+
export declare function isEmptySystemAccount(account: RawAccount): boolean;
|
|
17
|
+
/** #621: budget funding precedes any excess Character refund. */
|
|
18
|
+
export declare function calculateRegistrationFunding(minimum: (size: number) => bigint, characterSize: number, characterBalance: bigint, budgetBalance: bigint): {
|
|
19
|
+
requiredLamports: bigint;
|
|
20
|
+
netDebit: bigint;
|
|
21
|
+
refund: bigint;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=character-registration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-registration.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/character-registration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,8BAA8B,CAAC;AAOtC,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,sFAAsF;AACtF,wBAAsB,+BAA+B,CACnD,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,CAAC,gBAAgB,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAA;CAAE,CAAC,EAC7E,UAAU,EAAE,UAAU,EACtB,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,EACxC,eAAe,wCAA8C,GAC5D,OAAO,CAAC,4BAA4B,CAAC,CAoHvC;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAMjE;AACD,iEAAiE;AACjE,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EACjC,aAAa,EAAE,MAAM,EACrB,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,MAAM;;;;EAUtB"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { requireGameAddress } from '../game-context.js';
|
|
2
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
4
|
+
import { profileAccountDefinition } from '../c4/identity.js';
|
|
5
|
+
import { findCharacterPda } from '../c4/character.js';
|
|
6
|
+
import { getCareerXpBudgetDecoder } from '../c4/runtime-bindings.js';
|
|
7
|
+
import { hashAccountState } from './account-state.js';
|
|
8
|
+
import { RENT_ADDRESS, readRent } from './rent.js';
|
|
9
|
+
import { readCharacterInitialization, } from '../../registry/onboarding.js';
|
|
10
|
+
import { resolveCharacterRegistrationXpRuntime } from './xp-runtime.js';
|
|
11
|
+
function fail(address, message) {
|
|
12
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
|
|
13
|
+
}
|
|
14
|
+
/** Revalidate one finite current-runtime Character creation intent before signing. */
|
|
15
|
+
export async function revalidateCharacterRegistration(ctx, guard, commitment, freshGameVersions, initializations = new Map()) {
|
|
16
|
+
if (guard.game !== requireGameAddress(ctx))
|
|
17
|
+
fail(guard.game, 'Registration Game differs from the configured deployment. Recreate the Plan in the intended Game context.');
|
|
18
|
+
const character = await findCharacterPda(guard.profile, guard.game);
|
|
19
|
+
if (character !== guard.address)
|
|
20
|
+
fail(guard.address, 'The Character address no longer matches the canonical Profile and Game derivation. Recreate the registration Plan.');
|
|
21
|
+
const [profileRaw, characterRaw, rentRaw, funderRaw] = await readContextRawAccounts(ctx, [guard.profile, character, RENT_ADDRESS, guard.funder], { commitment });
|
|
22
|
+
if (!profileRaw)
|
|
23
|
+
fail(guard.profile, 'The Player Profile is missing. Create or select it before registering its Character.');
|
|
24
|
+
if (profileRaw.executable)
|
|
25
|
+
fail(guard.profile, 'The Profile is executable. Select a valid Profile and recreate the Plan.');
|
|
26
|
+
profileAccountDefinition.decode(profileRaw);
|
|
27
|
+
if ((await hashAccountState(profileRaw.owner, profileRaw.data)) !==
|
|
28
|
+
guard.profileDataHash)
|
|
29
|
+
fail(guard.profile, 'The Player Profile state changed after planning. Refresh it and recreate the Character registration Plan.');
|
|
30
|
+
if (characterRaw && !isEmptySystemAccount(characterRaw))
|
|
31
|
+
fail(character, 'The canonical Character now exists. Read and reuse it instead of signing this creation Plan.');
|
|
32
|
+
let initialization = initializations.get(guard.game);
|
|
33
|
+
if (!initialization) {
|
|
34
|
+
initialization = await readCharacterInitialization(ctx, { commitment });
|
|
35
|
+
initializations.set(guard.game, initialization);
|
|
36
|
+
}
|
|
37
|
+
if (initialization.characterSize !== guard.characterSize ||
|
|
38
|
+
initialization.initializationHash !== guard.initializationHash)
|
|
39
|
+
fail(guard.game, 'Character initialization shape changed. Refresh the Game and recreate the registration Plan.');
|
|
40
|
+
freshGameVersions?.set(guard.game, 2);
|
|
41
|
+
const xp = await resolveCharacterRegistrationXpRuntime(ctx, {
|
|
42
|
+
game: guard.game,
|
|
43
|
+
character,
|
|
44
|
+
}, { commitment });
|
|
45
|
+
if (xp.xpBudget !== guard.xpBudget ||
|
|
46
|
+
xp.xpBudgetConfig !== guard.xpBudgetConfig)
|
|
47
|
+
fail(guard.address, 'The Career XP accounts no longer match this exact Character registration intent. Recreate the registration Plan.');
|
|
48
|
+
if (!rentRaw)
|
|
49
|
+
fail(RENT_ADDRESS, 'The Rent sysvar is missing. Refresh the configured deployment before registering a Character.');
|
|
50
|
+
if (!funderRaw ||
|
|
51
|
+
funderRaw.executable ||
|
|
52
|
+
funderRaw.owner !== '11111111111111111111111111111111' ||
|
|
53
|
+
funderRaw.data.length !== 0)
|
|
54
|
+
fail(guard.funder, 'The Character funder must remain an existing non-executable System wallet. Select and fund that signer separately, then recreate the Plan.');
|
|
55
|
+
if ((characterRaw?.lamports ?? 0n) !== guard.characterLamports ||
|
|
56
|
+
xp.budgetLamports !== guard.budgetLamports)
|
|
57
|
+
fail(guard.address, 'Creation target pre-funding changed, including the approved Character refund. Refresh the targets and recreate the registration Plan.');
|
|
58
|
+
const minimum = readRent(rentRaw);
|
|
59
|
+
const storage = calculateRegistrationFunding(minimum, guard.characterSize, characterRaw?.lamports ?? 0n, xp.budgetLamports);
|
|
60
|
+
const funding = storage.requiredLamports;
|
|
61
|
+
if (funding > guard.maximumFunderDebit)
|
|
62
|
+
fail(guard.funder, 'Character and Career XP storage now require more native funding than this Plan approved. Recreate and review the Plan before signing.');
|
|
63
|
+
return {
|
|
64
|
+
funder: guard.funder,
|
|
65
|
+
requiredLamports: funding,
|
|
66
|
+
observedLamports: funderRaw.lamports,
|
|
67
|
+
netDebit: storage.netDebit,
|
|
68
|
+
minimumBalance: minimum(0),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export function isEmptySystemAccount(account) {
|
|
72
|
+
return (!account.executable &&
|
|
73
|
+
account.owner === '11111111111111111111111111111111' &&
|
|
74
|
+
account.data.length === 0);
|
|
75
|
+
}
|
|
76
|
+
/** #621: budget funding precedes any excess Character refund. */
|
|
77
|
+
export function calculateRegistrationFunding(minimum, characterSize, characterBalance, budgetBalance) {
|
|
78
|
+
const character = minimum(characterSize) - characterBalance;
|
|
79
|
+
const budget = minimum(getCareerXpBudgetDecoder().fixedSize) - budgetBalance;
|
|
80
|
+
const budgetDebit = budget > 0n ? budget : 0n;
|
|
81
|
+
return {
|
|
82
|
+
requiredLamports: (character > 0n ? character : 0n) + budgetDebit,
|
|
83
|
+
netDebit: character + budgetDebit,
|
|
84
|
+
refund: character < 0n ? -character : 0n,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=character-registration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-registration.js","sourceRoot":"","sources":["../../../src/internal/planning/character-registration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PlanPrecondition, PlanStep } from '../../planning/index.js';
|
|
2
|
+
/** Bind the cache guard to generated instruction metas, independently of Plan kind. */
|
|
3
|
+
export declare function validateCurrencyInstructions(steps: readonly PlanStep[], guards: readonly PlanPrecondition[]): void;
|
|
4
|
+
//# sourceMappingURL=currency-cache-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency-cache-guard.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/currency-cache-guard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAS1E,uFAAuF;AACvF,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,IAAI,CAkCN"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AccountRole } from '@solana/kit';
|
|
2
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
3
|
+
import { SAGE_PROGRAM_ADDRESS, WARP_LANE_DISCRIMINATOR, CANCEL_CLAIM_STAKE_BUILDING_DESIGN_DISCRIMINATOR, FINALIZE_BUILDING_CHANGES_DISCRIMINATOR, START_CLAIM_STAKES_FLEET_TRANSFER_DISCRIMINATOR, } from '../c4/runtime-bindings.js';
|
|
4
|
+
/** Bind the cache guard to generated instruction metas, independently of Plan kind. */
|
|
5
|
+
export function validateCurrencyInstructions(steps, guards) {
|
|
6
|
+
// Discriminator, Game index, cache index. Full layout validation stays in
|
|
7
|
+
// the existing runtime validators. Keep generated
|
|
8
|
+
// decoders out of the network-free Plan factory's dependency graph.
|
|
9
|
+
const layouts = [
|
|
10
|
+
[WARP_LANE_DISCRIMINATOR, 6, 9],
|
|
11
|
+
[CANCEL_CLAIM_STAKE_BUILDING_DESIGN_DISCRIMINATOR, 0, 9],
|
|
12
|
+
[FINALIZE_BUILDING_CHANGES_DISCRIMINATOR, 0, 10],
|
|
13
|
+
[START_CLAIM_STAKES_FLEET_TRANSFER_DISCRIMINATOR, 10, 9],
|
|
14
|
+
];
|
|
15
|
+
for (const [index, { instruction }] of steps.entries()) {
|
|
16
|
+
if (instruction.programAddress !== SAGE_PROGRAM_ADDRESS)
|
|
17
|
+
continue;
|
|
18
|
+
const layout = layouts.find(([discriminator]) => discriminator.every((byte, index) => instruction.data?.[index] === byte));
|
|
19
|
+
if (!layout)
|
|
20
|
+
continue;
|
|
21
|
+
const [, gameIndex, cacheIndex] = layout;
|
|
22
|
+
const cache = instruction.accounts?.[cacheIndex];
|
|
23
|
+
const game = instruction.accounts?.[gameIndex];
|
|
24
|
+
if (cache?.role !== AccountRole.WRITABLE ||
|
|
25
|
+
game?.role !== AccountRole.READONLY ||
|
|
26
|
+
!guards.some((g) => g.address === cache.address &&
|
|
27
|
+
((g.kind === 'currency-cache' && g.game === game.address) ||
|
|
28
|
+
g.kind === 'account-state')))
|
|
29
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Step ${index}: CurrencyCache ${cache?.address} needs a matching guard and roles. Recreate via its planner.`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=currency-cache-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currency-cache-guard.js","sourceRoot":"","sources":["../../../src/internal/planning/currency-cache-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gDAAgD,EAChD,uCAAuC,EACvC,+CAA+C,GAChD,MAAM,2BAA2B,CAAC;AAEnC,uFAAuF;AACvF,MAAM,UAAU,4BAA4B,CAC1C,KAA0B,EAC1B,MAAmC;IAEnC,0EAA0E;IAC1E,kDAAkD;IAClD,oEAAoE;IACpE,MAAM,OAAO,GAAG;QACd,CAAC,uBAAuB,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC,gDAAgD,EAAE,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,uCAAuC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,CAAC,+CAA+C,EAAE,EAAE,EAAE,CAAC,CAAC;KAChD,CAAC;IACX,KAAK,MAAM,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,IAAI,WAAW,CAAC,cAAc,KAAK,oBAAoB;YAAE,SAAS;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAC9C,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CACzE,CAAC;QACF,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC;QACzC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/C,IACE,KAAK,EAAE,IAAI,KAAK,WAAW,CAAC,QAAQ;YACpC,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,QAAQ;YACnC,CAAC,MAAM,CAAC,IAAI,CACV,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;gBAC3B,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC;oBACvD,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAChC;YAED,MAAM,IAAI,YAAY,CACpB,4BAA4B,EAC5B,QAAQ,KAAK,mBAAmB,KAAK,EAAE,OAAO,8DAA8D,CAC7G,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { Address, SageContext } from '../../client/contracts.js';
|
|
2
|
+
export interface HistoryFeeParams {
|
|
3
|
+
readonly craftingFeeBps: number;
|
|
4
|
+
readonly localMarketFeeBps: number;
|
|
5
|
+
readonly localTreasuryShareBps: number;
|
|
6
|
+
readonly treasuryDistributionBps: number;
|
|
7
|
+
}
|
|
8
|
+
interface HistoryScope {
|
|
9
|
+
readonly game: Address;
|
|
10
|
+
readonly system: Address;
|
|
11
|
+
readonly address: Address;
|
|
12
|
+
}
|
|
13
|
+
export type HistoryIntent = HistoryScope & ({
|
|
14
|
+
readonly state: 'absent';
|
|
15
|
+
} | {
|
|
16
|
+
readonly state: 'initialized';
|
|
17
|
+
readonly openDay: bigint;
|
|
18
|
+
readonly enabled: 0 | 1;
|
|
19
|
+
readonly controller: number;
|
|
20
|
+
readonly generation?: Address;
|
|
21
|
+
readonly generationNumber: bigint;
|
|
22
|
+
readonly governance: Address;
|
|
23
|
+
readonly starbaseSeqId: bigint;
|
|
24
|
+
readonly policy: Address;
|
|
25
|
+
readonly policyFlags: {
|
|
26
|
+
readonly noControllerRevenue: number;
|
|
27
|
+
readonly zeroPowerRevenue: number;
|
|
28
|
+
readonly successorBaseline: number;
|
|
29
|
+
readonly captureIncomingEligibility: number;
|
|
30
|
+
};
|
|
31
|
+
readonly effectiveParams: HistoryFeeParams;
|
|
32
|
+
});
|
|
33
|
+
export interface ResolvedDemocracyHistory {
|
|
34
|
+
readonly intent: HistoryIntent;
|
|
35
|
+
readonly accounts: {
|
|
36
|
+
readonly democracyHistoryHistory: Address;
|
|
37
|
+
readonly democracyHistoryPolicy?: Address;
|
|
38
|
+
readonly democracyHistoryGeneration?: Address;
|
|
39
|
+
};
|
|
40
|
+
readonly slot: bigint;
|
|
41
|
+
}
|
|
42
|
+
/** Resolve a fresh, canonical history context without initializing or repairing it. */
|
|
43
|
+
export declare function resolveDemocracyHistory(ctx: SageContext, scope: {
|
|
44
|
+
readonly game: Address;
|
|
45
|
+
readonly system: Address;
|
|
46
|
+
}): Promise<ResolvedDemocracyHistory>;
|
|
47
|
+
/** Compare only eligibility and consumed fee policy, never shared financial counters. */
|
|
48
|
+
export declare function matchDemocracyHistoryIntent(expected: HistoryIntent, actual: HistoryIntent): boolean;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=democracy-history.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"democracy-history.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/democracy-history.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,OAAO,EAEP,WAAW,EACZ,MAAM,2BAA2B,CAAC;AAenC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C;AACD,UAAU,YAAY;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AACD,MAAM,MAAM,aAAa,GAAG,YAAY,GACtC,CACI;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC5B;IACE,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE;QACpB,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;KAC7C,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,gBAAgB,CAAC;CAC5C,CACJ,CAAC;AACJ,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;QAC1C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC;QAC1C,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;KAC/C,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AA6ED,uFAAuF;AACvF,wBAAsB,uBAAuB,CAC3C,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,wBAAwB,CAAC,CAyLnC;AACD,yFAAyF;AACzF,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,aAAa,GACpB,OAAO,CA2BT"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { SYSTEM_PROGRAM } from '../system-program.js';
|
|
2
|
+
import { getAddressEncoder, getProgramDerivedAddress, getU64Encoder, } from '@solana/kit';
|
|
3
|
+
import { SageSdkError } from '../../client/errors.js';
|
|
4
|
+
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
5
|
+
import { DEMOCRACY_GENERATION_HISTORY_DISCRIMINATOR, DEMOCRACY_HISTORY_POLICY_DISCRIMINATOR, DEMOCRACY_SYSTEM_HISTORY_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, getDemocracyGenerationHistoryDecoder, getDemocracyHistoryPolicyDecoder, getDemocracySystemHistoryDecoder, } from '../c4/runtime-bindings.js';
|
|
6
|
+
import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
|
|
7
|
+
const DOMAIN = new TextEncoder().encode('DEMHST01');
|
|
8
|
+
function requireHistory(condition, reason) {
|
|
9
|
+
if (!condition)
|
|
10
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${reason} Refresh the Starbase's Democracy history before recreating this action; ask its operator to initialize or close pending daily checkpoints when needed.`);
|
|
11
|
+
}
|
|
12
|
+
async function derive(literal, scope, generation) {
|
|
13
|
+
return getProgramDerivedAddress({
|
|
14
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
15
|
+
seeds: [
|
|
16
|
+
new TextEncoder().encode(literal),
|
|
17
|
+
getAddressEncoder().encode(scope),
|
|
18
|
+
...(generation === undefined ? [] : [getU64Encoder().encode(generation)]),
|
|
19
|
+
],
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function decode(raw, address, bump, discriminator, decoder) {
|
|
23
|
+
requireHistory(raw &&
|
|
24
|
+
raw.address === address &&
|
|
25
|
+
raw.owner === SAGE_PROGRAM_ADDRESS &&
|
|
26
|
+
!raw.executable, 'A required Democracy account is missing or has an unexpected owner or address.');
|
|
27
|
+
requireHistory(discriminator.every((byte, index) => raw.data[index] === byte), 'A Democracy account has the wrong discriminator.');
|
|
28
|
+
let value;
|
|
29
|
+
let consumed;
|
|
30
|
+
try {
|
|
31
|
+
[value, consumed] = decoder.read(raw.data, 0);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'A Democracy account cannot be decoded. Refresh the deployment and recreate this action with supported account data.');
|
|
35
|
+
}
|
|
36
|
+
requireHistory(consumed === raw.data.length, 'A Democracy account has an unexpected data length.');
|
|
37
|
+
requireHistory(value.version === 1 &&
|
|
38
|
+
value.bump === bump &&
|
|
39
|
+
value.domain.length === 8 &&
|
|
40
|
+
value.domain.every((byte, index) => byte === DOMAIN[index]) &&
|
|
41
|
+
value.reserved.every((byte) => byte === 0), 'A Democracy account has an unsupported version, domain, bump or reserved field.');
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
function equalBytes(a, b) {
|
|
45
|
+
return a.length === b.length && a.every((byte, index) => byte === b[index]);
|
|
46
|
+
}
|
|
47
|
+
function params(value) {
|
|
48
|
+
return {
|
|
49
|
+
craftingFeeBps: value.craftingFeeBps,
|
|
50
|
+
localMarketFeeBps: value.localMarketFeeBps,
|
|
51
|
+
localTreasuryShareBps: value.localTreasuryShareBps,
|
|
52
|
+
treasuryDistributionBps: value.treasuryDistributionBps,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** Resolve a fresh, canonical history context without initializing or repairing it. */
|
|
56
|
+
export async function resolveDemocracyHistory(ctx, scope) {
|
|
57
|
+
const [historyAddress, historyBump] = await derive('DemocracySystemHistory', scope.system);
|
|
58
|
+
const [policyAddress, policyBump] = await derive('DemocracyHistoryPolicy', scope.game);
|
|
59
|
+
let floor = 0n;
|
|
60
|
+
const read = async (addresses) => {
|
|
61
|
+
// Absence has no slot in this transport; Clock supplies batch provenance. We
|
|
62
|
+
// cannot request minContextSlot, so reject inconsistent/regressing responses.
|
|
63
|
+
const rows = await readContextRawAccounts(ctx, [...addresses, CLOCK_ADDRESS], { commitment: 'confirmed' });
|
|
64
|
+
requireHistory(rows.length === addresses.length + 1, 'The Democracy history read was incomplete.');
|
|
65
|
+
const clock = rows[rows.length - 1];
|
|
66
|
+
requireHistory(clock?.address === CLOCK_ADDRESS, 'The chain Clock is missing from the Democracy history read.');
|
|
67
|
+
const now = readClock(clock);
|
|
68
|
+
requireHistory(clock.slot >= floor &&
|
|
69
|
+
rows.every((row) => row === undefined || row.slot === clock.slot), 'The Democracy history response has inconsistent or regressing slots.');
|
|
70
|
+
floor = clock.slot;
|
|
71
|
+
return { rows, now };
|
|
72
|
+
};
|
|
73
|
+
const history = (raw) => {
|
|
74
|
+
const value = decode(raw, historyAddress, historyBump, DEMOCRACY_SYSTEM_HISTORY_DISCRIMINATOR, getDemocracySystemHistoryDecoder());
|
|
75
|
+
requireHistory(value.gameId === scope.game &&
|
|
76
|
+
value.system === scope.system &&
|
|
77
|
+
value.policy === policyAddress &&
|
|
78
|
+
value.enabled <= 1 &&
|
|
79
|
+
value.cutoverDay <= value.openDay &&
|
|
80
|
+
value.generationStartedDay <= value.openDay, 'The Democracy history scope or calendar is invalid.');
|
|
81
|
+
return value;
|
|
82
|
+
};
|
|
83
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
84
|
+
const first = (await read([historyAddress])).rows[0];
|
|
85
|
+
if (!first)
|
|
86
|
+
return {
|
|
87
|
+
intent: {
|
|
88
|
+
game: scope.game,
|
|
89
|
+
system: scope.system,
|
|
90
|
+
address: historyAddress,
|
|
91
|
+
state: 'absent',
|
|
92
|
+
},
|
|
93
|
+
accounts: { democracyHistoryHistory: historyAddress },
|
|
94
|
+
slot: floor,
|
|
95
|
+
};
|
|
96
|
+
const initial = history(first);
|
|
97
|
+
const generationPda = initial.generation === SYSTEM_PROGRAM
|
|
98
|
+
? undefined
|
|
99
|
+
: await derive('DemocracyGenerationHistory', scope.system, initial.generationNumber);
|
|
100
|
+
requireHistory(!generationPda || generationPda[0] === initial.generation, 'The Democracy history references a noncanonical generation.');
|
|
101
|
+
const batch = await read([
|
|
102
|
+
historyAddress,
|
|
103
|
+
policyAddress,
|
|
104
|
+
...(generationPda ? [generationPda[0]] : []),
|
|
105
|
+
]);
|
|
106
|
+
const second = batch.rows[0];
|
|
107
|
+
if (!second || !equalBytes(first.data, second.data))
|
|
108
|
+
continue;
|
|
109
|
+
const current = history(second);
|
|
110
|
+
const policy = decode(batch.rows[1], policyAddress, policyBump, DEMOCRACY_HISTORY_POLICY_DISCRIMINATOR, getDemocracyHistoryPolicyDecoder());
|
|
111
|
+
requireHistory(policy.gameId === scope.game &&
|
|
112
|
+
[
|
|
113
|
+
policy.noControllerRevenue,
|
|
114
|
+
policy.zeroPowerRevenue,
|
|
115
|
+
policy.successorBaseline,
|
|
116
|
+
policy.captureIncomingEligibility,
|
|
117
|
+
].every((value) => value === 1 || value === 2), 'The Democracy policy scope or explicit policy flags are invalid.');
|
|
118
|
+
const generation = generationPda
|
|
119
|
+
? decode(batch.rows[2], generationPda[0], generationPda[1], DEMOCRACY_GENERATION_HISTORY_DISCRIMINATOR, getDemocracyGenerationHistoryDecoder())
|
|
120
|
+
: undefined;
|
|
121
|
+
if (generation)
|
|
122
|
+
requireHistory(generation.gameId === scope.game &&
|
|
123
|
+
generation.system === scope.system &&
|
|
124
|
+
generation.generation === current.generationNumber &&
|
|
125
|
+
generation.starbaseSeqId === current.starbaseSeqId &&
|
|
126
|
+
generation.governance === current.governance &&
|
|
127
|
+
generation.controller === current.controller &&
|
|
128
|
+
generation.enabled === current.enabled &&
|
|
129
|
+
generation.openDay === current.openDay &&
|
|
130
|
+
generation.retired === 0 &&
|
|
131
|
+
generation.fundedAtlas >= generation.claimedAtlas &&
|
|
132
|
+
generation.rewardVault ===
|
|
133
|
+
generation.fundedAtlas - generation.claimedAtlas, 'The Democracy generation scope, eligibility or reward funding does not match its history.');
|
|
134
|
+
requireHistory(current.controller === 0 || generation, 'The current Democracy controller has no initialized generation.');
|
|
135
|
+
requireHistory(batch.now >= 0n && batch.now / 86400n === current.openDay, 'The Democracy history has pending daily checkpoints or the chain day changed.');
|
|
136
|
+
const intent = {
|
|
137
|
+
game: scope.game,
|
|
138
|
+
system: scope.system,
|
|
139
|
+
address: historyAddress,
|
|
140
|
+
state: 'initialized',
|
|
141
|
+
openDay: current.openDay,
|
|
142
|
+
enabled: current.enabled,
|
|
143
|
+
controller: current.controller,
|
|
144
|
+
...(generationPda ? { generation: generationPda[0] } : {}),
|
|
145
|
+
generationNumber: current.generationNumber,
|
|
146
|
+
governance: current.governance,
|
|
147
|
+
starbaseSeqId: current.starbaseSeqId,
|
|
148
|
+
policy: policyAddress,
|
|
149
|
+
policyFlags: {
|
|
150
|
+
noControllerRevenue: policy.noControllerRevenue,
|
|
151
|
+
zeroPowerRevenue: policy.zeroPowerRevenue,
|
|
152
|
+
successorBaseline: policy.successorBaseline,
|
|
153
|
+
captureIncomingEligibility: policy.captureIncomingEligibility,
|
|
154
|
+
},
|
|
155
|
+
effectiveParams: params(current.enabled === 0
|
|
156
|
+
? {
|
|
157
|
+
craftingFeeBps: 10000,
|
|
158
|
+
localMarketFeeBps: 0,
|
|
159
|
+
localTreasuryShareBps: 0,
|
|
160
|
+
treasuryDistributionBps: 0,
|
|
161
|
+
}
|
|
162
|
+
: (generation?.activeParams ?? policy.defaultParams)),
|
|
163
|
+
};
|
|
164
|
+
return {
|
|
165
|
+
intent,
|
|
166
|
+
accounts: {
|
|
167
|
+
democracyHistoryHistory: historyAddress,
|
|
168
|
+
democracyHistoryPolicy: policyAddress,
|
|
169
|
+
...(generationPda
|
|
170
|
+
? { democracyHistoryGeneration: generationPda[0] }
|
|
171
|
+
: {}),
|
|
172
|
+
},
|
|
173
|
+
slot: floor,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Democracy history changed during both preparation attempts. Refresh the Starbase and recreate this action.');
|
|
177
|
+
}
|
|
178
|
+
/** Compare only eligibility and consumed fee policy, never shared financial counters. */
|
|
179
|
+
export function matchDemocracyHistoryIntent(expected, actual) {
|
|
180
|
+
if (expected.game !== actual.game ||
|
|
181
|
+
expected.system !== actual.system ||
|
|
182
|
+
expected.address !== actual.address ||
|
|
183
|
+
expected.state !== actual.state)
|
|
184
|
+
return false;
|
|
185
|
+
if (expected.state === 'absent' || actual.state === 'absent')
|
|
186
|
+
return true;
|
|
187
|
+
return (expected.openDay === actual.openDay &&
|
|
188
|
+
expected.enabled === actual.enabled &&
|
|
189
|
+
expected.controller === actual.controller &&
|
|
190
|
+
expected.generation === actual.generation &&
|
|
191
|
+
expected.generationNumber === actual.generationNumber &&
|
|
192
|
+
expected.governance === actual.governance &&
|
|
193
|
+
expected.starbaseSeqId === actual.starbaseSeqId &&
|
|
194
|
+
expected.policy === actual.policy &&
|
|
195
|
+
Object.entries(expected.policyFlags).every(([key, value]) => actual.policyFlags[key] === value) &&
|
|
196
|
+
Object.entries(expected.effectiveParams).every(([key, value]) => actual.effectiveParams[key] === value));
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=democracy-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"democracy-history.js","sourceRoot":"","sources":["../../../src/internal/planning/democracy-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,8 @@ import { type Address } from '@solana/kit';
|
|
|
2
2
|
import type { RawAccount } from '../../client/contracts.js';
|
|
3
3
|
import type { PlanPrecondition } from '../../planning/index.js';
|
|
4
4
|
import type { AddressOnlyInstruction, PlanAuthorization } from './authorization-adapter.js';
|
|
5
|
-
export declare const RENT_ADDRESS: Address;
|
|
6
5
|
export declare const CLOCK_ADDRESS: Address;
|
|
7
6
|
export declare function enrollmentFailure(message: string, address: Address): never;
|
|
8
|
-
export declare function readRent(account: RawAccount): (length: number) => bigint;
|
|
9
7
|
export declare function readClock(account: RawAccount): bigint;
|
|
10
8
|
export declare function observeEnrollmentAccount(account: RawAccount, describes: string): Promise<PlanPrecondition>;
|
|
11
9
|
export declare function adaptChooseFaction(authorization: PlanAuthorization, target: Address, faction: 1 | 2 | 3): AddressOnlyInstruction;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faction-enrollment.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/faction-enrollment.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"faction-enrollment.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/faction-enrollment.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAMxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EACV,sBAAsB,EACtB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,aAAa,EACyB,OAAO,CAAC;AAC3D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,KAAK,CAE1E;AACD,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAerD;AACD,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAO3B;AACD,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,iBAAiB,EAChC,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GACjB,sBAAsB,CAoBxB"}
|
|
@@ -1,33 +1,12 @@
|
|
|
1
|
+
import { SYSVAR_OWNER } from './rent.js';
|
|
1
2
|
import { hashAccountState } from './account-state.js';
|
|
2
3
|
import { AccountRole } from '@solana/kit';
|
|
3
4
|
import { encodeChooseFactionData, PROFILE_FACTION_PROGRAM_ADDRESS, PLAYER_PROFILE_PROGRAM_ADDRESS, } from '../c4/faction-enrollment.js';
|
|
4
5
|
import { SageSdkError } from '../../client/errors.js';
|
|
5
|
-
export const RENT_ADDRESS = 'SysvarRent111111111111111111111111111111111';
|
|
6
6
|
export const CLOCK_ADDRESS = 'SysvarC1ock11111111111111111111111111111111';
|
|
7
|
-
const SYSVAR_OWNER = 'Sysvar1111111111111111111111111111111111111';
|
|
8
7
|
export function enrollmentFailure(message, address) {
|
|
9
8
|
throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
|
|
10
9
|
}
|
|
11
|
-
export function readRent(account) {
|
|
12
|
-
if (account.owner !== SYSVAR_OWNER ||
|
|
13
|
-
account.executable ||
|
|
14
|
-
account.data.length !== 17)
|
|
15
|
-
enrollmentFailure('The Rent sysvar has an unexpected owner or layout. Refresh the configured deployment before calculating Profile funding.', account.address);
|
|
16
|
-
const view = new DataView(account.data.buffer, account.data.byteOffset, account.data.byteLength);
|
|
17
|
-
const rate = view.getBigUint64(0, true), threshold = view.getFloat64(8, true);
|
|
18
|
-
if (!Number.isFinite(threshold) || threshold < 0 || view.getUint8(16) > 100)
|
|
19
|
-
enrollmentFailure('The Rent sysvar contains unsupported values. Refresh the deployment or use a supported configuration before planning this action.', account.address);
|
|
20
|
-
return (length) => {
|
|
21
|
-
const base = (BigInt(length) + 128n) * rate;
|
|
22
|
-
const result = Number(base) * threshold;
|
|
23
|
-
if (base > BigInt(Number.MAX_SAFE_INTEGER) ||
|
|
24
|
-
!Number.isFinite(result) ||
|
|
25
|
-
result < 0 ||
|
|
26
|
-
result > Number.MAX_SAFE_INTEGER)
|
|
27
|
-
enrollmentFailure('Profile storage funding exceeds the supported exact calculation range. Use a supported Rent configuration before planning this action.', account.address);
|
|
28
|
-
return BigInt(Math.trunc(result));
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
10
|
export function readClock(account) {
|
|
32
11
|
if (account.owner !== SYSVAR_OWNER ||
|
|
33
12
|
account.executable ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faction-enrollment.js","sourceRoot":"","sources":["../../../src/internal/planning/faction-enrollment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOtD,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"faction-enrollment.js","sourceRoot":"","sources":["../../../src/internal/planning/faction-enrollment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,uBAAuB,EACvB,+BAA+B,EAC/B,8BAA8B,GAC/B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAOtD,MAAM,CAAC,MAAM,aAAa,GACxB,6CAAwD,CAAC;AAC3D,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,OAAgB;IACjE,MAAM,IAAI,YAAY,CAAC,4BAA4B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC;AACD,MAAM,UAAU,SAAS,CAAC,OAAmB;IAC3C,IACE,OAAO,CAAC,KAAK,KAAK,YAAY;QAC9B,OAAO,CAAC,UAAU;QAClB,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE;QAE1B,iBAAiB,CACf,4GAA4G,EAC5G,OAAO,CAAC,OAAO,CAChB,CAAC;IACJ,OAAO,IAAI,QAAQ,CACjB,OAAO,CAAC,IAAI,CAAC,MAAM,EACnB,OAAO,CAAC,IAAI,CAAC,UAAU,EACvB,OAAO,CAAC,IAAI,CAAC,UAAU,CACxB,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAAmB,EACnB,SAAiB;IAEjB,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,MAAM,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;QAC7D,SAAS;KACV,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,kBAAkB,CAChC,aAAgC,EAChC,MAAe,EACf,OAAkB;IAElB,OAAO;QACL,cAAc,EAAE,+BAA+B;QAC/C,QAAQ,EAAE;YACR,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,eAAe,EAAE;YACvE,EAAE,OAAO,EAAE,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC9D;gBACE,OAAO,EAAE,aAAa,CAAC,WAAW,IAAI,+BAA+B;gBACrE,IAAI,EAAE,WAAW,CAAC,QAAQ;aAC3B;YACD,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YACvE,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC/C;gBACE,OAAO,EAAE,kCAA6C;gBACtD,IAAI,EAAE,WAAW,CAAC,QAAQ;aAC3B;YACD,EAAE,OAAO,EAAE,8BAA8B,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,EAAE;SACxE;QACD,IAAI,EAAE,uBAAuB,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -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"}
|