@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,400 @@
1
+ import { AccountDecodeError, InvalidEntityIdError, entityRef, } from '../client/index.js';
2
+ import { craftingHabAccountDefinition, craftingProcessAccountDefinition, deriveRecipeAddress, discoverCraftingHabsByOwner, discoverCraftingProcessesByProfile, discoverCraftingProcessesByStarbasePlayer, recipeAccountDefinition, } from '../internal/c4/crafting.js';
3
+ import { characterAccountDefinition } from '../internal/c4/identity.js';
4
+ import { starbasePlayerAccountDefinition } from '../internal/c4/starbase.js';
5
+ import { requireGameAddress } from '../internal/game-context.js';
6
+ import { attachJsonSerialization } from '../internal/json.js';
7
+ import { attachReadMeta, readMeta } from '../internal/read-meta.js';
8
+ import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
9
+ import { resolveCargo, resolveCraftingHabDefinition, resolveHabBuildingDefinition, } from '../registry/index.js';
10
+ const FLOYDS_PER_ATLAS = 100_000_000;
11
+ const RECIPE_SNAPSHOTS = new WeakMap();
12
+ const HAB_SNAPSHOTS = new WeakMap();
13
+ const PROCESS_SNAPSHOTS = new WeakMap();
14
+ function directMetadata(envelope) {
15
+ return {
16
+ commitment: envelope.commitment,
17
+ slot: envelope.slot,
18
+ source: envelope.source,
19
+ strategy: 'direct',
20
+ };
21
+ }
22
+ async function resolveAmount(context, amount) {
23
+ return {
24
+ ...(await resolveCargo(context, amount.cargoId)),
25
+ quantityRaw: amount.quantityRaw,
26
+ };
27
+ }
28
+ async function inventory(context, pod) {
29
+ return {
30
+ items: await Promise.all(pod.amounts.map((amount) => resolveAmount(context, amount))),
31
+ sequenceId: pod.sequenceId,
32
+ usedStorageUnitsRaw: pod.storageCostRaw,
33
+ };
34
+ }
35
+ async function createRecipeSnapshot(context, envelope) {
36
+ const game = requireGameAddress(context);
37
+ if (envelope.data.game !== game) {
38
+ throw new AccountDecodeError('recipe', envelope.address, new RangeError('The decoded Recipe references a different Game.'), `Recipe ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the Recipe address and configured cluster before retrying.`);
39
+ }
40
+ const expectedAddress = await deriveRecipeAddress(game, envelope.data.id);
41
+ if (expectedAddress !== envelope.address) {
42
+ throw new AccountDecodeError('recipe', envelope.address, new RangeError('The decoded Recipe contradicted its Game and recipe-id PDA seeds.'), `Recipe ${envelope.address} is not the derived account for Game ${game} and recipe id ${String(envelope.data.id)}. Use getRecipeById() or verify the address before retrying.`);
43
+ }
44
+ const { game: _game, id, inputs, outputs, ...data } = envelope.data;
45
+ const [ingredients, resolvedOutputs] = await Promise.all([
46
+ Promise.all(inputs.map((amount) => resolveAmount(context, amount))),
47
+ Promise.all(outputs.map((amount) => resolveAmount(context, amount))),
48
+ ]);
49
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
50
+ ...data,
51
+ address: envelope.address,
52
+ game: entityRef('game', game),
53
+ id,
54
+ ingredients,
55
+ kind: 'recipe',
56
+ outputs: resolvedOutputs,
57
+ }), directMetadata(envelope)));
58
+ }
59
+ function toRecipeSnapshot(context, envelope) {
60
+ const existing = RECIPE_SNAPSHOTS.get(envelope);
61
+ if (existing !== undefined)
62
+ return existing;
63
+ const pending = createRecipeSnapshot(context, envelope);
64
+ RECIPE_SNAPSHOTS.set(envelope, pending);
65
+ void pending.catch(() => RECIPE_SNAPSHOTS.delete(envelope));
66
+ return pending;
67
+ }
68
+ async function definitionCargo(context, amount) {
69
+ return {
70
+ ...(await resolveCargo(context, amount.cargoId)),
71
+ quantityRaw: amount.quantityRaw,
72
+ };
73
+ }
74
+ async function createHabSnapshot(context, envelope) {
75
+ const game = requireGameAddress(context);
76
+ if (envelope.data.game !== game) {
77
+ throw new AccountDecodeError('craftingHabInstance', envelope.address, new RangeError('The decoded CraftingHabInstance references a different Game.'), `Crafting Hab ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the address and cluster before retrying.`);
78
+ }
79
+ const rawDefinition = await resolveCraftingHabDefinition(context, envelope.data.definitionId, { expectedSequenceId: envelope.data.definitionSequenceId });
80
+ const { cargoId, ...definitionData } = rawDefinition;
81
+ const definition = {
82
+ ...definitionData,
83
+ placementCargo: await resolveCargo(context, cargoId),
84
+ };
85
+ const buildings = await Promise.all(envelope.data.buildings.map(async ({ buildingId, quantity }) => {
86
+ const raw = await resolveHabBuildingDefinition(context, buildingId, {
87
+ expectedSequenceId: envelope.data.buildingDefinitionSequenceId,
88
+ });
89
+ const { constructionCost, netRates, refunds, unlockedRecipeIds, ...buildingData } = raw;
90
+ return {
91
+ definition: {
92
+ ...buildingData,
93
+ constructionCost: await Promise.all(constructionCost.map((amount) => definitionCargo(context, amount))),
94
+ netRates: await Promise.all(netRates.map(async ({ cargoId, ...rate }) => ({
95
+ ...(await resolveCargo(context, cargoId)),
96
+ ...rate,
97
+ }))),
98
+ refunds: await Promise.all(refunds.map((amount) => definitionCargo(context, amount))),
99
+ unlockedRecipes: await Promise.all(unlockedRecipeIds.map(async (id) => entityRef('recipe', await deriveRecipeAddress(game, id)))),
100
+ },
101
+ quantity,
102
+ };
103
+ }));
104
+ const [resolvedInventory, netRates, unlockedRecipes] = await Promise.all([
105
+ inventory(context, envelope.data.production.inventory),
106
+ Promise.all(envelope.data.production.netRates.map(async ({ cargoId, ...rate }) => ({
107
+ ...(await resolveCargo(context, cargoId)),
108
+ ...rate,
109
+ }))),
110
+ Promise.all(envelope.data.unlockedRecipeIds.map(async (id) => entityRef('recipe', await deriveRecipeAddress(game, id)))),
111
+ ]);
112
+ const { buildings: _buildings, game: _game, ownerProfile, production, system, unlockedRecipeIds: _unlockedRecipeIds, ...data } = envelope.data;
113
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
114
+ ...data,
115
+ address: envelope.address,
116
+ availableJobSlots: Math.max(0, data.jobCapacity - data.jobsRunning),
117
+ buildings,
118
+ definition,
119
+ game: entityRef('game', game),
120
+ kind: 'craftingHabInstance',
121
+ ownerProfile: entityRef('profile', ownerProfile),
122
+ production: {
123
+ inventory: resolvedInventory,
124
+ lastTickAtUnixSeconds: production.lastTickAtUnixSeconds,
125
+ netRates,
126
+ resourceCapacityRaw: production.resourceCapacityRaw,
127
+ },
128
+ system: entityRef('starSystem', system),
129
+ unlockedRecipes,
130
+ }), directMetadata(envelope)));
131
+ }
132
+ function toHabSnapshot(context, envelope) {
133
+ const existing = HAB_SNAPSHOTS.get(envelope);
134
+ if (existing !== undefined)
135
+ return existing;
136
+ const pending = createHabSnapshot(context, envelope);
137
+ HAB_SNAPSHOTS.set(envelope, pending);
138
+ void pending.catch(() => HAB_SNAPSHOTS.delete(envelope));
139
+ return pending;
140
+ }
141
+ async function createProcessSnapshot(context, envelope, options) {
142
+ requireGameAddress(context);
143
+ if (envelope.data.endsAtUnixSeconds < envelope.data.startsAtUnixSeconds) {
144
+ throw new AccountDecodeError('craftingProcess', envelope.address, new RangeError('CraftingProcess endTime precedes startTime.'), `Crafting Process ${envelope.address} has an end time before its start time. Verify the account, cluster, and pinned binding version before retrying.`);
145
+ }
146
+ const { craftingHab, feeEscrowRaw, inputs, profile, recipe, starbasePlayer, system, ...data } = envelope.data;
147
+ const [recipeSnapshot, resolvedInputs] = await Promise.all([
148
+ getRecipe(context, recipe, options),
149
+ inventory(context, inputs),
150
+ ]);
151
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
152
+ ...data,
153
+ address: envelope.address,
154
+ craftingHab: entityRef('craftingHabInstance', craftingHab),
155
+ feeEscrowAtlas: Number(feeEscrowRaw) / FLOYDS_PER_ATLAS,
156
+ feeEscrowRaw,
157
+ inputs: resolvedInputs,
158
+ kind: 'craftingProcess',
159
+ profile: entityRef('profile', profile),
160
+ recipe: recipeSnapshot,
161
+ starbasePlayer: entityRef('starbasePlayer', starbasePlayer),
162
+ system: entityRef('starSystem', system),
163
+ }), directMetadata(envelope)));
164
+ }
165
+ function toProcessSnapshot(context, envelope, options) {
166
+ let cache = PROCESS_SNAPSHOTS.get(envelope);
167
+ if (cache === undefined) {
168
+ cache = { byOptions: new WeakMap() };
169
+ PROCESS_SNAPSHOTS.set(envelope, cache);
170
+ }
171
+ const existing = options === undefined ? cache.default : cache.byOptions.get(options);
172
+ if (existing !== undefined)
173
+ return existing;
174
+ const pending = createProcessSnapshot(context, envelope, options);
175
+ if (options === undefined)
176
+ cache.default = pending;
177
+ else
178
+ cache.byOptions.set(options, pending);
179
+ void pending.catch(() => {
180
+ if (options === undefined) {
181
+ delete cache.default;
182
+ }
183
+ else {
184
+ cache.byOptions.delete(options);
185
+ }
186
+ });
187
+ return pending;
188
+ }
189
+ async function validatedStarbasePlayer(context, player, options) {
190
+ const game = requireGameAddress(context);
191
+ const starbase = await context.data.read(starbasePlayerAccountDefinition, player, options);
192
+ const character = await context.data.read(characterAccountDefinition, starbase.data.character, options);
193
+ if (character.data.game !== game ||
194
+ character.data.playerProfile !== starbase.data.playerProfile) {
195
+ throw new AccountDecodeError('starbasePlayer', player, new RangeError('The StarbasePlayer Character contradicts the configured Game or stored Profile.'), `Starbase Player ${player} references a Character from another Game or Profile. Verify the Starbase Player address, configured Game, and cluster before retrying.`);
196
+ }
197
+ return starbase;
198
+ }
199
+ async function snapshotsFromDiscovery(envelopes, project) {
200
+ const metadata = readMeta(envelopes);
201
+ const snapshots = await Promise.all(envelopes.map(project));
202
+ return Object.freeze(attachReadMeta(snapshots, metadata));
203
+ }
204
+ /** Reads a required Recipe by its derived account address.
205
+ * @example
206
+ * ```ts
207
+ * declare const ctx: SageContext;
208
+ * declare const address: Address;
209
+ * const recipe = await getRecipe(ctx, address);
210
+ * ```
211
+ */
212
+ export async function getRecipe(context, address, options) {
213
+ requireGameAddress(context);
214
+ return toRecipeSnapshot(context, await context.data.read(recipeAccountDefinition, address, options));
215
+ }
216
+ /** Reads an optional Recipe by address.
217
+ * @example
218
+ * ```ts
219
+ * declare const ctx: SageContext;
220
+ * declare const address: Address;
221
+ * const recipe = await maybeGetRecipe(ctx, address);
222
+ * ```
223
+ */
224
+ export async function maybeGetRecipe(context, address, options) {
225
+ requireGameAddress(context);
226
+ const [envelope] = await context.data.readMany(recipeAccountDefinition, [address], options);
227
+ return envelope === undefined
228
+ ? undefined
229
+ : toRecipeSnapshot(context, envelope);
230
+ }
231
+ /** Derives and reads one Recipe from the configured Game and recipe id.
232
+ * @example
233
+ * ```ts
234
+ * declare const ctx: SageContext;
235
+ * const recipe = await getRecipeById(ctx, 7);
236
+ * ```
237
+ */
238
+ export async function getRecipeById(context, recipeId, options) {
239
+ const game = requireGameAddress(context);
240
+ if (!Number.isInteger(recipeId) || recipeId < 0 || recipeId > 65_535) {
241
+ throw new InvalidEntityIdError('recipe', recipeId);
242
+ }
243
+ const address = await deriveRecipeAddress(game, recipeId);
244
+ return getRecipe(context, address, options);
245
+ }
246
+ /** Reads a required Crafting Hab by its signer-created account address.
247
+ * @example
248
+ * ```ts
249
+ * declare const ctx: SageContext;
250
+ * declare const address: Address;
251
+ * const hab = await getCraftingHab(ctx, address);
252
+ * ```
253
+ */
254
+ export async function getCraftingHab(context, address, options) {
255
+ requireGameAddress(context);
256
+ return toHabSnapshot(context, await context.data.read(craftingHabAccountDefinition, address, options));
257
+ }
258
+ /** Reads an optional Crafting Hab by address.
259
+ * @example
260
+ * ```ts
261
+ * declare const ctx: SageContext;
262
+ * declare const address: Address;
263
+ * const hab = await maybeGetCraftingHab(ctx, address);
264
+ * ```
265
+ */
266
+ export async function maybeGetCraftingHab(context, address, options) {
267
+ requireGameAddress(context);
268
+ const [envelope] = await context.data.readMany(craftingHabAccountDefinition, [address], options);
269
+ return envelope === undefined ? undefined : toHabSnapshot(context, envelope);
270
+ }
271
+ /** Reads a required Crafting Process by its signer-created account address.
272
+ * @example
273
+ * ```ts
274
+ * declare const ctx: SageContext;
275
+ * declare const address: Address;
276
+ * const process = await getCraftingProcess(ctx, address);
277
+ * ```
278
+ */
279
+ export async function getCraftingProcess(context, address, options) {
280
+ requireGameAddress(context);
281
+ return toProcessSnapshot(context, await context.data.read(craftingProcessAccountDefinition, address, options), options);
282
+ }
283
+ /** Reads an optional Crafting Process by address.
284
+ * @example
285
+ * ```ts
286
+ * declare const ctx: SageContext;
287
+ * declare const address: Address;
288
+ * const process = await maybeGetCraftingProcess(ctx, address);
289
+ * ```
290
+ */
291
+ export async function maybeGetCraftingProcess(context, address, options) {
292
+ requireGameAddress(context);
293
+ const [envelope] = await context.data.readMany(craftingProcessAccountDefinition, [address], options);
294
+ return envelope === undefined
295
+ ? undefined
296
+ : toProcessSnapshot(context, envelope, options);
297
+ }
298
+ /** Discovers Crafting Habs owned by one Player Profile.
299
+ * @example
300
+ * ```ts
301
+ * declare const ctx: SageContext;
302
+ * declare const profile: Address;
303
+ * const habs = await getCraftingHabsByProfile(ctx, profile);
304
+ * ```
305
+ */
306
+ export async function getCraftingHabsByProfile(context, profile, options) {
307
+ const game = requireGameAddress(context);
308
+ const envelopes = await discoverCraftingHabsByOwner(context, game, profile, undefined, options);
309
+ return snapshotsFromDiscovery(envelopes, (envelope) => toHabSnapshot(context, envelope));
310
+ }
311
+ /** Discovers Crafting Processes belonging to one Player Profile.
312
+ * @example
313
+ * ```ts
314
+ * declare const ctx: SageContext;
315
+ * declare const profile: Address;
316
+ * const processes = await getCraftingProcessesByProfile(ctx, profile);
317
+ * ```
318
+ */
319
+ export async function getCraftingProcessesByProfile(context, profile, options) {
320
+ requireGameAddress(context);
321
+ const envelopes = await discoverCraftingProcessesByProfile(context, profile, options);
322
+ return snapshotsFromDiscovery(envelopes, (envelope) => toProcessSnapshot(context, envelope, options));
323
+ }
324
+ /** Discovers Crafting Habs for the Profile and System stored by a StarbasePlayer.
325
+ * @example
326
+ * ```ts
327
+ * declare const ctx: SageContext;
328
+ * declare const player: Address;
329
+ * const habs = await getCraftingHabsByStarbasePlayer(ctx, player);
330
+ * ```
331
+ */
332
+ export async function getCraftingHabsByStarbasePlayer(context, player, options) {
333
+ const game = requireGameAddress(context);
334
+ const starbase = await validatedStarbasePlayer(context, player, options);
335
+ const envelopes = await discoverCraftingHabsByOwner(context, game, starbase.data.playerProfile, starbase.data.system, options);
336
+ return snapshotsFromDiscovery(envelopes, (envelope) => toHabSnapshot(context, envelope));
337
+ }
338
+ /** Discovers Crafting Processes linked to one StarbasePlayer.
339
+ * @example
340
+ * ```ts
341
+ * declare const ctx: SageContext;
342
+ * declare const player: Address;
343
+ * const processes = await getCraftingProcessesByStarbasePlayer(ctx, player);
344
+ * ```
345
+ */
346
+ export async function getCraftingProcessesByStarbasePlayer(context, player, options) {
347
+ await validatedStarbasePlayer(context, player, options);
348
+ const envelopes = await discoverCraftingProcessesByStarbasePlayer(context, player, options);
349
+ return snapshotsFromDiscovery(envelopes, (envelope) => toProcessSnapshot(context, envelope, options));
350
+ }
351
+ /** Discovers Crafting Habs for the Profile stored by one Character.
352
+ * @example
353
+ * ```ts
354
+ * declare const ctx: SageContext;
355
+ * declare const character: Address;
356
+ * const habs = await getCraftingHabsByCharacter(ctx, character);
357
+ * ```
358
+ */
359
+ export async function getCraftingHabsByCharacter(context, character, options) {
360
+ const game = requireGameAddress(context);
361
+ const value = await context.data.read(characterAccountDefinition, character, options);
362
+ if (value.data.game !== game) {
363
+ throw new AccountDecodeError('character', character, new RangeError('The Character belongs to a different Game.'));
364
+ }
365
+ return getCraftingHabsByProfile(context, value.data.playerProfile, options);
366
+ }
367
+ /** Discovers Crafting Processes for the Profile stored by one Character.
368
+ * @example
369
+ * ```ts
370
+ * declare const ctx: SageContext;
371
+ * declare const character: Address;
372
+ * const processes = await getCraftingProcessesByCharacter(ctx, character);
373
+ * ```
374
+ */
375
+ export async function getCraftingProcessesByCharacter(context, character, options) {
376
+ const game = requireGameAddress(context);
377
+ const value = await context.data.read(characterAccountDefinition, character, options);
378
+ if (value.data.game !== game) {
379
+ throw new AccountDecodeError('character', character, new RangeError('The Character belongs to a different Game.'));
380
+ }
381
+ return getCraftingProcessesByProfile(context, value.data.playerProfile, options);
382
+ }
383
+ /** Derives the scheduled, active, or complete state at a Unix timestamp.
384
+ * @example
385
+ * ```ts
386
+ * declare const process: CraftingProcessSnapshot;
387
+ * const state = deriveCraftingProcessState(process, 1_700_000_000n);
388
+ * ```
389
+ */
390
+ export function deriveCraftingProcessState(process, atUnixSeconds) {
391
+ if (atUnixSeconds < process.startsAtUnixSeconds)
392
+ return { kind: 'scheduled' };
393
+ if (atUnixSeconds >= process.endsAtUnixSeconds)
394
+ return { kind: 'complete' };
395
+ return {
396
+ kind: 'in-progress',
397
+ remainingSeconds: process.endsAtUnixSeconds - atUnixSeconds,
398
+ };
399
+ }
400
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/crafting/index.ts"],"names":[],"mappings":"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"}