@aephia/atlas-kit 0.6.0-next.12 → 0.6.0-next.121
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cargo/actions/deposit.d.ts +2 -2
- package/dist/cargo/actions/deposit.d.ts.map +1 -1
- package/dist/cargo/actions/deposit.js +28 -117
- package/dist/cargo/actions/deposit.js.map +1 -1
- package/dist/cargo/actions/index.d.ts +1 -1
- package/dist/cargo/actions/index.d.ts.map +1 -1
- package/dist/cargo/actions/index.js +28 -84
- package/dist/cargo/actions/index.js.map +1 -1
- package/dist/cargo/actions/wallet-context.d.ts +52 -3
- package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-context.js +118 -7
- package/dist/cargo/actions/wallet-context.js.map +1 -1
- package/dist/cargo/actions/wallet-token.d.ts +1 -6
- package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
- package/dist/cargo/actions/wallet-token.js +0 -53
- package/dist/cargo/actions/wallet-token.js.map +1 -1
- package/dist/cargo/actions/withdrawal.d.ts +1 -1
- package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
- package/dist/cargo/actions/withdrawal.js +39 -164
- package/dist/cargo/actions/withdrawal.js.map +1 -1
- package/dist/cargo/index.d.ts.map +1 -1
- package/dist/cargo/index.js +2 -10
- package/dist/cargo/index.js.map +1 -1
- package/dist/claim-stakes/actions/index.d.ts +14 -1
- package/dist/claim-stakes/actions/index.d.ts.map +1 -1
- package/dist/claim-stakes/actions/index.js +399 -592
- package/dist/claim-stakes/actions/index.js.map +1 -1
- package/dist/claim-stakes/index.d.ts +14 -0
- package/dist/claim-stakes/index.d.ts.map +1 -1
- package/dist/claim-stakes/index.js +25 -12
- package/dist/claim-stakes/index.js.map +1 -1
- package/dist/client/context.d.ts.map +1 -1
- package/dist/client/context.js +1 -1
- package/dist/client/context.js.map +1 -1
- package/dist/client/contracts.d.ts +16 -6
- package/dist/client/contracts.d.ts.map +1 -1
- package/dist/client/errors.d.ts +6 -2
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +31 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +35 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +35 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/rpc-subscription-provider.d.ts +35 -0
- package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
- package/dist/client/rpc-subscription-provider.js +190 -0
- package/dist/client/rpc-subscription-provider.js.map +1 -0
- package/dist/combat/actions/index.d.ts +4 -4
- package/dist/combat/actions/index.d.ts.map +1 -1
- package/dist/combat/actions/index.js +207 -261
- package/dist/combat/actions/index.js.map +1 -1
- package/dist/combat/index.d.ts +13 -3
- package/dist/combat/index.d.ts.map +1 -1
- package/dist/combat/index.js +9 -16
- package/dist/combat/index.js.map +1 -1
- package/dist/crafting/actions/index.d.ts +12 -1
- package/dist/crafting/actions/index.d.ts.map +1 -1
- package/dist/crafting/actions/index.js +181 -303
- package/dist/crafting/actions/index.js.map +1 -1
- package/dist/crafting/index.d.ts +33 -3
- package/dist/crafting/index.d.ts.map +1 -1
- package/dist/crafting/index.js +49 -28
- package/dist/crafting/index.js.map +1 -1
- package/dist/factions/actions/index.d.ts +2 -1
- package/dist/factions/actions/index.d.ts.map +1 -1
- package/dist/factions/actions/index.js +6 -4
- package/dist/factions/actions/index.js.map +1 -1
- package/dist/factions/index.d.ts +1 -1
- package/dist/factions/index.d.ts.map +1 -1
- package/dist/factions/index.js +16 -18
- package/dist/factions/index.js.map +1 -1
- package/dist/factions/profile-faction.d.ts +20 -8
- package/dist/factions/profile-faction.d.ts.map +1 -1
- package/dist/factions/profile-faction.js +20 -8
- package/dist/factions/profile-faction.js.map +1 -1
- package/dist/fleets/actions/add-ship.d.ts +35 -0
- package/dist/fleets/actions/add-ship.d.ts.map +1 -0
- package/dist/fleets/actions/add-ship.js +120 -0
- package/dist/fleets/actions/add-ship.js.map +1 -0
- package/dist/fleets/actions/create-fleet.d.ts +36 -0
- package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
- package/dist/fleets/actions/create-fleet.js +108 -0
- package/dist/fleets/actions/create-fleet.js.map +1 -0
- package/dist/fleets/actions/crew-transfer.d.ts +41 -0
- package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
- package/dist/fleets/actions/crew-transfer.js +94 -0
- package/dist/fleets/actions/crew-transfer.js.map +1 -0
- package/dist/fleets/actions/dock-bounds.d.ts +38 -0
- package/dist/fleets/actions/dock-bounds.d.ts.map +1 -0
- package/dist/fleets/actions/dock-bounds.js +46 -0
- package/dist/fleets/actions/dock-bounds.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +64 -24
- package/dist/fleets/actions/index.d.ts.map +1 -1
- package/dist/fleets/actions/index.js +385 -334
- package/dist/fleets/actions/index.js.map +1 -1
- package/dist/fleets/actions/respawn.d.ts +38 -0
- package/dist/fleets/actions/respawn.d.ts.map +1 -0
- package/dist/fleets/actions/respawn.js +93 -0
- package/dist/fleets/actions/respawn.js.map +1 -0
- package/dist/fleets/actions/ship-import.d.ts +1 -1
- package/dist/fleets/actions/ship-import.d.ts.map +1 -1
- package/dist/fleets/actions/ship-import.js +67 -91
- package/dist/fleets/actions/ship-import.js.map +1 -1
- package/dist/fleets/cooldown.d.ts +44 -0
- package/dist/fleets/cooldown.d.ts.map +1 -0
- package/dist/fleets/cooldown.js +43 -0
- package/dist/fleets/cooldown.js.map +1 -0
- package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
- package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
- package/dist/fleets/coordinate-warp-estimate.js +46 -0
- package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
- package/dist/fleets/index.d.ts +35 -0
- package/dist/fleets/index.d.ts.map +1 -1
- package/dist/fleets/index.js +54 -12
- package/dist/fleets/index.js.map +1 -1
- package/dist/fleets/movement-arithmetic.d.ts +21 -0
- package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
- package/dist/fleets/movement-arithmetic.js +41 -0
- package/dist/fleets/movement-arithmetic.js.map +1 -0
- package/dist/fleets/subwarp-estimate.d.ts +70 -0
- package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
- package/dist/fleets/subwarp-estimate.js +38 -0
- package/dist/fleets/subwarp-estimate.js.map +1 -0
- package/dist/fleets/travel-profile.d.ts +102 -0
- package/dist/fleets/travel-profile.d.ts.map +1 -0
- package/dist/fleets/travel-profile.js +120 -0
- package/dist/fleets/travel-profile.js.map +1 -0
- package/dist/fleets/warp-lane-estimate.d.ts +59 -0
- package/dist/fleets/warp-lane-estimate.d.ts.map +1 -0
- package/dist/fleets/warp-lane-estimate.js +36 -0
- package/dist/fleets/warp-lane-estimate.js.map +1 -0
- package/dist/fleets/warp-lane-policy.d.ts +68 -0
- package/dist/fleets/warp-lane-policy.d.ts.map +1 -0
- package/dist/fleets/warp-lane-policy.js +91 -0
- package/dist/fleets/warp-lane-policy.js.map +1 -0
- package/dist/fleets/warp-lane-toll.d.ts +55 -0
- package/dist/fleets/warp-lane-toll.d.ts.map +1 -0
- package/dist/fleets/warp-lane-toll.js +79 -0
- package/dist/fleets/warp-lane-toll.js.map +1 -0
- package/dist/identity/actions/create-profile.d.ts +1 -1
- package/dist/identity/actions/create-profile.d.ts.map +1 -1
- package/dist/identity/actions/create-profile.js +2 -2
- package/dist/identity/actions/create-profile.js.map +1 -1
- package/dist/identity/actions/index.d.ts +4 -4
- package/dist/identity/actions/index.d.ts.map +1 -1
- package/dist/identity/actions/index.js +51 -29
- package/dist/identity/actions/index.js.map +1 -1
- package/dist/identity/index.d.ts +5 -2
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +6 -12
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/research-state.d.ts +60 -0
- package/dist/identity/research-state.d.ts.map +1 -0
- package/dist/identity/research-state.js +68 -0
- package/dist/identity/research-state.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -3
- package/dist/index.js.map +1 -1
- package/dist/internal/c4/account-decoding.d.ts +49 -0
- package/dist/internal/c4/account-decoding.d.ts.map +1 -0
- package/dist/internal/c4/account-decoding.js +74 -0
- package/dist/internal/c4/account-decoding.js.map +1 -0
- package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
- package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
- package/dist/internal/c4/cargo-bytes-config.js +19 -0
- package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
- package/dist/internal/c4/cargo-pod.d.ts +15 -0
- package/dist/internal/c4/cargo-pod.d.ts.map +1 -0
- package/dist/internal/c4/cargo-pod.js +13 -0
- package/dist/internal/c4/cargo-pod.js.map +1 -0
- package/dist/internal/c4/character-modifier.d.ts +1 -1
- package/dist/internal/c4/character-modifier.d.ts.map +1 -1
- package/dist/internal/c4/character-registration.d.ts +2 -0
- package/dist/internal/c4/character-registration.d.ts.map +1 -1
- package/dist/internal/c4/character-registration.js +2 -0
- package/dist/internal/c4/character-registration.js.map +1 -1
- package/dist/internal/c4/character.d.ts +157 -0
- package/dist/internal/c4/character.d.ts.map +1 -0
- package/dist/internal/c4/character.js +64 -0
- package/dist/internal/c4/character.js.map +1 -0
- package/dist/internal/c4/claim-stake-building-definitions.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake-building-definitions.js +2 -1
- package/dist/internal/c4/claim-stake-building-definitions.js.map +1 -1
- package/dist/internal/c4/claim-stake-configuration.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake-configuration.js +5 -36
- package/dist/internal/c4/claim-stake-configuration.js.map +1 -1
- package/dist/internal/c4/claim-stake-definitions.d.ts +4 -4
- package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake-definitions.js +2 -1
- package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
- package/dist/internal/c4/claim-stake.d.ts +4 -27
- package/dist/internal/c4/claim-stake.d.ts.map +1 -1
- package/dist/internal/c4/claim-stake.js +38 -83
- package/dist/internal/c4/claim-stake.js.map +1 -1
- package/dist/internal/c4/combat.d.ts +1 -82
- package/dist/internal/c4/combat.d.ts.map +1 -1
- package/dist/internal/c4/combat.js +16 -213
- package/dist/internal/c4/combat.js.map +1 -1
- package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
- package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
- package/dist/internal/c4/crafting-process-codec.js +34 -0
- package/dist/internal/c4/crafting-process-codec.js.map +1 -0
- package/dist/internal/c4/crafting.d.ts +25 -33
- package/dist/internal/c4/crafting.d.ts.map +1 -1
- package/dist/internal/c4/crafting.js +76 -127
- package/dist/internal/c4/crafting.js.map +1 -1
- package/dist/internal/c4/currency-cache.d.ts +6 -0
- package/dist/internal/c4/currency-cache.d.ts.map +1 -0
- package/dist/internal/c4/currency-cache.js +27 -0
- package/dist/internal/c4/currency-cache.js.map +1 -0
- package/dist/internal/c4/discriminators.d.ts +81 -0
- package/dist/internal/c4/discriminators.d.ts.map +1 -0
- package/dist/internal/c4/discriminators.js +166 -0
- package/dist/internal/c4/discriminators.js.map +1 -0
- package/dist/internal/c4/docking-funding.d.ts +4 -0
- package/dist/internal/c4/docking-funding.d.ts.map +1 -0
- package/dist/internal/c4/docking-funding.js +11 -0
- package/dist/internal/c4/docking-funding.js.map +1 -0
- package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
- package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
- package/dist/internal/c4/faction-epoch-meter.js +26 -0
- package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
- package/dist/internal/c4/faction-treasury.d.ts +23 -0
- package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
- package/dist/internal/c4/faction-treasury.js +41 -0
- package/dist/internal/c4/faction-treasury.js.map +1 -0
- package/dist/internal/c4/faction.d.ts +21 -0
- package/dist/internal/c4/faction.d.ts.map +1 -0
- package/dist/internal/c4/faction.js +23 -0
- package/dist/internal/c4/faction.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +13 -57
- package/dist/internal/c4/factions.d.ts.map +1 -1
- package/dist/internal/c4/factions.js +79 -222
- package/dist/internal/c4/factions.js.map +1 -1
- package/dist/internal/c4/fleet-arrival.d.ts +28 -0
- package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/c4/fleet-arrival.js +42 -0
- package/dist/internal/c4/fleet-arrival.js.map +1 -0
- package/dist/internal/c4/fleet-creation.d.ts +7 -0
- package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
- package/dist/internal/c4/fleet-creation.js +171 -0
- package/dist/internal/c4/fleet-creation.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
- package/dist/internal/c4/fleet-crew-binding.js +31 -44
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
- package/dist/internal/c4/fleet-respawn.d.ts +17 -0
- package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
- package/dist/internal/c4/fleet-respawn.js +62 -0
- package/dist/internal/c4/fleet-respawn.js.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
- package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/c4/fleet-ship-assembly.js +44 -0
- package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/c4/fleet.d.ts +48 -19
- package/dist/internal/c4/fleet.d.ts.map +1 -1
- package/dist/internal/c4/fleet.js +50 -87
- package/dist/internal/c4/fleet.js.map +1 -1
- package/dist/internal/c4/game-definition-layout.d.ts +2 -0
- package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
- package/dist/internal/c4/game-definition-layout.js +4 -0
- package/dist/internal/c4/game-definition-layout.js.map +1 -1
- package/dist/internal/c4/game.d.ts +76 -30
- package/dist/internal/c4/game.d.ts.map +1 -1
- package/dist/internal/c4/game.js +173 -124
- package/dist/internal/c4/game.js.map +1 -1
- package/dist/internal/c4/identity.d.ts +3 -152
- package/dist/internal/c4/identity.d.ts.map +1 -1
- package/dist/internal/c4/identity.js +19 -126
- package/dist/internal/c4/identity.js.map +1 -1
- package/dist/internal/c4/local-market-order.d.ts +29 -0
- package/dist/internal/c4/local-market-order.d.ts.map +1 -0
- package/dist/internal/c4/local-market-order.js +46 -0
- package/dist/internal/c4/local-market-order.js.map +1 -0
- package/dist/internal/c4/loot-layout.js +1 -1
- package/dist/internal/c4/loot-layout.js.map +1 -1
- package/dist/internal/c4/loot.d.ts +87 -0
- package/dist/internal/c4/loot.d.ts.map +1 -0
- package/dist/internal/c4/loot.js +108 -0
- package/dist/internal/c4/loot.js.map +1 -0
- package/dist/internal/c4/loyalty.d.ts +0 -27
- package/dist/internal/c4/loyalty.d.ts.map +1 -1
- package/dist/internal/c4/loyalty.js +32 -160
- package/dist/internal/c4/loyalty.js.map +1 -1
- package/dist/internal/c4/market.d.ts +2 -38
- package/dist/internal/c4/market.d.ts.map +1 -1
- package/dist/internal/c4/market.js +26 -120
- package/dist/internal/c4/market.js.map +1 -1
- package/dist/internal/c4/mining-instructions.d.ts +2 -0
- package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
- package/dist/internal/c4/mining-instructions.js +3 -0
- package/dist/internal/c4/mining-instructions.js.map +1 -0
- package/dist/internal/c4/open-signal.d.ts +8 -0
- package/dist/internal/c4/open-signal.d.ts.map +1 -0
- package/dist/internal/c4/open-signal.js +37 -0
- package/dist/internal/c4/open-signal.js.map +1 -0
- package/dist/internal/c4/pda.d.ts +31 -0
- package/dist/internal/c4/pda.d.ts.map +1 -1
- package/dist/internal/c4/pda.js +60 -17
- package/dist/internal/c4/pda.js.map +1 -1
- package/dist/internal/c4/profile-faction.d.ts +2 -1
- package/dist/internal/c4/profile-faction.d.ts.map +1 -1
- package/dist/internal/c4/profile-faction.js +36 -72
- package/dist/internal/c4/profile-faction.js.map +1 -1
- package/dist/internal/c4/profile-permissions.d.ts +1 -1
- package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
- package/dist/internal/c4/profile-permissions.js +2 -1
- package/dist/internal/c4/profile-permissions.js.map +1 -1
- package/dist/internal/c4/region-geometry.d.ts +8 -0
- package/dist/internal/c4/region-geometry.d.ts.map +1 -0
- package/dist/internal/c4/region-geometry.js +43 -0
- package/dist/internal/c4/region-geometry.js.map +1 -0
- package/dist/internal/c4/rewards.d.ts +1 -61
- package/dist/internal/c4/rewards.d.ts.map +1 -1
- package/dist/internal/c4/rewards.js +23 -203
- package/dist/internal/c4/rewards.js.map +1 -1
- package/dist/internal/c4/runtime-bindings.d.ts +4 -0
- package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
- package/dist/internal/c4/runtime-bindings.js +4 -0
- package/dist/internal/c4/runtime-bindings.js.map +1 -0
- package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
- package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
- package/dist/internal/c4/scan-detection-codecs.js +3 -0
- package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
- package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
- package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
- package/dist/internal/c4/scan-lifecycle.js +235 -0
- package/dist/internal/c4/scan-lifecycle.js.map +1 -0
- package/dist/internal/c4/scanning.d.ts +1 -28
- package/dist/internal/c4/scanning.d.ts.map +1 -1
- package/dist/internal/c4/scanning.js +32 -103
- package/dist/internal/c4/scanning.js.map +1 -1
- package/dist/internal/c4/ship-import.d.ts +4 -0
- package/dist/internal/c4/ship-import.d.ts.map +1 -0
- package/dist/internal/c4/ship-import.js +13 -0
- package/dist/internal/c4/ship-import.js.map +1 -0
- package/dist/internal/c4/ship-stats.d.ts.map +1 -1
- package/dist/internal/c4/ship-stats.js +45 -43
- package/dist/internal/c4/ship-stats.js.map +1 -1
- package/dist/internal/c4/starbase.d.ts +0 -32
- package/dist/internal/c4/starbase.d.ts.map +1 -1
- package/dist/internal/c4/starbase.js +26 -136
- package/dist/internal/c4/starbase.js.map +1 -1
- package/dist/internal/c4/wallet-cargo-cache.js +2 -1
- package/dist/internal/c4/wallet-cargo-cache.js.map +1 -1
- package/dist/internal/c4/world.d.ts +36 -7
- package/dist/internal/c4/world.d.ts.map +1 -1
- package/dist/internal/c4/world.js +87 -129
- package/dist/internal/c4/world.js.map +1 -1
- package/dist/internal/cargo.d.ts +2 -0
- package/dist/internal/cargo.d.ts.map +1 -1
- package/dist/internal/cargo.js +8 -0
- package/dist/internal/cargo.js.map +1 -1
- package/dist/internal/fleet.d.ts +1 -0
- package/dist/internal/fleet.d.ts.map +1 -1
- package/dist/internal/fleet.js +3 -1
- package/dist/internal/fleet.js.map +1 -1
- package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
- package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
- package/dist/internal/loyalty-atlas-bank-state.js +10 -0
- package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
- package/dist/internal/planning/account-state.d.ts +6 -0
- package/dist/internal/planning/account-state.d.ts.map +1 -1
- package/dist/internal/planning/account-state.js +13 -0
- package/dist/internal/planning/account-state.js.map +1 -1
- package/dist/internal/planning/action-runtime.d.ts +38 -0
- package/dist/internal/planning/action-runtime.d.ts.map +1 -0
- package/dist/internal/planning/action-runtime.js +63 -0
- package/dist/internal/planning/action-runtime.js.map +1 -0
- package/dist/internal/planning/arrival-guards.d.ts +19 -0
- package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
- package/dist/internal/planning/arrival-guards.js +172 -0
- package/dist/internal/planning/arrival-guards.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +45 -37
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
- package/dist/internal/planning/authorization-adapter.js +169 -81
- package/dist/internal/planning/authorization-adapter.js.map +1 -1
- package/dist/internal/planning/character-registration-guard.d.ts +4 -0
- package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
- package/dist/internal/planning/character-registration-guard.js +59 -0
- package/dist/internal/planning/character-registration-guard.js.map +1 -0
- package/dist/internal/planning/character-registration.d.ts +23 -0
- package/dist/internal/planning/character-registration.d.ts.map +1 -0
- package/dist/internal/planning/character-registration.js +87 -0
- package/dist/internal/planning/character-registration.js.map +1 -0
- package/dist/internal/planning/currency-cache-guard.d.ts +4 -0
- package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -0
- package/dist/internal/planning/currency-cache-guard.js +33 -0
- package/dist/internal/planning/currency-cache-guard.js.map +1 -0
- package/dist/internal/planning/democracy-history.d.ts +50 -0
- package/dist/internal/planning/democracy-history.d.ts.map +1 -0
- package/dist/internal/planning/democracy-history.js +189 -0
- package/dist/internal/planning/democracy-history.js.map +1 -0
- package/dist/internal/planning/direct-options.d.ts +17 -0
- package/dist/internal/planning/direct-options.d.ts.map +1 -0
- package/dist/internal/planning/direct-options.js +43 -0
- package/dist/internal/planning/direct-options.js.map +1 -0
- package/dist/internal/planning/faction-enrollment.d.ts +0 -4
- package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
- package/dist/internal/planning/faction-enrollment.js +1 -31
- package/dist/internal/planning/faction-enrollment.js.map +1 -1
- package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
- package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
- package/dist/internal/planning/faction-trade-guards.js +15 -0
- package/dist/internal/planning/faction-trade-guards.js.map +1 -0
- package/dist/internal/planning/faction-trade-state.d.ts +16 -0
- package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
- package/dist/internal/planning/faction-trade-state.js +43 -0
- package/dist/internal/planning/faction-trade-state.js.map +1 -0
- package/dist/internal/planning/fleet-arrival.d.ts +40 -0
- package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
- package/dist/internal/planning/fleet-arrival.js +107 -0
- package/dist/internal/planning/fleet-arrival.js.map +1 -0
- package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
- package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
- package/dist/internal/planning/fleet-attack-xp.js +104 -0
- package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
- package/dist/internal/planning/fleet-creation.d.ts +30 -0
- package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
- package/dist/internal/planning/fleet-creation.js +89 -0
- package/dist/internal/planning/fleet-creation.js.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
- package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-guard.js +48 -0
- package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
- package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
- package/dist/internal/planning/fleet-crew-transfer.js +123 -0
- package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
- package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-dock-funding-guard.js +209 -0
- package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
- package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
- package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
- package/dist/internal/planning/fleet-dock-funding.js +154 -0
- package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
- package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
- package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
- package/dist/internal/planning/fleet-docking-guard.js +43 -0
- package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
- package/dist/internal/planning/fleet-docking.d.ts +10 -0
- package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
- package/dist/internal/planning/fleet-docking.js +71 -0
- package/dist/internal/planning/fleet-docking.js.map +1 -0
- package/dist/internal/planning/fleet-respawn.d.ts +28 -0
- package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
- package/dist/internal/planning/fleet-respawn.js +164 -0
- package/dist/internal/planning/fleet-respawn.js.map +1 -0
- package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
- package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
- package/dist/internal/planning/fleet-ship-assembly.js +118 -0
- package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
- package/dist/internal/planning/fleet-state.d.ts +25 -0
- package/dist/internal/planning/fleet-state.d.ts.map +1 -0
- package/dist/internal/planning/fleet-state.js +28 -0
- package/dist/internal/planning/fleet-state.js.map +1 -0
- package/dist/internal/planning/governance-fees.d.ts +64 -0
- package/dist/internal/planning/governance-fees.d.ts.map +1 -0
- package/dist/internal/planning/governance-fees.js +231 -0
- package/dist/internal/planning/governance-fees.js.map +1 -0
- package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
- package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
- package/dist/internal/planning/local-market-order-funding.js +128 -0
- package/dist/internal/planning/local-market-order-funding.js.map +1 -0
- package/dist/internal/planning/local-market-order.d.ts +40 -0
- package/dist/internal/planning/local-market-order.d.ts.map +1 -0
- package/dist/internal/planning/local-market-order.js +139 -0
- package/dist/internal/planning/local-market-order.js.map +1 -0
- package/dist/internal/planning/mining-stop.d.ts +14 -0
- package/dist/internal/planning/mining-stop.d.ts.map +1 -0
- package/dist/internal/planning/mining-stop.js +42 -0
- package/dist/internal/planning/mining-stop.js.map +1 -0
- package/dist/internal/planning/movement-character.d.ts +7 -0
- package/dist/internal/planning/movement-character.d.ts.map +1 -0
- package/dist/internal/planning/movement-character.js +41 -0
- package/dist/internal/planning/movement-character.js.map +1 -0
- package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
- package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
- package/dist/internal/planning/movement-xp-guard.js +104 -0
- package/dist/internal/planning/movement-xp-guard.js.map +1 -0
- package/dist/internal/planning/open-signal-guard.d.ts +3 -0
- package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
- package/dist/internal/planning/open-signal-guard.js +32 -0
- package/dist/internal/planning/open-signal-guard.js.map +1 -0
- package/dist/internal/planning/open-signal.d.ts +31 -0
- package/dist/internal/planning/open-signal.d.ts.map +1 -0
- package/dist/internal/planning/open-signal.js +85 -0
- package/dist/internal/planning/open-signal.js.map +1 -0
- package/dist/internal/planning/original-token.d.ts +40 -0
- package/dist/internal/planning/original-token.d.ts.map +1 -0
- package/dist/internal/planning/original-token.js +112 -0
- package/dist/internal/planning/original-token.js.map +1 -0
- package/dist/internal/planning/own-starbase-facts.d.ts +33 -0
- package/dist/internal/planning/own-starbase-facts.d.ts.map +1 -0
- package/dist/internal/planning/own-starbase-facts.js +49 -0
- package/dist/internal/planning/own-starbase-facts.js.map +1 -0
- package/dist/internal/planning/plan-fields.d.ts +60 -0
- package/dist/internal/planning/plan-fields.d.ts.map +1 -0
- package/dist/internal/planning/plan-fields.js +159 -0
- package/dist/internal/planning/plan-fields.js.map +1 -0
- package/dist/internal/planning/plan-guards.d.ts +4 -0
- package/dist/internal/planning/plan-guards.d.ts.map +1 -0
- package/dist/internal/planning/plan-guards.js +168 -0
- package/dist/internal/planning/plan-guards.js.map +1 -0
- package/dist/internal/planning/profile-key.d.ts +13 -0
- package/dist/internal/planning/profile-key.d.ts.map +1 -0
- package/dist/internal/planning/profile-key.js +20 -0
- package/dist/internal/planning/profile-key.js.map +1 -0
- package/dist/internal/planning/recipe-state.d.ts +6 -0
- package/dist/internal/planning/recipe-state.d.ts.map +1 -0
- package/dist/internal/planning/recipe-state.js +20 -0
- package/dist/internal/planning/recipe-state.js.map +1 -0
- package/dist/internal/planning/rent.d.ts +19 -0
- package/dist/internal/planning/rent.d.ts.map +1 -0
- package/dist/internal/planning/rent.js +35 -0
- package/dist/internal/planning/rent.js.map +1 -0
- package/dist/internal/planning/respawn-guards.d.ts +3 -0
- package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
- package/dist/internal/planning/respawn-guards.js +42 -0
- package/dist/internal/planning/respawn-guards.js.map +1 -0
- package/dist/internal/planning/runtime-guards.d.ts +41 -0
- package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
- package/dist/internal/planning/runtime-guards.js +640 -0
- package/dist/internal/planning/runtime-guards.js.map +1 -0
- package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
- package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion-guard.js +95 -0
- package/dist/internal/planning/scan-completion-guard.js.map +1 -0
- package/dist/internal/planning/scan-completion.d.ts +20 -0
- package/dist/internal/planning/scan-completion.d.ts.map +1 -0
- package/dist/internal/planning/scan-completion.js +197 -0
- package/dist/internal/planning/scan-completion.js.map +1 -0
- package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
- package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
- package/dist/internal/planning/scan-detect-guard.js +77 -0
- package/dist/internal/planning/scan-detect-guard.js.map +1 -0
- package/dist/internal/planning/scan-detect.d.ts +24 -0
- package/dist/internal/planning/scan-detect.d.ts.map +1 -0
- package/dist/internal/planning/scan-detect.js +245 -0
- package/dist/internal/planning/scan-detect.js.map +1 -0
- package/dist/internal/planning/scan-input.d.ts +9 -0
- package/dist/internal/planning/scan-input.d.ts.map +1 -0
- package/dist/internal/planning/scan-input.js +58 -0
- package/dist/internal/planning/scan-input.js.map +1 -0
- package/dist/internal/planning/ship-import-funding.d.ts +22 -0
- package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
- package/dist/internal/planning/ship-import-funding.js +53 -0
- package/dist/internal/planning/ship-import-funding.js.map +1 -0
- package/dist/internal/planning/ship-token.d.ts +1 -6
- package/dist/internal/planning/ship-token.d.ts.map +1 -1
- package/dist/internal/planning/ship-token.js +2 -41
- package/dist/internal/planning/ship-token.js.map +1 -1
- package/dist/internal/planning/starbase-player-owner.d.ts +21 -0
- package/dist/internal/planning/starbase-player-owner.d.ts.map +1 -0
- package/dist/internal/planning/starbase-player-owner.js +17 -0
- package/dist/internal/planning/starbase-player-owner.js.map +1 -0
- package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
- package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system-guard.js +94 -0
- package/dist/internal/planning/starbase-system-guard.js.map +1 -0
- package/dist/internal/planning/starbase-system.d.ts +15 -0
- package/dist/internal/planning/starbase-system.d.ts.map +1 -0
- package/dist/internal/planning/starbase-system.js +25 -0
- package/dist/internal/planning/starbase-system.js.map +1 -0
- package/dist/internal/planning/token-mint.d.ts +4 -0
- package/dist/internal/planning/token-mint.d.ts.map +1 -0
- package/dist/internal/planning/token-mint.js +16 -0
- package/dist/internal/planning/token-mint.js.map +1 -0
- package/dist/internal/planning/trade-faction-market.d.ts +20 -0
- package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
- package/dist/internal/planning/trade-faction-market.js +56 -0
- package/dist/internal/planning/trade-faction-market.js.map +1 -0
- package/dist/internal/planning/wallet-starbase.d.ts +34 -0
- package/dist/internal/planning/wallet-starbase.d.ts.map +1 -0
- package/dist/internal/planning/wallet-starbase.js +39 -0
- package/dist/internal/planning/wallet-starbase.js.map +1 -0
- package/dist/internal/planning/xp-runtime.d.ts +36 -0
- package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
- package/dist/internal/planning/xp-runtime.js +117 -0
- package/dist/internal/planning/xp-runtime.js.map +1 -0
- package/dist/internal/read-meta.d.ts +12 -0
- package/dist/internal/read-meta.d.ts.map +1 -1
- package/dist/internal/read-meta.js +10 -0
- package/dist/internal/read-meta.js.map +1 -1
- package/dist/internal/system-program.d.ts +4 -0
- package/dist/internal/system-program.d.ts.map +1 -0
- package/dist/internal/system-program.js +3 -0
- package/dist/internal/system-program.js.map +1 -0
- package/dist/loyalty/actions/index.d.ts +1 -1
- package/dist/loyalty/actions/index.d.ts.map +1 -1
- package/dist/loyalty/actions/index.js +15 -45
- package/dist/loyalty/actions/index.js.map +1 -1
- package/dist/loyalty/index.d.ts.map +1 -1
- package/dist/loyalty/index.js +6 -18
- package/dist/loyalty/index.js.map +1 -1
- package/dist/markets/actions/index.d.ts +62 -4
- package/dist/markets/actions/index.d.ts.map +1 -1
- package/dist/markets/actions/index.js +230 -178
- package/dist/markets/actions/index.js.map +1 -1
- package/dist/markets/actions/trade-faction-market.d.ts +43 -0
- package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
- package/dist/markets/actions/trade-faction-market.js +277 -0
- package/dist/markets/actions/trade-faction-market.js.map +1 -0
- package/dist/markets/index.d.ts +38 -7
- package/dist/markets/index.d.ts.map +1 -1
- package/dist/markets/index.js +59 -20
- package/dist/markets/index.js.map +1 -1
- package/dist/mining/actions/index.d.ts +87 -0
- package/dist/mining/actions/index.d.ts.map +1 -0
- package/dist/mining/actions/index.js +319 -0
- package/dist/mining/actions/index.js.map +1 -0
- package/dist/mining/estimate.d.ts +114 -0
- package/dist/mining/estimate.d.ts.map +1 -0
- package/dist/mining/estimate.js +127 -0
- package/dist/mining/estimate.js.map +1 -0
- package/dist/mining/index.d.ts +9 -2
- package/dist/mining/index.d.ts.map +1 -1
- package/dist/mining/index.js +10 -13
- package/dist/mining/index.js.map +1 -1
- package/dist/mining/profile.d.ts +82 -0
- package/dist/mining/profile.d.ts.map +1 -0
- package/dist/mining/profile.js +109 -0
- package/dist/mining/profile.js.map +1 -0
- package/dist/planning/assembly.d.ts +6 -1
- package/dist/planning/assembly.d.ts.map +1 -1
- package/dist/planning/assembly.js +12 -8
- package/dist/planning/assembly.js.map +1 -1
- package/dist/planning/execution.d.ts +19 -3
- package/dist/planning/execution.d.ts.map +1 -1
- package/dist/planning/execution.js +504 -72
- package/dist/planning/execution.js.map +1 -1
- package/dist/planning/index.d.ts +196 -149
- package/dist/planning/index.d.ts.map +1 -1
- package/dist/planning/index.js +31 -355
- package/dist/planning/index.js.map +1 -1
- package/dist/planning/plan-construction.d.ts +25 -0
- package/dist/planning/plan-construction.d.ts.map +1 -0
- package/dist/planning/plan-construction.js +143 -0
- package/dist/planning/plan-construction.js.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts +9 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -1
- package/dist/planning/plan-sequence-checkpoint.js +16 -7
- package/dist/planning/plan-sequence-checkpoint.js.map +1 -1
- package/dist/planning/plan-sequence-execution.d.ts +5 -0
- package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
- package/dist/planning/plan-sequence-execution.js +74 -40
- package/dist/planning/plan-sequence-execution.js.map +1 -1
- package/dist/planning/plan-sequence.d.ts +2 -1
- package/dist/planning/plan-sequence.d.ts.map +1 -1
- package/dist/planning/plan-sequence.js +8 -1
- package/dist/planning/plan-sequence.js.map +1 -1
- package/dist/planning/plan-validation.d.ts +17 -0
- package/dist/planning/plan-validation.d.ts.map +1 -0
- package/dist/planning/plan-validation.js +127 -0
- package/dist/planning/plan-validation.js.map +1 -0
- package/dist/planning/simulation.d.ts +25 -1
- package/dist/planning/simulation.d.ts.map +1 -1
- package/dist/planning/simulation.js +111 -11
- package/dist/planning/simulation.js.map +1 -1
- package/dist/registry/cargo.d.ts +7 -12
- package/dist/registry/cargo.d.ts.map +1 -1
- package/dist/registry/cargo.js +20 -20
- package/dist/registry/cargo.js.map +1 -1
- package/dist/registry/docking.d.ts +10 -0
- package/dist/registry/docking.d.ts.map +1 -0
- package/dist/registry/docking.js +12 -0
- package/dist/registry/docking.js.map +1 -0
- package/dist/registry/index.d.ts +4 -0
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +190 -224
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/onboarding.d.ts +10 -2
- package/dist/registry/onboarding.d.ts.map +1 -1
- package/dist/registry/onboarding.js +20 -7
- package/dist/registry/onboarding.js.map +1 -1
- package/dist/registry/scanning.d.ts +7 -0
- package/dist/registry/scanning.d.ts.map +1 -0
- package/dist/registry/scanning.js +13 -0
- package/dist/registry/scanning.js.map +1 -0
- package/dist/registry/ship-stats-snapshot.js +19 -19
- package/dist/registry/ship-stats-snapshot.js.map +1 -1
- package/dist/registry/ships.d.ts +22 -2
- package/dist/registry/ships.d.ts.map +1 -1
- package/dist/registry/ships.js +31 -4
- package/dist/registry/ships.js.map +1 -1
- package/dist/registry/xp-runtime.d.ts +4 -0
- package/dist/registry/xp-runtime.d.ts.map +1 -0
- package/dist/registry/xp-runtime.js +14 -0
- package/dist/registry/xp-runtime.js.map +1 -0
- package/dist/rewards/index.d.ts +11 -5
- package/dist/rewards/index.d.ts.map +1 -1
- package/dist/rewards/index.js +10 -21
- package/dist/rewards/index.js.map +1 -1
- package/dist/scanning/actions/index.d.ts +116 -0
- package/dist/scanning/actions/index.d.ts.map +1 -0
- package/dist/scanning/actions/index.js +191 -0
- package/dist/scanning/actions/index.js.map +1 -0
- package/dist/scanning/index.d.ts +5 -2
- package/dist/scanning/index.d.ts.map +1 -1
- package/dist/scanning/index.js +17 -21
- package/dist/scanning/index.js.map +1 -1
- package/dist/scanning/lifecycle.d.ts +77 -0
- package/dist/scanning/lifecycle.d.ts.map +1 -0
- package/dist/scanning/lifecycle.js +93 -0
- package/dist/scanning/lifecycle.js.map +1 -0
- package/dist/scanning/odds.d.ts +111 -0
- package/dist/scanning/odds.d.ts.map +1 -0
- package/dist/scanning/odds.js +294 -0
- package/dist/scanning/odds.js.map +1 -0
- package/dist/scanning/signals.d.ts +121 -0
- package/dist/scanning/signals.d.ts.map +1 -0
- package/dist/scanning/signals.js +171 -0
- package/dist/scanning/signals.js.map +1 -0
- package/dist/starbases/actions/index.d.ts +1 -1
- package/dist/starbases/actions/index.d.ts.map +1 -1
- package/dist/starbases/actions/index.js +16 -58
- package/dist/starbases/actions/index.js.map +1 -1
- package/dist/starbases/index.d.ts.map +1 -1
- package/dist/starbases/index.js +3 -11
- package/dist/starbases/index.js.map +1 -1
- package/dist/world/index.d.ts +110 -5
- package/dist/world/index.d.ts.map +1 -1
- package/dist/world/index.js +112 -15
- package/dist/world/index.js.map +1 -1
- package/dist/world/planet-claim-stake-plots.d.ts +130 -0
- package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
- package/dist/world/planet-claim-stake-plots.js +110 -0
- package/dist/world/planet-claim-stake-plots.js.map +1 -0
- package/dist/world/starbase-status.d.ts +176 -0
- package/dist/world/starbase-status.d.ts.map +1 -0
- package/dist/world/starbase-status.js +153 -0
- package/dist/world/starbase-status.js.map +1 -0
- package/package.json +10 -2
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/** One selected Asteroid resource, using translated storage units rather than encoded fixed point.
|
|
2
|
+
* `runtimeMultiplier` is the caller's effective multiplier, including any applicable
|
|
3
|
+
* crew/research effects. No modifier composition or eligibility is inferred.
|
|
4
|
+
* @example
|
|
5
|
+
* ```ts
|
|
6
|
+
* const resource: MiningEstimateResourceInput = {
|
|
7
|
+
* cargoId: 300, richness: 2, storageCost: 2, runtimeMultiplier: 1.5,
|
|
8
|
+
* };
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface MiningEstimateResourceInput {
|
|
12
|
+
readonly cargoId: number;
|
|
13
|
+
readonly richness: number;
|
|
14
|
+
readonly storageCost: number;
|
|
15
|
+
readonly runtimeMultiplier: number;
|
|
16
|
+
}
|
|
17
|
+
/** Explicit constant-rate Asteroid scenario. Balances and rates use cargo units;
|
|
18
|
+
* capacity, occupancy and storage costs use translated storage units. Occupancy
|
|
19
|
+
* includes all available Food; Ammo is held separately and frees no cargo space.
|
|
20
|
+
* Supply all 1–8 selected resources, including zero-yield rows. Fleet rate already
|
|
21
|
+
* includes ship/component effects: do not apply those again in the multipliers.
|
|
22
|
+
* @example
|
|
23
|
+
* ```ts
|
|
24
|
+
* const input: MiningEstimateInput = {
|
|
25
|
+
* fleetUnitsPerSecond: 2, durationSeconds: 60,
|
|
26
|
+
* resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
|
|
27
|
+
* cargo: { occupiedSpace: 10, capacity: 100 },
|
|
28
|
+
* food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
|
|
29
|
+
* ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
|
|
30
|
+
* };
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface MiningEstimateInput {
|
|
34
|
+
readonly fleetUnitsPerSecond: number;
|
|
35
|
+
/** Requested duration; the result reports the clipped duration. */
|
|
36
|
+
readonly durationSeconds: number;
|
|
37
|
+
readonly resources: readonly MiningEstimateResourceInput[];
|
|
38
|
+
readonly cargo: {
|
|
39
|
+
readonly occupiedSpace: number;
|
|
40
|
+
readonly capacity: number;
|
|
41
|
+
};
|
|
42
|
+
readonly food: {
|
|
43
|
+
readonly availableUnits: number;
|
|
44
|
+
readonly burnUnitsPerSecond: number;
|
|
45
|
+
readonly storageCost: number;
|
|
46
|
+
};
|
|
47
|
+
readonly ammo: {
|
|
48
|
+
readonly availableUnits: number;
|
|
49
|
+
readonly burnUnitsPerSecond: number;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/** Constraints reached at the end of an estimate; simultaneous limits are retained.
|
|
53
|
+
* @example
|
|
54
|
+
* ```ts
|
|
55
|
+
* const reason: MiningEstimateLimit = 'food';
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export type MiningEstimateLimit = 'duration' | 'food' | 'ammo' | 'cargo' | 'no-output';
|
|
59
|
+
/** Immutable, JSON-safe constant-rate estimate, not a settlement guarantee.
|
|
60
|
+
* Projected quantities are fractional numbers; chain rounding, changing state,
|
|
61
|
+
* eligibility and tick ordering are excluded. A null limit means unbounded by
|
|
62
|
+
* that constraint, never an unknown balance. No-output scenarios run for zero time
|
|
63
|
+
* and project no upkeep. An initially full hold conservatively permits no mining,
|
|
64
|
+
* even when Food outflow could offset output: tick ordering is not established.
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* declare const estimate: MiningEstimate;
|
|
68
|
+
* console.log(estimate.durationSeconds, estimate.limitingFactors);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export interface MiningEstimate {
|
|
72
|
+
readonly basis: 'official-model-estimate';
|
|
73
|
+
/** Requested duration clipped to the modeled limits, in seconds. */
|
|
74
|
+
readonly durationSeconds: number;
|
|
75
|
+
readonly outputs: readonly {
|
|
76
|
+
readonly cargoId: number;
|
|
77
|
+
readonly unitsPerSecond: number;
|
|
78
|
+
readonly projectedUnits: number;
|
|
79
|
+
}[];
|
|
80
|
+
readonly resourceVolumeInflowPerSecond: number;
|
|
81
|
+
readonly foodVolumeOutflowPerSecond: number;
|
|
82
|
+
/** May be negative when Food consumption frees more space than mining uses. */
|
|
83
|
+
readonly netCargoGrowthPerSecond: number;
|
|
84
|
+
readonly limitsSeconds: {
|
|
85
|
+
readonly food: number | null;
|
|
86
|
+
readonly ammo: number | null;
|
|
87
|
+
readonly cargo: number | null;
|
|
88
|
+
};
|
|
89
|
+
readonly limitingFactors: readonly MiningEstimateLimit[];
|
|
90
|
+
readonly consumedFoodUnits: number;
|
|
91
|
+
readonly consumedAmmoUnits: number;
|
|
92
|
+
readonly finalOccupiedSpace: number;
|
|
93
|
+
}
|
|
94
|
+
/** Estimates constant-rate Asteroid output, clipping duration to Food, Ammo and
|
|
95
|
+
* cargo capacity. Each rate is Fleet rate / selected count × richness × explicit
|
|
96
|
+
* effective runtime multiplier. Food consumption offsets volume growth while
|
|
97
|
+
* mining; Ammo does not. Hardness is absent from the official current C4 model.
|
|
98
|
+
* This is pure: it neither reads accounts nor validates resource eligibility.
|
|
99
|
+
* @throws InvalidDerivationInputError for invalid selections, inconsistent cargo
|
|
100
|
+
* occupancy, negative/nonfinite values or arithmetic overflow.
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* const estimate = deriveMiningEstimate({
|
|
104
|
+
* fleetUnitsPerSecond: 2, durationSeconds: 60,
|
|
105
|
+
* resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
|
|
106
|
+
* cargo: { occupiedSpace: 10, capacity: 100 },
|
|
107
|
+
* food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
|
|
108
|
+
* ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
|
|
109
|
+
* });
|
|
110
|
+
* console.log(estimate.outputs, estimate.limitingFactors);
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function deriveMiningEstimate(input: MiningEstimateInput): MiningEstimate;
|
|
114
|
+
//# sourceMappingURL=estimate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/mining/estimate.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;KACrC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC7B,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;KACjC,EAAE,CAAC;IACJ,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,mBAAmB,GACzB,cAAc,CAmLhB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { InvalidDerivationInputError } from '../client/errors.js';
|
|
2
|
+
import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
|
|
3
|
+
function checked(field, value) {
|
|
4
|
+
if (!Number.isFinite(value) || value < 0) {
|
|
5
|
+
throw new InvalidDerivationInputError(field, value, 'Supply finite, nonnegative mining inputs whose calculated rates, quantities and time limits remain finite.');
|
|
6
|
+
}
|
|
7
|
+
return value;
|
|
8
|
+
}
|
|
9
|
+
function invalid(field, value, remedy) {
|
|
10
|
+
throw new InvalidDerivationInputError(field, value, remedy);
|
|
11
|
+
}
|
|
12
|
+
/** Estimates constant-rate Asteroid output, clipping duration to Food, Ammo and
|
|
13
|
+
* cargo capacity. Each rate is Fleet rate / selected count × richness × explicit
|
|
14
|
+
* effective runtime multiplier. Food consumption offsets volume growth while
|
|
15
|
+
* mining; Ammo does not. Hardness is absent from the official current C4 model.
|
|
16
|
+
* This is pure: it neither reads accounts nor validates resource eligibility.
|
|
17
|
+
* @throws InvalidDerivationInputError for invalid selections, inconsistent cargo
|
|
18
|
+
* occupancy, negative/nonfinite values or arithmetic overflow.
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* const estimate = deriveMiningEstimate({
|
|
22
|
+
* fleetUnitsPerSecond: 2, durationSeconds: 60,
|
|
23
|
+
* resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
|
|
24
|
+
* cargo: { occupiedSpace: 10, capacity: 100 },
|
|
25
|
+
* food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
|
|
26
|
+
* ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
|
|
27
|
+
* });
|
|
28
|
+
* console.log(estimate.outputs, estimate.limitingFactors);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function deriveMiningEstimate(input) {
|
|
32
|
+
const base = checked('Fleet mining units per second', input.fleetUnitsPerSecond);
|
|
33
|
+
const requested = checked('Mining duration seconds', input.durationSeconds);
|
|
34
|
+
const count = input.resources.length;
|
|
35
|
+
if (count < 1 || count > 8)
|
|
36
|
+
invalid('Selected resource count', count, 'Select between one and eight distinct Asteroid resources.');
|
|
37
|
+
const seen = new Set();
|
|
38
|
+
const rates = Array.from(input.resources, (resource, index) => {
|
|
39
|
+
if (resource === null || typeof resource !== 'object') {
|
|
40
|
+
invalid('Selected resource index', index, 'Supply a dense list of resource objects with explicit numeric inputs.');
|
|
41
|
+
}
|
|
42
|
+
const id = resource.cargoId;
|
|
43
|
+
if (!Number.isInteger(id) || id < 0 || id > 65535 || seen.has(id)) {
|
|
44
|
+
invalid('Selected cargo id', id, 'Supply distinct integer cargo ids between 0 and 65535 from the Asteroid deposit.');
|
|
45
|
+
}
|
|
46
|
+
seen.add(id);
|
|
47
|
+
const richness = checked('Resource richness', resource.richness);
|
|
48
|
+
const multiplier = checked('Resource runtime multiplier', resource.runtimeMultiplier);
|
|
49
|
+
const storageCost = checked('Resource storage cost', resource.storageCost);
|
|
50
|
+
const unitsPerSecond = checked('Resource output rate', checked('Richness-adjusted output rate', (base / count) * richness) *
|
|
51
|
+
multiplier);
|
|
52
|
+
return {
|
|
53
|
+
cargoId: id,
|
|
54
|
+
unitsPerSecond,
|
|
55
|
+
volume: checked('Resource volume inflow', unitsPerSecond * storageCost),
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
const capacity = checked('Cargo capacity', input.cargo.capacity);
|
|
59
|
+
const occupied = checked('Occupied cargo space', input.cargo.occupiedSpace);
|
|
60
|
+
if (occupied > capacity)
|
|
61
|
+
invalid('Occupied cargo space', occupied, 'Supply occupancy no greater than cargo capacity.');
|
|
62
|
+
const foodAvailable = checked('Available Food units', input.food.availableUnits);
|
|
63
|
+
const foodBurn = checked('Food burn units per second', input.food.burnUnitsPerSecond);
|
|
64
|
+
const foodStorage = checked('Food storage cost', input.food.storageCost);
|
|
65
|
+
if (checked('Available Food volume', foodAvailable * foodStorage) > occupied) {
|
|
66
|
+
invalid('Occupied cargo space', occupied, 'Include the volume of all available Food in occupied cargo space.');
|
|
67
|
+
}
|
|
68
|
+
const ammoAvailable = checked('Available Ammo units', input.ammo.availableUnits);
|
|
69
|
+
const ammoBurn = checked('Ammo burn units per second', input.ammo.burnUnitsPerSecond);
|
|
70
|
+
const resourceVolumeInflowPerSecond = rates.reduce((sum, row) => checked('Total resource volume inflow', sum + row.volume), 0);
|
|
71
|
+
const foodVolumeOutflowPerSecond = checked('Food volume outflow', foodBurn * foodStorage);
|
|
72
|
+
const netCargoGrowthPerSecond = resourceVolumeInflowPerSecond - foodVolumeOutflowPerSecond;
|
|
73
|
+
const limitsSeconds = {
|
|
74
|
+
food: foodBurn === 0
|
|
75
|
+
? null
|
|
76
|
+
: checked('Food time limit', foodAvailable / foodBurn),
|
|
77
|
+
ammo: ammoBurn === 0
|
|
78
|
+
? null
|
|
79
|
+
: checked('Ammo time limit', ammoAvailable / ammoBurn),
|
|
80
|
+
cargo: occupied === capacity
|
|
81
|
+
? 0
|
|
82
|
+
: netCargoGrowthPerSecond > 0
|
|
83
|
+
? checked('Cargo time limit', (capacity - occupied) / netCargoGrowthPerSecond)
|
|
84
|
+
: null,
|
|
85
|
+
};
|
|
86
|
+
const constraints = [
|
|
87
|
+
['duration', requested],
|
|
88
|
+
['food', limitsSeconds.food],
|
|
89
|
+
['ammo', limitsSeconds.ammo],
|
|
90
|
+
['cargo', limitsSeconds.cargo],
|
|
91
|
+
];
|
|
92
|
+
const noOutput = rates.every((row) => row.unitsPerSecond === 0);
|
|
93
|
+
const durationSeconds = noOutput
|
|
94
|
+
? 0
|
|
95
|
+
: Math.min(...constraints.flatMap(([, seconds]) => seconds === null ? [] : [seconds]));
|
|
96
|
+
const tolerance = Math.max(1e-9, durationSeconds * 1e-9);
|
|
97
|
+
const limitingFactors = noOutput
|
|
98
|
+
? ['no-output']
|
|
99
|
+
: constraints
|
|
100
|
+
.filter(([, seconds]) => seconds !== null &&
|
|
101
|
+
Math.abs(seconds - durationSeconds) <= tolerance)
|
|
102
|
+
.map(([reason]) => reason);
|
|
103
|
+
const consumedFoodUnits = checked('Consumed Food units', foodBurn * durationSeconds);
|
|
104
|
+
const consumedAmmoUnits = checked('Consumed Ammo units', ammoBurn * durationSeconds);
|
|
105
|
+
const inflow = checked('Projected cargo inflow', resourceVolumeInflowPerSecond * durationSeconds);
|
|
106
|
+
const outflow = checked('Projected Food outflow', foodVolumeOutflowPerSecond * durationSeconds);
|
|
107
|
+
// Subtract Food first to avoid overflowing a temporary sum near Number.MAX_VALUE.
|
|
108
|
+
const finalOccupiedSpace = Math.min(capacity, checked('Projected occupied cargo space', Math.max(0, occupied - outflow) + inflow));
|
|
109
|
+
return freezeResolvedSnapshot({
|
|
110
|
+
basis: 'official-model-estimate',
|
|
111
|
+
durationSeconds,
|
|
112
|
+
outputs: rates.map(({ cargoId, unitsPerSecond }) => ({
|
|
113
|
+
cargoId,
|
|
114
|
+
unitsPerSecond,
|
|
115
|
+
projectedUnits: checked('Projected resource units', unitsPerSecond * durationSeconds),
|
|
116
|
+
})),
|
|
117
|
+
resourceVolumeInflowPerSecond,
|
|
118
|
+
foodVolumeOutflowPerSecond,
|
|
119
|
+
netCargoGrowthPerSecond,
|
|
120
|
+
limitsSeconds,
|
|
121
|
+
limitingFactors,
|
|
122
|
+
consumedFoodUnits,
|
|
123
|
+
consumedAmmoUnits,
|
|
124
|
+
finalOccupiedSpace,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=estimate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../src/mining/estimate.ts"],"names":[],"mappings":"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"}
|
package/dist/mining/index.d.ts
CHANGED
|
@@ -43,7 +43,7 @@ export interface MiningOutputRateInput {
|
|
|
43
43
|
readonly cargoId: number;
|
|
44
44
|
readonly richness: number;
|
|
45
45
|
}
|
|
46
|
-
/** One
|
|
46
|
+
/** One nominal resource output after sharing Fleet capacity and applying richness.
|
|
47
47
|
* @example
|
|
48
48
|
* ```ts
|
|
49
49
|
* const rate: MiningOutputRate = { cargoId: 8, unitsPerSecond: 4.5 };
|
|
@@ -61,6 +61,7 @@ export interface MiningOutputRate {
|
|
|
61
61
|
* ```
|
|
62
62
|
*/
|
|
63
63
|
export interface FleetMiningOutput extends ResourceDepositItem {
|
|
64
|
+
/** Nominal cargo units per second, with Fleet capacity shared among selected resources. */
|
|
64
65
|
readonly unitsPerSecond: number;
|
|
65
66
|
}
|
|
66
67
|
/** Immutable current extraction relationship for one active mining Fleet.
|
|
@@ -77,6 +78,7 @@ export interface FleetMiningSnapshot {
|
|
|
77
78
|
readonly asteroid: EntityRef<'celestialBody'>;
|
|
78
79
|
readonly lastUpdatedAtUnixSeconds: bigint;
|
|
79
80
|
readonly regionXpModifier: WorldFixedValue;
|
|
81
|
+
/** Fleet base rate before sharing among selected resources and applying richness. */
|
|
80
82
|
readonly miningRate: {
|
|
81
83
|
readonly raw: bigint;
|
|
82
84
|
readonly unitsPerSecond: number;
|
|
@@ -121,7 +123,10 @@ export declare function maybeGetResourceDeposit(context: SageContext, asteroid:
|
|
|
121
123
|
* ```
|
|
122
124
|
*/
|
|
123
125
|
export declare function deriveMiningStateAgeSeconds(lastUpdatedAtUnixSeconds: bigint, atUnixSeconds: bigint): number;
|
|
124
|
-
/**
|
|
126
|
+
/** Shares Fleet units/second equally among selected resources, then applies richness.
|
|
127
|
+
* Supply the complete selected resource list, including zero-richness selections.
|
|
128
|
+
* An empty selection returns no rates. Results are nominal estimates; cargo
|
|
129
|
+
* limits, upkeep and whole-unit settlement remain chain-authoritative.
|
|
125
130
|
* @example
|
|
126
131
|
* ```ts
|
|
127
132
|
* const rates = deriveMiningOutputRates(2, [{ cargoId: 8, richness: 1.5 }]);
|
|
@@ -153,4 +158,6 @@ export declare function getFleetMiningState(context: SageContext, fleet: Address
|
|
|
153
158
|
* ```
|
|
154
159
|
*/
|
|
155
160
|
export declare function getFleetMiningStatesByOwner(context: SageContext, owner: Address, options?: MiningDiscoveryOptions): Promise<readonly FleetMiningSnapshot[]>;
|
|
161
|
+
export { deriveMiningEstimate, type MiningEstimate, type MiningEstimateInput, type MiningEstimateLimit, type MiningEstimateResourceInput, } from './estimate.js';
|
|
162
|
+
export { deriveMiningProfile, type MiningProfile, type MiningProfileInput, } from './profile.js';
|
|
156
163
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mining/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mining/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mining/index.js
CHANGED
|
@@ -3,19 +3,11 @@ import { celestialBodyAccountDefinition, deriveCelestialBodyAddress, } from '../
|
|
|
3
3
|
import { assertCanonicalFleetAddress, discoverFleetAccounts, fleetAccountDefinition, } from '../internal/c4/fleet.js';
|
|
4
4
|
import { requireGameAddress } from '../internal/game-context.js';
|
|
5
5
|
import { attachJsonSerialization } from '../internal/json.js';
|
|
6
|
-
import { attachReadMeta, readMeta } from '../internal/read-meta.js';
|
|
6
|
+
import { attachReadMeta, envelopeMeta, readMeta, } from '../internal/read-meta.js';
|
|
7
7
|
import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
|
|
8
8
|
import { resolveCargo, } from '../registry/index.js';
|
|
9
9
|
const DEPOSIT_SNAPSHOTS = new WeakMap();
|
|
10
10
|
const MINING_SNAPSHOTS = new WeakMap();
|
|
11
|
-
function directMetadata(envelope) {
|
|
12
|
-
return {
|
|
13
|
-
commitment: envelope.commitment,
|
|
14
|
-
slot: envelope.slot,
|
|
15
|
-
source: envelope.source,
|
|
16
|
-
strategy: 'direct',
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
11
|
function assertConfiguredGame(context, accountType, envelope) {
|
|
20
12
|
const game = requireGameAddress(context);
|
|
21
13
|
if (envelope.data.game === game)
|
|
@@ -48,7 +40,7 @@ async function createResourceDepositSnapshot(context, envelope) {
|
|
|
48
40
|
resources,
|
|
49
41
|
system: entityRef('starSystem', asteroid.system),
|
|
50
42
|
systemSequenceId: asteroid.systemSequenceId,
|
|
51
|
-
}),
|
|
43
|
+
}), envelopeMeta(envelope, 'direct')));
|
|
52
44
|
}
|
|
53
45
|
function toResourceDepositSnapshot(context, envelope) {
|
|
54
46
|
const existing = DEPOSIT_SNAPSHOTS.get(envelope);
|
|
@@ -102,7 +94,10 @@ export function deriveMiningStateAgeSeconds(lastUpdatedAtUnixSeconds, atUnixSeco
|
|
|
102
94
|
return elapsed > 0n ? Number(elapsed) : 0;
|
|
103
95
|
}
|
|
104
96
|
const MINING_DERIVATION_REMEDY = 'Mining derivations require a finite, nonnegative value. Supply a finite value greater than or equal to zero before deriving mining output.';
|
|
105
|
-
/**
|
|
97
|
+
/** Shares Fleet units/second equally among selected resources, then applies richness.
|
|
98
|
+
* Supply the complete selected resource list, including zero-richness selections.
|
|
99
|
+
* An empty selection returns no rates. Results are nominal estimates; cargo
|
|
100
|
+
* limits, upkeep and whole-unit settlement remain chain-authoritative.
|
|
106
101
|
* @example
|
|
107
102
|
* ```ts
|
|
108
103
|
* const rates = deriveMiningOutputRates(2, [{ cargoId: 8, richness: 1.5 }]);
|
|
@@ -118,7 +113,7 @@ export function deriveMiningOutputRates(fleetUnitsPerSecond, outputs) {
|
|
|
118
113
|
}
|
|
119
114
|
return Object.freeze({
|
|
120
115
|
cargoId,
|
|
121
|
-
unitsPerSecond: fleetUnitsPerSecond * richness,
|
|
116
|
+
unitsPerSecond: (fleetUnitsPerSecond / outputs.length) * richness,
|
|
122
117
|
});
|
|
123
118
|
}));
|
|
124
119
|
}
|
|
@@ -173,7 +168,7 @@ async function createFleetMiningSnapshot(context, envelope, options) {
|
|
|
173
168
|
unitsPerSecond: rates[index].unitsPerSecond,
|
|
174
169
|
}));
|
|
175
170
|
const depositMeta = readMeta(deposit);
|
|
176
|
-
const metadata =
|
|
171
|
+
const metadata = envelopeMeta(envelope, 'direct');
|
|
177
172
|
return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
|
|
178
173
|
asteroid: entityRef('celestialBody', state.asteroid),
|
|
179
174
|
fleet: entityRef('fleet', envelope.address),
|
|
@@ -233,4 +228,6 @@ export async function getFleetMiningStatesByOwner(context, owner, options) {
|
|
|
233
228
|
const states = (await Promise.all(envelopes.map((envelope) => toFleetMiningSnapshot(context, envelope, options)))).filter((state) => state !== undefined);
|
|
234
229
|
return Object.freeze(attachReadMeta(states, metadata));
|
|
235
230
|
}
|
|
231
|
+
export { deriveMiningEstimate, } from './estimate.js';
|
|
232
|
+
export { deriveMiningProfile, } from './profile.js';
|
|
236
233
|
//# sourceMappingURL=index.js.map
|
package/dist/mining/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mining/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,2BAA2B,EAC3B,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mining/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { FleetCargoStatsData } from '../internal/c4/fleet.js';
|
|
2
|
+
/** Fleet or ship configuration cargo stats plus one reference Asteroid resource.
|
|
3
|
+
* Richness and storage costs are explicit assumptions: storage costs are
|
|
4
|
+
* translated storage units per unit (an encoded 256 is 1), not raw values.
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* declare const ship: { readonly stats: MiningProfileInput['stats'] };
|
|
8
|
+
* const input: MiningProfileInput = {
|
|
9
|
+
* stats: ship.stats, richness: 1, resourceStorageCost: 1, foodStorageCost: 1,
|
|
10
|
+
* };
|
|
11
|
+
* ```
|
|
12
|
+
*/
|
|
13
|
+
export interface MiningProfileInput {
|
|
14
|
+
readonly stats: {
|
|
15
|
+
readonly cargo: Pick<FleetCargoStatsData, 'miningRate' | 'foodConsumptionRate' | 'ammoConsumptionRate' | 'cargoCapacity' | 'ammoCapacity'>;
|
|
16
|
+
};
|
|
17
|
+
readonly richness: number;
|
|
18
|
+
readonly resourceStorageCost: number;
|
|
19
|
+
readonly foodStorageCost: number;
|
|
20
|
+
}
|
|
21
|
+
/** Reference mining values for one selected resource at the given richness,
|
|
22
|
+
* with no crew, research or rare-mineral multiplier. `fullHold` starts from an
|
|
23
|
+
* empty hold carrying exactly the Food it burns and a full Ammo bank; it is
|
|
24
|
+
* null when nothing is mined, the hold has no capacity, or Food outflow would
|
|
25
|
+
* keep pace with output. Ratios are null when that consumable is not burned.
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* declare const profile: MiningProfile;
|
|
29
|
+
* console.log(profile.unitsPerHour, profile.fullHold?.durationSeconds);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export interface MiningProfile {
|
|
33
|
+
readonly basis: 'official-model-estimate';
|
|
34
|
+
readonly unitsPerSecond: number;
|
|
35
|
+
readonly unitsPerHour: number;
|
|
36
|
+
/** Resource units mined per Food burned. */
|
|
37
|
+
readonly unitsPerFood: number | null;
|
|
38
|
+
/** Resource units mined per Ammo burned. */
|
|
39
|
+
readonly unitsPerAmmo: number | null;
|
|
40
|
+
readonly fullHold: {
|
|
41
|
+
readonly durationSeconds: number;
|
|
42
|
+
readonly minedUnits: number;
|
|
43
|
+
/** Food burned, which is also the Food to carry in the hold at the start. */
|
|
44
|
+
readonly foodUnits: number;
|
|
45
|
+
readonly ammoUnits: number;
|
|
46
|
+
readonly limitedBy: 'cargo' | 'ammo';
|
|
47
|
+
} | null;
|
|
48
|
+
}
|
|
49
|
+
/** Derives reference mining values from Fleet or ship configuration stats with
|
|
50
|
+
* the official constant-rate model behind `deriveMiningEstimate`. The Fleet
|
|
51
|
+
* rate times richness gives output; `foodConsumptionRate` and
|
|
52
|
+
* `ammoConsumptionRate` are burned per second while mining, as the official
|
|
53
|
+
* SAGE Editor Suite scenario applies them.
|
|
54
|
+
*
|
|
55
|
+
* The full-hold scenario carries Food equal to rate × fill time, so the Food
|
|
56
|
+
* burned frees exactly the space it occupied and the hold fills in capacity ÷
|
|
57
|
+
* (output × storage cost) seconds, unless the Ammo bank runs out first. This is
|
|
58
|
+
* an estimate, not a settlement: fixed-point rounding, eligibility, regional
|
|
59
|
+
* research, planet-exit Fuel and changing state are excluded.
|
|
60
|
+
* @throws InvalidDerivationInputError for negative or non-finite stats or
|
|
61
|
+
* assumptions, or derived values that overflow to Infinity.
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* const profile = deriveMiningProfile({
|
|
65
|
+
* stats: {
|
|
66
|
+
* cargo: {
|
|
67
|
+
* miningRate: { raw: 16384n, value: 1 },
|
|
68
|
+
* foodConsumptionRate: { raw: 2048n, value: 0.125 },
|
|
69
|
+
* ammoConsumptionRate: { raw: 1024n, value: 0.0625 },
|
|
70
|
+
* cargoCapacity: 100n,
|
|
71
|
+
* ammoCapacity: 1000n,
|
|
72
|
+
* },
|
|
73
|
+
* },
|
|
74
|
+
* richness: 2, resourceStorageCost: 1, foodStorageCost: 1,
|
|
75
|
+
* });
|
|
76
|
+
* console.log(profile.unitsPerHour); // 7200
|
|
77
|
+
* console.log(profile.fullHold?.durationSeconds); // 50: 100 capacity / 2 per second
|
|
78
|
+
* console.log(profile.fullHold?.foodUnits); // 6.25 Food carried and burned
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function deriveMiningProfile(input: MiningProfileInput): MiningProfile;
|
|
82
|
+
//# sourceMappingURL=profile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/mining/profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,KAAK,EAAE,IAAI,CAClB,mBAAmB,EACjB,YAAY,GACZ,qBAAqB,GACrB,qBAAqB,GACrB,eAAe,GACf,cAAc,CACjB,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,6EAA6E;QAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;KACtC,GAAG,IAAI,CAAC;CACV;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAqF5E"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { InvalidDerivationInputError } from '../client/errors.js';
|
|
2
|
+
import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
|
|
3
|
+
import { deriveMiningEstimate } from './estimate.js';
|
|
4
|
+
// Every consumed stat and every returned value is checked, including when no
|
|
5
|
+
// full hold is estimated: JSON turns NaN and Infinity into null, which would be
|
|
6
|
+
// indistinguishable from the documented not-burned and no-hold nulls.
|
|
7
|
+
function checked(field, value) {
|
|
8
|
+
if (!Number.isFinite(value) || value < 0)
|
|
9
|
+
throw new InvalidDerivationInputError(field, value, 'Supply finite, nonnegative stats, richness and translated storage costs (1 for an encoded storage cost of 256) whose derived values remain finite.');
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
/** Derives reference mining values from Fleet or ship configuration stats with
|
|
13
|
+
* the official constant-rate model behind `deriveMiningEstimate`. The Fleet
|
|
14
|
+
* rate times richness gives output; `foodConsumptionRate` and
|
|
15
|
+
* `ammoConsumptionRate` are burned per second while mining, as the official
|
|
16
|
+
* SAGE Editor Suite scenario applies them.
|
|
17
|
+
*
|
|
18
|
+
* The full-hold scenario carries Food equal to rate × fill time, so the Food
|
|
19
|
+
* burned frees exactly the space it occupied and the hold fills in capacity ÷
|
|
20
|
+
* (output × storage cost) seconds, unless the Ammo bank runs out first. This is
|
|
21
|
+
* an estimate, not a settlement: fixed-point rounding, eligibility, regional
|
|
22
|
+
* research, planet-exit Fuel and changing state are excluded.
|
|
23
|
+
* @throws InvalidDerivationInputError for negative or non-finite stats or
|
|
24
|
+
* assumptions, or derived values that overflow to Infinity.
|
|
25
|
+
* @example
|
|
26
|
+
* ```ts
|
|
27
|
+
* const profile = deriveMiningProfile({
|
|
28
|
+
* stats: {
|
|
29
|
+
* cargo: {
|
|
30
|
+
* miningRate: { raw: 16384n, value: 1 },
|
|
31
|
+
* foodConsumptionRate: { raw: 2048n, value: 0.125 },
|
|
32
|
+
* ammoConsumptionRate: { raw: 1024n, value: 0.0625 },
|
|
33
|
+
* cargoCapacity: 100n,
|
|
34
|
+
* ammoCapacity: 1000n,
|
|
35
|
+
* },
|
|
36
|
+
* },
|
|
37
|
+
* richness: 2, resourceStorageCost: 1, foodStorageCost: 1,
|
|
38
|
+
* });
|
|
39
|
+
* console.log(profile.unitsPerHour); // 7200
|
|
40
|
+
* console.log(profile.fullHold?.durationSeconds); // 50: 100 capacity / 2 per second
|
|
41
|
+
* console.log(profile.fullHold?.foodUnits); // 6.25 Food carried and burned
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function deriveMiningProfile(input) {
|
|
45
|
+
const { cargo } = input.stats;
|
|
46
|
+
const richness = checked('Resource richness', input.richness);
|
|
47
|
+
const resourceStorageCost = checked('Resource storage cost', input.resourceStorageCost);
|
|
48
|
+
const foodStorageCost = checked('Food storage cost', input.foodStorageCost);
|
|
49
|
+
const rate = checked('Fleet mining units per second', cargo.miningRate.value);
|
|
50
|
+
const foodBurn = checked('Food burn units per second', cargo.foodConsumptionRate.value);
|
|
51
|
+
const ammoBurn = checked('Ammo burn units per second', cargo.ammoConsumptionRate.value);
|
|
52
|
+
const capacity = checked('Cargo capacity', Number(cargo.cargoCapacity));
|
|
53
|
+
const ammoCapacity = checked('Ammo capacity', Number(cargo.ammoCapacity));
|
|
54
|
+
const unitsPerSecond = checked('Resource output rate', rate * richness);
|
|
55
|
+
const inflow = checked('Resource volume inflow', unitsPerSecond * resourceStorageCost);
|
|
56
|
+
const foodUnits = inflow === 0
|
|
57
|
+
? 0
|
|
58
|
+
: checked('Food units per hold', (foodBurn * capacity) / inflow);
|
|
59
|
+
const foodVolume = checked('Food volume per hold', foodUnits * foodStorageCost);
|
|
60
|
+
let fullHold = null;
|
|
61
|
+
if (inflow > 0 && capacity > 0 && foodVolume < capacity) {
|
|
62
|
+
const target = capacity / inflow;
|
|
63
|
+
const estimate = deriveMiningEstimate({
|
|
64
|
+
fleetUnitsPerSecond: rate,
|
|
65
|
+
durationSeconds: target,
|
|
66
|
+
resources: [
|
|
67
|
+
{
|
|
68
|
+
cargoId: 0,
|
|
69
|
+
richness,
|
|
70
|
+
storageCost: resourceStorageCost,
|
|
71
|
+
runtimeMultiplier: 1,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
cargo: { occupiedSpace: foodVolume, capacity },
|
|
75
|
+
food: {
|
|
76
|
+
availableUnits: foodUnits,
|
|
77
|
+
burnUnitsPerSecond: foodBurn,
|
|
78
|
+
storageCost: foodStorageCost,
|
|
79
|
+
},
|
|
80
|
+
ammo: {
|
|
81
|
+
availableUnits: ammoCapacity,
|
|
82
|
+
burnUnitsPerSecond: ammoBurn,
|
|
83
|
+
},
|
|
84
|
+
});
|
|
85
|
+
const ammoLimit = estimate.limitsSeconds.ammo;
|
|
86
|
+
fullHold = {
|
|
87
|
+
durationSeconds: estimate.durationSeconds,
|
|
88
|
+
minedUnits: estimate.outputs[0].projectedUnits,
|
|
89
|
+
foodUnits: estimate.consumedFoodUnits,
|
|
90
|
+
ammoUnits: estimate.consumedAmmoUnits,
|
|
91
|
+
limitedBy: ammoLimit !== null && ammoLimit < target * (1 - 1e-9)
|
|
92
|
+
? 'ammo'
|
|
93
|
+
: 'cargo',
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return freezeResolvedSnapshot({
|
|
97
|
+
basis: 'official-model-estimate',
|
|
98
|
+
unitsPerSecond,
|
|
99
|
+
unitsPerHour: checked('Resource units per hour', unitsPerSecond * 3600),
|
|
100
|
+
unitsPerFood: foodBurn === 0
|
|
101
|
+
? null
|
|
102
|
+
: checked('Resource units per Food', unitsPerSecond / foodBurn),
|
|
103
|
+
unitsPerAmmo: ammoBurn === 0
|
|
104
|
+
? null
|
|
105
|
+
: checked('Resource units per Ammo', unitsPerSecond / ammoBurn),
|
|
106
|
+
fullHold,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/mining/profile.ts"],"names":[],"mappings":"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"}
|