@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,185 @@
1
+ import { type Address, type DiscoveryRequest, type EntityRef, type ReadOptions, type SageContext } from '../client/index.js';
2
+ import { type ScanFixedValueData, type ScanNoiseMapData } from '../internal/c4/scanning.js';
3
+ import { type CharacterXpCategoryData } from '../internal/c4/identity.js';
4
+ import { type CargoDefinitionSummary } from '../registry/index.js';
5
+ /** Fixed-point scanning value with exact raw storage.
6
+ * @example
7
+ * ```ts
8
+ * const value: ScanFixedValue = { raw: 65_536n, value: 1 };
9
+ * ```
10
+ */
11
+ export type ScanFixedValue = ScanFixedValueData;
12
+ /** One translated noise-map row used by a ScanPattern.
13
+ * @example
14
+ * ```ts
15
+ * declare const noise: ScanNoiseMap;
16
+ * console.log(noise.seedOffset, noise.weight.value);
17
+ * ```
18
+ */
19
+ export type ScanNoiseMap = ScanNoiseMapData;
20
+ /** Options supported by targeted ScanPattern catalog discovery.
21
+ * @example
22
+ * ```ts
23
+ * const options: ScanPatternDiscoveryOptions = { commitment: 'confirmed' };
24
+ * ```
25
+ */
26
+ export type ScanPatternDiscoveryOptions = Omit<DiscoveryRequest, 'filters' | 'strategy'>;
27
+ /** One cargo-backed scan cost.
28
+ * @example
29
+ * ```ts
30
+ * declare const cost: ScanPatternCost;
31
+ * console.log(cost.cargo.name, cost.multiplier.value);
32
+ * ```
33
+ */
34
+ export interface ScanPatternCost {
35
+ readonly cargo: CargoDefinitionSummary;
36
+ readonly multiplier: ScanFixedValue;
37
+ }
38
+ /** One cargo-backed scan outcome and its research-tag requirements.
39
+ * @example
40
+ * ```ts
41
+ * declare const outcome: ScanPatternLootOutcome;
42
+ * console.log(outcome.output.name, outcome.researchRequirementTagIds);
43
+ * ```
44
+ */
45
+ export interface ScanPatternLootOutcome {
46
+ readonly output: CargoDefinitionSummary;
47
+ readonly outputAmountRaw: bigint;
48
+ readonly threshold: ScanFixedValue;
49
+ readonly rollWeight: ScanFixedValue;
50
+ readonly xpValue: ScanFixedValue;
51
+ readonly researchRequirementTagIds: readonly number[];
52
+ }
53
+ /** Immutable, definition-resolved ScanPattern catalog entry.
54
+ * @example
55
+ * ```ts
56
+ * declare const pattern: ScanPatternSnapshot;
57
+ * console.log(pattern.name, pattern.loot.length);
58
+ * ```
59
+ */
60
+ export interface ScanPatternSnapshot {
61
+ readonly kind: 'scanPattern';
62
+ readonly address: Address;
63
+ readonly version: number;
64
+ readonly bump: number;
65
+ readonly id: number;
66
+ readonly name: string;
67
+ readonly game: EntityRef<'game'>;
68
+ readonly cooldownMultiplier: ScanFixedValue;
69
+ readonly blankWeight: ScanFixedValue;
70
+ readonly blankXpValue: ScanFixedValue;
71
+ readonly status: 'draft' | 'active';
72
+ readonly costs: readonly ScanPatternCost[];
73
+ readonly loot: readonly ScanPatternLootOutcome[];
74
+ readonly noiseMaps: readonly ScanNoiseMap[];
75
+ toJSON(): unknown;
76
+ }
77
+ /** Focused read-only scanning projection of one Fleet.
78
+ * @example
79
+ * ```ts
80
+ * declare const state: FleetScanningStateSnapshot;
81
+ * console.log(state.stats.power, state.cooldownEndsAtUnixSeconds);
82
+ * ```
83
+ */
84
+ export interface FleetScanningStateSnapshot {
85
+ readonly kind: 'fleetScanningState';
86
+ readonly fleet: EntityRef<'fleet'>;
87
+ readonly ownerProfile: EntityRef<'profile'>;
88
+ readonly cooldownEndsAtUnixSeconds: bigint;
89
+ readonly stats: {
90
+ readonly power: number;
91
+ readonly bonus: number;
92
+ readonly cost: number;
93
+ readonly cooldownSeconds: number;
94
+ };
95
+ toJSON(): unknown;
96
+ }
97
+ /** Focused read-only scanning projection of one derived Character.
98
+ * @example
99
+ * ```ts
100
+ * declare const state: CharacterScanningStateSnapshot;
101
+ * console.log(state.dataRunnerXp.level, state.modifiers.power.value);
102
+ * ```
103
+ */
104
+ export interface CharacterScanningStateSnapshot {
105
+ readonly kind: 'characterScanningState';
106
+ readonly character: EntityRef<'character'>;
107
+ readonly profile: EntityRef<'profile'>;
108
+ readonly dataRunnerXp: CharacterXpCategoryData & {
109
+ readonly sequenceId: number;
110
+ };
111
+ readonly modifiers: {
112
+ readonly sequenceId: number;
113
+ readonly power: ScanFixedValue;
114
+ readonly cooldown: ScanFixedValue;
115
+ };
116
+ readonly researchTagIds: readonly number[];
117
+ toJSON(): unknown;
118
+ }
119
+ /** Pure Fleet cooldown state at one explicit Unix timestamp.
120
+ * @example
121
+ * ```ts
122
+ * declare const fleet: FleetScanningStateSnapshot;
123
+ * const state: ScanCooldownState = deriveScanCooldownState(
124
+ * fleet,
125
+ * 1_700_000_000n,
126
+ * );
127
+ * ```
128
+ */
129
+ export type ScanCooldownState = {
130
+ readonly kind: 'ready';
131
+ } | {
132
+ readonly kind: 'cooldown';
133
+ readonly remainingSeconds: bigint;
134
+ };
135
+ /** Derives and reads one required ScanPattern for the configured Game.
136
+ * @example
137
+ * ```ts
138
+ * declare const ctx: SageContext;
139
+ * const pattern = await getScanPattern(ctx, 2);
140
+ * ```
141
+ */
142
+ export declare function getScanPattern(context: SageContext, patternId: number, options?: ReadOptions): Promise<ScanPatternSnapshot>;
143
+ /** Derives and reads one optional ScanPattern for the configured Game.
144
+ * @example
145
+ * ```ts
146
+ * declare const ctx: SageContext;
147
+ * const pattern = await maybeGetScanPattern(ctx, 2);
148
+ * ```
149
+ */
150
+ export declare function maybeGetScanPattern(context: SageContext, patternId: number, options?: ReadOptions): Promise<ScanPatternSnapshot | undefined>;
151
+ /** Discovers the configured Game's ScanPattern catalog with targeted filters.
152
+ * @example
153
+ * ```ts
154
+ * declare const ctx: SageContext;
155
+ * const patterns = await getScanPatterns(ctx);
156
+ * ```
157
+ */
158
+ export declare function getScanPatterns(context: SageContext, options?: ScanPatternDiscoveryOptions): Promise<readonly ScanPatternSnapshot[]>;
159
+ /** Reads one Fleet and returns only its translated scanning state.
160
+ * @example
161
+ * ```ts
162
+ * declare const ctx: SageContext;
163
+ * declare const fleet: Address;
164
+ * const state = await getFleetScanningState(ctx, fleet);
165
+ * ```
166
+ */
167
+ export declare function getFleetScanningState(context: SageContext, address: Address, options?: ReadOptions): Promise<FleetScanningStateSnapshot>;
168
+ /** Derives one Character from Profile and returns focused scanning progression.
169
+ * @example
170
+ * ```ts
171
+ * declare const ctx: SageContext;
172
+ * declare const profile: Address;
173
+ * const state = await getCharacterScanningState(ctx, profile);
174
+ * ```
175
+ */
176
+ export declare function getCharacterScanningState(context: SageContext, profile: Address, options?: ReadOptions): Promise<CharacterScanningStateSnapshot>;
177
+ /** Derives whether a Fleet scan cooldown is ready at an explicit timestamp.
178
+ * @example
179
+ * ```ts
180
+ * declare const fleet: FleetScanningStateSnapshot;
181
+ * const state = deriveScanCooldownState(fleet, 1_700_000_000n);
182
+ * ```
183
+ */
184
+ export declare function deriveScanCooldownState(fleet: FleetScanningStateSnapshot, atUnixSeconds: bigint): ScanCooldownState;
185
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanning/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ import { AccountDecodeError, entityRef, } from '../client/index.js';
2
+ import { discoverScanPatternAccounts, deriveScanPatternAddress, scanPatternAccountDefinition, } from '../internal/c4/scanning.js';
3
+ import { assertCanonicalFleetAddress, fleetAccountDefinition, } from '../internal/c4/fleet.js';
4
+ import { characterAccountDefinition, findCharacterPda, } from '../internal/c4/identity.js';
5
+ import { requireGameAddress } from '../internal/game-context.js';
6
+ import { attachJsonSerialization } from '../internal/json.js';
7
+ import { attachReadMeta, readMeta } from '../internal/read-meta.js';
8
+ import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
9
+ import { resolveCargo, } from '../registry/index.js';
10
+ const PATTERN_SNAPSHOTS = new WeakMap();
11
+ const FLEET_SNAPSHOTS = new WeakMap();
12
+ const CHARACTER_SNAPSHOTS = new WeakMap();
13
+ function metadata(envelope, strategy = 'direct') {
14
+ return {
15
+ commitment: envelope.commitment,
16
+ slot: envelope.slot,
17
+ source: envelope.source,
18
+ strategy,
19
+ };
20
+ }
21
+ async function createPatternSnapshot(context, envelope, strategy) {
22
+ const game = requireGameAddress(context);
23
+ if (envelope.data.game !== game) {
24
+ throw new AccountDecodeError('scanPattern', envelope.address, new RangeError('The ScanPattern belongs to a different Game.'), `ScanPattern ${envelope.address} belongs to Game ${envelope.data.game}, not configured Game ${game}. Verify the pattern id, address, and cluster before retrying.`);
25
+ }
26
+ return freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
27
+ address: envelope.address,
28
+ blankWeight: envelope.data.blankWeight,
29
+ blankXpValue: envelope.data.blankXpValue,
30
+ bump: envelope.data.bump,
31
+ cooldownMultiplier: envelope.data.cooldownMultiplier,
32
+ costs: await Promise.all(envelope.data.costs.map(async (cost) => ({
33
+ cargo: await resolveCargo(context, cost.cargoId),
34
+ multiplier: cost.multiplier,
35
+ }))),
36
+ game: entityRef('game', envelope.data.game),
37
+ id: envelope.data.id,
38
+ kind: 'scanPattern',
39
+ loot: await Promise.all(envelope.data.loot.map(async (outcome) => ({
40
+ output: await resolveCargo(context, outcome.outputCargoId),
41
+ outputAmountRaw: outcome.outputAmountRaw,
42
+ researchRequirementTagIds: outcome.researchRequirementTagIds,
43
+ rollWeight: outcome.rollWeight,
44
+ threshold: outcome.threshold,
45
+ xpValue: outcome.xpValue,
46
+ }))),
47
+ name: envelope.data.name,
48
+ noiseMaps: envelope.data.noiseMaps,
49
+ status: envelope.data.status,
50
+ version: envelope.data.version,
51
+ }), metadata(envelope, strategy)));
52
+ }
53
+ function patternSnapshot(context, envelope, strategy) {
54
+ let cache = PATTERN_SNAPSHOTS.get(envelope);
55
+ if (cache === undefined) {
56
+ cache = new Map();
57
+ PATTERN_SNAPSHOTS.set(envelope, cache);
58
+ }
59
+ const existing = cache.get(strategy);
60
+ if (existing !== undefined)
61
+ return existing;
62
+ const pending = createPatternSnapshot(context, envelope, strategy);
63
+ cache.set(strategy, pending);
64
+ void pending.catch(() => cache.delete(strategy));
65
+ return pending;
66
+ }
67
+ /** Derives and reads one required ScanPattern for the configured Game.
68
+ * @example
69
+ * ```ts
70
+ * declare const ctx: SageContext;
71
+ * const pattern = await getScanPattern(ctx, 2);
72
+ * ```
73
+ */
74
+ export async function getScanPattern(context, patternId, options) {
75
+ const game = requireGameAddress(context);
76
+ const address = await deriveScanPatternAddress(game, patternId);
77
+ const envelope = await context.data.read(scanPatternAccountDefinition, address, options);
78
+ if (envelope.data.id !== patternId) {
79
+ throw new AccountDecodeError('scanPattern', address, new RangeError('The ScanPattern id contradicted its derived seeds.'), `ScanPattern ${address} stores id ${String(envelope.data.id)}, not derived id ${String(patternId)}. Verify the configured cluster and pinned PDA recipe before retrying.`);
80
+ }
81
+ return patternSnapshot(context, envelope, 'derived');
82
+ }
83
+ /** Derives and reads one optional ScanPattern for the configured Game.
84
+ * @example
85
+ * ```ts
86
+ * declare const ctx: SageContext;
87
+ * const pattern = await maybeGetScanPattern(ctx, 2);
88
+ * ```
89
+ */
90
+ export async function maybeGetScanPattern(context, patternId, options) {
91
+ const game = requireGameAddress(context);
92
+ const address = await deriveScanPatternAddress(game, patternId);
93
+ const [envelope] = await context.data.readMany(scanPatternAccountDefinition, [address], options);
94
+ if (envelope === undefined)
95
+ return undefined;
96
+ if (envelope.data.id !== patternId) {
97
+ throw new AccountDecodeError('scanPattern', address, new RangeError('The ScanPattern id contradicted its derived seeds.'));
98
+ }
99
+ return patternSnapshot(context, envelope, 'derived');
100
+ }
101
+ /** Discovers the configured Game's ScanPattern catalog with targeted filters.
102
+ * @example
103
+ * ```ts
104
+ * declare const ctx: SageContext;
105
+ * const patterns = await getScanPatterns(ctx);
106
+ * ```
107
+ */
108
+ export async function getScanPatterns(context, options) {
109
+ requireGameAddress(context);
110
+ const envelopes = await discoverScanPatternAccounts(context, options);
111
+ const snapshots = await Promise.all(envelopes.map((envelope) => patternSnapshot(context, envelope, 'targeted-program-accounts')));
112
+ return Object.freeze(attachReadMeta(snapshots, readMeta(envelopes)));
113
+ }
114
+ /** Reads one Fleet and returns only its translated scanning state.
115
+ * @example
116
+ * ```ts
117
+ * declare const ctx: SageContext;
118
+ * declare const fleet: Address;
119
+ * const state = await getFleetScanningState(ctx, fleet);
120
+ * ```
121
+ */
122
+ export async function getFleetScanningState(context, address, options) {
123
+ const game = requireGameAddress(context);
124
+ const envelope = await context.data.read(fleetAccountDefinition, address, options);
125
+ if (envelope.data.game !== game) {
126
+ 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.`);
127
+ }
128
+ await assertCanonicalFleetAddress(envelope);
129
+ const existing = FLEET_SNAPSHOTS.get(envelope);
130
+ if (existing !== undefined)
131
+ return existing;
132
+ const misc = envelope.data.stats.misc;
133
+ const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
134
+ cooldownEndsAtUnixSeconds: envelope.data.scanCooldownExpiresAt,
135
+ fleet: entityRef('fleet', envelope.address),
136
+ kind: 'fleetScanningState',
137
+ ownerProfile: entityRef('profile', envelope.data.ownerProfile),
138
+ stats: {
139
+ bonus: misc.scanBonus,
140
+ cooldownSeconds: misc.scanCoolDownSeconds,
141
+ cost: misc.scanCost,
142
+ power: misc.scanPower,
143
+ },
144
+ }), metadata(envelope)));
145
+ FLEET_SNAPSHOTS.set(envelope, snapshot);
146
+ return snapshot;
147
+ }
148
+ /** Derives one Character from Profile and returns focused scanning progression.
149
+ * @example
150
+ * ```ts
151
+ * declare const ctx: SageContext;
152
+ * declare const profile: Address;
153
+ * const state = await getCharacterScanningState(ctx, profile);
154
+ * ```
155
+ */
156
+ export async function getCharacterScanningState(context, profile, options) {
157
+ const game = requireGameAddress(context);
158
+ const address = await findCharacterPda(profile, game);
159
+ const envelope = await context.data.read(characterAccountDefinition, address, options);
160
+ if (envelope.data.game !== game || envelope.data.playerProfile !== profile) {
161
+ throw new AccountDecodeError('character', address, new RangeError('The Character contradicted its derived Game/Profile.'), `Character ${address} does not match Profile ${profile} and configured Game ${game}. Verify the Profile address and cluster before retrying.`);
162
+ }
163
+ const existing = CHARACTER_SNAPSHOTS.get(envelope);
164
+ if (existing !== undefined)
165
+ return existing;
166
+ const modifiers = envelope.data.modifiers;
167
+ const snapshot = freezeResolvedSnapshot(attachReadMeta(attachJsonSerialization({
168
+ character: entityRef('character', envelope.address),
169
+ dataRunnerXp: {
170
+ ...envelope.data.xp.dataRunner,
171
+ sequenceId: envelope.data.xp.seqId,
172
+ },
173
+ kind: 'characterScanningState',
174
+ modifiers: {
175
+ cooldown: {
176
+ raw: modifiers.values.scanCoolDownModifierRaw,
177
+ value: modifiers.values.scanCoolDownModifier,
178
+ },
179
+ power: {
180
+ raw: modifiers.values.scanPowerModifierRaw,
181
+ value: modifiers.values.scanPowerModifier,
182
+ },
183
+ sequenceId: modifiers.seqId,
184
+ },
185
+ profile: entityRef('profile', profile),
186
+ researchTagIds: modifiers.values.researchTags,
187
+ }), metadata(envelope, 'derived')));
188
+ CHARACTER_SNAPSHOTS.set(envelope, snapshot);
189
+ return snapshot;
190
+ }
191
+ /** Derives whether a Fleet scan cooldown is ready at an explicit timestamp.
192
+ * @example
193
+ * ```ts
194
+ * declare const fleet: FleetScanningStateSnapshot;
195
+ * const state = deriveScanCooldownState(fleet, 1_700_000_000n);
196
+ * ```
197
+ */
198
+ export function deriveScanCooldownState(fleet, atUnixSeconds) {
199
+ if (atUnixSeconds >= fleet.cooldownEndsAtUnixSeconds) {
200
+ return { kind: 'ready' };
201
+ }
202
+ return {
203
+ kind: 'cooldown',
204
+ remainingSeconds: fleet.cooldownEndsAtUnixSeconds - atUnixSeconds,
205
+ };
206
+ }
207
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scanning/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import { type Address } from '@solana/kit';
2
+ import type { SageContext } from '../../client/contracts.js';
3
+ import type { EntityRef } from '../../client/refs.js';
4
+ import { type WorldStarbaseData } from '../../internal/c4/world.js';
5
+ import { type Plan } from '../../planning/index.js';
6
+ interface CharacterSnapshot {
7
+ readonly kind: 'character';
8
+ readonly address: Address;
9
+ readonly game: Address;
10
+ readonly profile: EntityRef<'profile'>;
11
+ }
12
+ interface StarSystemSnapshot {
13
+ readonly kind: 'starSystem';
14
+ readonly address: Address;
15
+ readonly game: Address;
16
+ readonly systemId: number;
17
+ readonly name: string;
18
+ readonly starbase?: WorldStarbaseData;
19
+ }
20
+ /** Address-only StarbasePlayer registration input.
21
+ *
22
+ * The funder is the sole required signer and pays account rent. Reusing the
23
+ * later assembly fee payer is convenient, but the planner does not require the
24
+ * two addresses to match.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * declare const funder: Address;
29
+ * const options: PlanRegisterStarbasePlayerOptions = { funder };
30
+ * ```
31
+ */
32
+ export interface PlanRegisterStarbasePlayerOptions {
33
+ readonly funder: Address;
34
+ }
35
+ /** Plans one StarbasePlayer registration without signing, assembly, or writes.
36
+ *
37
+ * The Character and Star System must already be loaded public snapshots. The
38
+ * planner derives and directly validates every plumbing account, requires the
39
+ * current fail-closed Starbase FactionOwnership sidecar, and returns a Plan only
40
+ * when the canonical StarbasePlayer address is absent. Optional faction
41
+ * expansion accounts use the generated omitted-account convention.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * declare const ctx: SageContext;
46
+ * declare const character: CharacterSnapshot;
47
+ * declare const system: StarSystemSnapshot;
48
+ * declare const funder: Address;
49
+ * const plan = await planRegisterStarbasePlayer(
50
+ * ctx,
51
+ * character,
52
+ * system,
53
+ * { funder },
54
+ * );
55
+ * console.log(plan.describe());
56
+ * ```
57
+ */
58
+ export declare function planRegisterStarbasePlayer(ctx: SageContext, character: CharacterSnapshot, system: StarSystemSnapshot, input: PlanRegisterStarbasePlayerOptions): Promise<Plan>;
59
+ export {};
60
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/starbases/actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIzE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAoBtD,OAAO,EAIL,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAEL,KAAK,IAAI,EAEV,MAAM,yBAAyB,CAAC;AAEjC,UAAU,iBAAiB;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACxC;AAED,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CACvC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAuGD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,IAAI,CAAC,CAiQf"}