@aephia/atlas-kit 0.6.0-next.9 → 0.6.0-next.90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cargo/actions/deposit.d.ts +1 -1
- package/dist/cargo/actions/deposit.d.ts.map +1 -1
- package/dist/cargo/actions/deposit.js +25 -12
- package/dist/cargo/actions/deposit.js.map +1 -1
- package/dist/cargo/actions/index.d.ts.map +1 -1
- package/dist/cargo/actions/index.js +3 -2
- package/dist/cargo/actions/index.js.map +1 -1
- package/dist/cargo/actions/wallet-token.d.ts +1 -1
- package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-token.js +1 -9
- package/dist/cargo/actions/wallet-token.js.map +1 -1
- package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
- package/dist/cargo/actions/withdrawal.js +28 -27
- 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 +95 -44
- 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.map +1 -1
- package/dist/combat/actions/index.js +98 -50
- package/dist/combat/actions/index.js.map +1 -1
- package/dist/crafting/actions/index.d.ts +11 -0
- package/dist/crafting/actions/index.d.ts.map +1 -1
- package/dist/crafting/actions/index.js +63 -36
- 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 +44 -15
- 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 +34 -15
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +227 -118
- 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 +41 -13
- 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 +34 -0
- package/dist/fleets/index.d.ts.map +1 -1
- package/dist/fleets/index.js +51 -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/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 +2 -0
- package/dist/identity/actions/create-profile.d.ts.map +1 -1
- package/dist/identity/actions/create-profile.js +14 -9
- package/dist/identity/actions/create-profile.js.map +1 -1
- 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 +48 -27
- package/dist/identity/actions/index.js.map +1 -1
- package/dist/identity/index.d.ts +15 -0
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +15 -0
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/permissions.d.ts +124 -0
- package/dist/identity/permissions.d.ts.map +1 -0
- package/dist/identity/permissions.js +171 -0
- package/dist/identity/permissions.js.map +1 -0
- package/dist/index.d.ts +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/cargo-bytes-config.d.ts +7 -0
- package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
- package/dist/internal/c4/cargo-bytes-config.js +19 -0
- package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
- package/dist/internal/c4/character-registration.d.ts +2 -0
- package/dist/internal/c4/character-registration.d.ts.map +1 -1
- package/dist/internal/c4/character-registration.js +2 -0
- package/dist/internal/c4/character-registration.js.map +1 -1
- package/dist/internal/c4/claim-stake.d.ts +4 -27
- package/dist/internal/c4/claim-stake.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake.js +25 -38
- package/dist/internal/c4/claim-stake.js.map +1 -1
- package/dist/internal/c4/combat.d.ts +0 -27
- package/dist/internal/c4/combat.d.ts.map +1 -1
- package/dist/internal/c4/combat.js +0 -33
- package/dist/internal/c4/combat.js.map +1 -1
- package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
- package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
- package/dist/internal/c4/crafting-process-codec.js +34 -0
- package/dist/internal/c4/crafting-process-codec.js.map +1 -0
- package/dist/internal/c4/crafting.d.ts +12 -32
- package/dist/internal/c4/crafting.d.ts.map +1 -1
- package/dist/internal/c4/crafting.js +31 -44
- package/dist/internal/c4/crafting.js.map +1 -1
- 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/factions.d.ts +9 -57
- package/dist/internal/c4/factions.d.ts.map +1 -1
- package/dist/internal/c4/factions.js +21 -139
- package/dist/internal/c4/factions.js.map +1 -1
- package/dist/internal/c4/fleet-arrival.d.ts +28 -0
- package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/c4/fleet-arrival.js +42 -0
- package/dist/internal/c4/fleet-arrival.js.map +1 -0
- package/dist/internal/c4/fleet-creation.d.ts +7 -0
- package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
- package/dist/internal/c4/fleet-creation.js +180 -0
- package/dist/internal/c4/fleet-creation.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
- package/dist/internal/c4/fleet-crew-binding.js +15 -0
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
- package/dist/internal/c4/fleet-respawn.d.ts +19 -0
- package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
- package/dist/internal/c4/fleet-respawn.js +91 -0
- package/dist/internal/c4/fleet-respawn.js.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.js +44 -0
- package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/c4/fleet.d.ts +45 -19
- package/dist/internal/c4/fleet.d.ts.map +1 -1
- package/dist/internal/c4/fleet.js +26 -7
- package/dist/internal/c4/fleet.js.map +1 -1
- package/dist/internal/c4/game.d.ts +36 -9
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +147 -14
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/c4/identity.d.ts +4 -8
- package/dist/internal/c4/identity.d.ts.map +1 -1
- package/dist/internal/c4/identity.js +3 -24
- 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/loyalty.d.ts +0 -27
- package/dist/internal/c4/loyalty.d.ts.map +1 -1
- package/dist/internal/c4/loyalty.js +0 -33
- package/dist/internal/c4/loyalty.js.map +1 -1
- package/dist/internal/c4/market.d.ts +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/profile-permissions.d.ts +14 -0
- package/dist/internal/c4/profile-permissions.d.ts.map +1 -0
- package/dist/internal/c4/profile-permissions.js +81 -0
- package/dist/internal/c4/profile-permissions.js.map +1 -0
- package/dist/internal/c4/region-geometry.d.ts +8 -0
- package/dist/internal/c4/region-geometry.d.ts.map +1 -0
- package/dist/internal/c4/region-geometry.js +43 -0
- package/dist/internal/c4/region-geometry.js.map +1 -0
- package/dist/internal/c4/rewards.d.ts +0 -27
- package/dist/internal/c4/rewards.d.ts.map +1 -1
- package/dist/internal/c4/rewards.js +0 -33
- package/dist/internal/c4/rewards.js.map +1 -1
- package/dist/internal/c4/runtime-bindings.d.ts +3 -0
- package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
- package/dist/internal/c4/runtime-bindings.js +4 -0
- package/dist/internal/c4/runtime-bindings.js.map +1 -0
- package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
- package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
- package/dist/internal/c4/scan-detection-codecs.js +3 -0
- package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
- package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
- package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
- package/dist/internal/c4/scan-lifecycle.js +258 -0
- package/dist/internal/c4/scan-lifecycle.js.map +1 -0
- package/dist/internal/c4/scanning.d.ts +1 -28
- package/dist/internal/c4/scanning.d.ts.map +1 -1
- package/dist/internal/c4/scanning.js +2 -33
- package/dist/internal/c4/scanning.js.map +1 -1
- package/dist/internal/c4/ship-import.d.ts +4 -0
- package/dist/internal/c4/ship-import.d.ts.map +1 -0
- package/dist/internal/c4/ship-import.js +13 -0
- package/dist/internal/c4/ship-import.js.map +1 -0
- package/dist/internal/c4/ship-stats.d.ts.map +1 -1
- package/dist/internal/c4/ship-stats.js +25 -21
- package/dist/internal/c4/ship-stats.js.map +1 -1
- package/dist/internal/c4/starbase.d.ts +0 -32
- package/dist/internal/c4/starbase.d.ts.map +1 -1
- package/dist/internal/c4/starbase.js +3 -41
- package/dist/internal/c4/starbase.js.map +1 -1
- package/dist/internal/c4/world.d.ts +36 -7
- package/dist/internal/c4/world.d.ts.map +1 -1
- package/dist/internal/c4/world.js +58 -25
- package/dist/internal/c4/world.js.map +1 -1
- package/dist/internal/cargo.d.ts +2 -0
- package/dist/internal/cargo.d.ts.map +1 -1
- package/dist/internal/cargo.js +8 -0
- package/dist/internal/cargo.js.map +1 -1
- package/dist/internal/fleet.d.ts +1 -0
- package/dist/internal/fleet.d.ts.map +1 -1
- package/dist/internal/fleet.js +3 -1
- package/dist/internal/fleet.js.map +1 -1
- package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
- package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
- package/dist/internal/loyalty-atlas-bank-state.js +10 -0
- package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
- package/dist/internal/planning/action-runtime.d.ts +38 -0
- package/dist/internal/planning/action-runtime.d.ts.map +1 -0
- package/dist/internal/planning/action-runtime.js +63 -0
- package/dist/internal/planning/action-runtime.js.map +1 -0
- package/dist/internal/planning/arrival-guards.d.ts +20 -0
- package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
- package/dist/internal/planning/arrival-guards.js +187 -0
- package/dist/internal/planning/arrival-guards.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +10 -7
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
- package/dist/internal/planning/authorization-adapter.js +87 -16
- package/dist/internal/planning/authorization-adapter.js.map +1 -1
- package/dist/internal/planning/character-registration-guard.d.ts +4 -0
- package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
- package/dist/internal/planning/character-registration-guard.js +58 -0
- package/dist/internal/planning/character-registration-guard.js.map +1 -0
- package/dist/internal/planning/character-registration.d.ts +23 -0
- package/dist/internal/planning/character-registration.d.ts.map +1 -0
- package/dist/internal/planning/character-registration.js +86 -0
- package/dist/internal/planning/character-registration.js.map +1 -0
- package/dist/internal/planning/democracy-history.d.ts +50 -0
- package/dist/internal/planning/democracy-history.d.ts.map +1 -0
- package/dist/internal/planning/democracy-history.js +198 -0
- package/dist/internal/planning/democracy-history.js.map +1 -0
- package/dist/internal/planning/faction-enrollment.d.ts +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 +105 -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 +108 -0
- package/dist/internal/planning/fleet-creation.js.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.js +47 -0
- package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.js +131 -0
- package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
- package/dist/internal/planning/fleet-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 +225 -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 +153 -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 +165 -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 +137 -0
- package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/planning/governance-fees.d.ts +64 -0
- package/dist/internal/planning/governance-fees.d.ts.map +1 -0
- package/dist/internal/planning/governance-fees.js +239 -0
- package/dist/internal/planning/governance-fees.js.map +1 -0
- package/dist/internal/planning/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 +126 -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 +166 -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 +85 -0
- package/dist/internal/planning/open-signal.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 +43 -0
- package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
- package/dist/internal/planning/runtime-guards.js +636 -0
- package/dist/internal/planning/runtime-guards.js.map +1 -0
- package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
- package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion-guard.js +94 -0
- package/dist/internal/planning/scan-completion-guard.js.map +1 -0
- package/dist/internal/planning/scan-completion.d.ts +20 -0
- package/dist/internal/planning/scan-completion.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion.js +196 -0
- package/dist/internal/planning/scan-completion.js.map +1 -0
- package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
- package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-detect-guard.js +77 -0
- package/dist/internal/planning/scan-detect-guard.js.map +1 -0
- package/dist/internal/planning/scan-detect.d.ts +24 -0
- package/dist/internal/planning/scan-detect.d.ts.map +1 -0
- package/dist/internal/planning/scan-detect.js +244 -0
- package/dist/internal/planning/scan-detect.js.map +1 -0
- package/dist/internal/planning/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 +52 -0
- package/dist/internal/planning/ship-import-funding.js.map +1 -0
- package/dist/internal/planning/ship-token.d.ts +0 -1
- package/dist/internal/planning/ship-token.d.ts.map +1 -1
- package/dist/internal/planning/ship-token.js +2 -5
- package/dist/internal/planning/ship-token.js.map +1 -1
- package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
- package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system-guard.js +93 -0
- package/dist/internal/planning/starbase-system-guard.js.map +1 -0
- package/dist/internal/planning/starbase-system.d.ts +12 -0
- package/dist/internal/planning/starbase-system.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system.js +22 -0
- package/dist/internal/planning/starbase-system.js.map +1 -0
- package/dist/internal/planning/token-mint.d.ts +4 -0
- package/dist/internal/planning/token-mint.d.ts.map +1 -0
- package/dist/internal/planning/token-mint.js +15 -0
- package/dist/internal/planning/token-mint.js.map +1 -0
- package/dist/internal/planning/trade-faction-market.d.ts +20 -0
- package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
- package/dist/internal/planning/trade-faction-market.js +56 -0
- package/dist/internal/planning/trade-faction-market.js.map +1 -0
- package/dist/internal/planning/xp-runtime.d.ts +36 -0
- package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
- package/dist/internal/planning/xp-runtime.js +126 -0
- package/dist/internal/planning/xp-runtime.js.map +1 -0
- package/dist/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 +4 -3
- package/dist/loyalty/actions/index.js.map +1 -1
- package/dist/loyalty/index.d.ts.map +1 -1
- package/dist/loyalty/index.js +2 -6
- package/dist/loyalty/index.js.map +1 -1
- package/dist/markets/actions/index.d.ts +61 -3
- package/dist/markets/actions/index.d.ts.map +1 -1
- package/dist/markets/actions/index.js +137 -25
- package/dist/markets/actions/index.js.map +1 -1
- package/dist/markets/actions/trade-faction-market.d.ts +43 -0
- package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
- package/dist/markets/actions/trade-faction-market.js +291 -0
- package/dist/markets/actions/trade-faction-market.js.map +1 -0
- package/dist/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 +84 -0
- package/dist/mining/actions/index.d.ts.map +1 -0
- package/dist/mining/actions/index.js +328 -0
- package/dist/mining/actions/index.js.map +1 -0
- package/dist/mining/estimate.d.ts +114 -0
- package/dist/mining/estimate.d.ts.map +1 -0
- package/dist/mining/estimate.js +127 -0
- package/dist/mining/estimate.js.map +1 -0
- package/dist/mining/index.d.ts +8 -2
- package/dist/mining/index.d.ts.map +1 -1
- package/dist/mining/index.js +6 -2
- package/dist/mining/index.js.map +1 -1
- package/dist/planning/assembly.d.ts.map +1 -1
- package/dist/planning/assembly.js +24 -0
- package/dist/planning/assembly.js.map +1 -1
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +459 -17
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +181 -149
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +869 -121
- package/dist/planning/index.js.map +1 -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/simulation.d.ts +25 -1
- package/dist/planning/simulation.d.ts.map +1 -1
- package/dist/planning/simulation.js +111 -11
- package/dist/planning/simulation.js.map +1 -1
- package/dist/registry/cargo.d.ts +6 -11
- package/dist/registry/cargo.d.ts.map +1 -1
- package/dist/registry/cargo.js +19 -19
- package/dist/registry/cargo.js.map +1 -1
- package/dist/registry/docking.d.ts +13 -0
- package/dist/registry/docking.d.ts.map +1 -0
- package/dist/registry/docking.js +19 -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 +8 -1
- package/dist/registry/onboarding.d.ts.map +1 -1
- package/dist/registry/onboarding.js +18 -5
- package/dist/registry/onboarding.js.map +1 -1
- package/dist/registry/scanning.d.ts +7 -0
- package/dist/registry/scanning.d.ts.map +1 -0
- package/dist/registry/scanning.js +13 -0
- package/dist/registry/scanning.js.map +1 -0
- package/dist/registry/ship-stats-snapshot.js +19 -19
- package/dist/registry/ship-stats-snapshot.js.map +1 -1
- package/dist/registry/ships.d.ts +22 -2
- package/dist/registry/ships.d.ts.map +1 -1
- package/dist/registry/ships.js +28 -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/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 +4 -1
- package/dist/scanning/index.d.ts.map +1 -1
- package/dist/scanning/index.js +12 -8
- package/dist/scanning/index.js.map +1 -1
- package/dist/scanning/lifecycle.d.ts +77 -0
- package/dist/scanning/lifecycle.d.ts.map +1 -0
- package/dist/scanning/lifecycle.js +93 -0
- package/dist/scanning/lifecycle.js.map +1 -0
- package/dist/scanning/odds.d.ts +111 -0
- package/dist/scanning/odds.d.ts.map +1 -0
- package/dist/scanning/odds.js +294 -0
- package/dist/scanning/odds.js.map +1 -0
- package/dist/scanning/signals.d.ts +121 -0
- package/dist/scanning/signals.d.ts.map +1 -0
- package/dist/scanning/signals.js +171 -0
- package/dist/scanning/signals.js.map +1 -0
- package/dist/world/index.d.ts +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,68 @@
|
|
|
1
|
+
import type { FactionRegionData } from '../internal/c4/factions.js';
|
|
2
|
+
import type { RiskZoneAccess } from '../internal/c4/identity.js';
|
|
3
|
+
import type { WorldFaction, WorldStarbaseLevel } from '../internal/c4/world.js';
|
|
4
|
+
/** Explicit lane policy inputs; destinationRegion must contain the destination coordinates.
|
|
5
|
+
* A System's stored region id alone does not establish this spatial relationship.
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* declare const input: FleetWarpLanePolicyInput;
|
|
9
|
+
* console.log(input.destinationRegion.risk, input.securityZoneAccess);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export interface FleetWarpLanePolicyInput {
|
|
13
|
+
readonly fleetFaction: WorldFaction;
|
|
14
|
+
readonly sourceOwner: WorldFaction;
|
|
15
|
+
readonly destinationOwner: WorldFaction;
|
|
16
|
+
readonly sourceLevel: WorldStarbaseLevel;
|
|
17
|
+
readonly destinationLevel: WorldStarbaseLevel;
|
|
18
|
+
readonly crossFactionEconomicsEnabled: boolean;
|
|
19
|
+
readonly destinationRegion: Pick<FactionRegionData, 'owner' | 'safety' | 'risk'>;
|
|
20
|
+
readonly securityZoneAccess: RiskZoneAccess;
|
|
21
|
+
}
|
|
22
|
+
/** A bounded policy failure, not a simulation or transaction error.
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* const reason: FleetWarpLanePolicyFailure = 'foreign-low-risk';
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export type FleetWarpLanePolicyFailure = 'source-level-zero' | 'destination-level-zero' | 'cross-faction-disabled' | 'foreign-low-risk' | 'security-zone-access';
|
|
29
|
+
/** Policy result only: passing never proves travel eligibility or affordability.
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* declare const assessment: FleetWarpLanePolicy;
|
|
33
|
+
* console.log(assessment.passesPolicy, assessment.failures);
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export interface FleetWarpLanePolicy {
|
|
37
|
+
readonly passesPolicy: boolean;
|
|
38
|
+
readonly failures: readonly FleetWarpLanePolicyFailure[];
|
|
39
|
+
readonly effectiveRisk: FactionRegionData['risk'];
|
|
40
|
+
toJSON(): unknown;
|
|
41
|
+
}
|
|
42
|
+
/** Assesses qualified lane policy independently of Plan validation or execution.
|
|
43
|
+
* Both endpoint owners must equal Fleet faction when cross-faction economics is
|
|
44
|
+
* disabled. Both endpoint Starbases need nonzero levels. Stored low risk keeps
|
|
45
|
+
* its embedded faction; Safe medium/high becomes low risk of the region owner,
|
|
46
|
+
* while Border retains its tier. Foreign low risk rejects; higher tiers require
|
|
47
|
+
* sufficient Character access. Relationships and combat/territory gates do not
|
|
48
|
+
* block the tested lane policy.
|
|
49
|
+
*
|
|
50
|
+
* Only playable factions and known levels/tiers are supported. Resolve the
|
|
51
|
+
* region containing the destination coordinates before calling: this pure
|
|
52
|
+
* helper does not perform spatial lookup and does not trust a System region id
|
|
53
|
+
* on your behalf. It checks no connection, Fleet state, cooldown, crew, XP,
|
|
54
|
+
* permission, toll or available balance. Deployment 54356023 is the empirical
|
|
55
|
+
* scope; requalify on relevant game changes and simulate before signing.
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* const result = deriveFleetWarpLanePolicy({
|
|
59
|
+
* fleetFaction: 'oni', sourceOwner: 'oni', destinationOwner: 'oni',
|
|
60
|
+
* sourceLevel: 'css', destinationLevel: 'level-1',
|
|
61
|
+
* crossFactionEconomicsEnabled: false, securityZoneAccess: 'low',
|
|
62
|
+
* destinationRegion: { owner: 'oni', safety: 'safe',
|
|
63
|
+
* risk: { kind: 'low', faction: 'oni' } },
|
|
64
|
+
* }); // passesPolicy: true; still simulate the actual Plan
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export declare function deriveFleetWarpLanePolicy(input: FleetWarpLanePolicyInput): FleetWarpLanePolicy;
|
|
68
|
+
//# sourceMappingURL=warp-lane-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp-lane-policy.d.ts","sourceRoot":"","sources":["../../src/fleets/warp-lane-policy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGhF;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAC9C,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAC9B,iBAAiB,EACjB,OAAO,GAAG,QAAQ,GAAG,MAAM,CAC5B,CAAC;IACF,QAAQ,CAAC,kBAAkB,EAAE,cAAc,CAAC;CAC7C;AAED;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,GAClC,mBAAmB,GACnB,wBAAwB,GACxB,wBAAwB,GACxB,kBAAkB,GAClB,sBAAsB,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,SAAS,0BAA0B,EAAE,CAAC;IACzD,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,wBAAwB,GAC9B,mBAAmB,CA2ErB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { InvalidDerivationInputError } from '../client/index.js';
|
|
2
|
+
import { attachJsonSerialization } from '../internal/json.js';
|
|
3
|
+
/** Assesses qualified lane policy independently of Plan validation or execution.
|
|
4
|
+
* Both endpoint owners must equal Fleet faction when cross-faction economics is
|
|
5
|
+
* disabled. Both endpoint Starbases need nonzero levels. Stored low risk keeps
|
|
6
|
+
* its embedded faction; Safe medium/high becomes low risk of the region owner,
|
|
7
|
+
* while Border retains its tier. Foreign low risk rejects; higher tiers require
|
|
8
|
+
* sufficient Character access. Relationships and combat/territory gates do not
|
|
9
|
+
* block the tested lane policy.
|
|
10
|
+
*
|
|
11
|
+
* Only playable factions and known levels/tiers are supported. Resolve the
|
|
12
|
+
* region containing the destination coordinates before calling: this pure
|
|
13
|
+
* helper does not perform spatial lookup and does not trust a System region id
|
|
14
|
+
* on your behalf. It checks no connection, Fleet state, cooldown, crew, XP,
|
|
15
|
+
* permission, toll or available balance. Deployment 54356023 is the empirical
|
|
16
|
+
* scope; requalify on relevant game changes and simulate before signing.
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* const result = deriveFleetWarpLanePolicy({
|
|
20
|
+
* fleetFaction: 'oni', sourceOwner: 'oni', destinationOwner: 'oni',
|
|
21
|
+
* sourceLevel: 'css', destinationLevel: 'level-1',
|
|
22
|
+
* crossFactionEconomicsEnabled: false, securityZoneAccess: 'low',
|
|
23
|
+
* destinationRegion: { owner: 'oni', safety: 'safe',
|
|
24
|
+
* risk: { kind: 'low', faction: 'oni' } },
|
|
25
|
+
* }); // passesPolicy: true; still simulate the actual Plan
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function deriveFleetWarpLanePolicy(input) {
|
|
29
|
+
const invalid = (field, value) => {
|
|
30
|
+
throw new InvalidDerivationInputError(field, value, 'Use current playable-faction ownership, known Starbase levels and the region containing the destination coordinates, with current Character access. Unknown or NPC policy is not qualified; refresh and simulate the lane Plan.');
|
|
31
|
+
};
|
|
32
|
+
const playable = (field, faction) => {
|
|
33
|
+
if (faction !== 'mud' && faction !== 'oni' && faction !== 'ustur')
|
|
34
|
+
invalid(field, faction);
|
|
35
|
+
};
|
|
36
|
+
playable('Fleet faction', input.fleetFaction);
|
|
37
|
+
playable('Source owner', input.sourceOwner);
|
|
38
|
+
playable('Destination owner', input.destinationOwner);
|
|
39
|
+
playable('Destination region owner', input.destinationRegion.owner);
|
|
40
|
+
const levels = [
|
|
41
|
+
'level-0',
|
|
42
|
+
'level-1',
|
|
43
|
+
'level-2',
|
|
44
|
+
'level-3',
|
|
45
|
+
'level-4',
|
|
46
|
+
'level-5',
|
|
47
|
+
'css',
|
|
48
|
+
];
|
|
49
|
+
if (!levels.includes(input.sourceLevel))
|
|
50
|
+
invalid('Source Starbase level', input.sourceLevel);
|
|
51
|
+
if (!levels.includes(input.destinationLevel))
|
|
52
|
+
invalid('Destination Starbase level', input.destinationLevel);
|
|
53
|
+
if (typeof input.crossFactionEconomicsEnabled !== 'boolean')
|
|
54
|
+
invalid('Cross-faction flag type', typeof input.crossFactionEconomicsEnabled);
|
|
55
|
+
const { risk, safety, owner } = input.destinationRegion;
|
|
56
|
+
if (safety !== 'safe' && safety !== 'border')
|
|
57
|
+
invalid('Region safety', safety);
|
|
58
|
+
const kind = risk.kind;
|
|
59
|
+
if (kind !== 'low' && kind !== 'medium' && kind !== 'high')
|
|
60
|
+
invalid('Region risk', kind);
|
|
61
|
+
if (risk.kind === 'low')
|
|
62
|
+
playable('Low-risk faction', risk.faction);
|
|
63
|
+
const tiers = { low: 0, medium: 1, high: 2 };
|
|
64
|
+
if (!Object.hasOwn(tiers, input.securityZoneAccess))
|
|
65
|
+
invalid('Character security-zone access', input.securityZoneAccess);
|
|
66
|
+
const effectiveRisk = Object.freeze(risk.kind === 'low'
|
|
67
|
+
? { ...risk }
|
|
68
|
+
: safety === 'safe'
|
|
69
|
+
? { kind: 'low', faction: owner }
|
|
70
|
+
: { ...risk });
|
|
71
|
+
const failures = [];
|
|
72
|
+
if (input.sourceLevel === 'level-0')
|
|
73
|
+
failures.push('source-level-zero');
|
|
74
|
+
if (input.destinationLevel === 'level-0')
|
|
75
|
+
failures.push('destination-level-zero');
|
|
76
|
+
if (!input.crossFactionEconomicsEnabled &&
|
|
77
|
+
(input.sourceOwner !== input.fleetFaction ||
|
|
78
|
+
input.destinationOwner !== input.fleetFaction))
|
|
79
|
+
failures.push('cross-faction-disabled');
|
|
80
|
+
if (effectiveRisk.kind === 'low' &&
|
|
81
|
+
effectiveRisk.faction !== input.fleetFaction)
|
|
82
|
+
failures.push('foreign-low-risk');
|
|
83
|
+
if (tiers[effectiveRisk.kind] > tiers[input.securityZoneAccess])
|
|
84
|
+
failures.push('security-zone-access');
|
|
85
|
+
return Object.freeze(attachJsonSerialization({
|
|
86
|
+
passesPolicy: failures.length === 0,
|
|
87
|
+
failures: Object.freeze(failures),
|
|
88
|
+
effectiveRisk,
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=warp-lane-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp-lane-policy.js","sourceRoot":"","sources":["../../src/fleets/warp-lane-policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { FactionRelationship } from '../internal/c4/factions.js';
|
|
2
|
+
import type { WorldConnectionCosts, WorldFaction, WorldStarbaseLevel } from '../internal/c4/world.js';
|
|
3
|
+
/** Current source connection costs, ownership and Character fee modifier.
|
|
4
|
+
* destinationRelationship is Fleet-to-destination-owner, not endpoint-to-endpoint.
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* declare const input: FleetWarpLaneTollInput;
|
|
8
|
+
* console.log(input.sourceLevel, input.feeModifierRaw);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface FleetWarpLaneTollInput {
|
|
12
|
+
readonly costs: Pick<WorldConnectionCosts, 'level1Raw' | 'level2Raw' | 'level3Raw' | 'level4Raw' | 'level5Raw' | 'cssRaw'>;
|
|
13
|
+
readonly sourceLevel: WorldStarbaseLevel;
|
|
14
|
+
readonly fleetFaction: WorldFaction;
|
|
15
|
+
readonly sourceOwner: WorldFaction;
|
|
16
|
+
readonly destinationOwner: WorldFaction;
|
|
17
|
+
readonly destinationRelationship: FactionRelationship;
|
|
18
|
+
readonly feeModifierRaw: bigint;
|
|
19
|
+
readonly alliedTollBps: number;
|
|
20
|
+
readonly neutralTollBps: number;
|
|
21
|
+
}
|
|
22
|
+
/** Character's prospective ATLAS debit, entirely in raw ATLAS units (Floyds).
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* declare const toll: FleetWarpLaneToll;
|
|
26
|
+
* console.log(toll.modifiedBaseRaw, toll.surchargeRaw, toll.totalRaw);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export interface FleetWarpLaneToll {
|
|
30
|
+
readonly baseRaw: bigint;
|
|
31
|
+
readonly modifiedBaseRaw: bigint;
|
|
32
|
+
readonly surchargeRaw: bigint;
|
|
33
|
+
readonly totalRaw: bigint;
|
|
34
|
+
toJSON(): unknown;
|
|
35
|
+
}
|
|
36
|
+
/** Estimates the Character ATLAS toll using deployment-54356023 lane rules.
|
|
37
|
+
* Selects cost by departure level. Ceils the Character-modified base, then adds
|
|
38
|
+
* a separately floored surcharge on the unmodified base if either endpoint is
|
|
39
|
+
* foreign. Allied uses allied bps; neutral/hostile/ceasefire use neutral bps.
|
|
40
|
+
* A foreign source with own destination uses neutral bps. Modifier zero waives
|
|
41
|
+
* only the modified base. Relationship expiry does not alter the measured toll.
|
|
42
|
+
*
|
|
43
|
+
* Accepts playable factions only, usable source levels, u64 raw base cost,
|
|
44
|
+
* nonnegative i64 raw I32F32 modifier, and u16 bps. Rejects a result beyond u64.
|
|
45
|
+
* No RPC, balance, connection, region, permission or execution checks occur.
|
|
46
|
+
* ATLAS is paid from Character, not wallet. Requalify after program changes.
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* declare const input: FleetWarpLaneTollInput;
|
|
50
|
+
* const toll = deriveFleetWarpLaneToll(input);
|
|
51
|
+
* console.log(toll.totalRaw);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function deriveFleetWarpLaneToll(input: FleetWarpLaneTollInput): FleetWarpLaneToll;
|
|
55
|
+
//# sourceMappingURL=warp-lane-toll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp-lane-toll.d.ts","sourceRoot":"","sources":["../../src/fleets/warp-lane-toll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EACV,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAGjC;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAClB,oBAAoB,EAClB,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,QAAQ,CACX,CAAC;IACF,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,YAAY,CAAC;IACxC,QAAQ,CAAC,uBAAuB,EAAE,mBAAmB,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,MAAM,IAAI,OAAO,CAAC;CACnB;AAUD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,sBAAsB,GAC5B,iBAAiB,CAyDnB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { InvalidDerivationInputError } from '../client/index.js';
|
|
2
|
+
import { attachJsonSerialization } from '../internal/json.js';
|
|
3
|
+
const amountMax = (1n << 64n) - 1n;
|
|
4
|
+
const modifierScale = 1n << 32n;
|
|
5
|
+
const remedy = 'Refresh the source connection, source Starbase level, playable Fleet/Starbase factions, Fleet-to-destination relationship, fee modifier and toll basis points. Only qualified nonnegative values and a u64 ATLAS debit are supported; simulate the lane Plan before signing.';
|
|
6
|
+
function invalid(field, value) {
|
|
7
|
+
throw new InvalidDerivationInputError(field, value, remedy);
|
|
8
|
+
}
|
|
9
|
+
/** Estimates the Character ATLAS toll using deployment-54356023 lane rules.
|
|
10
|
+
* Selects cost by departure level. Ceils the Character-modified base, then adds
|
|
11
|
+
* a separately floored surcharge on the unmodified base if either endpoint is
|
|
12
|
+
* foreign. Allied uses allied bps; neutral/hostile/ceasefire use neutral bps.
|
|
13
|
+
* A foreign source with own destination uses neutral bps. Modifier zero waives
|
|
14
|
+
* only the modified base. Relationship expiry does not alter the measured toll.
|
|
15
|
+
*
|
|
16
|
+
* Accepts playable factions only, usable source levels, u64 raw base cost,
|
|
17
|
+
* nonnegative i64 raw I32F32 modifier, and u16 bps. Rejects a result beyond u64.
|
|
18
|
+
* No RPC, balance, connection, region, permission or execution checks occur.
|
|
19
|
+
* ATLAS is paid from Character, not wallet. Requalify after program changes.
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* declare const input: FleetWarpLaneTollInput;
|
|
23
|
+
* const toll = deriveFleetWarpLaneToll(input);
|
|
24
|
+
* console.log(toll.totalRaw);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function deriveFleetWarpLaneToll(input) {
|
|
28
|
+
for (const [field, faction] of [
|
|
29
|
+
['Fleet faction', input.fleetFaction],
|
|
30
|
+
['Source owner', input.sourceOwner],
|
|
31
|
+
['Destination owner', input.destinationOwner],
|
|
32
|
+
])
|
|
33
|
+
if (faction !== 'mud' && faction !== 'oni' && faction !== 'ustur')
|
|
34
|
+
invalid(field, faction);
|
|
35
|
+
const levelKeys = {
|
|
36
|
+
'level-1': 'level1Raw',
|
|
37
|
+
'level-2': 'level2Raw',
|
|
38
|
+
'level-3': 'level3Raw',
|
|
39
|
+
'level-4': 'level4Raw',
|
|
40
|
+
'level-5': 'level5Raw',
|
|
41
|
+
css: 'cssRaw',
|
|
42
|
+
};
|
|
43
|
+
if (!Object.hasOwn(levelKeys, input.sourceLevel))
|
|
44
|
+
invalid('Source Starbase level', input.sourceLevel);
|
|
45
|
+
const baseRaw = input.costs[levelKeys[input.sourceLevel]];
|
|
46
|
+
if (baseRaw < 0n || baseRaw > amountMax)
|
|
47
|
+
invalid('Base ATLAS toll raw', baseRaw);
|
|
48
|
+
if (input.feeModifierRaw < 0n || input.feeModifierRaw > (1n << 63n) - 1n)
|
|
49
|
+
invalid('Character lane fee modifier raw', input.feeModifierRaw);
|
|
50
|
+
for (const [field, bps] of [
|
|
51
|
+
['Allied toll bps', input.alliedTollBps],
|
|
52
|
+
['Neutral toll bps', input.neutralTollBps],
|
|
53
|
+
])
|
|
54
|
+
if (!Number.isInteger(bps) || bps < 0 || bps > 65535)
|
|
55
|
+
invalid(field, bps);
|
|
56
|
+
const relation = input.destinationRelationship;
|
|
57
|
+
if (relation !== 'allied' &&
|
|
58
|
+
relation !== 'neutral' &&
|
|
59
|
+
relation !== 'hostile' &&
|
|
60
|
+
relation !== 'ceasefire')
|
|
61
|
+
invalid('Destination relationship', relation);
|
|
62
|
+
const crossFaction = input.sourceOwner !== input.fleetFaction ||
|
|
63
|
+
input.destinationOwner !== input.fleetFaction;
|
|
64
|
+
const bps = input.destinationOwner !== input.fleetFaction && relation === 'allied'
|
|
65
|
+
? input.alliedTollBps
|
|
66
|
+
: input.neutralTollBps;
|
|
67
|
+
const modifiedBaseRaw = (baseRaw * input.feeModifierRaw + modifierScale - 1n) / modifierScale;
|
|
68
|
+
const surchargeRaw = crossFaction ? (baseRaw * BigInt(bps)) / 10000n : 0n;
|
|
69
|
+
const totalRaw = modifiedBaseRaw + surchargeRaw;
|
|
70
|
+
if (totalRaw > amountMax)
|
|
71
|
+
invalid('Total ATLAS toll raw', totalRaw);
|
|
72
|
+
return Object.freeze(attachJsonSerialization({
|
|
73
|
+
baseRaw,
|
|
74
|
+
modifiedBaseRaw,
|
|
75
|
+
surchargeRaw,
|
|
76
|
+
totalRaw,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=warp-lane-toll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warp-lane-toll.js","sourceRoot":"","sources":["../../src/fleets/warp-lane-toll.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,8 @@ export interface PlanCreateProfileOptions {
|
|
|
34
34
|
/** Plans a new signer-created Profile with explicit scoped permissions.
|
|
35
35
|
* The new Profile, storage funder, and every Player Profile AUTH key sign creation,
|
|
36
36
|
* even when the editing threshold is lower. Other keys remain readonly.
|
|
37
|
+
* The new Profile signer is needed only for creation unless explicitly listed
|
|
38
|
+
* among the initial authority keys; creating the account does not grant it AUTH.
|
|
37
39
|
* The threshold governs protected Profile updates; it is not a gameplay-wide multisig policy.
|
|
38
40
|
* Existing target accounts and a Profile address equal to its funder are rejected.
|
|
39
41
|
* No Game load, onboarding, funding top-up, key generation or signing is implicit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-profile.d.ts","sourceRoot":"","sources":["../../../src/identity/actions/create-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAO7D,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"create-profile.d.ts","sourceRoot":"","sources":["../../../src/identity/actions/create-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAO7D,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;GASG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAyID;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,WAAW,EAChB,cAAc,EAAE,OAAO,EACvB,KAAK,EAAE,wBAAwB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Cf"}
|
|
@@ -30,26 +30,27 @@ function options(input) {
|
|
|
30
30
|
invalid('options.keys', raw.keys, 'Specify at least one non-expiring Player Profile AUTH key.');
|
|
31
31
|
const seen = new Set();
|
|
32
32
|
const keys = [];
|
|
33
|
-
for (const value of raw.keys) {
|
|
34
|
-
const
|
|
33
|
+
for (const [index, value] of raw.keys.entries()) {
|
|
34
|
+
const path = `options.keys[${index}]`;
|
|
35
|
+
const key = record(value, path, [
|
|
35
36
|
'address',
|
|
36
37
|
'scope',
|
|
37
38
|
'permissionsRaw',
|
|
38
39
|
'expiresAt',
|
|
39
40
|
]);
|
|
40
|
-
const address = validAddress(key.address,
|
|
41
|
-
const scope = validAddress(key.scope,
|
|
41
|
+
const address = validAddress(key.address, `${path}.address`, false);
|
|
42
|
+
const scope = validAddress(key.scope, `${path}.scope`, false);
|
|
42
43
|
const permissionsRaw = key.permissionsRaw;
|
|
43
44
|
if (typeof permissionsRaw !== 'bigint' ||
|
|
44
45
|
permissionsRaw < 0n ||
|
|
45
46
|
permissionsRaw > 0xffffffffffffffffn)
|
|
46
|
-
invalid(
|
|
47
|
+
invalid(`${path}.permissionsRaw`, permissionsRaw, 'Supply an explicit bigint permission mask from 0n through 18446744073709551615n.');
|
|
47
48
|
const expiresAt = key.expiresAt;
|
|
48
49
|
if (expiresAt !== undefined &&
|
|
49
50
|
(typeof expiresAt !== 'bigint' ||
|
|
50
51
|
expiresAt < 0n ||
|
|
51
52
|
expiresAt > 0x7fffffffffffffffn))
|
|
52
|
-
invalid(
|
|
53
|
+
invalid(`${path}.expiresAt`, expiresAt, 'Omit expiry for a permanent key, or supply nonnegative bigint Unix seconds within the signed 64-bit range.');
|
|
53
54
|
const captured = {
|
|
54
55
|
address,
|
|
55
56
|
scope,
|
|
@@ -57,17 +58,19 @@ function options(input) {
|
|
|
57
58
|
...(expiresAt === undefined ? {} : { expiresAt }),
|
|
58
59
|
};
|
|
59
60
|
if (isProfileCreationAuthority(captured)) {
|
|
60
|
-
validAddress(address,
|
|
61
|
+
validAddress(address, `${path}.address`, true);
|
|
61
62
|
if (expiresAt !== undefined)
|
|
62
|
-
invalid(
|
|
63
|
+
invalid(`${path}.expiresAt`, expiresAt, 'Omit expiry for every Player Profile AUTH key.');
|
|
63
64
|
}
|
|
64
65
|
const identity = `${address}:${scope}`;
|
|
65
66
|
if (seen.has(identity))
|
|
66
|
-
invalid(
|
|
67
|
+
invalid(path, address, 'Remove duplicate address/scope pairs; distinct scopes may reuse one key address.');
|
|
67
68
|
seen.add(identity);
|
|
68
69
|
keys.push(captured);
|
|
69
70
|
}
|
|
70
71
|
const authCount = keys.filter(isProfileCreationAuthority).length;
|
|
72
|
+
if (authCount === 0)
|
|
73
|
+
invalid('options.keys', raw.keys, 'Specify at least one non-expiring Player Profile AUTH key.');
|
|
71
74
|
const keyThreshold = raw.keyThreshold;
|
|
72
75
|
if (typeof keyThreshold !== 'number' ||
|
|
73
76
|
!Number.isInteger(keyThreshold) ||
|
|
@@ -80,6 +83,8 @@ function options(input) {
|
|
|
80
83
|
/** Plans a new signer-created Profile with explicit scoped permissions.
|
|
81
84
|
* The new Profile, storage funder, and every Player Profile AUTH key sign creation,
|
|
82
85
|
* even when the editing threshold is lower. Other keys remain readonly.
|
|
86
|
+
* The new Profile signer is needed only for creation unless explicitly listed
|
|
87
|
+
* among the initial authority keys; creating the account does not grant it AUTH.
|
|
83
88
|
* The threshold governs protected Profile updates; it is not a gameplay-wide multisig policy.
|
|
84
89
|
* Existing target accounts and a Profile address equal to its funder are rejected.
|
|
85
90
|
* No Game load, onboarding, funding top-up, key generation or signing is implicit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-profile.js","sourceRoot":"","sources":["../../../src/identity/actions/create-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAgB,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EACL,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAkChE,SAAS,OAAO,CAAC,KAAa,EAAE,KAAc,EAAE,MAAc;IAC5D,MAAM,IAAI,uBAAuB,CAC/B,KAAK,EACL,KAAK,EACL,uCAAuC,EACvC,MAAM,CACP,CAAC;AACJ,CAAC;AACD,SAAS,MAAM,CACb,KAAc,EACd,KAAa,EACb,OAA0B;IAE1B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrE,OAAO,CACL,KAAK,EACL,KAAK,EACL,2DAA2D,CAC5D,CAAC;IACJ,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,CACL,KAAK,EACL,KAAK,EACL,qGAAqG,CACtG,CAAC;IACJ,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,YAAY,CAAC,KAAc,EAAE,KAAa,EAAE,MAAe;IAClE,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,SAAS,CAAC,KAAK,CAAC;QACjB,CAAC,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAEpC,OAAO,CACL,KAAK,EACL,KAAK,EACL,MAAM;YACJ,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,8CAA8C,CACnD,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,OAAO,CAAC,KAAc;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACnD,OAAO,CACL,cAAc,EACd,GAAG,CAAC,IAAI,EACR,4DAA4D,CAC7D,CAAC;IACJ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAA8B,EAAE,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"create-profile.js","sourceRoot":"","sources":["../../../src/identity/actions/create-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,9 @@ export interface PlanRegisterCharacterOptions {
|
|
|
17
17
|
* enrollment are not prerequisites for this instruction. Planning never creates
|
|
18
18
|
* an account, signs, submits, or retains a signer. Existing Characters are rejected;
|
|
19
19
|
* reuse them through `getCharacterForProfile` or `maybeGetCharacterForProfile`.
|
|
20
|
-
* New Plans
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* New Plans bind the current Game-2 Character and Career XP creation intent.
|
|
21
|
+
* The canonical accounts, absence, storage pricing, and funder balance are
|
|
22
|
+
* revalidated before signing. Final creation remains chain-authoritative. Simulate
|
|
23
23
|
* before signing and read the Character after confirmed execution to verify its
|
|
24
24
|
* exact Profile/Game identity. Submission alone does not prove creation.
|
|
25
25
|
* @example
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/actions/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/actions/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAY7D,OAAO,EAAc,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;GAOG;AACH,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AA+BD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,WAAW,EAChB,cAAc,EAAE,OAAO,EACvB,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,IAAI,CAAC,CAsHf;AAED,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readCharacterInitialization } from '../../registry/onboarding.js';
|
|
2
|
+
import { calculateRegistrationFunding, isEmptySystemAccount, } from '../../internal/planning/character-registration.js';
|
|
2
3
|
import { isAddress, isOffCurveAddress } from '@solana/kit';
|
|
4
|
+
import { hashAccountState } from '../../internal/planning/account-state.js';
|
|
3
5
|
import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
|
|
4
6
|
import { readContextRawAccounts } from '../../client/reconciliation.js';
|
|
5
7
|
import { createRegisterCharacterInstruction } from '../../internal/c4/character-registration.js';
|
|
6
8
|
import { characterAccountDefinition, profileAccountDefinition, findCharacterPda, } from '../../internal/c4/identity.js';
|
|
7
9
|
import { requireGameAddress } from '../../internal/game-context.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
+
import { RENT_ADDRESS, readRent } from '../../internal/planning/rent.js';
|
|
11
|
+
import { resolveCharacterRegistrationXpRuntime } from '../../internal/planning/xp-runtime.js';
|
|
12
|
+
import { createPlan } from '../../planning/index.js';
|
|
10
13
|
function validateOptions(input) {
|
|
11
14
|
if (input === null || typeof input !== 'object' || Array.isArray(input))
|
|
12
15
|
throw new InvalidActionInputError('options', input, 'an object containing only funder', 'Pass { funder } with the address that will pay for Character account storage.');
|
|
@@ -22,22 +25,14 @@ function validateOptions(input) {
|
|
|
22
25
|
function fail(message, address) {
|
|
23
26
|
throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
|
|
24
27
|
}
|
|
25
|
-
async function observe(account, describes) {
|
|
26
|
-
return {
|
|
27
|
-
kind: 'account-state',
|
|
28
|
-
address: account.address,
|
|
29
|
-
dataHash: await hashAccountState(account.owner, account.data),
|
|
30
|
-
describes,
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
28
|
/** Plans creation of an existing Profile's canonical Character in the configured Game.
|
|
34
29
|
* Only the explicit storage funder signs. The Profile's authority and faction
|
|
35
30
|
* enrollment are not prerequisites for this instruction. Planning never creates
|
|
36
31
|
* an account, signs, submits, or retains a signer. Existing Characters are rejected;
|
|
37
32
|
* reuse them through `getCharacterForProfile` or `maybeGetCharacterForProfile`.
|
|
38
|
-
* New Plans
|
|
39
|
-
*
|
|
40
|
-
*
|
|
33
|
+
* New Plans bind the current Game-2 Character and Career XP creation intent.
|
|
34
|
+
* The canonical accounts, absence, storage pricing, and funder balance are
|
|
35
|
+
* revalidated before signing. Final creation remains chain-authoritative. Simulate
|
|
41
36
|
* before signing and read the Character after confirmed execution to verify its
|
|
42
37
|
* exact Profile/Game identity. Submission alone does not prove creation.
|
|
43
38
|
* @example
|
|
@@ -57,16 +52,19 @@ export async function planRegisterCharacter(ctx, profileAddress, input) {
|
|
|
57
52
|
throw new InvalidActionInputError('profileAddress', profileAddress, 'an existing Profile account address', 'Pass the Profile address, not a wallet address or loaded signer.');
|
|
58
53
|
const game = requireGameAddress(ctx);
|
|
59
54
|
const character = await findCharacterPda(profileAddress, game);
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
55
|
+
const raw = await readContextRawAccounts(ctx, [
|
|
56
|
+
profileAddress,
|
|
57
|
+
character,
|
|
58
|
+
RENT_ADDRESS,
|
|
59
|
+
funder,
|
|
63
60
|
]);
|
|
61
|
+
const [profileAccount, characterAccount, rentAccount, funderAccount] = raw;
|
|
64
62
|
if (!profileAccount)
|
|
65
63
|
fail(`Profile ${profileAddress} does not exist. Create or select an existing Profile before registering its Character.`, profileAddress);
|
|
66
64
|
if (profileAccount.executable)
|
|
67
65
|
fail(`Profile ${profileAddress} is executable instead of Profile state. Select a valid Player Profile account and retry.`, profileAddress);
|
|
68
66
|
profileAccountDefinition.decode(profileAccount);
|
|
69
|
-
if (characterAccount) {
|
|
67
|
+
if (characterAccount && !isEmptySystemAccount(characterAccount)) {
|
|
70
68
|
if (characterAccount.executable)
|
|
71
69
|
fail(`Canonical Character ${character} is executable instead of Character state. Verify the configured Game and account data before retrying.`, character);
|
|
72
70
|
const existing = characterAccountDefinition.decode(characterAccount);
|
|
@@ -74,21 +72,42 @@ export async function planRegisterCharacter(ctx, profileAddress, input) {
|
|
|
74
72
|
fail(`Canonical Character ${character} contains a different Profile or Game relationship. Verify the deployment and refresh the account; do not treat it as a missing Character.`, character);
|
|
75
73
|
fail(`Character ${character} is already registered for Profile ${profileAddress} in Game ${game}. Read and reuse it with getCharacterForProfile or maybeGetCharacterForProfile; registration is not idempotent.`, character);
|
|
76
74
|
}
|
|
77
|
-
const
|
|
75
|
+
const initialization = await readCharacterInitialization(ctx);
|
|
76
|
+
const xp = await resolveCharacterRegistrationXpRuntime(ctx, {
|
|
77
|
+
game,
|
|
78
|
+
character,
|
|
79
|
+
});
|
|
80
|
+
if (!rentAccount)
|
|
81
|
+
fail(`Rent sysvar ${RENT_ADDRESS} is missing. Refresh the configured deployment before calculating Character storage funding.`, RENT_ADDRESS);
|
|
82
|
+
if (!funderAccount ||
|
|
83
|
+
funderAccount.executable ||
|
|
84
|
+
funderAccount.owner !== '11111111111111111111111111111111' ||
|
|
85
|
+
funderAccount.data.length !== 0)
|
|
86
|
+
fail(`Character storage funder ${funder} must be an existing non-executable System wallet. Select and fund that signer separately, then prepare registration again.`, funder);
|
|
87
|
+
const minimum = readRent(rentAccount);
|
|
88
|
+
const storage = calculateRegistrationFunding(minimum, initialization.characterSize, characterAccount?.lamports ?? 0n, xp.budgetLamports);
|
|
89
|
+
const funding = storage.requiredLamports;
|
|
90
|
+
if (funderAccount.lamports < funding)
|
|
91
|
+
fail(`Character storage funder ${funder} needs ${funding - funderAccount.lamports} more native lamports. Fund it separately and recreate registration.`, funder);
|
|
92
|
+
const summary = `Register canonical Character ${character} and Career XP budget ${xp.xpBudget} for existing Profile ${profileAddress} in Game ${game}. Funder ${funder} is the sole instruction signer and provides the observed ${funding} lamports of account storage funding; transaction fees are separate. Character v0 allocates ${initialization.characterSize} bytes, Career XP budget v1 allocates 280 bytes with reconciliation marker 1. Net storage debit is ${storage.netDebit} lamports, including a ${storage.refund} lamport Character refund after budget funding; excess budget funding is retained. Valid empty System pre-funded targets are supported. XP budget configuration ${xp.xpBudgetConfig} remains Game-owned and is not created. No Profile-authority or faction signature is required. Funding is revalidated before signing; fees, intervening changes and final creation remain chain-authoritative. Simulate before signing, then use getCharacterForProfile after confirmed execution to verify the Profile/Game identity.`;
|
|
78
93
|
return createPlan({
|
|
79
94
|
kind: 'identity.register-character',
|
|
80
95
|
summary,
|
|
81
96
|
preconditions: [
|
|
82
|
-
await observe(profileAccount, `Profile ${profileAddress} retains its validated Player Profile state.`),
|
|
83
|
-
{
|
|
84
|
-
kind: 'game-account',
|
|
85
|
-
address: gameAccount.address,
|
|
86
|
-
describes: `Game ${game} remains a valid non-executable C4 Game; unrelated definition changes do not invalidate Character registration.`,
|
|
87
|
-
},
|
|
88
97
|
{
|
|
89
|
-
kind: '
|
|
98
|
+
kind: 'character-registration',
|
|
90
99
|
address: character,
|
|
91
|
-
|
|
100
|
+
game,
|
|
101
|
+
profile: profileAddress,
|
|
102
|
+
profileDataHash: await hashAccountState(profileAccount.owner, profileAccount.data),
|
|
103
|
+
funder,
|
|
104
|
+
xpBudget: xp.xpBudget,
|
|
105
|
+
xpBudgetConfig: xp.xpBudgetConfig,
|
|
106
|
+
maximumFunderDebit: funding,
|
|
107
|
+
...initialization,
|
|
108
|
+
characterLamports: characterAccount?.lamports ?? 0n,
|
|
109
|
+
budgetLamports: xp.budgetLamports,
|
|
110
|
+
describes: `Create canonical Character ${character} and Career XP budget ${xp.xpBudget} with at most ${funding} lamports of storage funding from System wallet ${funder}; require current Game 2, valid Profile and XP configuration, and both targets to remain absent or valid empty System accounts. Initial allocation, refunds and final funder rent status are rechecked before signing.`,
|
|
92
111
|
},
|
|
93
112
|
],
|
|
94
113
|
steps: [
|
|
@@ -100,6 +119,8 @@ export async function planRegisterCharacter(ctx, profileAddress, input) {
|
|
|
100
119
|
funder,
|
|
101
120
|
character,
|
|
102
121
|
game,
|
|
122
|
+
xpBudget: xp.xpBudget,
|
|
123
|
+
xpBudgetConfig: xp.xpBudgetConfig,
|
|
103
124
|
}),
|
|
104
125
|
},
|
|
105
126
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC3E,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAgB,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAE5E,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,MAAM,6CAA6C,CAAC;AACjG,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,uCAAuC,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAa,MAAM,yBAAyB,CAAC;AAchE,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrE,MAAM,IAAI,uBAAuB,CAC/B,SAAS,EACT,KAAK,EACL,kCAAkC,EAClC,+EAA+E,CAChF,CAAC;IACJ,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IACE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAChC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;QAChC,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QACjC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC;QACzB,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC;QAEhC,MAAM,IAAI,uBAAuB,CAC/B,gBAAgB,EAChB,MAAM,CAAC,MAAM,EACb,sEAAsE,EACtE,2FAA2F,CAC5F,CAAC;IACJ,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,IAAI,CAAC,OAAe,EAAE,OAAgB;IAC7C,MAAM,IAAI,YAAY,CAAC,4BAA4B,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAgB,EAChB,cAAuB,EACvB,KAAmC;IAEnC,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;QAClE,MAAM,IAAI,uBAAuB,CAC/B,gBAAgB,EAChB,cAAc,EACd,qCAAqC,EACrC,kEAAkE,CACnE,CAAC;IACJ,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,sBAAsB,CAAC,GAAG,EAAE;QAC5C,cAAc;QACd,SAAS;QACT,YAAY;QACZ,MAAM;KACP,CAAC,CAAC;IACH,MAAM,CAAC,cAAc,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,GAAG,CAAC;IAC3E,IAAI,CAAC,cAAc;QACjB,IAAI,CACF,WAAW,cAAc,yFAAyF,EAClH,cAAc,CACf,CAAC;IACJ,IAAI,cAAc,CAAC,UAAU;QAC3B,IAAI,CACF,WAAW,cAAc,2FAA2F,EACpH,cAAc,CACf,CAAC;IACJ,wBAAwB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAChD,IAAI,gBAAgB,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAChE,IAAI,gBAAgB,CAAC,UAAU;YAC7B,IAAI,CACF,uBAAuB,SAAS,yGAAyG,EACzI,SAAS,CACV,CAAC;QACJ,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACrE,IAAI,QAAQ,CAAC,aAAa,KAAK,cAAc,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;YACrE,IAAI,CACF,uBAAuB,SAAS,4IAA4I,EAC5K,SAAS,CACV,CAAC;QACJ,IAAI,CACF,aAAa,SAAS,sCAAsC,cAAc,YAAY,IAAI,iHAAiH,EAC3M,SAAS,CACV,CAAC;IACJ,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,EAAE,GAAG,MAAM,qCAAqC,CAAC,GAAG,EAAE;QAC1D,IAAI;QACJ,SAAS;KACV,CAAC,CAAC;IACH,IAAI,CAAC,WAAW;QACd,IAAI,CACF,eAAe,YAAY,8FAA8F,EACzH,YAAY,CACb,CAAC;IACJ,IACE,CAAC,aAAa;QACd,aAAa,CAAC,UAAU;QACxB,aAAa,CAAC,KAAK,KAAK,kCAAkC;QAC1D,aAAa,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAE/B,IAAI,CACF,4BAA4B,MAAM,6HAA6H,EAC/J,MAAM,CACP,CAAC;IACJ,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,4BAA4B,CAC1C,OAAO,EACP,cAAc,CAAC,aAAa,EAC5B,gBAAgB,EAAE,QAAQ,IAAI,EAAE,EAChC,EAAE,CAAC,cAAc,CAClB,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACzC,IAAI,aAAa,CAAC,QAAQ,GAAG,OAAO;QAClC,IAAI,CACF,4BAA4B,MAAM,UAAU,OAAO,GAAG,aAAa,CAAC,QAAQ,sEAAsE,EAClJ,MAAM,CACP,CAAC;IACJ,MAAM,OAAO,GAAG,gCAAgC,SAAS,yBAAyB,EAAE,CAAC,QAAQ,yBAAyB,cAAc,YAAY,IAAI,YAAY,MAAM,6DAA6D,OAAO,+FAA+F,cAAc,CAAC,aAAa,sGAAsG,OAAO,CAAC,QAAQ,0BAA0B,OAAO,CAAC,MAAM,mKAAmK,EAAE,CAAC,cAAc,wUAAwU,CAAC;IAChgC,OAAO,UAAU,CAAC;QAChB,IAAI,EAAE,6BAA6B;QACnC,OAAO;QACP,aAAa,EAAE;YACb;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,SAAS;gBAClB,IAAI;gBACJ,OAAO,EAAE,cAAc;gBACvB,eAAe,EAAE,MAAM,gBAAgB,CACrC,cAAc,CAAC,KAAK,EACpB,cAAc,CAAC,IAAI,CACpB;gBACD,MAAM;gBACN,QAAQ,EAAE,EAAE,CAAC,QAAQ;gBACrB,cAAc,EAAE,EAAE,CAAC,cAAc;gBACjC,kBAAkB,EAAE,OAAO;gBAC3B,GAAG,cAAc;gBACjB,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,IAAI,EAAE;gBACnD,cAAc,EAAE,EAAE,CAAC,cAAc;gBACjC,SAAS,EAAE,8BAA8B,SAAS,yBAAyB,EAAE,CAAC,QAAQ,iBAAiB,OAAO,mDAAmD,MAAM,wNAAwN;aAChY;SACF;QACD,KAAK,EAAE;YACL;gBACE,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,CAAC,MAAM,CAAC;gBACjB,WAAW,EAAE,kCAAkC,CAAC;oBAC9C,OAAO,EAAE,cAAc;oBACvB,MAAM;oBACN,SAAS;oBACT,IAAI;oBACJ,QAAQ,EAAE,EAAE,CAAC,QAAQ;oBACrB,cAAc,EAAE,EAAE,CAAC,cAAc;iBAClC,CAAC;aACH;SACF;KACF,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,iBAAiB,GAGlB,MAAM,qBAAqB,CAAC"}
|