@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,232 @@
1
+ import { LOOT_DISCRIMINATOR, OUTLAW_FLAG_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, getLootDecoder, getOutlawFlagDecoder, } from '@staratlas/dev-sage';
2
+ import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, getU8Encoder, } from '@solana/kit';
3
+ import { AccountDecodeError, InvalidAccountOwnerError, InvalidDiscriminatorError, MissingGameContextError, } from '../../client/errors.js';
4
+ import { assertLootLayout, LOOT_FILTER_OFFSETS, LOOT_MINIMUM_DATA_LENGTH, } from './loot-layout.js';
5
+ const OUTLAW_FLAG_DATA_LENGTH = 60;
6
+ const LOOT_ACCOUNT_DISCRIMINATOR = Object.freeze(Array.from(LOOT_DISCRIMINATOR));
7
+ const OUTLAW_FLAG_ACCOUNT_DISCRIMINATOR = Object.freeze(Array.from(OUTLAW_FLAG_DISCRIMINATOR));
8
+ export { LOOT_FILTER_OFFSETS } from './loot-layout.js';
9
+ /** Audited read and deferred-action relationships for the combat capability. */
10
+ export const COMBAT_RELATIONSHIPS = Object.freeze([
11
+ {
12
+ from: 'profile + faction',
13
+ kind: 'derived',
14
+ mechanism: 'OutlawFlag PDA seeds',
15
+ to: 'outlawFlag?',
16
+ },
17
+ {
18
+ from: 'loot',
19
+ kind: 'stored',
20
+ mechanism: 'Game, Profile, coordinates, and destroyer account fields',
21
+ to: 'game | profile | fleet',
22
+ },
23
+ {
24
+ from: 'combat',
25
+ kind: 'nested',
26
+ mechanism: 'Game config, Fleet combat state, and Loot items/reward legs',
27
+ to: 'configuration | fleetCombatStatus | lootInventory',
28
+ },
29
+ {
30
+ from: 'combat',
31
+ kind: 'instruction-only',
32
+ mechanism: 'attack, repair, stimulant, reward resolution, and sweep co-accounts are not durable relations',
33
+ to: 'actions',
34
+ },
35
+ {
36
+ from: 'game | profile',
37
+ kind: 'discovered',
38
+ mechanism: 'targeted Loot discriminator, Game, and Profile filters',
39
+ to: 'loot[]',
40
+ },
41
+ ]);
42
+ function hasDiscriminator(data, discriminator) {
43
+ return discriminator.every((byte, index) => data[index] === byte);
44
+ }
45
+ function validateOwnerAndDiscriminator(account, type, discriminator) {
46
+ if (account.owner !== SAGE_PROGRAM_ADDRESS) {
47
+ throw new InvalidAccountOwnerError(type, account.address, SAGE_PROGRAM_ADDRESS, account.owner);
48
+ }
49
+ if (account.data.length < discriminator.length ||
50
+ !hasDiscriminator(account.data, discriminator)) {
51
+ throw new InvalidDiscriminatorError(type, account.address);
52
+ }
53
+ }
54
+ function validateLootAccount(account) {
55
+ validateOwnerAndDiscriminator(account, 'loot', LOOT_ACCOUNT_DISCRIMINATOR);
56
+ if (account.data.length < LOOT_MINIMUM_DATA_LENGTH) {
57
+ throw new AccountDecodeError('loot', account.address, new RangeError(`Expected at least ${LOOT_MINIMUM_DATA_LENGTH} Loot account bytes, received ${account.data.length}.`));
58
+ }
59
+ }
60
+ function validateOutlawFlagAccount(account) {
61
+ validateOwnerAndDiscriminator(account, 'outlawFlag', OUTLAW_FLAG_ACCOUNT_DISCRIMINATOR);
62
+ if (account.data.length !== OUTLAW_FLAG_DATA_LENGTH) {
63
+ throw new AccountDecodeError('outlawFlag', account.address, new RangeError(`Expected exactly ${OUTLAW_FLAG_DATA_LENGTH} OutlawFlag account bytes, received ${account.data.length}.`));
64
+ }
65
+ }
66
+ function decodeExactly(account, type, read) {
67
+ try {
68
+ const [decoded, offset] = read(account.data, 0);
69
+ if (offset !== account.data.length) {
70
+ throw new RangeError(`Decoded ${offset} of ${account.data.length} ${type} account bytes; trailing bytes are not accepted.`);
71
+ }
72
+ return decoded;
73
+ }
74
+ catch (cause) {
75
+ throw new AccountDecodeError(type, account.address, cause);
76
+ }
77
+ }
78
+ function cargoPod(value) {
79
+ return {
80
+ amounts: [...value.amounts].map(([cargoId, amount]) => ({
81
+ amount,
82
+ cargoId,
83
+ })),
84
+ sequenceId: value.seqId,
85
+ storageCostRaw: value.storageCost,
86
+ };
87
+ }
88
+ function reward(value) {
89
+ if (value.rewardStatus === 0)
90
+ return { kind: 'none' };
91
+ return {
92
+ committedAtUnixSeconds: value.rewardCommittedAt,
93
+ configVersion: value.rewardConfigVersion,
94
+ ...(value.rewardStatus === 1
95
+ ? { kind: 'committed' }
96
+ : value.rewardStatus === 2
97
+ ? { kind: 'resolved' }
98
+ : { kind: 'unknown', rawStatus: value.rewardStatus }),
99
+ legs: value.rewardLegs.slice(0, value.rewardLegCount).map((leg) => ({
100
+ medallionsRaw: leg.medallions,
101
+ recipient: leg.recipient,
102
+ salvageTargetValueRaw: leg.salvageTargetValue,
103
+ })),
104
+ slot: value.rewardCommitSlot,
105
+ };
106
+ }
107
+ function translateLoot(value) {
108
+ return {
109
+ coordinates: {
110
+ x: value.coordinates[0].toNumber(),
111
+ y: value.coordinates[1].toNumber(),
112
+ },
113
+ game: value.gameId,
114
+ items: value.items.unsizedList.map((item) => ({
115
+ destroyer: item.destroyer,
116
+ exclusivityUnlockAtUnixSeconds: item.exclusivityUnlockTime,
117
+ inventory: cargoPod(item.loot),
118
+ rewardReclaimAtUnixSeconds: item.rewardReclaimAt,
119
+ })),
120
+ profile: value.profile,
121
+ reward: reward(value),
122
+ version: value.version,
123
+ };
124
+ }
125
+ function faction(value) {
126
+ switch (value) {
127
+ case 0:
128
+ return 'unaligned';
129
+ case 1:
130
+ return 'mud';
131
+ case 2:
132
+ return 'oni';
133
+ case 3:
134
+ return 'ustur';
135
+ default:
136
+ throw new RangeError(`Unsupported OutlawFlag faction ${String(value)}.`);
137
+ }
138
+ }
139
+ function translateOutlawFlag(value) {
140
+ if (value.outlaw !== 0 && value.outlaw !== 1) {
141
+ throw new RangeError(`Unsupported OutlawFlag status ${String(value.outlaw)}.`);
142
+ }
143
+ return {
144
+ bump: value.bump,
145
+ declaredAtUnixSeconds: value.declaredAt,
146
+ faction: faction(value.faction),
147
+ isOutlaw: value.outlaw === 1,
148
+ profile: value.profile,
149
+ pvpUntilUnixSeconds: value.pvpUntil,
150
+ version: value.version,
151
+ };
152
+ }
153
+ export const lootAccountDefinition = Object.freeze({
154
+ decode(account) {
155
+ validateLootAccount(account);
156
+ const decoded = decodeExactly(account, 'loot', (bytes, offset) => getLootDecoder().read(bytes, offset));
157
+ assertLootLayout(account, decoded);
158
+ return translateLoot(decoded);
159
+ },
160
+ discriminator: LOOT_ACCOUNT_DISCRIMINATOR,
161
+ minimumDataLength: LOOT_MINIMUM_DATA_LENGTH,
162
+ programAddress: SAGE_PROGRAM_ADDRESS,
163
+ type: 'loot',
164
+ validate: validateLootAccount,
165
+ });
166
+ export const outlawFlagAccountDefinition = Object.freeze({
167
+ decode(account) {
168
+ validateOutlawFlagAccount(account);
169
+ const decoded = decodeExactly(account, 'outlawFlag', (bytes, offset) => getOutlawFlagDecoder().read(bytes, offset));
170
+ try {
171
+ return translateOutlawFlag(decoded);
172
+ }
173
+ catch (cause) {
174
+ throw new AccountDecodeError('outlawFlag', account.address, cause);
175
+ }
176
+ },
177
+ discriminator: OUTLAW_FLAG_ACCOUNT_DISCRIMINATOR,
178
+ minimumDataLength: OUTLAW_FLAG_DATA_LENGTH,
179
+ programAddress: SAGE_PROGRAM_ADDRESS,
180
+ type: 'outlawFlag',
181
+ validate: validateOutlawFlagAccount,
182
+ });
183
+ function factionValue(value) {
184
+ return ['unaligned', 'mud', 'oni', 'ustur'].indexOf(value);
185
+ }
186
+ /** Derives the optional OutlawFlag address for one Profile/faction pair. */
187
+ export async function deriveOutlawFlagAddress(profile, againstFaction) {
188
+ const [address] = await getProgramDerivedAddress({
189
+ programAddress: SAGE_PROGRAM_ADDRESS,
190
+ seeds: [
191
+ getBytesEncoder().encode(new Uint8Array([111, 117, 116, 108, 97, 119, 95, 102, 108, 97, 103])),
192
+ getAddressEncoder().encode(profile),
193
+ getU8Encoder().encode(factionValue(againstFaction)),
194
+ ],
195
+ });
196
+ return address;
197
+ }
198
+ /** Builds stable targeted filters for Loot by Game and creator Profile. */
199
+ export function buildLootDiscoveryFilters(game, profile) {
200
+ return Object.freeze([
201
+ {
202
+ bytes: new Uint8Array(LOOT_DISCRIMINATOR),
203
+ offset: LOOT_FILTER_OFFSETS.discriminator,
204
+ },
205
+ {
206
+ bytes: new Uint8Array(getAddressEncoder().encode(game)),
207
+ offset: LOOT_FILTER_OFFSETS.game,
208
+ },
209
+ {
210
+ bytes: new Uint8Array(getAddressEncoder().encode(profile)),
211
+ offset: LOOT_FILTER_OFFSETS.profile,
212
+ },
213
+ ]);
214
+ }
215
+ /** Discovers Loot by stable Game/Profile fields and revalidates every decoded hint. */
216
+ export async function discoverLootAccounts(context, profile, options = {}) {
217
+ const game = context.game;
218
+ if (game === undefined)
219
+ throw new MissingGameContextError();
220
+ const loot = await context.data.discover(lootAccountDefinition, {
221
+ ...options,
222
+ filters: buildLootDiscoveryFilters(game, profile),
223
+ strategy: 'targeted-program-accounts',
224
+ });
225
+ for (const candidate of loot) {
226
+ if (candidate.data.game !== game || candidate.data.profile !== profile) {
227
+ throw new AccountDecodeError('loot', candidate.address, new RangeError('Decoded Loot fields contradicted discovery filters.'), `A discovered Loot candidate did not match the requested Game and Profile after decoding. Verify the provider, configured cluster, and pinned Loot filter offsets before retrying.`);
228
+ }
229
+ }
230
+ return loot;
231
+ }
232
+ //# sourceMappingURL=combat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combat.js","sourceRoot":"","sources":["../../../src/internal/c4/combat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import type { Address, DiscoveryRequest, ProgramAccountFilter, SageContext, SnapshotEnvelope } from '../../client/contracts.js';
2
+ import type { C4AccountAdapter } from './adapter.js';
3
+ export declare const CRAFTING_HAB_FILTER_OFFSETS: Readonly<{
4
+ discriminator: 0;
5
+ game: 41;
6
+ owner: 9;
7
+ system: 73;
8
+ }>;
9
+ export declare const CRAFTING_PROCESS_FILTER_OFFSETS: Readonly<{
10
+ craftingHab: 145;
11
+ discriminator: 0;
12
+ profile: 41;
13
+ recipe: 9;
14
+ starbasePlayer: 105;
15
+ system: 73;
16
+ }>;
17
+ export declare const CRAFTING_RELATIONSHIPS: readonly [{
18
+ readonly from: "game + recipeId";
19
+ readonly kind: "derived";
20
+ readonly mechanism: "Recipe PDA seeds: literal, Game, and recipe id";
21
+ readonly to: "recipe";
22
+ }, {
23
+ readonly from: "profile | starSystem";
24
+ readonly kind: "discovered";
25
+ readonly mechanism: "targeted CraftingHabInstance stored-field filters";
26
+ readonly to: "craftingHabInstance[]";
27
+ }, {
28
+ readonly from: "profile | starbasePlayer";
29
+ readonly kind: "discovered";
30
+ readonly mechanism: "targeted CraftingProcess stored-field filters";
31
+ readonly to: "craftingProcess[]";
32
+ }, {
33
+ readonly from: "craftingProcess";
34
+ readonly kind: "stored";
35
+ readonly mechanism: "Recipe, Profile, System, StarbasePlayer, and Crafting Hab fields";
36
+ readonly to: "recipe | profile | starSystem | starbasePlayer | craftingHabInstance";
37
+ }, {
38
+ readonly from: "craftingHabInstance | craftingProcess";
39
+ readonly kind: "nested";
40
+ readonly mechanism: "ProductionCore and committed-input CargoPod values";
41
+ readonly to: "cargoPod";
42
+ }, {
43
+ readonly from: "craftingProcess";
44
+ readonly kind: "instruction-only";
45
+ readonly mechanism: "currency cache and output CargoPod co-accounts are not stored";
46
+ readonly to: "currencyCache | outputCargoPod";
47
+ }];
48
+ export interface CraftingFixedValueData {
49
+ readonly raw: bigint;
50
+ readonly value: number;
51
+ }
52
+ export interface CraftingModifierData {
53
+ readonly efficiency: CraftingFixedValueData;
54
+ readonly fee: CraftingFixedValueData;
55
+ readonly speed: CraftingFixedValueData;
56
+ readonly crewCount: CraftingFixedValueData;
57
+ }
58
+ export interface CraftingModifierBoundsData {
59
+ readonly minimum: CraftingFixedValueData;
60
+ readonly maximum: CraftingFixedValueData;
61
+ }
62
+ export interface CraftingCargoAmountData {
63
+ readonly cargoId: number;
64
+ readonly quantityRaw: bigint;
65
+ }
66
+ export interface CraftingCargoPodData {
67
+ readonly amounts: readonly CraftingCargoAmountData[];
68
+ readonly sequenceId: number;
69
+ readonly storageCostRaw: bigint;
70
+ }
71
+ export interface RecipeAccountData {
72
+ readonly version: number;
73
+ readonly id: number;
74
+ readonly game: Address;
75
+ readonly craftingDurationSeconds: bigint;
76
+ readonly minimumDurationSeconds: bigint;
77
+ readonly name: string;
78
+ readonly status: 'active' | 'deactivated';
79
+ readonly fee: {
80
+ readonly amountRaw: bigint;
81
+ readonly amountAtlas: number;
82
+ readonly recipient: 'atlas' | 'dao-atlas';
83
+ };
84
+ readonly habRequired: boolean;
85
+ readonly usageCountRaw: bigint;
86
+ readonly usageLimitRaw: bigint;
87
+ readonly xpValueRaw: bigint;
88
+ readonly minimumStarbaseLevel: 'level-0' | 'level-1' | 'level-2' | 'level-3' | 'level-4' | 'level-5' | 'css';
89
+ readonly modifierBounds: {
90
+ readonly efficiency: CraftingModifierBoundsData;
91
+ readonly speed: CraftingModifierBoundsData;
92
+ readonly crewCount: CraftingModifierBoundsData;
93
+ readonly fee: CraftingModifierBoundsData;
94
+ };
95
+ readonly researchRequirementIds: readonly number[];
96
+ readonly inputs: readonly CraftingCargoAmountData[];
97
+ readonly outputs: readonly CraftingCargoAmountData[];
98
+ }
99
+ export interface CraftingBuildingQuantityData {
100
+ readonly buildingId: number;
101
+ readonly quantity: number;
102
+ }
103
+ export type CraftingHabStateData = {
104
+ readonly kind: 'active';
105
+ } | {
106
+ readonly kind: 'design';
107
+ readonly sequenceId: number;
108
+ readonly buildings: readonly CraftingBuildingQuantityData[];
109
+ } | {
110
+ readonly kind: 'deactivated';
111
+ readonly deactivatedAtUnixSeconds: bigint;
112
+ };
113
+ export interface CraftingProductionRateData {
114
+ readonly cargoId: number;
115
+ readonly unitsPerSecond: number;
116
+ readonly unitsPerSecondRaw: bigint;
117
+ }
118
+ export interface CraftingHabAccountData {
119
+ readonly version: number;
120
+ readonly ownerProfile: Address;
121
+ readonly game: Address;
122
+ readonly system: Address;
123
+ readonly definitionId: number;
124
+ readonly definitionSequenceId: number;
125
+ readonly buildingDefinitionSequenceId: number;
126
+ readonly systemSequenceId: bigint;
127
+ readonly lastRentAtUnixSeconds: bigint;
128
+ readonly constructionRemainingSeconds: bigint;
129
+ readonly constructionProgressAtUnixSeconds: bigint;
130
+ readonly rentBalanceRaw: bigint;
131
+ readonly neededCrew: number;
132
+ readonly jobCapacity: number;
133
+ readonly jobsRunning: number;
134
+ readonly modifiers: CraftingModifierData;
135
+ readonly buildings: readonly CraftingBuildingQuantityData[];
136
+ readonly unlockedRecipeIds: readonly number[];
137
+ readonly state: CraftingHabStateData;
138
+ readonly production: {
139
+ readonly lastTickAtUnixSeconds: bigint;
140
+ readonly resourceCapacityRaw: bigint;
141
+ readonly netRates: readonly CraftingProductionRateData[];
142
+ readonly inventory: CraftingCargoPodData;
143
+ };
144
+ }
145
+ export interface CraftingProcessAccountData {
146
+ readonly version: number;
147
+ readonly recipe: Address;
148
+ readonly profile: Address;
149
+ readonly system: Address;
150
+ readonly starbasePlayer: Address;
151
+ readonly starbaseSequenceId: bigint;
152
+ readonly craftingHab: Address;
153
+ readonly quantityRaw: bigint;
154
+ readonly numCrew: number;
155
+ readonly startsAtUnixSeconds: bigint;
156
+ readonly endsAtUnixSeconds: bigint;
157
+ readonly feeEscrowRaw: bigint;
158
+ readonly inputs: CraftingCargoPodData;
159
+ }
160
+ export declare const recipeAccountDefinition: C4AccountAdapter<RecipeAccountData>;
161
+ export declare const craftingHabAccountDefinition: C4AccountAdapter<CraftingHabAccountData>;
162
+ export declare const craftingProcessAccountDefinition: C4AccountAdapter<CraftingProcessAccountData>;
163
+ export declare function deriveRecipeAddress(game: Address, recipeId: number): Promise<Address>;
164
+ export declare function buildCraftingHabOwnerDiscoveryFilters(game: Address, owner: Address, system?: Address): readonly ProgramAccountFilter[];
165
+ export declare function buildCraftingProcessProfileDiscoveryFilters(profile: Address): readonly ProgramAccountFilter[];
166
+ export declare function buildCraftingProcessStarbaseDiscoveryFilters(starbasePlayer: Address): readonly ProgramAccountFilter[];
167
+ export declare function discoverCraftingHabsByOwner(context: SageContext, game: Address, owner: Address, system: Address | undefined, options?: Omit<DiscoveryRequest, 'filters' | 'strategy'>): Promise<readonly SnapshotEnvelope<CraftingHabAccountData>[]>;
168
+ export declare function discoverCraftingProcessesByProfile(context: SageContext, profile: Address, options?: Omit<DiscoveryRequest, 'filters' | 'strategy'>): Promise<readonly SnapshotEnvelope<CraftingProcessAccountData>[]>;
169
+ export declare function discoverCraftingProcessesByStarbasePlayer(context: SageContext, player: Address, options?: Omit<DiscoveryRequest, 'filters' | 'strategy'>): Promise<readonly SnapshotEnvelope<CraftingProcessAccountData>[]>;
170
+ //# sourceMappingURL=crafting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crafting.d.ts","sourceRoot":"","sources":["../../../src/internal/c4/crafting.ts"],"names":[],"mappings":"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"}