@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,202 @@
1
+ import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
2
+ import { type CargoDefinitionSummary } from '../registry/index.js';
3
+ /** Options supported by reward-bearing Loot discovery.
4
+ * @example
5
+ * ```ts
6
+ * const options: RewardCommitmentDiscoveryOptions = { commitment: 'confirmed' };
7
+ * ```
8
+ */
9
+ export type RewardCommitmentDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
10
+ /** Immutable per-Game ATLAS reward registry and epoch selector.
11
+ * @example
12
+ * ```ts
13
+ * declare const registry: AtlasRewardRegistrySnapshot;
14
+ * console.log(registry.currentEpoch, registry.activeConfigVersion);
15
+ * ```
16
+ */
17
+ export interface AtlasRewardRegistrySnapshot {
18
+ readonly kind: 'atlasRewardRegistry';
19
+ readonly address: Address;
20
+ readonly version: number;
21
+ readonly bump: number;
22
+ readonly game: EntityRef<'game'>;
23
+ readonly currentEpoch: bigint;
24
+ readonly currentEpochStartedAtUnixSeconds: bigint;
25
+ readonly currentEpochEndsAtUnixSeconds: bigint;
26
+ readonly initialEpochOffsetSeconds: bigint;
27
+ readonly activeConfigVersion: number;
28
+ readonly pendingConfig: {
29
+ readonly configVersion: number;
30
+ readonly effectiveEpoch: bigint;
31
+ } | undefined;
32
+ readonly latestConfigVersion: number;
33
+ toJSON(): unknown;
34
+ }
35
+ /** Cargo-resolved immutable ATLAS reward configuration version.
36
+ * @example
37
+ * ```ts
38
+ * declare const config: AtlasRewardConfigSnapshot;
39
+ * console.log(config.configVersion, config.status);
40
+ * ```
41
+ */
42
+ export interface AtlasRewardConfigSnapshot {
43
+ readonly kind: 'atlasRewardConfig';
44
+ readonly address: Address;
45
+ readonly version: number;
46
+ readonly bump: number;
47
+ readonly status: 'enabled' | 'disabled';
48
+ readonly game: EntityRef<'game'>;
49
+ readonly configVersion: number;
50
+ readonly effectiveEpoch: bigint;
51
+ readonly createdAtUnixSeconds: bigint;
52
+ readonly sourceFlags: number;
53
+ readonly epochLengthSeconds: number;
54
+ readonly claimSettlementWindowSeconds: number;
55
+ readonly atlasBankInactivityExpirySeconds: bigint;
56
+ readonly rewardLootReclaimSeconds: bigint;
57
+ readonly factionPoolLeverRaw: bigint;
58
+ readonly kingSystemCurveRaw: readonly (readonly bigint[])[];
59
+ readonly pveLpRateBps: number;
60
+ readonly pvpMedallionRateBps: number;
61
+ readonly salvageEvRateBps: number;
62
+ readonly repairKitLpRateRaw: bigint;
63
+ readonly lossModelTargetBps: readonly number[];
64
+ readonly starbaseDestructionMedallionsRaw: readonly bigint[];
65
+ readonly activeMedallion: {
66
+ readonly cargo: CargoDefinitionSummary;
67
+ readonly generation: number;
68
+ readonly buyerPriceAtlasRaw: bigint;
69
+ } | undefined;
70
+ readonly medallionBuybackCapPerEpochRaw: bigint;
71
+ readonly rewardReserveLowBalanceThresholdRaw: bigint;
72
+ readonly upgradeLpRates: readonly {
73
+ readonly cargo: CargoDefinitionSummary;
74
+ readonly lpPerRawUnit: bigint;
75
+ }[];
76
+ readonly salvageEntries: readonly {
77
+ readonly cargo: CargoDefinitionSummary;
78
+ readonly weight: number;
79
+ readonly referenceValueAtlasRaw: bigint;
80
+ }[];
81
+ toJSON(): unknown;
82
+ }
83
+ /** Cargo-resolved finite ATLAS reward reserve.
84
+ * @example
85
+ * ```ts
86
+ * declare const treasury: AtlasRewardTreasurySnapshot;
87
+ * console.log(treasury.reserves.length);
88
+ * ```
89
+ */
90
+ export interface AtlasRewardTreasurySnapshot {
91
+ readonly kind: 'atlasRewardTreasury';
92
+ readonly address: Address;
93
+ readonly version: number;
94
+ readonly bump: number;
95
+ readonly game: EntityRef<'game'>;
96
+ readonly reserves: readonly {
97
+ readonly cargo: CargoDefinitionSummary;
98
+ readonly quantityRaw: bigint;
99
+ }[];
100
+ toJSON(): unknown;
101
+ }
102
+ /** Combined active/pending reward configuration and treasury state.
103
+ *
104
+ * Member snapshots retain their independent read metadata. The composite's
105
+ * metadata reports the earliest member slot so callers can inspect slot skew.
106
+ * @example
107
+ * ```ts
108
+ * declare const state: AtlasRewardStateSnapshot;
109
+ * console.log(state.registry.currentEpoch, state.activeConfig.status);
110
+ * ```
111
+ */
112
+ export interface AtlasRewardStateSnapshot {
113
+ readonly kind: 'atlasRewardState';
114
+ readonly registry: AtlasRewardRegistrySnapshot;
115
+ readonly activeConfig: AtlasRewardConfigSnapshot;
116
+ readonly pendingConfig: AtlasRewardConfigSnapshot | undefined;
117
+ readonly treasury: AtlasRewardTreasurySnapshot;
118
+ toJSON(): unknown;
119
+ }
120
+ /** Reward commitment carried by Loot, linked to combat through a typed reference.
121
+ * @example
122
+ * ```ts
123
+ * declare const commitment: RewardCommitmentSnapshot;
124
+ * console.log(commitment.loot.address, commitment.configVersion);
125
+ * ```
126
+ */
127
+ export interface RewardCommitmentSnapshot {
128
+ readonly kind: 'rewardCommitment';
129
+ readonly loot: EntityRef<'loot'>;
130
+ readonly game: EntityRef<'game'>;
131
+ readonly profile: EntityRef<'profile'>;
132
+ readonly status: 'committed' | 'resolved' | 'unknown';
133
+ readonly rawStatus?: number;
134
+ readonly configVersion: number;
135
+ readonly slot: bigint;
136
+ readonly committedAtUnixSeconds: bigint;
137
+ readonly legs: readonly {
138
+ readonly recipient: EntityRef<'profile'>;
139
+ readonly medallionsRaw: bigint;
140
+ readonly salvageTargetValueAtlasRaw: bigint;
141
+ }[];
142
+ toJSON(): unknown;
143
+ }
144
+ /** Derives and reads the configured Game's ATLAS reward registry.
145
+ * @example
146
+ * ```ts
147
+ * declare const ctx: SageContext;
148
+ * const registry = await getAtlasRewardRegistry(ctx);
149
+ * ```
150
+ */
151
+ export declare function getAtlasRewardRegistry(context: SageContext, options?: ReadOptions): Promise<AtlasRewardRegistrySnapshot>;
152
+ /** Derives and reads one immutable ATLAS reward config version.
153
+ * @example
154
+ * ```ts
155
+ * declare const ctx: SageContext;
156
+ * const config = await getAtlasRewardConfig(ctx, 9);
157
+ * ```
158
+ */
159
+ export declare function getAtlasRewardConfig(context: SageContext, configVersion: number, options?: ReadOptions): Promise<AtlasRewardConfigSnapshot>;
160
+ /** Derives and reads the configured Game's finite reward treasury.
161
+ * @example
162
+ * ```ts
163
+ * declare const ctx: SageContext;
164
+ * const treasury = await getAtlasRewardTreasury(ctx);
165
+ * ```
166
+ */
167
+ export declare function getAtlasRewardTreasury(context: SageContext, options?: ReadOptions): Promise<AtlasRewardTreasurySnapshot>;
168
+ /** Selects the config version effective for an epoch, including the pending boundary.
169
+ * @example
170
+ * ```ts
171
+ * declare const registry: AtlasRewardRegistrySnapshot;
172
+ * const version = selectAtlasRewardConfigVersion(registry, 20_670n);
173
+ * ```
174
+ */
175
+ export declare function selectAtlasRewardConfigVersion(registry: AtlasRewardRegistrySnapshot, epoch: bigint): number;
176
+ /** Reads combined active/pending config, epoch registry, and treasury state.
177
+ * @example
178
+ * ```ts
179
+ * declare const ctx: SageContext;
180
+ * const state = await getAtlasRewardState(ctx);
181
+ * ```
182
+ */
183
+ export declare function getAtlasRewardState(context: SageContext, options?: ReadOptions): Promise<AtlasRewardStateSnapshot>;
184
+ /** Reads an optional reward commitment from one Loot account.
185
+ * @example
186
+ * ```ts
187
+ * declare const ctx: SageContext;
188
+ * declare const loot: Address;
189
+ * const commitment = await maybeGetRewardCommitment(ctx, loot);
190
+ * ```
191
+ */
192
+ export declare function maybeGetRewardCommitment(context: SageContext, loot: Address, options?: ReadOptions): Promise<RewardCommitmentSnapshot | undefined>;
193
+ /** Discovers reward-bearing Loot for one Profile and returns combat-boundary refs.
194
+ * @example
195
+ * ```ts
196
+ * declare const ctx: SageContext;
197
+ * declare const profile: Address;
198
+ * const commitments = await getRewardCommitmentsByProfile(ctx, profile);
199
+ * ```
200
+ */
201
+ export declare function getRewardCommitmentsByProfile(context: SageContext, profile: Address, options?: RewardCommitmentDiscoveryOptions): Promise<readonly RewardCommitmentSnapshot[]>;
202
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rewards/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,290 @@
1
+ import { AccountDecodeError, entityRef, } from '../client/index.js';
2
+ import { atlasRewardConfigAccountDefinition, atlasRewardRegistryAccountDefinition, atlasRewardTreasuryAccountDefinition, deriveAtlasRewardConfigAddress, deriveAtlasRewardRegistryAddress, deriveAtlasRewardTreasuryAddress, discoverRewardLootAccounts, rewardLootAccountDefinition, } from '../internal/c4/rewards.js';
3
+ import { requireGameAddress } from '../internal/game-context.js';
4
+ import { attachJsonSerialization } from '../internal/json.js';
5
+ import { attachReadMeta, readMeta } from '../internal/read-meta.js';
6
+ import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
7
+ import { resolveCargo, } from '../registry/index.js';
8
+ const REGISTRY_SNAPSHOTS = new WeakMap();
9
+ const CONFIG_SNAPSHOTS = new WeakMap();
10
+ const TREASURY_SNAPSHOTS = new WeakMap();
11
+ const COMMITMENT_SNAPSHOTS = new WeakMap();
12
+ function metadata(envelope, strategy = 'derived') {
13
+ return {
14
+ commitment: envelope.commitment,
15
+ slot: envelope.slot,
16
+ source: envelope.source,
17
+ strategy,
18
+ };
19
+ }
20
+ function assertGame(context, type, envelope) {
21
+ const game = requireGameAddress(context);
22
+ if (envelope.data.game !== game) {
23
+ throw new AccountDecodeError(type, envelope.address, new RangeError(`The ${type} account belongs to a different Game.`), `${type} ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the address and cluster before retrying.`);
24
+ }
25
+ }
26
+ function registrySnapshot(context, envelope) {
27
+ assertGame(context, 'atlasRewardRegistry', envelope);
28
+ const existing = REGISTRY_SNAPSHOTS.get(envelope);
29
+ if (existing !== undefined)
30
+ return existing;
31
+ const data = envelope.data;
32
+ const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
33
+ activeConfigVersion: data.activeConfigVersion,
34
+ address: envelope.address,
35
+ bump: data.bump,
36
+ currentEpoch: data.currentEpoch,
37
+ currentEpochEndsAtUnixSeconds: data.currentEpochEndsAtUnixSeconds,
38
+ currentEpochStartedAtUnixSeconds: data.currentEpochStartedAtUnixSeconds,
39
+ game: entityRef('game', data.game),
40
+ initialEpochOffsetSeconds: data.initialEpochOffsetSeconds,
41
+ kind: 'atlasRewardRegistry',
42
+ latestConfigVersion: data.latestConfigVersion,
43
+ pendingConfig: data.pendingConfig.kind === 'none'
44
+ ? undefined
45
+ : {
46
+ configVersion: data.pendingConfig.configVersion,
47
+ effectiveEpoch: data.pendingConfig.effectiveEpoch,
48
+ },
49
+ version: data.version,
50
+ }), metadata(envelope)));
51
+ REGISTRY_SNAPSHOTS.set(envelope, snapshot);
52
+ return snapshot;
53
+ }
54
+ /** Derives and reads the configured Game's ATLAS reward registry.
55
+ * @example
56
+ * ```ts
57
+ * declare const ctx: SageContext;
58
+ * const registry = await getAtlasRewardRegistry(ctx);
59
+ * ```
60
+ */
61
+ export async function getAtlasRewardRegistry(context, options) {
62
+ const game = requireGameAddress(context);
63
+ const address = await deriveAtlasRewardRegistryAddress(game);
64
+ return registrySnapshot(context, await context.data.read(atlasRewardRegistryAccountDefinition, address, options));
65
+ }
66
+ async function createConfigSnapshot(context, envelope) {
67
+ assertGame(context, 'atlasRewardConfig', envelope);
68
+ const data = envelope.data;
69
+ const activeMedallion = data.activeMedallion.cargoId === 0 &&
70
+ data.activeMedallion.generation === 0 &&
71
+ data.activeMedallion.buyerPriceAtlasRaw === 0n
72
+ ? undefined
73
+ : {
74
+ buyerPriceAtlasRaw: data.activeMedallion.buyerPriceAtlasRaw,
75
+ cargo: await resolveCargo(context, data.activeMedallion.cargoId),
76
+ generation: data.activeMedallion.generation,
77
+ };
78
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
79
+ activeMedallion,
80
+ address: envelope.address,
81
+ atlasBankInactivityExpirySeconds: data.atlasBankInactivityExpirySeconds,
82
+ bump: data.bump,
83
+ claimSettlementWindowSeconds: data.claimSettlementWindowSeconds,
84
+ configVersion: data.configVersion,
85
+ createdAtUnixSeconds: data.createdAtUnixSeconds,
86
+ effectiveEpoch: data.effectiveEpoch,
87
+ epochLengthSeconds: data.epochLengthSeconds,
88
+ factionPoolLeverRaw: data.factionPoolLeverRaw,
89
+ game: entityRef('game', data.game),
90
+ kingSystemCurveRaw: data.kingSystemCurveRaw,
91
+ kind: 'atlasRewardConfig',
92
+ lossModelTargetBps: data.lossModelTargetBps,
93
+ medallionBuybackCapPerEpochRaw: data.medallionBuybackCapPerEpochRaw,
94
+ pveLpRateBps: data.pveLpRateBps,
95
+ pvpMedallionRateBps: data.pvpMedallionRateBps,
96
+ repairKitLpRateRaw: data.repairKitLpRateRaw,
97
+ rewardLootReclaimSeconds: data.rewardLootReclaimSeconds,
98
+ rewardReserveLowBalanceThresholdRaw: data.rewardReserveLowBalanceThresholdRaw,
99
+ salvageEntries: await Promise.all(data.salvageEntries.map(async (entry) => ({
100
+ cargo: await resolveCargo(context, entry.cargoId),
101
+ referenceValueAtlasRaw: entry.referenceValueAtlasRaw,
102
+ weight: entry.weight,
103
+ }))),
104
+ salvageEvRateBps: data.salvageEvRateBps,
105
+ sourceFlags: data.sourceFlags,
106
+ starbaseDestructionMedallionsRaw: data.starbaseDestructionMedallionsRaw,
107
+ status: data.enabled ? 'enabled' : 'disabled',
108
+ upgradeLpRates: await Promise.all(data.upgradeLpRates.map(async (entry) => ({
109
+ cargo: await resolveCargo(context, entry.cargoId),
110
+ lpPerRawUnit: entry.lpPerRawUnit,
111
+ }))),
112
+ version: data.version,
113
+ }), metadata(envelope)));
114
+ }
115
+ /** Derives and reads one immutable ATLAS reward config version.
116
+ * @example
117
+ * ```ts
118
+ * declare const ctx: SageContext;
119
+ * const config = await getAtlasRewardConfig(ctx, 9);
120
+ * ```
121
+ */
122
+ export async function getAtlasRewardConfig(context, configVersion, options) {
123
+ const game = requireGameAddress(context);
124
+ const address = await deriveAtlasRewardConfigAddress(game, configVersion);
125
+ const envelope = await context.data.read(atlasRewardConfigAccountDefinition, address, options);
126
+ if (envelope.data.configVersion !== configVersion) {
127
+ throw new AccountDecodeError('atlasRewardConfig', address, new RangeError('AtlasRewardConfig version contradicted its PDA seeds.'), `AtlasRewardConfig ${address} reports version ${String(envelope.data.configVersion)} but its address was derived for version ${String(configVersion)}. Read the version selected by the reward registry and refresh the account before retrying.`);
128
+ }
129
+ const existing = CONFIG_SNAPSHOTS.get(envelope);
130
+ if (existing !== undefined)
131
+ return existing;
132
+ const pending = createConfigSnapshot(context, envelope);
133
+ CONFIG_SNAPSHOTS.set(envelope, pending);
134
+ void pending.catch(() => CONFIG_SNAPSHOTS.delete(envelope));
135
+ return pending;
136
+ }
137
+ async function createTreasurySnapshot(context, envelope) {
138
+ assertGame(context, 'atlasRewardTreasury', envelope);
139
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
140
+ address: envelope.address,
141
+ bump: envelope.data.bump,
142
+ game: entityRef('game', envelope.data.game),
143
+ kind: 'atlasRewardTreasury',
144
+ reserves: await Promise.all(envelope.data.reserves.map(async (reserve) => ({
145
+ cargo: await resolveCargo(context, reserve.cargoId),
146
+ quantityRaw: reserve.quantityRaw,
147
+ }))),
148
+ version: envelope.data.version,
149
+ }), metadata(envelope)));
150
+ }
151
+ /** Derives and reads the configured Game's finite reward treasury.
152
+ * @example
153
+ * ```ts
154
+ * declare const ctx: SageContext;
155
+ * const treasury = await getAtlasRewardTreasury(ctx);
156
+ * ```
157
+ */
158
+ export async function getAtlasRewardTreasury(context, options) {
159
+ const game = requireGameAddress(context);
160
+ const address = await deriveAtlasRewardTreasuryAddress(game);
161
+ const envelope = await context.data.read(atlasRewardTreasuryAccountDefinition, address, options);
162
+ const existing = TREASURY_SNAPSHOTS.get(envelope);
163
+ if (existing !== undefined)
164
+ return existing;
165
+ const pending = createTreasurySnapshot(context, envelope);
166
+ TREASURY_SNAPSHOTS.set(envelope, pending);
167
+ void pending.catch(() => TREASURY_SNAPSHOTS.delete(envelope));
168
+ return pending;
169
+ }
170
+ /** Selects the config version effective for an epoch, including the pending boundary.
171
+ * @example
172
+ * ```ts
173
+ * declare const registry: AtlasRewardRegistrySnapshot;
174
+ * const version = selectAtlasRewardConfigVersion(registry, 20_670n);
175
+ * ```
176
+ */
177
+ export function selectAtlasRewardConfigVersion(registry, epoch) {
178
+ const pending = registry.pendingConfig;
179
+ return pending !== undefined && epoch >= pending.effectiveEpoch
180
+ ? pending.configVersion
181
+ : registry.activeConfigVersion;
182
+ }
183
+ /** Reads combined active/pending config, epoch registry, and treasury state.
184
+ * @example
185
+ * ```ts
186
+ * declare const ctx: SageContext;
187
+ * const state = await getAtlasRewardState(ctx);
188
+ * ```
189
+ */
190
+ export async function getAtlasRewardState(context, options) {
191
+ const registry = await getAtlasRewardRegistry(context, options);
192
+ const [activeConfig, pendingConfig, treasury] = await Promise.all([
193
+ getAtlasRewardConfig(context, registry.activeConfigVersion, options),
194
+ registry.pendingConfig === undefined
195
+ ? undefined
196
+ : getAtlasRewardConfig(context, registry.pendingConfig.configVersion, options),
197
+ getAtlasRewardTreasury(context, options),
198
+ ]);
199
+ if (activeConfig.effectiveEpoch > registry.currentEpoch) {
200
+ throw new AccountDecodeError('atlasRewardRegistry', registry.address, new RangeError('Active reward config is not effective for the current epoch.'), `AtlasRewardRegistry ${registry.address} selects config ${String(activeConfig.configVersion)}, which becomes effective at epoch ${String(activeConfig.effectiveEpoch)} after current epoch ${String(registry.currentEpoch)}. Wait for the registry epoch to advance or refresh the registry and config before retrying.`);
201
+ }
202
+ if (registry.pendingConfig !== undefined &&
203
+ (pendingConfig.effectiveEpoch !== registry.pendingConfig.effectiveEpoch ||
204
+ registry.pendingConfig.effectiveEpoch <= registry.currentEpoch)) {
205
+ throw new AccountDecodeError('atlasRewardRegistry', registry.address, new RangeError('Pending reward config does not match the registry epoch selector.'), `AtlasRewardRegistry ${registry.address} and pending config ${pendingConfig.address} disagree about the next effective epoch. Refresh both accounts and retry after the on-chain reward transition is consistent.`);
206
+ }
207
+ const memberMetadata = [
208
+ readMeta(registry),
209
+ readMeta(activeConfig),
210
+ ...(pendingConfig === undefined ? [] : [readMeta(pendingConfig)]),
211
+ readMeta(treasury),
212
+ ];
213
+ const compositeMetadata = {
214
+ commitment: memberMetadata[0].commitment,
215
+ slot: memberMetadata.reduce((earliest, current) => current.slot < earliest ? current.slot : earliest, memberMetadata[0].slot),
216
+ source: memberMetadata[0].source,
217
+ strategy: 'derived',
218
+ };
219
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
220
+ activeConfig,
221
+ kind: 'atlasRewardState',
222
+ pendingConfig,
223
+ registry,
224
+ treasury,
225
+ }), compositeMetadata));
226
+ }
227
+ function commitmentSnapshot(context, envelope, strategy = 'direct') {
228
+ assertGame(context, 'loot', envelope);
229
+ if (envelope.data.reward.kind === 'none')
230
+ return undefined;
231
+ const snapshotsByStrategy = COMMITMENT_SNAPSHOTS.get(envelope);
232
+ const existing = snapshotsByStrategy?.get(strategy);
233
+ if (existing !== undefined)
234
+ return existing;
235
+ const reward = envelope.data.reward;
236
+ const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
237
+ committedAtUnixSeconds: reward.committedAtUnixSeconds,
238
+ configVersion: reward.configVersion,
239
+ game: entityRef('game', envelope.data.game),
240
+ kind: 'rewardCommitment',
241
+ legs: reward.legs.map((leg) => ({
242
+ medallionsRaw: leg.medallionsRaw,
243
+ recipient: entityRef('profile', leg.recipient),
244
+ salvageTargetValueAtlasRaw: leg.salvageTargetValueAtlasRaw,
245
+ })),
246
+ loot: entityRef('loot', envelope.address),
247
+ profile: entityRef('profile', envelope.data.profile),
248
+ ...(reward.kind === 'unknown' ? { rawStatus: reward.rawStatus } : {}),
249
+ slot: reward.slot,
250
+ status: reward.kind,
251
+ }), metadata(envelope, strategy)));
252
+ if (snapshotsByStrategy === undefined) {
253
+ COMMITMENT_SNAPSHOTS.set(envelope, new Map([[strategy, snapshot]]));
254
+ }
255
+ else {
256
+ snapshotsByStrategy.set(strategy, snapshot);
257
+ }
258
+ return snapshot;
259
+ }
260
+ /** Reads an optional reward commitment from one Loot account.
261
+ * @example
262
+ * ```ts
263
+ * declare const ctx: SageContext;
264
+ * declare const loot: Address;
265
+ * const commitment = await maybeGetRewardCommitment(ctx, loot);
266
+ * ```
267
+ */
268
+ export async function maybeGetRewardCommitment(context, loot, options) {
269
+ requireGameAddress(context);
270
+ const [envelope] = await context.data.readMany(rewardLootAccountDefinition, [loot], options);
271
+ return envelope === undefined
272
+ ? undefined
273
+ : commitmentSnapshot(context, envelope);
274
+ }
275
+ /** Discovers reward-bearing Loot for one Profile and returns combat-boundary refs.
276
+ * @example
277
+ * ```ts
278
+ * declare const ctx: SageContext;
279
+ * declare const profile: Address;
280
+ * const commitments = await getRewardCommitmentsByProfile(ctx, profile);
281
+ * ```
282
+ */
283
+ export async function getRewardCommitmentsByProfile(context, profile, options) {
284
+ const envelopes = await discoverRewardLootAccounts(context, profile, options);
285
+ const snapshots = envelopes
286
+ .map((envelope) => commitmentSnapshot(context, envelope, 'targeted-program-accounts'))
287
+ .filter((value) => value !== undefined);
288
+ return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
289
+ }
290
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rewards/index.ts"],"names":[],"mappings":"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"}