@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.
Files changed (279) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +124 -0
  3. package/dist/bindings.d.ts +11 -0
  4. package/dist/bindings.d.ts.map +1 -0
  5. package/dist/bindings.js +11 -0
  6. package/dist/bindings.js.map +1 -0
  7. package/dist/cargo/actions/index.d.ts +122 -0
  8. package/dist/cargo/actions/index.d.ts.map +1 -0
  9. package/dist/cargo/actions/index.js +526 -0
  10. package/dist/cargo/actions/index.js.map +1 -0
  11. package/dist/cargo/index.d.ts +77 -0
  12. package/dist/cargo/index.d.ts.map +1 -0
  13. package/dist/cargo/index.js +102 -0
  14. package/dist/cargo/index.js.map +1 -0
  15. package/dist/claim-stakes/index.d.ts +64 -0
  16. package/dist/claim-stakes/index.d.ts.map +1 -0
  17. package/dist/claim-stakes/index.js +97 -0
  18. package/dist/claim-stakes/index.js.map +1 -0
  19. package/dist/client/context.d.ts +21 -0
  20. package/dist/client/context.d.ts.map +1 -0
  21. package/dist/client/context.js +1374 -0
  22. package/dist/client/context.js.map +1 -0
  23. package/dist/client/contracts.d.ts +671 -0
  24. package/dist/client/contracts.d.ts.map +1 -0
  25. package/dist/client/contracts.js +2 -0
  26. package/dist/client/contracts.js.map +1 -0
  27. package/dist/client/deployments.d.ts +3 -0
  28. package/dist/client/deployments.d.ts.map +1 -0
  29. package/dist/client/deployments.js +2 -0
  30. package/dist/client/deployments.js.map +1 -0
  31. package/dist/client/errors.d.ts +227 -0
  32. package/dist/client/errors.d.ts.map +1 -0
  33. package/dist/client/errors.js +288 -0
  34. package/dist/client/errors.js.map +1 -0
  35. package/dist/client/index.d.ts +7 -0
  36. package/dist/client/index.d.ts.map +1 -0
  37. package/dist/client/index.js +5 -0
  38. package/dist/client/index.js.map +1 -0
  39. package/dist/client/lifecycle.d.ts +4 -0
  40. package/dist/client/lifecycle.d.ts.map +1 -0
  41. package/dist/client/lifecycle.js +10 -0
  42. package/dist/client/lifecycle.js.map +1 -0
  43. package/dist/client/provider-errors.d.ts +9 -0
  44. package/dist/client/provider-errors.d.ts.map +1 -0
  45. package/dist/client/provider-errors.js +12 -0
  46. package/dist/client/provider-errors.js.map +1 -0
  47. package/dist/client/reconciliation.d.ts +10 -0
  48. package/dist/client/reconciliation.d.ts.map +1 -0
  49. package/dist/client/reconciliation.js +9 -0
  50. package/dist/client/reconciliation.js.map +1 -0
  51. package/dist/client/refs.d.ts +23 -0
  52. package/dist/client/refs.d.ts.map +1 -0
  53. package/dist/client/refs.js +12 -0
  54. package/dist/client/refs.js.map +1 -0
  55. package/dist/combat/index.d.ts +256 -0
  56. package/dist/combat/index.d.ts.map +1 -0
  57. package/dist/combat/index.js +222 -0
  58. package/dist/combat/index.js.map +1 -0
  59. package/dist/crafting/index.d.ts +308 -0
  60. package/dist/crafting/index.d.ts.map +1 -0
  61. package/dist/crafting/index.js +400 -0
  62. package/dist/crafting/index.js.map +1 -0
  63. package/dist/factions/index.d.ts +292 -0
  64. package/dist/factions/index.d.ts.map +1 -0
  65. package/dist/factions/index.js +334 -0
  66. package/dist/factions/index.js.map +1 -0
  67. package/dist/fleets/actions/index.d.ts +200 -0
  68. package/dist/fleets/actions/index.d.ts.map +1 -0
  69. package/dist/fleets/actions/index.js +854 -0
  70. package/dist/fleets/actions/index.js.map +1 -0
  71. package/dist/fleets/index.d.ts +100 -0
  72. package/dist/fleets/index.d.ts.map +1 -0
  73. package/dist/fleets/index.js +124 -0
  74. package/dist/fleets/index.js.map +1 -0
  75. package/dist/identity/index.d.ts +225 -0
  76. package/dist/identity/index.d.ts.map +1 -0
  77. package/dist/identity/index.js +341 -0
  78. package/dist/identity/index.js.map +1 -0
  79. package/dist/index.d.ts +401 -0
  80. package/dist/index.d.ts.map +1 -0
  81. package/dist/index.js +519 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/internal/c4/adapter.d.ts +6 -0
  84. package/dist/internal/c4/adapter.d.ts.map +1 -0
  85. package/dist/internal/c4/adapter.js +2 -0
  86. package/dist/internal/c4/adapter.js.map +1 -0
  87. package/dist/internal/c4/bindings.d.ts +4 -0
  88. package/dist/internal/c4/bindings.d.ts.map +1 -0
  89. package/dist/internal/c4/bindings.js +4 -0
  90. package/dist/internal/c4/bindings.js.map +1 -0
  91. package/dist/internal/c4/character-modifier.d.ts +5 -0
  92. package/dist/internal/c4/character-modifier.d.ts.map +1 -0
  93. package/dist/internal/c4/character-modifier.js +100 -0
  94. package/dist/internal/c4/character-modifier.js.map +1 -0
  95. package/dist/internal/c4/claim-stake.d.ts +140 -0
  96. package/dist/internal/c4/claim-stake.d.ts.map +1 -0
  97. package/dist/internal/c4/claim-stake.js +205 -0
  98. package/dist/internal/c4/claim-stake.js.map +1 -0
  99. package/dist/internal/c4/combat.d.ts +98 -0
  100. package/dist/internal/c4/combat.d.ts.map +1 -0
  101. package/dist/internal/c4/combat.js +232 -0
  102. package/dist/internal/c4/combat.js.map +1 -0
  103. package/dist/internal/c4/crafting.d.ts +170 -0
  104. package/dist/internal/c4/crafting.d.ts.map +1 -0
  105. package/dist/internal/c4/crafting.js +387 -0
  106. package/dist/internal/c4/crafting.js.map +1 -0
  107. package/dist/internal/c4/factions.d.ts +248 -0
  108. package/dist/internal/c4/factions.d.ts.map +1 -0
  109. package/dist/internal/c4/factions.js +589 -0
  110. package/dist/internal/c4/factions.js.map +1 -0
  111. package/dist/internal/c4/fleet-crew-binding.d.ts +12 -0
  112. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -0
  113. package/dist/internal/c4/fleet-crew-binding.js +51 -0
  114. package/dist/internal/c4/fleet-crew-binding.js.map +1 -0
  115. package/dist/internal/c4/fleet.d.ts +310 -0
  116. package/dist/internal/c4/fleet.d.ts.map +1 -0
  117. package/dist/internal/c4/fleet.js +393 -0
  118. package/dist/internal/c4/fleet.js.map +1 -0
  119. package/dist/internal/c4/game.d.ts +192 -0
  120. package/dist/internal/c4/game.d.ts.map +1 -0
  121. package/dist/internal/c4/game.js +396 -0
  122. package/dist/internal/c4/game.js.map +1 -0
  123. package/dist/internal/c4/identity.d.ts +193 -0
  124. package/dist/internal/c4/identity.d.ts.map +1 -0
  125. package/dist/internal/c4/identity.js +180 -0
  126. package/dist/internal/c4/identity.js.map +1 -0
  127. package/dist/internal/c4/loot-layout.d.ts +20 -0
  128. package/dist/internal/c4/loot-layout.d.ts.map +1 -0
  129. package/dist/internal/c4/loot-layout.js +29 -0
  130. package/dist/internal/c4/loot-layout.js.map +1 -0
  131. package/dist/internal/c4/loyalty.d.ts +102 -0
  132. package/dist/internal/c4/loyalty.d.ts.map +1 -0
  133. package/dist/internal/c4/loyalty.js +318 -0
  134. package/dist/internal/c4/loyalty.js.map +1 -0
  135. package/dist/internal/c4/market.d.ts +112 -0
  136. package/dist/internal/c4/market.d.ts.map +1 -0
  137. package/dist/internal/c4/market.js +247 -0
  138. package/dist/internal/c4/market.js.map +1 -0
  139. package/dist/internal/c4/pda.d.ts +6 -0
  140. package/dist/internal/c4/pda.d.ts.map +1 -0
  141. package/dist/internal/c4/pda.js +45 -0
  142. package/dist/internal/c4/pda.js.map +1 -0
  143. package/dist/internal/c4/profile-faction.d.ts +14 -0
  144. package/dist/internal/c4/profile-faction.d.ts.map +1 -0
  145. package/dist/internal/c4/profile-faction.js +69 -0
  146. package/dist/internal/c4/profile-faction.js.map +1 -0
  147. package/dist/internal/c4/rewards.d.ts +135 -0
  148. package/dist/internal/c4/rewards.d.ts.map +1 -0
  149. package/dist/internal/c4/rewards.js +305 -0
  150. package/dist/internal/c4/rewards.js.map +1 -0
  151. package/dist/internal/c4/scanning.d.ts +85 -0
  152. package/dist/internal/c4/scanning.d.ts.map +1 -0
  153. package/dist/internal/c4/scanning.js +180 -0
  154. package/dist/internal/c4/scanning.js.map +1 -0
  155. package/dist/internal/c4/starbase.d.ts +186 -0
  156. package/dist/internal/c4/starbase.d.ts.map +1 -0
  157. package/dist/internal/c4/starbase.js +259 -0
  158. package/dist/internal/c4/starbase.js.map +1 -0
  159. package/dist/internal/c4/world.d.ts +294 -0
  160. package/dist/internal/c4/world.d.ts.map +1 -0
  161. package/dist/internal/c4/world.js +417 -0
  162. package/dist/internal/c4/world.js.map +1 -0
  163. package/dist/internal/cargo.d.ts +65 -0
  164. package/dist/internal/cargo.d.ts.map +1 -0
  165. package/dist/internal/cargo.js +46 -0
  166. package/dist/internal/cargo.js.map +1 -0
  167. package/dist/internal/claim-stake.d.ts +31 -0
  168. package/dist/internal/claim-stake.d.ts.map +1 -0
  169. package/dist/internal/claim-stake.js +20 -0
  170. package/dist/internal/claim-stake.js.map +1 -0
  171. package/dist/internal/fleet.d.ts +165 -0
  172. package/dist/internal/fleet.d.ts.map +1 -0
  173. package/dist/internal/fleet.js +179 -0
  174. package/dist/internal/fleet.js.map +1 -0
  175. package/dist/internal/game-context.d.ts +4 -0
  176. package/dist/internal/game-context.d.ts.map +1 -0
  177. package/dist/internal/game-context.js +9 -0
  178. package/dist/internal/game-context.js.map +1 -0
  179. package/dist/internal/immutable-tree.d.ts +5 -0
  180. package/dist/internal/immutable-tree.d.ts.map +1 -0
  181. package/dist/internal/immutable-tree.js +47 -0
  182. package/dist/internal/immutable-tree.js.map +1 -0
  183. package/dist/internal/json.d.ts +7 -0
  184. package/dist/internal/json.d.ts.map +1 -0
  185. package/dist/internal/json.js +33 -0
  186. package/dist/internal/json.js.map +1 -0
  187. package/dist/internal/planning/authorization-adapter.d.ts +63 -0
  188. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -0
  189. package/dist/internal/planning/authorization-adapter.js +222 -0
  190. package/dist/internal/planning/authorization-adapter.js.map +1 -0
  191. package/dist/internal/read-meta.d.ts +84 -0
  192. package/dist/internal/read-meta.d.ts.map +1 -0
  193. package/dist/internal/read-meta.js +28 -0
  194. package/dist/internal/read-meta.js.map +1 -0
  195. package/dist/internal/resolved-snapshot.d.ts +3 -0
  196. package/dist/internal/resolved-snapshot.d.ts.map +1 -0
  197. package/dist/internal/resolved-snapshot.js +11 -0
  198. package/dist/internal/resolved-snapshot.js.map +1 -0
  199. package/dist/internal/zink/provider.d.ts +9 -0
  200. package/dist/internal/zink/provider.d.ts.map +1 -0
  201. package/dist/internal/zink/provider.js +213 -0
  202. package/dist/internal/zink/provider.js.map +1 -0
  203. package/dist/loyalty/index.d.ts +195 -0
  204. package/dist/loyalty/index.d.ts.map +1 -0
  205. package/dist/loyalty/index.js +289 -0
  206. package/dist/loyalty/index.js.map +1 -0
  207. package/dist/markets/index.d.ts +195 -0
  208. package/dist/markets/index.d.ts.map +1 -0
  209. package/dist/markets/index.js +232 -0
  210. package/dist/markets/index.js.map +1 -0
  211. package/dist/mining/index.d.ts +156 -0
  212. package/dist/mining/index.d.ts.map +1 -0
  213. package/dist/mining/index.js +236 -0
  214. package/dist/mining/index.js.map +1 -0
  215. package/dist/planning/assembly.d.ts +42 -0
  216. package/dist/planning/assembly.d.ts.map +1 -0
  217. package/dist/planning/assembly.js +141 -0
  218. package/dist/planning/assembly.js.map +1 -0
  219. package/dist/planning/composition.d.ts +4 -0
  220. package/dist/planning/composition.d.ts.map +1 -0
  221. package/dist/planning/composition.js +76 -0
  222. package/dist/planning/composition.js.map +1 -0
  223. package/dist/planning/execution.d.ts +93 -0
  224. package/dist/planning/execution.d.ts.map +1 -0
  225. package/dist/planning/execution.js +549 -0
  226. package/dist/planning/execution.js.map +1 -0
  227. package/dist/planning/index.d.ts +219 -0
  228. package/dist/planning/index.d.ts.map +1 -0
  229. package/dist/planning/index.js +375 -0
  230. package/dist/planning/index.js.map +1 -0
  231. package/dist/planning/plan-instances.d.ts +3 -0
  232. package/dist/planning/plan-instances.d.ts.map +1 -0
  233. package/dist/planning/plan-instances.js +8 -0
  234. package/dist/planning/plan-instances.js.map +1 -0
  235. package/dist/planning/plan-sequence-checkpoint.d.ts +154 -0
  236. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -0
  237. package/dist/planning/plan-sequence-checkpoint.js +449 -0
  238. package/dist/planning/plan-sequence-checkpoint.js.map +1 -0
  239. package/dist/planning/plan-sequence-execution.d.ts +72 -0
  240. package/dist/planning/plan-sequence-execution.d.ts.map +1 -0
  241. package/dist/planning/plan-sequence-execution.js +410 -0
  242. package/dist/planning/plan-sequence-execution.js.map +1 -0
  243. package/dist/planning/plan-sequence.d.ts +244 -0
  244. package/dist/planning/plan-sequence.d.ts.map +1 -0
  245. package/dist/planning/plan-sequence.js +264 -0
  246. package/dist/planning/plan-sequence.js.map +1 -0
  247. package/dist/planning/simulation.d.ts +50 -0
  248. package/dist/planning/simulation.d.ts.map +1 -0
  249. package/dist/planning/simulation.js +69 -0
  250. package/dist/planning/simulation.js.map +1 -0
  251. package/dist/registry/combat.d.ts +5 -0
  252. package/dist/registry/combat.d.ts.map +1 -0
  253. package/dist/registry/combat.js +7 -0
  254. package/dist/registry/combat.js.map +1 -0
  255. package/dist/registry/index.d.ts +138 -0
  256. package/dist/registry/index.d.ts.map +1 -0
  257. package/dist/registry/index.js +397 -0
  258. package/dist/registry/index.js.map +1 -0
  259. package/dist/rewards/index.d.ts +202 -0
  260. package/dist/rewards/index.d.ts.map +1 -0
  261. package/dist/rewards/index.js +290 -0
  262. package/dist/rewards/index.js.map +1 -0
  263. package/dist/scanning/index.d.ts +185 -0
  264. package/dist/scanning/index.d.ts.map +1 -0
  265. package/dist/scanning/index.js +207 -0
  266. package/dist/scanning/index.js.map +1 -0
  267. package/dist/starbases/actions/index.d.ts +60 -0
  268. package/dist/starbases/actions/index.d.ts.map +1 -0
  269. package/dist/starbases/actions/index.js +245 -0
  270. package/dist/starbases/actions/index.js.map +1 -0
  271. package/dist/starbases/index.d.ts +165 -0
  272. package/dist/starbases/index.d.ts.map +1 -0
  273. package/dist/starbases/index.js +213 -0
  274. package/dist/starbases/index.js.map +1 -0
  275. package/dist/world/index.d.ts +180 -0
  276. package/dist/world/index.d.ts.map +1 -0
  277. package/dist/world/index.js +265 -0
  278. package/dist/world/index.js.map +1 -0
  279. 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"}