@aephia/atlas-kit 0.0.0
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/LICENSE +202 -0
- package/README.md +124 -0
- package/dist/bindings.d.ts +11 -0
- package/dist/bindings.d.ts.map +1 -0
- package/dist/bindings.js +11 -0
- package/dist/bindings.js.map +1 -0
- package/dist/cargo/actions/index.d.ts +122 -0
- package/dist/cargo/actions/index.d.ts.map +1 -0
- package/dist/cargo/actions/index.js +526 -0
- package/dist/cargo/actions/index.js.map +1 -0
- package/dist/cargo/index.d.ts +77 -0
- package/dist/cargo/index.d.ts.map +1 -0
- package/dist/cargo/index.js +102 -0
- package/dist/cargo/index.js.map +1 -0
- package/dist/claim-stakes/index.d.ts +64 -0
- package/dist/claim-stakes/index.d.ts.map +1 -0
- package/dist/claim-stakes/index.js +97 -0
- package/dist/claim-stakes/index.js.map +1 -0
- package/dist/client/context.d.ts +21 -0
- package/dist/client/context.d.ts.map +1 -0
- package/dist/client/context.js +1374 -0
- package/dist/client/context.js.map +1 -0
- package/dist/client/contracts.d.ts +671 -0
- package/dist/client/contracts.d.ts.map +1 -0
- package/dist/client/contracts.js +2 -0
- package/dist/client/contracts.js.map +1 -0
- package/dist/client/deployments.d.ts +3 -0
- package/dist/client/deployments.d.ts.map +1 -0
- package/dist/client/deployments.js +2 -0
- package/dist/client/deployments.js.map +1 -0
- package/dist/client/errors.d.ts +227 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +288 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/index.d.ts +7 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/lifecycle.d.ts +4 -0
- package/dist/client/lifecycle.d.ts.map +1 -0
- package/dist/client/lifecycle.js +10 -0
- package/dist/client/lifecycle.js.map +1 -0
- package/dist/client/provider-errors.d.ts +9 -0
- package/dist/client/provider-errors.d.ts.map +1 -0
- package/dist/client/provider-errors.js +12 -0
- package/dist/client/provider-errors.js.map +1 -0
- package/dist/client/reconciliation.d.ts +10 -0
- package/dist/client/reconciliation.d.ts.map +1 -0
- package/dist/client/reconciliation.js +9 -0
- package/dist/client/reconciliation.js.map +1 -0
- package/dist/client/refs.d.ts +23 -0
- package/dist/client/refs.d.ts.map +1 -0
- package/dist/client/refs.js +12 -0
- package/dist/client/refs.js.map +1 -0
- package/dist/combat/index.d.ts +256 -0
- package/dist/combat/index.d.ts.map +1 -0
- package/dist/combat/index.js +222 -0
- package/dist/combat/index.js.map +1 -0
- package/dist/crafting/index.d.ts +308 -0
- package/dist/crafting/index.d.ts.map +1 -0
- package/dist/crafting/index.js +400 -0
- package/dist/crafting/index.js.map +1 -0
- package/dist/factions/index.d.ts +292 -0
- package/dist/factions/index.d.ts.map +1 -0
- package/dist/factions/index.js +334 -0
- package/dist/factions/index.js.map +1 -0
- package/dist/fleets/actions/index.d.ts +200 -0
- package/dist/fleets/actions/index.d.ts.map +1 -0
- package/dist/fleets/actions/index.js +854 -0
- package/dist/fleets/actions/index.js.map +1 -0
- package/dist/fleets/index.d.ts +100 -0
- package/dist/fleets/index.d.ts.map +1 -0
- package/dist/fleets/index.js +124 -0
- package/dist/fleets/index.js.map +1 -0
- package/dist/identity/index.d.ts +225 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +341 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/index.d.ts +401 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +519 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/c4/adapter.d.ts +6 -0
- package/dist/internal/c4/adapter.d.ts.map +1 -0
- package/dist/internal/c4/adapter.js +2 -0
- package/dist/internal/c4/adapter.js.map +1 -0
- package/dist/internal/c4/bindings.d.ts +4 -0
- package/dist/internal/c4/bindings.d.ts.map +1 -0
- package/dist/internal/c4/bindings.js +4 -0
- package/dist/internal/c4/bindings.js.map +1 -0
- package/dist/internal/c4/character-modifier.d.ts +5 -0
- package/dist/internal/c4/character-modifier.d.ts.map +1 -0
- package/dist/internal/c4/character-modifier.js +100 -0
- package/dist/internal/c4/character-modifier.js.map +1 -0
- package/dist/internal/c4/claim-stake.d.ts +140 -0
- package/dist/internal/c4/claim-stake.d.ts.map +1 -0
- package/dist/internal/c4/claim-stake.js +205 -0
- package/dist/internal/c4/claim-stake.js.map +1 -0
- package/dist/internal/c4/combat.d.ts +98 -0
- package/dist/internal/c4/combat.d.ts.map +1 -0
- package/dist/internal/c4/combat.js +232 -0
- package/dist/internal/c4/combat.js.map +1 -0
- package/dist/internal/c4/crafting.d.ts +170 -0
- package/dist/internal/c4/crafting.d.ts.map +1 -0
- package/dist/internal/c4/crafting.js +387 -0
- package/dist/internal/c4/crafting.js.map +1 -0
- package/dist/internal/c4/factions.d.ts +248 -0
- package/dist/internal/c4/factions.d.ts.map +1 -0
- package/dist/internal/c4/factions.js +589 -0
- package/dist/internal/c4/factions.js.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts +12 -0
- package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -0
- package/dist/internal/c4/fleet-crew-binding.js +51 -0
- package/dist/internal/c4/fleet-crew-binding.js.map +1 -0
- package/dist/internal/c4/fleet.d.ts +310 -0
- package/dist/internal/c4/fleet.d.ts.map +1 -0
- package/dist/internal/c4/fleet.js +393 -0
- package/dist/internal/c4/fleet.js.map +1 -0
- package/dist/internal/c4/game.d.ts +192 -0
- package/dist/internal/c4/game.d.ts.map +1 -0
- package/dist/internal/c4/game.js +396 -0
- package/dist/internal/c4/game.js.map +1 -0
- package/dist/internal/c4/identity.d.ts +193 -0
- package/dist/internal/c4/identity.d.ts.map +1 -0
- package/dist/internal/c4/identity.js +180 -0
- package/dist/internal/c4/identity.js.map +1 -0
- package/dist/internal/c4/loot-layout.d.ts +20 -0
- package/dist/internal/c4/loot-layout.d.ts.map +1 -0
- package/dist/internal/c4/loot-layout.js +29 -0
- package/dist/internal/c4/loot-layout.js.map +1 -0
- package/dist/internal/c4/loyalty.d.ts +102 -0
- package/dist/internal/c4/loyalty.d.ts.map +1 -0
- package/dist/internal/c4/loyalty.js +318 -0
- package/dist/internal/c4/loyalty.js.map +1 -0
- package/dist/internal/c4/market.d.ts +112 -0
- package/dist/internal/c4/market.d.ts.map +1 -0
- package/dist/internal/c4/market.js +247 -0
- package/dist/internal/c4/market.js.map +1 -0
- package/dist/internal/c4/pda.d.ts +6 -0
- package/dist/internal/c4/pda.d.ts.map +1 -0
- package/dist/internal/c4/pda.js +45 -0
- package/dist/internal/c4/pda.js.map +1 -0
- package/dist/internal/c4/profile-faction.d.ts +14 -0
- package/dist/internal/c4/profile-faction.d.ts.map +1 -0
- package/dist/internal/c4/profile-faction.js +69 -0
- package/dist/internal/c4/profile-faction.js.map +1 -0
- package/dist/internal/c4/rewards.d.ts +135 -0
- package/dist/internal/c4/rewards.d.ts.map +1 -0
- package/dist/internal/c4/rewards.js +305 -0
- package/dist/internal/c4/rewards.js.map +1 -0
- package/dist/internal/c4/scanning.d.ts +85 -0
- package/dist/internal/c4/scanning.d.ts.map +1 -0
- package/dist/internal/c4/scanning.js +180 -0
- package/dist/internal/c4/scanning.js.map +1 -0
- package/dist/internal/c4/starbase.d.ts +186 -0
- package/dist/internal/c4/starbase.d.ts.map +1 -0
- package/dist/internal/c4/starbase.js +259 -0
- package/dist/internal/c4/starbase.js.map +1 -0
- package/dist/internal/c4/world.d.ts +294 -0
- package/dist/internal/c4/world.d.ts.map +1 -0
- package/dist/internal/c4/world.js +417 -0
- package/dist/internal/c4/world.js.map +1 -0
- package/dist/internal/cargo.d.ts +65 -0
- package/dist/internal/cargo.d.ts.map +1 -0
- package/dist/internal/cargo.js +46 -0
- package/dist/internal/cargo.js.map +1 -0
- package/dist/internal/claim-stake.d.ts +31 -0
- package/dist/internal/claim-stake.d.ts.map +1 -0
- package/dist/internal/claim-stake.js +20 -0
- package/dist/internal/claim-stake.js.map +1 -0
- package/dist/internal/fleet.d.ts +165 -0
- package/dist/internal/fleet.d.ts.map +1 -0
- package/dist/internal/fleet.js +179 -0
- package/dist/internal/fleet.js.map +1 -0
- package/dist/internal/game-context.d.ts +4 -0
- package/dist/internal/game-context.d.ts.map +1 -0
- package/dist/internal/game-context.js +9 -0
- package/dist/internal/game-context.js.map +1 -0
- package/dist/internal/immutable-tree.d.ts +5 -0
- package/dist/internal/immutable-tree.d.ts.map +1 -0
- package/dist/internal/immutable-tree.js +47 -0
- package/dist/internal/immutable-tree.js.map +1 -0
- package/dist/internal/json.d.ts +7 -0
- package/dist/internal/json.d.ts.map +1 -0
- package/dist/internal/json.js +33 -0
- package/dist/internal/json.js.map +1 -0
- package/dist/internal/planning/authorization-adapter.d.ts +63 -0
- package/dist/internal/planning/authorization-adapter.d.ts.map +1 -0
- package/dist/internal/planning/authorization-adapter.js +222 -0
- package/dist/internal/planning/authorization-adapter.js.map +1 -0
- package/dist/internal/read-meta.d.ts +84 -0
- package/dist/internal/read-meta.d.ts.map +1 -0
- package/dist/internal/read-meta.js +28 -0
- package/dist/internal/read-meta.js.map +1 -0
- package/dist/internal/resolved-snapshot.d.ts +3 -0
- package/dist/internal/resolved-snapshot.d.ts.map +1 -0
- package/dist/internal/resolved-snapshot.js +11 -0
- package/dist/internal/resolved-snapshot.js.map +1 -0
- package/dist/internal/zink/provider.d.ts +9 -0
- package/dist/internal/zink/provider.d.ts.map +1 -0
- package/dist/internal/zink/provider.js +213 -0
- package/dist/internal/zink/provider.js.map +1 -0
- package/dist/loyalty/index.d.ts +195 -0
- package/dist/loyalty/index.d.ts.map +1 -0
- package/dist/loyalty/index.js +289 -0
- package/dist/loyalty/index.js.map +1 -0
- package/dist/markets/index.d.ts +195 -0
- package/dist/markets/index.d.ts.map +1 -0
- package/dist/markets/index.js +232 -0
- package/dist/markets/index.js.map +1 -0
- package/dist/mining/index.d.ts +156 -0
- package/dist/mining/index.d.ts.map +1 -0
- package/dist/mining/index.js +236 -0
- package/dist/mining/index.js.map +1 -0
- package/dist/planning/assembly.d.ts +42 -0
- package/dist/planning/assembly.d.ts.map +1 -0
- package/dist/planning/assembly.js +141 -0
- package/dist/planning/assembly.js.map +1 -0
- package/dist/planning/composition.d.ts +4 -0
- package/dist/planning/composition.d.ts.map +1 -0
- package/dist/planning/composition.js +76 -0
- package/dist/planning/composition.js.map +1 -0
- package/dist/planning/execution.d.ts +93 -0
- package/dist/planning/execution.d.ts.map +1 -0
- package/dist/planning/execution.js +549 -0
- package/dist/planning/execution.js.map +1 -0
- package/dist/planning/index.d.ts +219 -0
- package/dist/planning/index.d.ts.map +1 -0
- package/dist/planning/index.js +375 -0
- package/dist/planning/index.js.map +1 -0
- package/dist/planning/plan-instances.d.ts +3 -0
- package/dist/planning/plan-instances.d.ts.map +1 -0
- package/dist/planning/plan-instances.js +8 -0
- package/dist/planning/plan-instances.js.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts +154 -0
- package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -0
- package/dist/planning/plan-sequence-checkpoint.js +449 -0
- package/dist/planning/plan-sequence-checkpoint.js.map +1 -0
- package/dist/planning/plan-sequence-execution.d.ts +72 -0
- package/dist/planning/plan-sequence-execution.d.ts.map +1 -0
- package/dist/planning/plan-sequence-execution.js +410 -0
- package/dist/planning/plan-sequence-execution.js.map +1 -0
- package/dist/planning/plan-sequence.d.ts +244 -0
- package/dist/planning/plan-sequence.d.ts.map +1 -0
- package/dist/planning/plan-sequence.js +264 -0
- package/dist/planning/plan-sequence.js.map +1 -0
- package/dist/planning/simulation.d.ts +50 -0
- package/dist/planning/simulation.d.ts.map +1 -0
- package/dist/planning/simulation.js +69 -0
- package/dist/planning/simulation.js.map +1 -0
- package/dist/registry/combat.d.ts +5 -0
- package/dist/registry/combat.d.ts.map +1 -0
- package/dist/registry/combat.js +7 -0
- package/dist/registry/combat.js.map +1 -0
- package/dist/registry/index.d.ts +138 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +397 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/rewards/index.d.ts +202 -0
- package/dist/rewards/index.d.ts.map +1 -0
- package/dist/rewards/index.js +290 -0
- package/dist/rewards/index.js.map +1 -0
- package/dist/scanning/index.d.ts +185 -0
- package/dist/scanning/index.d.ts.map +1 -0
- package/dist/scanning/index.js +207 -0
- package/dist/scanning/index.js.map +1 -0
- package/dist/starbases/actions/index.d.ts +60 -0
- package/dist/starbases/actions/index.d.ts.map +1 -0
- package/dist/starbases/actions/index.js +245 -0
- package/dist/starbases/actions/index.js.map +1 -0
- package/dist/starbases/index.d.ts +165 -0
- package/dist/starbases/index.d.ts.map +1 -0
- package/dist/starbases/index.js +213 -0
- package/dist/starbases/index.js.map +1 -0
- package/dist/world/index.d.ts +180 -0
- package/dist/world/index.d.ts.map +1 -0
- package/dist/world/index.js +265 -0
- package/dist/world/index.js.map +1 -0
- package/package.json +140 -0
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { CELESTIAL_BODY_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, STAR_SYSTEM_DISCRIMINATOR, StarbaseLevel, getCelestialBodyDecoder, getStarSystemDecoder, } from '@staratlas/dev-sage';
|
|
2
|
+
import { Faction } from '@staratlas/dev-profile-faction';
|
|
3
|
+
import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU16Encoder, isSome, } from '@solana/kit';
|
|
4
|
+
import { AccountDecodeError, InvalidAccountOwnerError, InvalidDiscriminatorError, InvalidEntityIdError, } from '../../client/errors.js';
|
|
5
|
+
const FLOYDS_PER_ATLAS = 100_000_000;
|
|
6
|
+
const STAR_SYSTEM_MINIMUM_DATA_LENGTH = 143;
|
|
7
|
+
const CELESTIAL_BODY_MINIMUM_DATA_LENGTH = 160;
|
|
8
|
+
// Pinned sources: @staratlas/dev-sage@0.52.0
|
|
9
|
+
// src/generated/pdas/{starSystem,celestialBody}.ts.
|
|
10
|
+
const STAR_SYSTEM_SEED = new Uint8Array([
|
|
11
|
+
83, 116, 97, 114, 83, 121, 115, 116, 101, 109,
|
|
12
|
+
]);
|
|
13
|
+
const CELESTIAL_BODY_SEED = new Uint8Array([
|
|
14
|
+
67, 101, 108, 101, 115, 116, 105, 97, 108, 66, 111, 100, 121,
|
|
15
|
+
]);
|
|
16
|
+
function validateWorldId(entityType, id) {
|
|
17
|
+
if (!Number.isInteger(id) || id < 0 || id > 65_535) {
|
|
18
|
+
throw new InvalidEntityIdError(entityType, id);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
async function deriveWorldAddress(entityType, seed, game, id) {
|
|
22
|
+
validateWorldId(entityType, id);
|
|
23
|
+
const [address] = await getProgramDerivedAddress({
|
|
24
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
25
|
+
seeds: [
|
|
26
|
+
getBytesEncoder().encode(seed),
|
|
27
|
+
getAddressEncoder().encode(game),
|
|
28
|
+
getU16Encoder().encode(id),
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
return address;
|
|
32
|
+
}
|
|
33
|
+
/** Derives a StarSystem address from the pinned generated C4 PDA recipe. */
|
|
34
|
+
export function deriveStarSystemAddress(game, systemId) {
|
|
35
|
+
return deriveWorldAddress('starSystem', STAR_SYSTEM_SEED, game, systemId);
|
|
36
|
+
}
|
|
37
|
+
/** Derives a CelestialBody address from the pinned generated C4 PDA recipe. */
|
|
38
|
+
export function deriveCelestialBodyAddress(game, bodyId) {
|
|
39
|
+
return deriveWorldAddress('celestialBody', CELESTIAL_BODY_SEED, game, bodyId);
|
|
40
|
+
}
|
|
41
|
+
function immutableBytes(bytes) {
|
|
42
|
+
return Object.freeze(Array.from(bytes));
|
|
43
|
+
}
|
|
44
|
+
const STAR_SYSTEM_ACCOUNT_DISCRIMINATOR = immutableBytes(STAR_SYSTEM_DISCRIMINATOR);
|
|
45
|
+
const CELESTIAL_BODY_ACCOUNT_DISCRIMINATOR = immutableBytes(CELESTIAL_BODY_DISCRIMINATOR);
|
|
46
|
+
/** Stable StarSystem field offsets verified against the pinned C4 codec. */
|
|
47
|
+
export const STAR_SYSTEM_FILTER_OFFSETS = Object.freeze({
|
|
48
|
+
discriminator: 0,
|
|
49
|
+
game: 9,
|
|
50
|
+
});
|
|
51
|
+
function validateAccount(account, type, discriminator, minimumDataLength) {
|
|
52
|
+
if (account.owner !== SAGE_PROGRAM_ADDRESS) {
|
|
53
|
+
throw new InvalidAccountOwnerError(type, account.address, SAGE_PROGRAM_ADDRESS, account.owner);
|
|
54
|
+
}
|
|
55
|
+
if (account.data.length < discriminator.length ||
|
|
56
|
+
discriminator.some((byte, index) => account.data[index] !== byte)) {
|
|
57
|
+
throw new InvalidDiscriminatorError(type, account.address);
|
|
58
|
+
}
|
|
59
|
+
if (account.data.length < minimumDataLength) {
|
|
60
|
+
throw new AccountDecodeError(type, account.address, new RangeError(`Expected at least ${minimumDataLength} ${type} account bytes, received ${account.data.length}.`));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function decodeExactly(account, type, decoder, translate) {
|
|
64
|
+
try {
|
|
65
|
+
const [decoded, offset] = decoder.read(account.data, 0);
|
|
66
|
+
if (offset !== account.data.length) {
|
|
67
|
+
throw new RangeError(`Decoded ${offset} of ${account.data.length} ${type} account bytes; trailing bytes are not accepted.`);
|
|
68
|
+
}
|
|
69
|
+
return translate(decoded);
|
|
70
|
+
}
|
|
71
|
+
catch (cause) {
|
|
72
|
+
throw new AccountDecodeError(type, account.address, cause);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function fixed(value) {
|
|
76
|
+
return { raw: value.raw, value: value.toNumber() };
|
|
77
|
+
}
|
|
78
|
+
function fixedGrid(grid) {
|
|
79
|
+
return grid.map((row) => row.map(fixed));
|
|
80
|
+
}
|
|
81
|
+
function faction(value) {
|
|
82
|
+
switch (value) {
|
|
83
|
+
case Faction.Unaligned:
|
|
84
|
+
return 'unaligned';
|
|
85
|
+
case Faction.Mud:
|
|
86
|
+
return 'mud';
|
|
87
|
+
case Faction.Oni:
|
|
88
|
+
return 'oni';
|
|
89
|
+
case Faction.Ustur:
|
|
90
|
+
return 'ustur';
|
|
91
|
+
/* v8 ignore next -- the generated enum decoder rejects unknown values. */
|
|
92
|
+
default:
|
|
93
|
+
throw new RangeError(`Unsupported Starbase faction ${String(value)}.`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function starbaseLevel(value) {
|
|
97
|
+
switch (value) {
|
|
98
|
+
case StarbaseLevel.Level0:
|
|
99
|
+
return 'level-0';
|
|
100
|
+
case StarbaseLevel.Level1:
|
|
101
|
+
return 'level-1';
|
|
102
|
+
case StarbaseLevel.Level2:
|
|
103
|
+
return 'level-2';
|
|
104
|
+
case StarbaseLevel.Level3:
|
|
105
|
+
return 'level-3';
|
|
106
|
+
case StarbaseLevel.Level4:
|
|
107
|
+
return 'level-4';
|
|
108
|
+
case StarbaseLevel.Level5:
|
|
109
|
+
return 'level-5';
|
|
110
|
+
case StarbaseLevel.Css:
|
|
111
|
+
return 'css';
|
|
112
|
+
/* v8 ignore next -- the generated enum decoder rejects unknown values. */
|
|
113
|
+
default:
|
|
114
|
+
throw new RangeError(`Unsupported Starbase level ${String(value)}.`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function levelInfo(value) {
|
|
118
|
+
return {
|
|
119
|
+
damagePerRound: value.damagePerRound,
|
|
120
|
+
hp: value.hp,
|
|
121
|
+
repairAbility: fixed(value.repairAbility),
|
|
122
|
+
repairCost: fixed(value.repairCost),
|
|
123
|
+
repairEfficiency: fixed(value.repairEfficiency),
|
|
124
|
+
repairFeeAtlas: Number(value.repairFee) / FLOYDS_PER_ATLAS,
|
|
125
|
+
repairFeeRaw: value.repairFee,
|
|
126
|
+
repairRate: fixed(value.repairRate),
|
|
127
|
+
shieldBreakDelaySeconds: value.shieldBreakDelay,
|
|
128
|
+
shieldRechargeRate: fixed(value.shieldRechargeRate),
|
|
129
|
+
sp: value.sp,
|
|
130
|
+
xp: fixed(value.xpValue),
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
function intermediateLevel(level, value) {
|
|
134
|
+
return {
|
|
135
|
+
info: levelInfo(value.info),
|
|
136
|
+
level,
|
|
137
|
+
upgrades: [...value.upgradeState].map(([cargoId, state]) => ({
|
|
138
|
+
cargoId,
|
|
139
|
+
crew: state.crew,
|
|
140
|
+
deposited: state.deposited,
|
|
141
|
+
durationSeconds: state.duration,
|
|
142
|
+
needed: state.needed,
|
|
143
|
+
})),
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
function terminalLevel(level, info) {
|
|
147
|
+
return { info: levelInfo(info), level, upgrades: [] };
|
|
148
|
+
}
|
|
149
|
+
function maxLevel(value) {
|
|
150
|
+
switch (value.__kind) {
|
|
151
|
+
case 'Level0':
|
|
152
|
+
return {
|
|
153
|
+
kind: 'level-0',
|
|
154
|
+
levels: [terminalLevel('level-0', value.fields[0])],
|
|
155
|
+
};
|
|
156
|
+
case 'Level1': {
|
|
157
|
+
const levels = value.fields[0];
|
|
158
|
+
return {
|
|
159
|
+
kind: 'level-1',
|
|
160
|
+
levels: [
|
|
161
|
+
intermediateLevel('level-0', levels.level0),
|
|
162
|
+
terminalLevel('level-1', levels.level1),
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
case 'Level2': {
|
|
167
|
+
const levels = value.fields[0];
|
|
168
|
+
return {
|
|
169
|
+
kind: 'level-2',
|
|
170
|
+
levels: [
|
|
171
|
+
intermediateLevel('level-0', levels.level0),
|
|
172
|
+
intermediateLevel('level-1', levels.level1),
|
|
173
|
+
terminalLevel('level-2', levels.level2),
|
|
174
|
+
],
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
case 'Level3': {
|
|
178
|
+
const levels = value.fields[0];
|
|
179
|
+
return {
|
|
180
|
+
kind: 'level-3',
|
|
181
|
+
levels: [
|
|
182
|
+
intermediateLevel('level-0', levels.level0),
|
|
183
|
+
intermediateLevel('level-1', levels.level1),
|
|
184
|
+
intermediateLevel('level-2', levels.level2),
|
|
185
|
+
terminalLevel('level-3', levels.level3),
|
|
186
|
+
],
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
case 'Level4': {
|
|
190
|
+
const levels = value.fields[0];
|
|
191
|
+
return {
|
|
192
|
+
kind: 'level-4',
|
|
193
|
+
levels: [
|
|
194
|
+
intermediateLevel('level-0', levels.level0),
|
|
195
|
+
intermediateLevel('level-1', levels.level1),
|
|
196
|
+
intermediateLevel('level-2', levels.level2),
|
|
197
|
+
intermediateLevel('level-3', levels.level3),
|
|
198
|
+
terminalLevel('level-4', levels.level4),
|
|
199
|
+
],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
case 'Level5': {
|
|
203
|
+
const levels = value.fields[0];
|
|
204
|
+
return {
|
|
205
|
+
kind: 'level-5',
|
|
206
|
+
levels: [
|
|
207
|
+
intermediateLevel('level-0', levels.level0),
|
|
208
|
+
intermediateLevel('level-1', levels.level1),
|
|
209
|
+
intermediateLevel('level-2', levels.level2),
|
|
210
|
+
intermediateLevel('level-3', levels.level3),
|
|
211
|
+
intermediateLevel('level-4', levels.level4),
|
|
212
|
+
terminalLevel('level-5', levels.level5),
|
|
213
|
+
],
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
case 'Css':
|
|
217
|
+
return {
|
|
218
|
+
kind: 'css',
|
|
219
|
+
levels: [terminalLevel('css', value.fields[0])],
|
|
220
|
+
};
|
|
221
|
+
/* v8 ignore next -- assigning a new generated union variant fails compilation here. */
|
|
222
|
+
default: {
|
|
223
|
+
const exhaustive = value;
|
|
224
|
+
throw new RangeError(`Unsupported generated StarbaseMaxLevel variant ${String(exhaustive)}.`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
function craftingHabGroups(offsets, groups) {
|
|
229
|
+
return groups.map((group, index) => {
|
|
230
|
+
const offset = offsets[index];
|
|
231
|
+
return {
|
|
232
|
+
chronoAddresses: [...group.chronoList],
|
|
233
|
+
key: offset.key,
|
|
234
|
+
offset: offset.offset,
|
|
235
|
+
structures: [...group.habMap].map(([address, state]) => ({
|
|
236
|
+
address,
|
|
237
|
+
deactivationTimeUnixSeconds: state.deactivationTime,
|
|
238
|
+
})),
|
|
239
|
+
};
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
function claimStakeGroups(offsets, groups) {
|
|
243
|
+
return groups.map((group, index) => {
|
|
244
|
+
const offset = offsets[index];
|
|
245
|
+
return {
|
|
246
|
+
chronoAddresses: [...group.chronoList],
|
|
247
|
+
key: offset.key,
|
|
248
|
+
offset: offset.offset,
|
|
249
|
+
structures: [...group.stakeMap].map(([address, state]) => ({
|
|
250
|
+
address,
|
|
251
|
+
deactivationTimeUnixSeconds: state.deactivationTime,
|
|
252
|
+
})),
|
|
253
|
+
};
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
function translateStarbase(value) {
|
|
257
|
+
return {
|
|
258
|
+
baseCraftingHabPlacementFee: fixedGrid(value.baseCraftingHabPlacementFee),
|
|
259
|
+
baseCraftingHabRentRate: fixedGrid(value.baseCraftingHabRentRate),
|
|
260
|
+
buildingTags: [...value.buildingTags],
|
|
261
|
+
builtDestroyedAtUnixSeconds: value.builtDestroyedTimestamp,
|
|
262
|
+
craftingHabPlots: value.craftingHabPlots.map((row) => [...row]),
|
|
263
|
+
craftingHabsUnsizedLength: value.craftingHabs.unsizedLen,
|
|
264
|
+
craftingHabs: craftingHabGroups(value.craftingHabs.offsetList, value.craftingHabs.unsizedList),
|
|
265
|
+
hp: value.hp,
|
|
266
|
+
lastCombatUpdateUnixSeconds: value.lastCombatUpdate,
|
|
267
|
+
level: starbaseLevel(value.level),
|
|
268
|
+
localMarketEnableLevel: starbaseLevel(value.localMarketEnableLevel),
|
|
269
|
+
locationTags: [...value.locationTags],
|
|
270
|
+
maxLevel: maxLevel(value.starbaseMaxLevel),
|
|
271
|
+
owner: faction(value.owner),
|
|
272
|
+
pendingHp: value.pendingHp,
|
|
273
|
+
repairEnableLevel: starbaseLevel(value.repairEnableLevel),
|
|
274
|
+
shieldBreakDelayExpiresAtUnixSeconds: value.shieldBreakDelayExpiresAt,
|
|
275
|
+
sp: value.sp,
|
|
276
|
+
validRecipeIds: [...value.validRecipes],
|
|
277
|
+
};
|
|
278
|
+
}
|
|
279
|
+
function connectionCosts(value) {
|
|
280
|
+
return {
|
|
281
|
+
cssAtlas: Number(value.css) / FLOYDS_PER_ATLAS,
|
|
282
|
+
cssRaw: value.css,
|
|
283
|
+
level1Atlas: Number(value.level1) / FLOYDS_PER_ATLAS,
|
|
284
|
+
level1Raw: value.level1,
|
|
285
|
+
level2Atlas: Number(value.level2) / FLOYDS_PER_ATLAS,
|
|
286
|
+
level2Raw: value.level2,
|
|
287
|
+
level3Atlas: Number(value.level3) / FLOYDS_PER_ATLAS,
|
|
288
|
+
level3Raw: value.level3,
|
|
289
|
+
level4Atlas: Number(value.level4) / FLOYDS_PER_ATLAS,
|
|
290
|
+
level4Raw: value.level4,
|
|
291
|
+
level5Atlas: Number(value.level5) / FLOYDS_PER_ATLAS,
|
|
292
|
+
level5Raw: value.level5,
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function translateStarSystem(value) {
|
|
296
|
+
const regionId = isSome(value.region) ? value.region.value : undefined;
|
|
297
|
+
const nestedStarbase = isSome(value.starbase)
|
|
298
|
+
? translateStarbase(value.starbase.value)
|
|
299
|
+
: undefined;
|
|
300
|
+
return {
|
|
301
|
+
celestialBodyAddresses: [...value.celestialBodies],
|
|
302
|
+
connections: [...value.connections].map(([systemId, costs]) => ({
|
|
303
|
+
costs: connectionCosts(costs),
|
|
304
|
+
systemId,
|
|
305
|
+
})),
|
|
306
|
+
coordinates: {
|
|
307
|
+
x: value.coordinates[0].toNumber(),
|
|
308
|
+
y: value.coordinates[1].toNumber(),
|
|
309
|
+
},
|
|
310
|
+
game: value.gameId,
|
|
311
|
+
name: value.name.trim(),
|
|
312
|
+
...(regionId === undefined ? {} : { regionId }),
|
|
313
|
+
sequenceId: value.seqId,
|
|
314
|
+
...(nestedStarbase === undefined ? {} : { starbase: nestedStarbase }),
|
|
315
|
+
systemId: value.systemId,
|
|
316
|
+
version: value.version,
|
|
317
|
+
};
|
|
318
|
+
}
|
|
319
|
+
function commonBody(value) {
|
|
320
|
+
return {
|
|
321
|
+
game: value.game,
|
|
322
|
+
id: value.id,
|
|
323
|
+
lastSyncAtUnixSeconds: value.lastSyncTimestamp,
|
|
324
|
+
name: value.name.trim(),
|
|
325
|
+
system: value.system,
|
|
326
|
+
systemSequenceId: value.systemSeqId,
|
|
327
|
+
version: value.version,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
function translateCelestialBody(value) {
|
|
331
|
+
const common = commonBody(value);
|
|
332
|
+
switch (value.celestialBodyType.__kind) {
|
|
333
|
+
case 'Planet': {
|
|
334
|
+
const planet = value.celestialBodyType.fields[0];
|
|
335
|
+
return {
|
|
336
|
+
...common,
|
|
337
|
+
details: {
|
|
338
|
+
baseClaimStakePlacementFee: fixedGrid(planet.baseClaimStakePlacementFee),
|
|
339
|
+
baseClaimStakeRentRate: fixedGrid(planet.baseClaimStakeRentRate),
|
|
340
|
+
claimedPlots: claimStakeGroups(planet.claimedPlots.offsetList, planet.claimedPlots.unsizedList),
|
|
341
|
+
claimedPlotsUnsizedLength: planet.claimedPlots.unsizedLen,
|
|
342
|
+
claimStakePlots: planet.claimStakePlots.map((row) => [...row]),
|
|
343
|
+
providedTags: [...planet.providedTags],
|
|
344
|
+
resources: [...planet.resources].map(([cargoId, richness]) => ({
|
|
345
|
+
cargoId,
|
|
346
|
+
richness: fixed(richness),
|
|
347
|
+
})),
|
|
348
|
+
},
|
|
349
|
+
kind: 'planet',
|
|
350
|
+
};
|
|
351
|
+
}
|
|
352
|
+
case 'Asteroid': {
|
|
353
|
+
const asteroid = value.celestialBodyType.fields[0];
|
|
354
|
+
return {
|
|
355
|
+
...common,
|
|
356
|
+
details: {
|
|
357
|
+
resources: [...asteroid.resources].map(([cargoId, resource]) => ({
|
|
358
|
+
amountMined: resource.amountMined,
|
|
359
|
+
cargoId,
|
|
360
|
+
miners: resource.miners,
|
|
361
|
+
richness: fixed(resource.richness),
|
|
362
|
+
})),
|
|
363
|
+
},
|
|
364
|
+
kind: 'asteroid',
|
|
365
|
+
};
|
|
366
|
+
}
|
|
367
|
+
/* v8 ignore next -- assigning a generated variant fails compilation here. */
|
|
368
|
+
default: {
|
|
369
|
+
const exhaustive = value.celestialBodyType;
|
|
370
|
+
throw new RangeError(`Unsupported generated CelestialBodyType variant ${String(exhaustive)}.`);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
function validateStarSystem(account) {
|
|
375
|
+
validateAccount(account, 'starSystem', STAR_SYSTEM_ACCOUNT_DISCRIMINATOR, STAR_SYSTEM_MINIMUM_DATA_LENGTH);
|
|
376
|
+
}
|
|
377
|
+
function validateCelestialBody(account) {
|
|
378
|
+
validateAccount(account, 'celestialBody', CELESTIAL_BODY_ACCOUNT_DISCRIMINATOR, CELESTIAL_BODY_MINIMUM_DATA_LENGTH);
|
|
379
|
+
}
|
|
380
|
+
/** Stable StarSystem definition for the pinned C4 bindings. */
|
|
381
|
+
export const starSystemAccountDefinition = Object.freeze({
|
|
382
|
+
decode(account) {
|
|
383
|
+
validateStarSystem(account);
|
|
384
|
+
return decodeExactly(account, 'starSystem', getStarSystemDecoder(), translateStarSystem);
|
|
385
|
+
},
|
|
386
|
+
discriminator: STAR_SYSTEM_ACCOUNT_DISCRIMINATOR,
|
|
387
|
+
minimumDataLength: STAR_SYSTEM_MINIMUM_DATA_LENGTH,
|
|
388
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
389
|
+
type: 'starSystem',
|
|
390
|
+
validate: validateStarSystem,
|
|
391
|
+
});
|
|
392
|
+
/** Stable CelestialBody definition for the pinned C4 bindings. */
|
|
393
|
+
export const celestialBodyAccountDefinition = Object.freeze({
|
|
394
|
+
decode(account) {
|
|
395
|
+
validateCelestialBody(account);
|
|
396
|
+
return decodeExactly(account, 'celestialBody', getCelestialBodyDecoder(), translateCelestialBody);
|
|
397
|
+
},
|
|
398
|
+
discriminator: CELESTIAL_BODY_ACCOUNT_DISCRIMINATOR,
|
|
399
|
+
minimumDataLength: CELESTIAL_BODY_MINIMUM_DATA_LENGTH,
|
|
400
|
+
programAddress: SAGE_PROGRAM_ADDRESS,
|
|
401
|
+
type: 'celestialBody',
|
|
402
|
+
validate: validateCelestialBody,
|
|
403
|
+
});
|
|
404
|
+
/** Builds targeted StarSystem filters without loading the Game registry. */
|
|
405
|
+
export function buildStarSystemDiscoveryFilters(game) {
|
|
406
|
+
return Object.freeze([
|
|
407
|
+
{
|
|
408
|
+
bytes: new Uint8Array(STAR_SYSTEM_DISCRIMINATOR),
|
|
409
|
+
offset: STAR_SYSTEM_FILTER_OFFSETS.discriminator,
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
bytes: new Uint8Array(getAddressEncoder().encode(game)),
|
|
413
|
+
offset: STAR_SYSTEM_FILTER_OFFSETS.game,
|
|
414
|
+
},
|
|
415
|
+
]);
|
|
416
|
+
}
|
|
417
|
+
//# sourceMappingURL=world.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../../../src/internal/c4/world.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { SageContext } from '../client/contracts.js';
|
|
2
|
+
import type { CargoDefinitionSummary } from '../registry/index.js';
|
|
3
|
+
import type { FleetAccountData, FleetCargoPodData } from './c4/fleet.js';
|
|
4
|
+
/** Exact cargo quantity joined to its lazily loaded definition.
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* declare const item: CargoInventoryItem;
|
|
8
|
+
* console.log(item.name, item.quantityRaw);
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export interface CargoInventoryItem extends CargoDefinitionSummary {
|
|
12
|
+
/** Exact on-chain cargo quantity in the cargo type's raw units. */
|
|
13
|
+
readonly quantityRaw: bigint;
|
|
14
|
+
}
|
|
15
|
+
/** One nested C4 CargoPod translated into an immutable inventory value.
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* declare const pod: CargoPodInventory;
|
|
19
|
+
* console.log(pod.usedStorageUnitsRaw, pod.items);
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface CargoPodInventory {
|
|
23
|
+
readonly sequenceId: number;
|
|
24
|
+
/** Exact aggregate storage use reported by the parent account. */
|
|
25
|
+
readonly usedStorageUnitsRaw: bigint;
|
|
26
|
+
readonly items: readonly CargoInventoryItem[];
|
|
27
|
+
}
|
|
28
|
+
/** Exact used, total, remaining, and excess values for one capacity axis.
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* declare const capacity: CargoCapacity;
|
|
32
|
+
* console.log(capacity.remainingRaw);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export interface CargoCapacity {
|
|
36
|
+
readonly usedRaw: bigint;
|
|
37
|
+
readonly totalRaw: bigint;
|
|
38
|
+
readonly remainingRaw: bigint;
|
|
39
|
+
readonly overCapacityRaw: bigint;
|
|
40
|
+
}
|
|
41
|
+
/** Fleet-owned CargoPods and capacity axes after definition resolution.
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* declare const inventory: ResolvedFleetCargoInventory;
|
|
45
|
+
* console.log(inventory.cargoHold.items);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export interface ResolvedFleetCargoInventory {
|
|
49
|
+
readonly ownerProfile: FleetAccountData['ownerProfile'];
|
|
50
|
+
readonly cargoHold: CargoPodInventory;
|
|
51
|
+
readonly components: CargoPodInventory;
|
|
52
|
+
readonly respawningCargo: CargoPodInventory;
|
|
53
|
+
readonly fuel: CargoInventoryItem;
|
|
54
|
+
readonly ammo: CargoInventoryItem;
|
|
55
|
+
readonly capacities: {
|
|
56
|
+
readonly cargoStorageUnits: CargoCapacity;
|
|
57
|
+
readonly fuelUnits: CargoCapacity;
|
|
58
|
+
readonly ammoUnits: CargoCapacity;
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export declare function cargoCapacity(usedRaw: bigint, totalRaw: bigint): CargoCapacity;
|
|
62
|
+
export declare function resolveCargoPod(context: SageContext, pod: FleetCargoPodData): Promise<CargoPodInventory>;
|
|
63
|
+
/** Resolves all nested cargo values from one translated Fleet account. */
|
|
64
|
+
export declare function resolveFleetCargoInventory(context: SageContext, fleet: FleetAccountData): Promise<ResolvedFleetCargoInventory>;
|
|
65
|
+
//# sourceMappingURL=cargo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cargo.d.ts","sourceRoot":"","sources":["../../src/internal/cargo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,KAAK,EACV,gBAAgB,EAEhB,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AACH,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAC/C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC;QAC1C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;QAClC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;KACnC,CAAC;CACH;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,aAAa,CAOf;AAYD,wBAAsB,eAAe,CACnC,OAAO,EAAE,WAAW,EACpB,GAAG,EAAE,iBAAiB,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED,0EAA0E;AAC1E,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,2BAA2B,CAAC,CAgCtC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { resolveCargo } from '../registry/index.js';
|
|
2
|
+
export function cargoCapacity(usedRaw, totalRaw) {
|
|
3
|
+
return {
|
|
4
|
+
overCapacityRaw: usedRaw > totalRaw ? usedRaw - totalRaw : 0n,
|
|
5
|
+
remainingRaw: usedRaw < totalRaw ? totalRaw - usedRaw : 0n,
|
|
6
|
+
totalRaw,
|
|
7
|
+
usedRaw,
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
async function resolveAmount(context, amount) {
|
|
11
|
+
return {
|
|
12
|
+
...(await resolveCargo(context, amount.cargoId)),
|
|
13
|
+
quantityRaw: amount.amount,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export async function resolveCargoPod(context, pod) {
|
|
17
|
+
return {
|
|
18
|
+
items: await Promise.all(pod.amounts.map((amount) => resolveAmount(context, amount))),
|
|
19
|
+
sequenceId: pod.seqId,
|
|
20
|
+
usedStorageUnitsRaw: pod.storageCost,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Resolves all nested cargo values from one translated Fleet account. */
|
|
24
|
+
export async function resolveFleetCargoInventory(context, fleet) {
|
|
25
|
+
const [cargoHold, components, respawningCargo, fuel, ammo] = await Promise.all([
|
|
26
|
+
resolveCargoPod(context, fleet.cargoHold),
|
|
27
|
+
resolveCargoPod(context, fleet.components),
|
|
28
|
+
resolveCargoPod(context, fleet.respawningCargo),
|
|
29
|
+
resolveAmount(context, fleet.fuelTank),
|
|
30
|
+
resolveAmount(context, fleet.ammoBank),
|
|
31
|
+
]);
|
|
32
|
+
return {
|
|
33
|
+
ammo,
|
|
34
|
+
capacities: {
|
|
35
|
+
ammoUnits: cargoCapacity(fleet.ammoBank.amount, fleet.stats.cargo.ammoCapacity),
|
|
36
|
+
cargoStorageUnits: cargoCapacity(fleet.cargoHold.storageCost, fleet.stats.cargo.cargoCapacity),
|
|
37
|
+
fuelUnits: cargoCapacity(fleet.fuelTank.amount, fleet.stats.cargo.fuelCapacity),
|
|
38
|
+
},
|
|
39
|
+
cargoHold,
|
|
40
|
+
components,
|
|
41
|
+
fuel,
|
|
42
|
+
ownerProfile: fleet.ownerProfile,
|
|
43
|
+
respawningCargo,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=cargo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cargo.js","sourceRoot":"","sources":["../../src/internal/cargo.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAoEpD,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,QAAgB;IAEhB,OAAO;QACL,eAAe,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE;QAC7D,YAAY,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE;QAC1D,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAoB,EACpB,MAA4B;IAE5B,OAAO;QACL,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,WAAW,EAAE,MAAM,CAAC,MAAM;KAC3B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAoB,EACpB,GAAsB;IAEtB,OAAO;QACL,KAAK,EAAE,MAAM,OAAO,CAAC,GAAG,CACtB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAC5D;QACD,UAAU,EAAE,GAAG,CAAC,KAAK;QACrB,mBAAmB,EAAE,GAAG,CAAC,WAAW;KACrC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAoB,EACpB,KAAuB;IAEvB,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,GACxD,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;QACzC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC;QAC1C,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,eAAe,CAAC;QAC/C,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;QACtC,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC;KACvC,CAAC,CAAC;IAEL,OAAO;QACL,IAAI;QACJ,UAAU,EAAE;YACV,SAAS,EAAE,aAAa,CACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAC/B;YACD,iBAAiB,EAAE,aAAa,CAC9B,KAAK,CAAC,SAAS,CAAC,WAAW,EAC3B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAChC;YACD,SAAS,EAAE,aAAa,CACtB,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAC/B;SACF;QACD,SAAS;QACT,UAAU;QACV,IAAI;QACJ,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { SageContext } from '../client/contracts.js';
|
|
2
|
+
import type { CargoDefinitionSummary } from '../registry/index.js';
|
|
3
|
+
import { type CargoCapacity, type CargoPodInventory } from './cargo.js';
|
|
4
|
+
import type { ClaimStakeAccountData } from './c4/claim-stake.js';
|
|
5
|
+
/** One registry-resolved Claim Stake net production or consumption rate.
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* declare const rate: ClaimStakeResourceRate;
|
|
9
|
+
* console.log(rate.name, rate.ratePerSecond);
|
|
10
|
+
* ```
|
|
11
|
+
*/
|
|
12
|
+
export interface ClaimStakeResourceRate extends CargoDefinitionSummary {
|
|
13
|
+
readonly ratePerSecond: number;
|
|
14
|
+
readonly ratePerSecondRaw: bigint;
|
|
15
|
+
}
|
|
16
|
+
/** Registry-resolved Claim Stake resource state.
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* declare const resources: ClaimStakeResources;
|
|
20
|
+
* console.log(resources.capacity.remainingRaw);
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export interface ClaimStakeResources {
|
|
24
|
+
readonly inventory: CargoPodInventory;
|
|
25
|
+
readonly capacity: CargoCapacity;
|
|
26
|
+
readonly netProduction: readonly ClaimStakeResourceRate[];
|
|
27
|
+
readonly lastTickAtUnixSeconds: bigint;
|
|
28
|
+
}
|
|
29
|
+
/** Resolves the nested Claim Stake resource values through the cargo registry. */
|
|
30
|
+
export declare function resolveClaimStakeResources(context: SageContext, stake: ClaimStakeAccountData): Promise<ClaimStakeResources>;
|
|
31
|
+
//# sourceMappingURL=claim-stake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-stake.d.ts","sourceRoot":"","sources":["../../src/internal/claim-stake.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,sBAAuB,SAAQ,sBAAsB;IACpE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC1D,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;CACxC;AAED,kFAAkF;AAClF,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAoB9B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { resolveCargo } from '../registry/index.js';
|
|
2
|
+
import { cargoCapacity, resolveCargoPod, } from './cargo.js';
|
|
3
|
+
/** Resolves the nested Claim Stake resource values through the cargo registry. */
|
|
4
|
+
export async function resolveClaimStakeResources(context, stake) {
|
|
5
|
+
const [inventory, netProduction] = await Promise.all([
|
|
6
|
+
resolveCargoPod(context, stake.production.cargoPod),
|
|
7
|
+
Promise.all(stake.production.netResources.map(async (resource) => ({
|
|
8
|
+
...(await resolveCargo(context, resource.cargoId)),
|
|
9
|
+
ratePerSecond: resource.ratePerSecond,
|
|
10
|
+
ratePerSecondRaw: resource.ratePerSecondRaw,
|
|
11
|
+
}))),
|
|
12
|
+
]);
|
|
13
|
+
return {
|
|
14
|
+
capacity: cargoCapacity(stake.production.cargoPod.storageCost, stake.production.resourceCapacityRaw),
|
|
15
|
+
inventory,
|
|
16
|
+
lastTickAtUnixSeconds: stake.production.lastTickAtUnixSeconds,
|
|
17
|
+
netProduction,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=claim-stake.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claim-stake.js","sourceRoot":"","sources":["../../src/internal/claim-stake.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,aAAa,EACb,eAAe,GAGhB,MAAM,YAAY,CAAC;AA6BpB,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,OAAoB,EACpB,KAA4B;IAE5B,MAAM,CAAC,SAAS,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QACnD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClD,aAAa,EAAE,QAAQ,CAAC,aAAa;YACrC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;SAC5C,CAAC,CAAC,CACJ;KACF,CAAC,CAAC;IACH,OAAO;QACL,QAAQ,EAAE,aAAa,CACrB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EACrC,KAAK,CAAC,UAAU,CAAC,mBAAmB,CACrC;QACD,SAAS;QACT,qBAAqB,EAAE,KAAK,CAAC,UAAU,CAAC,qBAAqB;QAC7D,aAAa;KACd,CAAC;AACJ,CAAC"}
|