@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,292 @@
1
+ import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
2
+ import { type FactionAccountData, type FactionAlignment, type FactionConfigAccountData, type FactionEconomicsConfigAccountData, type FactionOwnershipAccountData, type FactionOwnershipKind, type FactionRegionData, type FactionRelationTrackerAccountData, type FactionStandingAccountData, type FactionTreasuryAccountData, type KingSystemTrackerAccountData, type RegionTrackerAccountData } from '../internal/c4/factions.js';
3
+ /** Options accepted by targeted FactionOwnership discovery.
4
+ * @example
5
+ * ```ts
6
+ * const options: FactionOwnershipDiscoveryOptions = { commitment: 'confirmed' };
7
+ * ```
8
+ */
9
+ export type FactionOwnershipDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
10
+ /** A requested asset whose optional ownership sidecar can be derived.
11
+ * @example
12
+ * ```ts
13
+ * declare const address: Address;
14
+ * const asset: FactionOwnershipAsset = { kind: 'fleet', address };
15
+ * ```
16
+ */
17
+ export type FactionOwnershipAsset = {
18
+ readonly kind: Exclude<FactionOwnershipKind, 'region'>;
19
+ readonly address: Address;
20
+ } | {
21
+ readonly kind: 'region';
22
+ readonly regionId: number;
23
+ };
24
+ /** Immutable faction identity, lifecycle, and NPC capacity state.
25
+ * @example
26
+ * ```ts
27
+ * declare const faction: FactionSnapshot;
28
+ * console.log(faction.factionId, faction.status);
29
+ * ```
30
+ */
31
+ export interface FactionSnapshot extends Omit<FactionAccountData, 'game' | 'operatorProfile' | 'controller' | 'homeRegionId' | 'nameHash' | 'contentUriHash' | 'lastCaptureAtUnixSeconds'> {
32
+ readonly kind: 'faction';
33
+ readonly address: Address;
34
+ readonly game: EntityRef<'game'>;
35
+ readonly operatorProfile?: EntityRef<'profile'>;
36
+ readonly controller?: Address;
37
+ readonly homeRegionId?: number;
38
+ readonly nameHash?: readonly number[];
39
+ readonly contentUriHash?: readonly number[];
40
+ readonly lastCaptureAtUnixSeconds?: bigint;
41
+ toJSON(): unknown;
42
+ }
43
+ /** Immutable optional standing and territory-yield configuration.
44
+ * @example
45
+ * ```ts
46
+ * declare const config: FactionConfigSnapshot;
47
+ * console.log(config.standingBps);
48
+ * ```
49
+ */
50
+ export interface FactionConfigSnapshot extends FactionConfigAccountData {
51
+ readonly kind: 'factionConfig';
52
+ readonly address: Address;
53
+ readonly game: EntityRef<'game'>;
54
+ toJSON(): unknown;
55
+ }
56
+ /** Immutable per-Game NPC and capture economics.
57
+ * @example
58
+ * ```ts
59
+ * declare const economics: FactionEconomicsSnapshot;
60
+ * console.log(economics.captureCostAtlas); // ATLAS for display
61
+ * console.log(economics.captureCostAtlasRaw); // exact Floyds for arithmetic
62
+ * ```
63
+ */
64
+ export interface FactionEconomicsSnapshot extends Omit<FactionEconomicsConfigAccountData, 'game'> {
65
+ readonly kind: 'factionEconomicsConfig';
66
+ readonly address: Address;
67
+ readonly game: EntityRef<'game'>;
68
+ toJSON(): unknown;
69
+ }
70
+ /** Immutable diplomacy and territory-gating configuration.
71
+ * @example
72
+ * ```ts
73
+ * declare const relations: FactionRelationsSnapshot;
74
+ * console.log(relations.dynamicCaptureEnabled);
75
+ * ```
76
+ */
77
+ export interface FactionRelationsSnapshot extends Omit<FactionRelationTrackerAccountData, 'game'> {
78
+ readonly kind: 'factionRelationTracker';
79
+ readonly address: Address;
80
+ readonly game: EntityRef<'game'>;
81
+ toJSON(): unknown;
82
+ }
83
+ /** Immutable optional Profile standing with one faction.
84
+ * @example
85
+ * ```ts
86
+ * declare const standing: FactionStandingSnapshot;
87
+ * console.log(standing.profile.address, standing.standing);
88
+ * ```
89
+ */
90
+ export interface FactionStandingSnapshot extends Omit<FactionStandingAccountData, 'game' | 'profile' | 'storylineExpiresAtUnixSeconds'> {
91
+ readonly kind: 'factionStanding';
92
+ readonly address: Address;
93
+ readonly game: EntityRef<'game'>;
94
+ readonly profile: EntityRef<'profile'>;
95
+ readonly storylineExpiresAtUnixSeconds?: bigint;
96
+ toJSON(): unknown;
97
+ }
98
+ /** Immutable faction ATLAS and cargo reserve state.
99
+ * @example
100
+ * ```ts
101
+ * declare const treasury: FactionTreasurySnapshot;
102
+ * console.log(treasury.atlasBalance, treasury.reserves.length);
103
+ * ```
104
+ */
105
+ export interface FactionTreasurySnapshot extends Omit<FactionTreasuryAccountData, 'game'> {
106
+ readonly kind: 'factionTreasury';
107
+ readonly address: Address;
108
+ readonly game: EntityRef<'game'>;
109
+ toJSON(): unknown;
110
+ }
111
+ /** Typed ownership target retaining the underlying capability reference.
112
+ * @example
113
+ * ```ts
114
+ * declare const asset: FactionOwnershipTarget;
115
+ * console.log(asset.kind);
116
+ * ```
117
+ */
118
+ export type FactionOwnershipTarget = {
119
+ readonly kind: 'starbase';
120
+ readonly system: EntityRef<'starSystem'>;
121
+ } | {
122
+ readonly kind: 'fleet';
123
+ readonly fleet: EntityRef<'fleet'>;
124
+ } | {
125
+ readonly kind: 'region';
126
+ readonly regionId: number;
127
+ };
128
+ /** Immutable dynamic ownership sidecar for one territory asset.
129
+ * @example
130
+ * ```ts
131
+ * declare const ownership: FactionOwnershipSnapshot;
132
+ * console.log(ownership.asset.kind, ownership.controllingFactionId);
133
+ * ```
134
+ */
135
+ export interface FactionOwnershipSnapshot extends Omit<FactionOwnershipAccountData, 'game' | 'asset' | 'controllingFactionId' | 'previousControllerFactionId' | 'contestedUntilUnixSeconds' | 'capturedSystemSequenceId' | 'lastYieldTickUnixSeconds'> {
136
+ readonly kind: 'factionOwnership';
137
+ readonly address: Address;
138
+ readonly game: EntityRef<'game'>;
139
+ readonly asset: FactionOwnershipTarget;
140
+ readonly controllingFactionId?: number;
141
+ readonly previousControllerFactionId?: number;
142
+ readonly contestedUntilUnixSeconds?: bigint;
143
+ readonly capturedSystemSequenceId?: bigint;
144
+ readonly lastYieldTickUnixSeconds?: bigint;
145
+ toJSON(): unknown;
146
+ }
147
+ /** One King system with its current effective faction owner.
148
+ * @example
149
+ * ```ts
150
+ * declare const system: KingSystemOwnership;
151
+ * console.log(system.system.address, system.factionId);
152
+ * ```
153
+ */
154
+ export interface KingSystemOwnership {
155
+ readonly systemId: number;
156
+ readonly system: EntityRef<'starSystem'>;
157
+ readonly factionId?: number;
158
+ }
159
+ /** Immutable King-system ownership catalog.
160
+ * @example
161
+ * ```ts
162
+ * declare const tracker: KingSystemsSnapshot;
163
+ * console.log(tracker.systems.length);
164
+ * ```
165
+ */
166
+ export interface KingSystemsSnapshot extends Omit<KingSystemTrackerAccountData, 'game' | 'systems'> {
167
+ readonly kind: 'kingSystemTracker';
168
+ readonly address: Address;
169
+ readonly game: EntityRef<'game'>;
170
+ readonly systems: readonly KingSystemOwnership[];
171
+ toJSON(): unknown;
172
+ }
173
+ /** Compact region system ownership linked to a StarSystem reference.
174
+ * @example
175
+ * ```ts
176
+ * declare const system: TerritoryRegionSystem;
177
+ * console.log(system.systemId, system.faction);
178
+ * ```
179
+ */
180
+ export interface TerritoryRegionSystem {
181
+ readonly systemId: number;
182
+ readonly system: EntityRef<'starSystem'>;
183
+ readonly faction: FactionAlignment;
184
+ }
185
+ /** Region ownership and geometry summary with edge-aligned neighbor ids.
186
+ * @example
187
+ * ```ts
188
+ * declare const region: TerritoryRegionSummary;
189
+ * console.log(region.id, region.owner);
190
+ * ```
191
+ */
192
+ export interface TerritoryRegionSummary extends Omit<FactionRegionData, 'systems' | 'coreSystems'> {
193
+ readonly systems: readonly TerritoryRegionSystem[];
194
+ readonly coreSystems: readonly TerritoryRegionSystem[];
195
+ }
196
+ /** Immutable nested RegionTracker ownership catalog.
197
+ * @example
198
+ * ```ts
199
+ * declare const tracker: TerritoryRegionsSnapshot;
200
+ * console.log(tracker.regions.length);
201
+ * ```
202
+ */
203
+ export interface TerritoryRegionsSnapshot extends Omit<RegionTrackerAccountData, 'game' | 'regions'> {
204
+ readonly kind: 'regionTracker';
205
+ readonly address: Address;
206
+ readonly game: EntityRef<'game'>;
207
+ readonly regions: readonly TerritoryRegionSummary[];
208
+ toJSON(): unknown;
209
+ }
210
+ /** Derives and reads one faction identity.
211
+ * @example
212
+ * ```ts
213
+ * declare const ctx: SageContext;
214
+ * const faction = await getFaction(ctx, 4);
215
+ * ```
216
+ */
217
+ export declare function getFaction(context: SageContext, factionId: number, options?: ReadOptions): Promise<FactionSnapshot>;
218
+ /** Derives and reads the optional per-Game standing configuration.
219
+ * @example
220
+ * ```ts
221
+ * declare const ctx: SageContext;
222
+ * const config = await maybeGetFactionConfig(ctx);
223
+ * ```
224
+ */
225
+ export declare function maybeGetFactionConfig(context: SageContext, options?: ReadOptions): Promise<FactionConfigSnapshot | undefined>;
226
+ /** Derives and reads per-Game faction economics.
227
+ * @example
228
+ * ```ts
229
+ * declare const ctx: SageContext;
230
+ * const economics = await getFactionEconomics(ctx);
231
+ * ```
232
+ */
233
+ export declare function getFactionEconomics(context: SageContext, options?: ReadOptions): Promise<FactionEconomicsSnapshot>;
234
+ /** Derives and reads the diplomacy relation tracker.
235
+ * @example
236
+ * ```ts
237
+ * declare const ctx: SageContext;
238
+ * const relations = await getFactionRelations(ctx);
239
+ * ```
240
+ */
241
+ export declare function getFactionRelations(context: SageContext, options?: ReadOptions): Promise<FactionRelationsSnapshot>;
242
+ /** Derives and reads optional standing for one Profile/faction pair.
243
+ * @example
244
+ * ```ts
245
+ * declare const ctx: SageContext;
246
+ * declare const profile: Address;
247
+ * const standing = await maybeGetFactionStanding(ctx, profile, 4);
248
+ * ```
249
+ */
250
+ export declare function maybeGetFactionStanding(context: SageContext, profile: Address, factionId: number, options?: ReadOptions): Promise<FactionStandingSnapshot | undefined>;
251
+ /** Derives and reads one faction treasury.
252
+ * @example
253
+ * ```ts
254
+ * declare const ctx: SageContext;
255
+ * const treasury = await getFactionTreasury(ctx, 4);
256
+ * ```
257
+ */
258
+ export declare function getFactionTreasury(context: SageContext, factionId: number, options?: ReadOptions): Promise<FactionTreasurySnapshot>;
259
+ /** Derives and reads an optional ownership sidecar for one asset.
260
+ * @example
261
+ * ```ts
262
+ * declare const ctx: SageContext;
263
+ * declare const address: Address;
264
+ * const ownership = await maybeGetFactionOwnership(ctx, { kind: 'fleet', address });
265
+ * ```
266
+ */
267
+ export declare function maybeGetFactionOwnership(context: SageContext, asset: FactionOwnershipAsset, options?: ReadOptions): Promise<FactionOwnershipSnapshot | undefined>;
268
+ /** Discovers validated ownership sidecars for one asset kind.
269
+ * @example
270
+ * ```ts
271
+ * declare const ctx: SageContext;
272
+ * const fleets = await getFactionOwnerships(ctx, 'fleet');
273
+ * ```
274
+ */
275
+ export declare function getFactionOwnerships(context: SageContext, kind: FactionOwnershipKind, options?: FactionOwnershipDiscoveryOptions): Promise<readonly FactionOwnershipSnapshot[]>;
276
+ /** Derives and reads current King-system ownership.
277
+ * @example
278
+ * ```ts
279
+ * declare const ctx: SageContext;
280
+ * const systems = await getKingSystems(ctx);
281
+ * ```
282
+ */
283
+ export declare function getKingSystems(context: SageContext, options?: ReadOptions): Promise<KingSystemsSnapshot>;
284
+ /** Derives and reads compact nested region ownership summaries.
285
+ * @example
286
+ * ```ts
287
+ * declare const ctx: SageContext;
288
+ * const regions = await getTerritoryRegions(ctx);
289
+ * ```
290
+ */
291
+ export declare function getTerritoryRegions(context: SageContext, options?: ReadOptions): Promise<TerritoryRegionsSnapshot>;
292
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/factions/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,334 @@
1
+ import { AccountDecodeError, entityRef, } from '../client/index.js';
2
+ import { deriveFactionAccountAddress, deriveFactionConfigAddress, deriveFactionEconomicsConfigAddress, deriveFactionOwnershipAddress, deriveFactionRelationTrackerAddress, deriveFactionStandingAddress, deriveFactionStarSystemAddress, deriveFactionTreasuryAddress, deriveKingSystemTrackerAddress, deriveRegionTrackerAddress, discoverFactionOwnershipAccounts, factionAccountDefinition, factionConfigAccountDefinition, factionEconomicsConfigAccountDefinition, factionOwnershipAccountDefinition, factionRelationTrackerAccountDefinition, factionStandingAccountDefinition, factionTreasuryAccountDefinition, kingSystemTrackerAccountDefinition, regionTrackerAccountDefinition, } from '../internal/c4/factions.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
+ const SNAPSHOTS = new WeakMap();
8
+ function metadata(envelope, strategy = 'derived') {
9
+ return {
10
+ commitment: envelope.commitment,
11
+ slot: envelope.slot,
12
+ source: envelope.source,
13
+ strategy,
14
+ };
15
+ }
16
+ function assertGame(context, envelope) {
17
+ const game = requireGameAddress(context);
18
+ if (envelope.data.game !== game) {
19
+ throw new AccountDecodeError(envelope.accountType, envelope.address, new RangeError('The faction account belongs to a different Game.'), `${envelope.accountType} ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the address and cluster before retrying.`);
20
+ }
21
+ }
22
+ function cached(envelope, create) {
23
+ const existing = SNAPSHOTS.get(envelope);
24
+ if (existing !== undefined)
25
+ return existing;
26
+ const snapshot = create();
27
+ SNAPSHOTS.set(envelope, snapshot);
28
+ return snapshot;
29
+ }
30
+ function immutable(value, envelope, strategy = 'derived') {
31
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization(value), metadata(envelope, strategy)));
32
+ }
33
+ function factionSnapshot(context, envelope) {
34
+ assertGame(context, envelope);
35
+ return cached(envelope, () => {
36
+ const { contentUriHash, controller, game, homeRegionId, lastCaptureAtUnixSeconds, nameHash, operatorProfile, ...data } = envelope.data;
37
+ return immutable({
38
+ ...data,
39
+ address: envelope.address,
40
+ ...(contentUriHash === null ? {} : { contentUriHash }),
41
+ ...(controller === null ? {} : { controller }),
42
+ game: entityRef('game', game),
43
+ ...(homeRegionId === null ? {} : { homeRegionId }),
44
+ kind: 'faction',
45
+ ...(lastCaptureAtUnixSeconds === null
46
+ ? {}
47
+ : { lastCaptureAtUnixSeconds }),
48
+ ...(nameHash === null ? {} : { nameHash }),
49
+ ...(operatorProfile === null
50
+ ? {}
51
+ : { operatorProfile: entityRef('profile', operatorProfile) }),
52
+ }, envelope);
53
+ });
54
+ }
55
+ function configSnapshot(game, envelope) {
56
+ return cached(envelope, () => immutable({
57
+ ...envelope.data,
58
+ address: envelope.address,
59
+ game: entityRef('game', game),
60
+ kind: 'factionConfig',
61
+ }, envelope));
62
+ }
63
+ function economicsSnapshot(context, envelope) {
64
+ assertGame(context, envelope);
65
+ return cached(envelope, () => {
66
+ const { game, ...data } = envelope.data;
67
+ return immutable({
68
+ ...data,
69
+ address: envelope.address,
70
+ game: entityRef('game', game),
71
+ kind: 'factionEconomicsConfig',
72
+ }, envelope);
73
+ });
74
+ }
75
+ function relationsSnapshot(context, envelope) {
76
+ assertGame(context, envelope);
77
+ return cached(envelope, () => {
78
+ const { game, ...data } = envelope.data;
79
+ return immutable({
80
+ ...data,
81
+ address: envelope.address,
82
+ game: entityRef('game', game),
83
+ kind: 'factionRelationTracker',
84
+ }, envelope);
85
+ });
86
+ }
87
+ function standingSnapshot(context, envelope) {
88
+ assertGame(context, envelope);
89
+ return cached(envelope, () => {
90
+ const { game, profile, storylineExpiresAtUnixSeconds, ...data } = envelope.data;
91
+ return immutable({
92
+ ...data,
93
+ address: envelope.address,
94
+ game: entityRef('game', game),
95
+ kind: 'factionStanding',
96
+ profile: entityRef('profile', profile),
97
+ ...(storylineExpiresAtUnixSeconds === null
98
+ ? {}
99
+ : { storylineExpiresAtUnixSeconds }),
100
+ }, envelope);
101
+ });
102
+ }
103
+ function treasurySnapshot(context, envelope) {
104
+ assertGame(context, envelope);
105
+ return cached(envelope, () => {
106
+ const { game, ...data } = envelope.data;
107
+ return immutable({
108
+ ...data,
109
+ address: envelope.address,
110
+ game: entityRef('game', game),
111
+ kind: 'factionTreasury',
112
+ }, envelope);
113
+ });
114
+ }
115
+ function ownershipSnapshot(context, envelope, strategy) {
116
+ assertGame(context, envelope);
117
+ const { asset, capturedSystemSequenceId, contestedUntilUnixSeconds, controllingFactionId, game, lastYieldTickUnixSeconds, previousControllerFactionId, ...data } = envelope.data;
118
+ return immutable({
119
+ ...data,
120
+ address: envelope.address,
121
+ asset: asset.kind === 'starbase'
122
+ ? { kind: asset.kind, system: entityRef('starSystem', asset.system) }
123
+ : asset.kind === 'fleet'
124
+ ? { fleet: entityRef('fleet', asset.fleet), kind: asset.kind }
125
+ : { kind: asset.kind, regionId: asset.regionId },
126
+ game: entityRef('game', game),
127
+ kind: 'factionOwnership',
128
+ ...(capturedSystemSequenceId === null
129
+ ? {}
130
+ : { capturedSystemSequenceId }),
131
+ ...(contestedUntilUnixSeconds === null
132
+ ? {}
133
+ : { contestedUntilUnixSeconds }),
134
+ ...(controllingFactionId === null ? {} : { controllingFactionId }),
135
+ ...(lastYieldTickUnixSeconds === null
136
+ ? {}
137
+ : { lastYieldTickUnixSeconds }),
138
+ ...(previousControllerFactionId === null
139
+ ? {}
140
+ : { previousControllerFactionId }),
141
+ }, envelope, strategy);
142
+ }
143
+ async function systemOwnerships(game, systems) {
144
+ return Promise.all(systems.map(async ({ factionId, systemId }) => ({
145
+ ...(factionId === null ? {} : { factionId }),
146
+ system: entityRef('starSystem', await deriveFactionStarSystemAddress(game, systemId)),
147
+ systemId,
148
+ })));
149
+ }
150
+ async function regionSystems(game, systems) {
151
+ return Promise.all(systems.map(async (system) => ({
152
+ ...system,
153
+ system: entityRef('starSystem', await deriveFactionStarSystemAddress(game, system.systemId)),
154
+ })));
155
+ }
156
+ /** Derives and reads one faction identity.
157
+ * @example
158
+ * ```ts
159
+ * declare const ctx: SageContext;
160
+ * const faction = await getFaction(ctx, 4);
161
+ * ```
162
+ */
163
+ export async function getFaction(context, factionId, options) {
164
+ const game = requireGameAddress(context);
165
+ const address = await deriveFactionAccountAddress(game, factionId);
166
+ const envelope = await context.data.read(factionAccountDefinition, address, options);
167
+ if (envelope.data.factionId !== factionId) {
168
+ throw new AccountDecodeError('faction', address, new RangeError('Faction id contradicted its PDA seeds.'));
169
+ }
170
+ return factionSnapshot(context, envelope);
171
+ }
172
+ /** Derives and reads the optional per-Game standing configuration.
173
+ * @example
174
+ * ```ts
175
+ * declare const ctx: SageContext;
176
+ * const config = await maybeGetFactionConfig(ctx);
177
+ * ```
178
+ */
179
+ export async function maybeGetFactionConfig(context, options) {
180
+ const game = requireGameAddress(context);
181
+ const address = await deriveFactionConfigAddress(game);
182
+ const [envelope] = await context.data.readMany(factionConfigAccountDefinition, [address], options);
183
+ return envelope === undefined ? undefined : configSnapshot(game, envelope);
184
+ }
185
+ /** Derives and reads per-Game faction economics.
186
+ * @example
187
+ * ```ts
188
+ * declare const ctx: SageContext;
189
+ * const economics = await getFactionEconomics(ctx);
190
+ * ```
191
+ */
192
+ export async function getFactionEconomics(context, options) {
193
+ const game = requireGameAddress(context);
194
+ const address = await deriveFactionEconomicsConfigAddress(game);
195
+ return economicsSnapshot(context, await context.data.read(factionEconomicsConfigAccountDefinition, address, options));
196
+ }
197
+ /** Derives and reads the diplomacy relation tracker.
198
+ * @example
199
+ * ```ts
200
+ * declare const ctx: SageContext;
201
+ * const relations = await getFactionRelations(ctx);
202
+ * ```
203
+ */
204
+ export async function getFactionRelations(context, options) {
205
+ const game = requireGameAddress(context);
206
+ const address = await deriveFactionRelationTrackerAddress(game);
207
+ return relationsSnapshot(context, await context.data.read(factionRelationTrackerAccountDefinition, address, options));
208
+ }
209
+ /** Derives and reads optional standing for one Profile/faction pair.
210
+ * @example
211
+ * ```ts
212
+ * declare const ctx: SageContext;
213
+ * declare const profile: Address;
214
+ * const standing = await maybeGetFactionStanding(ctx, profile, 4);
215
+ * ```
216
+ */
217
+ export async function maybeGetFactionStanding(context, profile, factionId, options) {
218
+ const game = requireGameAddress(context);
219
+ const address = await deriveFactionStandingAddress(game, profile, factionId);
220
+ const [envelope] = await context.data.readMany(factionStandingAccountDefinition, [address], options);
221
+ if (envelope === undefined)
222
+ return undefined;
223
+ if (envelope.data.profile !== profile ||
224
+ envelope.data.factionId !== factionId) {
225
+ throw new AccountDecodeError('factionStanding', address, new RangeError('FactionStanding identity contradicted its PDA seeds.'));
226
+ }
227
+ return standingSnapshot(context, envelope);
228
+ }
229
+ /** Derives and reads one faction treasury.
230
+ * @example
231
+ * ```ts
232
+ * declare const ctx: SageContext;
233
+ * const treasury = await getFactionTreasury(ctx, 4);
234
+ * ```
235
+ */
236
+ export async function getFactionTreasury(context, factionId, options) {
237
+ const game = requireGameAddress(context);
238
+ const address = await deriveFactionTreasuryAddress(game, factionId);
239
+ const envelope = await context.data.read(factionTreasuryAccountDefinition, address, options);
240
+ if (envelope.data.factionId !== factionId) {
241
+ throw new AccountDecodeError('factionTreasury', address, new RangeError('FactionTreasury faction id contradicted its PDA seeds.'));
242
+ }
243
+ return treasurySnapshot(context, envelope);
244
+ }
245
+ /** Derives and reads an optional ownership sidecar for one asset.
246
+ * @example
247
+ * ```ts
248
+ * declare const ctx: SageContext;
249
+ * declare const address: Address;
250
+ * const ownership = await maybeGetFactionOwnership(ctx, { kind: 'fleet', address });
251
+ * ```
252
+ */
253
+ export async function maybeGetFactionOwnership(context, asset, options) {
254
+ const game = requireGameAddress(context);
255
+ const address = asset.kind === 'region'
256
+ ? await deriveFactionOwnershipAddress(game, asset.kind, asset.regionId)
257
+ : await deriveFactionOwnershipAddress(game, asset.kind, asset.address);
258
+ const [envelope] = await context.data.readMany(factionOwnershipAccountDefinition, [address], options);
259
+ if (envelope === undefined)
260
+ return undefined;
261
+ const identityMatches = envelope.data.asset.kind === asset.kind &&
262
+ (asset.kind === 'region'
263
+ ? envelope.data.asset.kind === 'region' &&
264
+ envelope.data.asset.regionId === asset.regionId
265
+ : envelope.data.asset.kind === 'starbase'
266
+ ? asset.kind === 'starbase' &&
267
+ envelope.data.asset.system === asset.address
268
+ : asset.kind === 'fleet' &&
269
+ envelope.data.asset.kind === 'fleet' &&
270
+ envelope.data.asset.fleet === asset.address);
271
+ if (!identityMatches) {
272
+ throw new AccountDecodeError('factionOwnership', address, new RangeError('FactionOwnership asset contradicted its PDA seeds.'));
273
+ }
274
+ return ownershipSnapshot(context, envelope, 'derived');
275
+ }
276
+ /** Discovers validated ownership sidecars for one asset kind.
277
+ * @example
278
+ * ```ts
279
+ * declare const ctx: SageContext;
280
+ * const fleets = await getFactionOwnerships(ctx, 'fleet');
281
+ * ```
282
+ */
283
+ export async function getFactionOwnerships(context, kind, options) {
284
+ const envelopes = await discoverFactionOwnershipAccounts(context, kind, options);
285
+ const snapshots = envelopes.map((envelope) => ownershipSnapshot(context, envelope, 'targeted-program-accounts'));
286
+ return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
287
+ }
288
+ /** Derives and reads current King-system ownership.
289
+ * @example
290
+ * ```ts
291
+ * declare const ctx: SageContext;
292
+ * const systems = await getKingSystems(ctx);
293
+ * ```
294
+ */
295
+ export async function getKingSystems(context, options) {
296
+ const game = requireGameAddress(context);
297
+ const address = await deriveKingSystemTrackerAddress(game);
298
+ const envelope = await context.data.read(kingSystemTrackerAccountDefinition, address, options);
299
+ assertGame(context, envelope);
300
+ const { game: storedGame, systems, ...data } = envelope.data;
301
+ return immutable({
302
+ ...data,
303
+ address,
304
+ game: entityRef('game', storedGame),
305
+ kind: 'kingSystemTracker',
306
+ systems: await systemOwnerships(storedGame, systems),
307
+ }, envelope);
308
+ }
309
+ /** Derives and reads compact nested region ownership summaries.
310
+ * @example
311
+ * ```ts
312
+ * declare const ctx: SageContext;
313
+ * const regions = await getTerritoryRegions(ctx);
314
+ * ```
315
+ */
316
+ export async function getTerritoryRegions(context, options) {
317
+ const game = requireGameAddress(context);
318
+ const address = await deriveRegionTrackerAddress(game);
319
+ const envelope = await context.data.read(regionTrackerAccountDefinition, address, options);
320
+ assertGame(context, envelope);
321
+ const { game: storedGame, regions, ...data } = envelope.data;
322
+ return immutable({
323
+ ...data,
324
+ address,
325
+ game: entityRef('game', storedGame),
326
+ kind: 'regionTracker',
327
+ regions: await Promise.all(regions.map(async (region) => ({
328
+ ...region,
329
+ coreSystems: await regionSystems(storedGame, region.coreSystems),
330
+ systems: await regionSystems(storedGame, region.systems),
331
+ }))),
332
+ }, envelope);
333
+ }
334
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/factions/index.ts"],"names":[],"mappings":"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"}