@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,9 @@
1
+ export const INVALIDATE_CONTEXT_ADDRESSES = Symbol('invalidateContextAddresses');
2
+ export const READ_CONTEXT_RAW_ACCOUNTS = Symbol('readContextRawAccounts');
3
+ export function invalidateContextAddresses(context, addresses) {
4
+ context.data[INVALIDATE_CONTEXT_ADDRESSES](addresses);
5
+ }
6
+ export function readContextRawAccounts(context, addresses, options) {
7
+ return context.data[READ_CONTEXT_RAW_ACCOUNTS](addresses, options);
8
+ }
9
+ //# sourceMappingURL=reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconciliation.js","sourceRoot":"","sources":["../../src/client/reconciliation.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,4BAA4B,GAAkB,MAAM,CAC/D,4BAA4B,CAC7B,CAAC;AACF,MAAM,CAAC,MAAM,yBAAyB,GAAkB,MAAM,CAC5D,wBAAwB,CACzB,CAAC;AAUF,MAAM,UAAU,0BAA0B,CACxC,OAAoB,EACpB,SAA6B;IAE5B,OAAO,CAAC,IAA8B,CAAC,4BAA4B,CAAC,CACnE,SAAS,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,SAA6B,EAC7B,OAA4B;IAE5B,OAAQ,OAAO,CAAC,IAA8B,CAAC,yBAAyB,CAAC,CACvE,SAAS,EACT,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { Address, EntityType } from './contracts.js';
2
+ /** A lightweight cross-domain reference to an independently addressable account.
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * declare const fleetAddress: Address;
7
+ * const fleet: EntityRef<'fleet'> = entityRef('fleet', fleetAddress);
8
+ * ```
9
+ */
10
+ export interface EntityRef<TType extends EntityType = EntityType> {
11
+ readonly type: TType;
12
+ readonly address: Address;
13
+ }
14
+ /** Creates a plain typed reference without resolving or reading the account.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * declare const fleetAddress: Address;
19
+ * const fleet = entityRef('fleet', fleetAddress);
20
+ * ```
21
+ */
22
+ export declare function entityRef<TType extends EntityType>(type: TType, address: Address): EntityRef<TType>;
23
+ //# sourceMappingURL=refs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.d.ts","sourceRoot":"","sources":["../../src/client/refs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS,CAAC,KAAK,SAAS,UAAU,GAAG,UAAU;IAC9D,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,KAAK,SAAS,UAAU,EAChD,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,OAAO,GACf,SAAS,CAAC,KAAK,CAAC,CAElB"}
@@ -0,0 +1,12 @@
1
+ /** Creates a plain typed reference without resolving or reading the account.
2
+ *
3
+ * @example
4
+ * ```ts
5
+ * declare const fleetAddress: Address;
6
+ * const fleet = entityRef('fleet', fleetAddress);
7
+ * ```
8
+ */
9
+ export function entityRef(type, address) {
10
+ return Object.freeze({ type, address });
11
+ }
12
+ //# sourceMappingURL=refs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refs.js","sourceRoot":"","sources":["../../src/client/refs.ts"],"names":[],"mappings":"AAeA;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CACvB,IAAW,EACX,OAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,256 @@
1
+ import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
2
+ import { type CombatFaction, type LootRewardData, type OutlawFlagAccountData } from '../internal/c4/combat.js';
3
+ import { type FleetCombatStatsData } from '../internal/c4/fleet.js';
4
+ import type { GameCombatConfigurationData, GameStimulantEffectData } from '../internal/c4/game.js';
5
+ import { type CargoDefinitionSummary } from '../registry/index.js';
6
+ /** Faction identifier accepted by combat reads.
7
+ * @example
8
+ * ```ts
9
+ * const faction: CombatFaction = 'mud';
10
+ * ```
11
+ */
12
+ export type { CombatFaction } from '../internal/c4/combat.js';
13
+ /** Translated Loot reward state, including unknown raw status bytes.
14
+ * @example
15
+ * ```ts
16
+ * const reward: LootRewardData = { kind: 'none' };
17
+ * ```
18
+ */
19
+ export type { LootRewardData } from '../internal/c4/combat.js';
20
+ /** Translated optional OutlawFlag account data.
21
+ * @example
22
+ * ```ts
23
+ * declare const data: OutlawFlagAccountData;
24
+ * console.log(data.faction, data.isOutlaw);
25
+ * ```
26
+ */
27
+ export type { OutlawFlagAccountData } from '../internal/c4/combat.js';
28
+ /** Translated Fleet combat statistics.
29
+ * @example
30
+ * ```ts
31
+ * declare const stats: FleetCombatStatsData;
32
+ * console.log(stats.hp, stats.damageKinetic);
33
+ * ```
34
+ */
35
+ export type { FleetCombatStatsData } from '../internal/c4/fleet.js';
36
+ /** Translated Game combat configuration before cargo resolution.
37
+ * @example
38
+ * ```ts
39
+ * declare const configuration: GameCombatConfigurationData;
40
+ * console.log(configuration.maxFleetSize);
41
+ * ```
42
+ */
43
+ export type { GameCombatConfigurationData } from '../internal/c4/game.js';
44
+ /** One translated combat stimulant effect.
45
+ * @example
46
+ * ```ts
47
+ * const effect: GameStimulantEffectData = {
48
+ * charges: 1,
49
+ * deltaBps: 250,
50
+ * stackRuleId: 0,
51
+ * statId: 2,
52
+ * };
53
+ * ```
54
+ */
55
+ export type { GameStimulantEffectData } from '../internal/c4/game.js';
56
+ /** Options supported by targeted Loot discovery.
57
+ * @example
58
+ * ```ts
59
+ * const options: LootDiscoveryOptions = { commitment: 'confirmed' };
60
+ * ```
61
+ */
62
+ export type LootDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
63
+ /** One cargo-backed combat stimulant definition.
64
+ * @example
65
+ * ```ts
66
+ * declare const stimulant: CombatStimulantDefinition;
67
+ * console.log(stimulant.cargo.name, stimulant.effects.length);
68
+ * ```
69
+ */
70
+ export interface CombatStimulantDefinition {
71
+ readonly cargo: CargoDefinitionSummary;
72
+ readonly effects: readonly GameStimulantEffectData[];
73
+ }
74
+ /** Immutable Game combat configuration and stimulant catalog.
75
+ * @example
76
+ * ```ts
77
+ * declare const configuration: CombatConfigurationSnapshot;
78
+ * console.log(configuration.globalCeasefire, configuration.maxFleetSize);
79
+ * ```
80
+ */
81
+ export interface CombatConfigurationSnapshot extends Omit<GameCombatConfigurationData, 'stimulantDefinitions'> {
82
+ readonly kind: 'combatConfiguration';
83
+ readonly address: Address;
84
+ readonly stimulantDefinitions: {
85
+ readonly sequenceId: number;
86
+ readonly definitions: readonly CombatStimulantDefinition[];
87
+ };
88
+ toJSON(): unknown;
89
+ }
90
+ /** Immutable focused combat projection of one Fleet.
91
+ * @example
92
+ * ```ts
93
+ * declare const status: FleetCombatStatusSnapshot;
94
+ * console.log(
95
+ * status.current.abilityPowerPoints,
96
+ * status.timing.abilityPowerReloadAtUnixSeconds,
97
+ * );
98
+ * ```
99
+ */
100
+ export interface FleetCombatStatusSnapshot {
101
+ readonly kind: 'fleetCombatStatus';
102
+ readonly fleet: EntityRef<'fleet'>;
103
+ readonly ownerProfile: EntityRef<'profile'>;
104
+ readonly faction: CombatFaction;
105
+ readonly participant: {
106
+ readonly kind: 'player';
107
+ } | {
108
+ readonly kind: 'npc';
109
+ readonly factionId: number;
110
+ };
111
+ readonly current: {
112
+ readonly abilityPowerPoints: number;
113
+ readonly shieldPoints: number;
114
+ readonly hullPoints: number;
115
+ readonly pendingHullPoints: number;
116
+ };
117
+ readonly stance: {
118
+ readonly ammoUsage: 'none' | 'light' | 'heavy';
119
+ };
120
+ readonly timing: {
121
+ readonly abilityPowerReloadAtUnixSeconds: bigint;
122
+ readonly shieldBreakDelayEndsAtUnixSeconds: bigint;
123
+ readonly lastCombatUpdateAtUnixSeconds: bigint;
124
+ };
125
+ readonly stimulants: readonly {
126
+ readonly statId: number;
127
+ readonly deltaBps: number;
128
+ readonly chargesRemaining: number;
129
+ }[];
130
+ readonly stats: FleetCombatStatsData;
131
+ toJSON(): unknown;
132
+ }
133
+ /** One resolved cargo quantity inside Loot.
134
+ * @example
135
+ * ```ts
136
+ * declare const item: LootCargoItem;
137
+ * console.log(item.cargo.name, item.quantityRaw);
138
+ * ```
139
+ */
140
+ export interface LootCargoItem {
141
+ readonly cargo: CargoDefinitionSummary;
142
+ readonly quantityRaw: bigint;
143
+ }
144
+ /** Resolved inventory for one Loot leg.
145
+ * @example
146
+ * ```ts
147
+ * declare const inventory: LootInventory;
148
+ * console.log(inventory.items.length);
149
+ * ```
150
+ */
151
+ export interface LootInventory {
152
+ readonly sequenceId: number;
153
+ readonly storageCostRaw: bigint;
154
+ readonly items: readonly LootCargoItem[];
155
+ }
156
+ /** One translated Loot item group.
157
+ * @example
158
+ * ```ts
159
+ * declare const item: LootItem;
160
+ * console.log(item.destroyer.address, item.exclusivityUnlockAtUnixSeconds);
161
+ * ```
162
+ */
163
+ export interface LootItem {
164
+ readonly destroyer: EntityRef<'fleet'>;
165
+ readonly exclusivityUnlockAtUnixSeconds: bigint;
166
+ readonly rewardReclaimAtUnixSeconds: bigint;
167
+ readonly inventory: LootInventory;
168
+ }
169
+ /** Immutable Loot snapshot with resolved cargo inventory.
170
+ * @example
171
+ * ```ts
172
+ * declare const loot: LootSnapshot;
173
+ * console.log(loot.reward.kind, loot.items.length);
174
+ * ```
175
+ */
176
+ export interface LootSnapshot {
177
+ readonly kind: 'loot';
178
+ readonly address: Address;
179
+ readonly version: number;
180
+ readonly game: EntityRef<'game'>;
181
+ readonly profile: EntityRef<'profile'>;
182
+ readonly coordinates: {
183
+ readonly x: number;
184
+ readonly y: number;
185
+ };
186
+ readonly reward: LootRewardData;
187
+ readonly items: readonly LootItem[];
188
+ toJSON(): unknown;
189
+ }
190
+ /** Immutable optional outlaw declaration derived from Profile and faction.
191
+ * @example
192
+ * ```ts
193
+ * declare const flag: OutlawFlagSnapshot;
194
+ * console.log(flag.isOutlaw, flag.pvpUntilUnixSeconds);
195
+ * ```
196
+ */
197
+ export interface OutlawFlagSnapshot extends Omit<OutlawFlagAccountData, 'profile'> {
198
+ readonly kind: 'outlawFlag';
199
+ readonly address: Address;
200
+ readonly profile: EntityRef<'profile'>;
201
+ toJSON(): unknown;
202
+ }
203
+ /** Reads the configured Game's combat settings and stimulant catalog.
204
+ * @example
205
+ * ```ts
206
+ * declare const ctx: SageContext;
207
+ * const configuration = await getCombatConfiguration(ctx);
208
+ * ```
209
+ */
210
+ export declare function getCombatConfiguration(context: SageContext, options?: ReadOptions): Promise<CombatConfigurationSnapshot>;
211
+ /** Reads one Fleet and returns only its translated combat state.
212
+ * @example
213
+ * ```ts
214
+ * declare const ctx: SageContext;
215
+ * declare const fleet: Address;
216
+ * const status = await getFleetCombatStatus(ctx, fleet);
217
+ * ```
218
+ */
219
+ export declare function getFleetCombatStatus(context: SageContext, address: Address, options?: ReadOptions): Promise<FleetCombatStatusSnapshot>;
220
+ /** Reads required Loot by its signer-created account address.
221
+ * @example
222
+ * ```ts
223
+ * declare const ctx: SageContext;
224
+ * declare const address: Address;
225
+ * const loot = await getLoot(ctx, address);
226
+ * ```
227
+ */
228
+ export declare function getLoot(context: SageContext, address: Address, options?: ReadOptions): Promise<LootSnapshot>;
229
+ /** Reads optional Loot by account address.
230
+ * @example
231
+ * ```ts
232
+ * declare const ctx: SageContext;
233
+ * declare const address: Address;
234
+ * const loot = await maybeGetLoot(ctx, address);
235
+ * ```
236
+ */
237
+ export declare function maybeGetLoot(context: SageContext, address: Address, options?: ReadOptions): Promise<LootSnapshot | undefined>;
238
+ /** Discovers Loot created by one Profile using stable targeted filters.
239
+ * @example
240
+ * ```ts
241
+ * declare const ctx: SageContext;
242
+ * declare const profile: Address;
243
+ * const loot = await getLootByProfile(ctx, profile);
244
+ * ```
245
+ */
246
+ export declare function getLootByProfile(context: SageContext, profile: Address, options?: LootDiscoveryOptions): Promise<readonly LootSnapshot[]>;
247
+ /** Derives and reads an optional OutlawFlag for a Profile/faction pair.
248
+ * @example
249
+ * ```ts
250
+ * declare const ctx: SageContext;
251
+ * declare const profile: Address;
252
+ * const flag = await getOutlawFlag(ctx, profile, 'mud');
253
+ * ```
254
+ */
255
+ export declare function getOutlawFlag(context: SageContext, profile: Address, againstFaction: CombatFaction, options?: ReadOptions): Promise<OutlawFlagSnapshot | undefined>;
256
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,222 @@
1
+ import { AccountDecodeError, entityRef, } from '../client/index.js';
2
+ import { deriveOutlawFlagAddress, discoverLootAccounts, lootAccountDefinition, outlawFlagAccountDefinition, } from '../internal/c4/combat.js';
3
+ import { assertCanonicalFleetAddress, fleetAccountDefinition, } from '../internal/c4/fleet.js';
4
+ import { requireGameAddress } from '../internal/game-context.js';
5
+ import { attachJsonSerialization } from '../internal/json.js';
6
+ import { attachReadMeta, readMeta } from '../internal/read-meta.js';
7
+ import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
8
+ import { resolveCargo, } from '../registry/index.js';
9
+ import { readGameCombatConfiguration } from '../registry/combat.js';
10
+ const CONFIGURATION_SNAPSHOTS = new WeakMap();
11
+ const FLEET_STATUS_SNAPSHOTS = new WeakMap();
12
+ const LOOT_SNAPSHOTS = new WeakMap();
13
+ const OUTLAW_SNAPSHOTS = new WeakMap();
14
+ function metadata(envelope, strategy = 'direct') {
15
+ return {
16
+ commitment: envelope.commitment,
17
+ slot: envelope.slot,
18
+ source: envelope.source,
19
+ strategy,
20
+ };
21
+ }
22
+ async function createConfigurationSnapshot(context, envelope) {
23
+ const { stimulantDefinitions, ...configuration } = envelope.data;
24
+ const definitions = await Promise.all(stimulantDefinitions.definitions.map(async (definition) => ({
25
+ cargo: await resolveCargo(context, definition.cargoId),
26
+ effects: definition.effects,
27
+ })));
28
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
29
+ ...configuration,
30
+ address: envelope.address,
31
+ kind: 'combatConfiguration',
32
+ stimulantDefinitions: {
33
+ definitions,
34
+ sequenceId: stimulantDefinitions.sequenceId,
35
+ },
36
+ }), metadata(envelope)));
37
+ }
38
+ /** Reads the configured Game's combat settings and stimulant catalog.
39
+ * @example
40
+ * ```ts
41
+ * declare const ctx: SageContext;
42
+ * const configuration = await getCombatConfiguration(ctx);
43
+ * ```
44
+ */
45
+ export async function getCombatConfiguration(context, options) {
46
+ const envelope = await readGameCombatConfiguration(context, options);
47
+ const existing = CONFIGURATION_SNAPSHOTS.get(envelope);
48
+ if (existing !== undefined)
49
+ return existing;
50
+ const pending = createConfigurationSnapshot(context, envelope);
51
+ CONFIGURATION_SNAPSHOTS.set(envelope, pending);
52
+ void pending.catch(() => CONFIGURATION_SNAPSHOTS.delete(envelope));
53
+ return pending;
54
+ }
55
+ function fleetStatus(envelope) {
56
+ const existing = FLEET_STATUS_SNAPSHOTS.get(envelope);
57
+ if (existing !== undefined)
58
+ return existing;
59
+ const data = envelope.data;
60
+ const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
61
+ current: {
62
+ abilityPowerPoints: data.ap,
63
+ hullPoints: data.hp,
64
+ pendingHullPoints: data.pendingHp,
65
+ shieldPoints: data.sp,
66
+ },
67
+ faction: data.faction,
68
+ fleet: entityRef('fleet', envelope.address),
69
+ kind: 'fleetCombatStatus',
70
+ ownerProfile: entityRef('profile', data.ownerProfile),
71
+ // The 2026-08-04 PTR census records npcFactionId 0 as the player
72
+ // sentinel; positive ids identify NPC factions in observed Fleets.
73
+ participant: data.npcFactionId === 0
74
+ ? { kind: 'player' }
75
+ : { factionId: data.npcFactionId, kind: 'npc' },
76
+ stance: data.stance,
77
+ stats: data.stats.combat,
78
+ stimulants: data.activeStimulants.map((stimulant) => ({
79
+ chargesRemaining: stimulant.chargesRemaining,
80
+ deltaBps: stimulant.deltaBps,
81
+ statId: stimulant.stat,
82
+ })),
83
+ timing: {
84
+ abilityPowerReloadAtUnixSeconds: data.apReloadExpiresAt,
85
+ lastCombatUpdateAtUnixSeconds: data.lastCombatUpdate,
86
+ shieldBreakDelayEndsAtUnixSeconds: data.shieldBreakDelayExpiresAt,
87
+ },
88
+ }), metadata(envelope)));
89
+ FLEET_STATUS_SNAPSHOTS.set(envelope, snapshot);
90
+ return snapshot;
91
+ }
92
+ /** Reads one Fleet and returns only its translated combat state.
93
+ * @example
94
+ * ```ts
95
+ * declare const ctx: SageContext;
96
+ * declare const fleet: Address;
97
+ * const status = await getFleetCombatStatus(ctx, fleet);
98
+ * ```
99
+ */
100
+ export async function getFleetCombatStatus(context, address, options) {
101
+ const game = requireGameAddress(context);
102
+ const envelope = await context.data.read(fleetAccountDefinition, address, options);
103
+ if (envelope.data.game !== game) {
104
+ throw new AccountDecodeError('fleet', address, new RangeError('The Fleet belongs to a different Game.'), `Fleet ${address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the Fleet address and cluster before retrying.`);
105
+ }
106
+ await assertCanonicalFleetAddress(envelope);
107
+ return fleetStatus(envelope);
108
+ }
109
+ async function resolveInventory(context, inventory) {
110
+ return {
111
+ items: await Promise.all(inventory.amounts.map(async ({ amount, cargoId }) => ({
112
+ cargo: await resolveCargo(context, cargoId),
113
+ quantityRaw: amount,
114
+ }))),
115
+ sequenceId: inventory.sequenceId,
116
+ storageCostRaw: inventory.storageCostRaw,
117
+ };
118
+ }
119
+ async function createLootSnapshot(context, envelope) {
120
+ const game = requireGameAddress(context);
121
+ if (envelope.data.game !== game) {
122
+ throw new AccountDecodeError('loot', envelope.address, new RangeError('The Loot belongs to a different Game.'), `Loot ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the Loot address and cluster before retrying.`);
123
+ }
124
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
125
+ address: envelope.address,
126
+ coordinates: envelope.data.coordinates,
127
+ game: entityRef('game', envelope.data.game),
128
+ items: await Promise.all(envelope.data.items.map(async (item) => ({
129
+ destroyer: entityRef('fleet', item.destroyer),
130
+ exclusivityUnlockAtUnixSeconds: item.exclusivityUnlockAtUnixSeconds,
131
+ inventory: await resolveInventory(context, item.inventory),
132
+ rewardReclaimAtUnixSeconds: item.rewardReclaimAtUnixSeconds,
133
+ }))),
134
+ kind: 'loot',
135
+ profile: entityRef('profile', envelope.data.profile),
136
+ reward: envelope.data.reward,
137
+ version: envelope.data.version,
138
+ }), metadata(envelope)));
139
+ }
140
+ function lootSnapshot(context, envelope) {
141
+ const existing = LOOT_SNAPSHOTS.get(envelope);
142
+ if (existing !== undefined)
143
+ return existing;
144
+ const pending = createLootSnapshot(context, envelope);
145
+ LOOT_SNAPSHOTS.set(envelope, pending);
146
+ void pending.catch(() => LOOT_SNAPSHOTS.delete(envelope));
147
+ return pending;
148
+ }
149
+ /** Reads required Loot by its signer-created account address.
150
+ * @example
151
+ * ```ts
152
+ * declare const ctx: SageContext;
153
+ * declare const address: Address;
154
+ * const loot = await getLoot(ctx, address);
155
+ * ```
156
+ */
157
+ export async function getLoot(context, address, options) {
158
+ requireGameAddress(context);
159
+ return lootSnapshot(context, await context.data.read(lootAccountDefinition, address, options));
160
+ }
161
+ /** Reads optional Loot by account address.
162
+ * @example
163
+ * ```ts
164
+ * declare const ctx: SageContext;
165
+ * declare const address: Address;
166
+ * const loot = await maybeGetLoot(ctx, address);
167
+ * ```
168
+ */
169
+ export async function maybeGetLoot(context, address, options) {
170
+ requireGameAddress(context);
171
+ const [envelope] = await context.data.readMany(lootAccountDefinition, [address], options);
172
+ return envelope === undefined ? undefined : lootSnapshot(context, envelope);
173
+ }
174
+ /** Discovers Loot created by one Profile using stable targeted filters.
175
+ * @example
176
+ * ```ts
177
+ * declare const ctx: SageContext;
178
+ * declare const profile: Address;
179
+ * const loot = await getLootByProfile(ctx, profile);
180
+ * ```
181
+ */
182
+ export async function getLootByProfile(context, profile, options) {
183
+ requireGameAddress(context);
184
+ const envelopes = await discoverLootAccounts(context, profile, options);
185
+ const snapshots = await Promise.all(envelopes.map((envelope) => lootSnapshot(context, envelope)));
186
+ return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
187
+ }
188
+ function outlawSnapshot(envelope) {
189
+ const existing = OUTLAW_SNAPSHOTS.get(envelope);
190
+ if (existing !== undefined)
191
+ return existing;
192
+ const { profile, ...data } = envelope.data;
193
+ const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
194
+ ...data,
195
+ address: envelope.address,
196
+ kind: 'outlawFlag',
197
+ profile: entityRef('profile', profile),
198
+ }), metadata(envelope, 'derived')));
199
+ OUTLAW_SNAPSHOTS.set(envelope, snapshot);
200
+ return snapshot;
201
+ }
202
+ /** Derives and reads an optional OutlawFlag for a Profile/faction pair.
203
+ * @example
204
+ * ```ts
205
+ * declare const ctx: SageContext;
206
+ * declare const profile: Address;
207
+ * const flag = await getOutlawFlag(ctx, profile, 'mud');
208
+ * ```
209
+ */
210
+ export async function getOutlawFlag(context, profile, againstFaction, options) {
211
+ requireGameAddress(context);
212
+ const address = await deriveOutlawFlagAddress(profile, againstFaction);
213
+ const [envelope] = await context.data.readMany(outlawFlagAccountDefinition, [address], options);
214
+ if (envelope === undefined)
215
+ return undefined;
216
+ if (envelope.data.profile !== profile ||
217
+ envelope.data.faction !== againstFaction) {
218
+ throw new AccountDecodeError('outlawFlag', address, new RangeError('The OutlawFlag contradicted its derived seeds.'), `OutlawFlag ${address} does not match Profile ${profile} and faction ${againstFaction}. Verify the configured cluster and pinned PDA recipe before retrying.`);
219
+ }
220
+ return outlawSnapshot(envelope);
221
+ }
222
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/combat/index.ts"],"names":[],"mappings":"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"}