@aephia/atlas-kit 0.6.0-next.12 → 0.6.0-next.121

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 (737) hide show
  1. package/README.md +3 -1
  2. package/dist/cargo/actions/deposit.d.ts +2 -2
  3. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  4. package/dist/cargo/actions/deposit.js +28 -117
  5. package/dist/cargo/actions/deposit.js.map +1 -1
  6. package/dist/cargo/actions/index.d.ts +1 -1
  7. package/dist/cargo/actions/index.d.ts.map +1 -1
  8. package/dist/cargo/actions/index.js +28 -84
  9. package/dist/cargo/actions/index.js.map +1 -1
  10. package/dist/cargo/actions/wallet-context.d.ts +52 -3
  11. package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
  12. package/dist/cargo/actions/wallet-context.js +118 -7
  13. package/dist/cargo/actions/wallet-context.js.map +1 -1
  14. package/dist/cargo/actions/wallet-token.d.ts +1 -6
  15. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  16. package/dist/cargo/actions/wallet-token.js +0 -53
  17. package/dist/cargo/actions/wallet-token.js.map +1 -1
  18. package/dist/cargo/actions/withdrawal.d.ts +1 -1
  19. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  20. package/dist/cargo/actions/withdrawal.js +39 -164
  21. package/dist/cargo/actions/withdrawal.js.map +1 -1
  22. package/dist/cargo/index.d.ts.map +1 -1
  23. package/dist/cargo/index.js +2 -10
  24. package/dist/cargo/index.js.map +1 -1
  25. package/dist/claim-stakes/actions/index.d.ts +14 -1
  26. package/dist/claim-stakes/actions/index.d.ts.map +1 -1
  27. package/dist/claim-stakes/actions/index.js +399 -592
  28. package/dist/claim-stakes/actions/index.js.map +1 -1
  29. package/dist/claim-stakes/index.d.ts +14 -0
  30. package/dist/claim-stakes/index.d.ts.map +1 -1
  31. package/dist/claim-stakes/index.js +25 -12
  32. package/dist/claim-stakes/index.js.map +1 -1
  33. package/dist/client/context.d.ts.map +1 -1
  34. package/dist/client/context.js +1 -1
  35. package/dist/client/context.js.map +1 -1
  36. package/dist/client/contracts.d.ts +16 -6
  37. package/dist/client/contracts.d.ts.map +1 -1
  38. package/dist/client/errors.d.ts +6 -2
  39. package/dist/client/errors.d.ts.map +1 -1
  40. package/dist/client/errors.js +31 -1
  41. package/dist/client/errors.js.map +1 -1
  42. package/dist/client/index.d.ts +35 -0
  43. package/dist/client/index.d.ts.map +1 -1
  44. package/dist/client/index.js +35 -0
  45. package/dist/client/index.js.map +1 -1
  46. package/dist/client/rpc-subscription-provider.d.ts +35 -0
  47. package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
  48. package/dist/client/rpc-subscription-provider.js +190 -0
  49. package/dist/client/rpc-subscription-provider.js.map +1 -0
  50. package/dist/combat/actions/index.d.ts +4 -4
  51. package/dist/combat/actions/index.d.ts.map +1 -1
  52. package/dist/combat/actions/index.js +207 -261
  53. package/dist/combat/actions/index.js.map +1 -1
  54. package/dist/combat/index.d.ts +13 -3
  55. package/dist/combat/index.d.ts.map +1 -1
  56. package/dist/combat/index.js +9 -16
  57. package/dist/combat/index.js.map +1 -1
  58. package/dist/crafting/actions/index.d.ts +12 -1
  59. package/dist/crafting/actions/index.d.ts.map +1 -1
  60. package/dist/crafting/actions/index.js +181 -303
  61. package/dist/crafting/actions/index.js.map +1 -1
  62. package/dist/crafting/index.d.ts +33 -3
  63. package/dist/crafting/index.d.ts.map +1 -1
  64. package/dist/crafting/index.js +49 -28
  65. package/dist/crafting/index.js.map +1 -1
  66. package/dist/factions/actions/index.d.ts +2 -1
  67. package/dist/factions/actions/index.d.ts.map +1 -1
  68. package/dist/factions/actions/index.js +6 -4
  69. package/dist/factions/actions/index.js.map +1 -1
  70. package/dist/factions/index.d.ts +1 -1
  71. package/dist/factions/index.d.ts.map +1 -1
  72. package/dist/factions/index.js +16 -18
  73. package/dist/factions/index.js.map +1 -1
  74. package/dist/factions/profile-faction.d.ts +20 -8
  75. package/dist/factions/profile-faction.d.ts.map +1 -1
  76. package/dist/factions/profile-faction.js +20 -8
  77. package/dist/factions/profile-faction.js.map +1 -1
  78. package/dist/fleets/actions/add-ship.d.ts +35 -0
  79. package/dist/fleets/actions/add-ship.d.ts.map +1 -0
  80. package/dist/fleets/actions/add-ship.js +120 -0
  81. package/dist/fleets/actions/add-ship.js.map +1 -0
  82. package/dist/fleets/actions/create-fleet.d.ts +36 -0
  83. package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
  84. package/dist/fleets/actions/create-fleet.js +108 -0
  85. package/dist/fleets/actions/create-fleet.js.map +1 -0
  86. package/dist/fleets/actions/crew-transfer.d.ts +41 -0
  87. package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
  88. package/dist/fleets/actions/crew-transfer.js +94 -0
  89. package/dist/fleets/actions/crew-transfer.js.map +1 -0
  90. package/dist/fleets/actions/dock-bounds.d.ts +38 -0
  91. package/dist/fleets/actions/dock-bounds.d.ts.map +1 -0
  92. package/dist/fleets/actions/dock-bounds.js +46 -0
  93. package/dist/fleets/actions/dock-bounds.js.map +1 -0
  94. package/dist/fleets/actions/index.d.ts +64 -24
  95. package/dist/fleets/actions/index.d.ts.map +1 -1
  96. package/dist/fleets/actions/index.js +385 -334
  97. package/dist/fleets/actions/index.js.map +1 -1
  98. package/dist/fleets/actions/respawn.d.ts +38 -0
  99. package/dist/fleets/actions/respawn.d.ts.map +1 -0
  100. package/dist/fleets/actions/respawn.js +93 -0
  101. package/dist/fleets/actions/respawn.js.map +1 -0
  102. package/dist/fleets/actions/ship-import.d.ts +1 -1
  103. package/dist/fleets/actions/ship-import.d.ts.map +1 -1
  104. package/dist/fleets/actions/ship-import.js +67 -91
  105. package/dist/fleets/actions/ship-import.js.map +1 -1
  106. package/dist/fleets/cooldown.d.ts +44 -0
  107. package/dist/fleets/cooldown.d.ts.map +1 -0
  108. package/dist/fleets/cooldown.js +43 -0
  109. package/dist/fleets/cooldown.js.map +1 -0
  110. package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
  111. package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
  112. package/dist/fleets/coordinate-warp-estimate.js +46 -0
  113. package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
  114. package/dist/fleets/index.d.ts +35 -0
  115. package/dist/fleets/index.d.ts.map +1 -1
  116. package/dist/fleets/index.js +54 -12
  117. package/dist/fleets/index.js.map +1 -1
  118. package/dist/fleets/movement-arithmetic.d.ts +21 -0
  119. package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
  120. package/dist/fleets/movement-arithmetic.js +41 -0
  121. package/dist/fleets/movement-arithmetic.js.map +1 -0
  122. package/dist/fleets/subwarp-estimate.d.ts +70 -0
  123. package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
  124. package/dist/fleets/subwarp-estimate.js +38 -0
  125. package/dist/fleets/subwarp-estimate.js.map +1 -0
  126. package/dist/fleets/travel-profile.d.ts +102 -0
  127. package/dist/fleets/travel-profile.d.ts.map +1 -0
  128. package/dist/fleets/travel-profile.js +120 -0
  129. package/dist/fleets/travel-profile.js.map +1 -0
  130. package/dist/fleets/warp-lane-estimate.d.ts +59 -0
  131. package/dist/fleets/warp-lane-estimate.d.ts.map +1 -0
  132. package/dist/fleets/warp-lane-estimate.js +36 -0
  133. package/dist/fleets/warp-lane-estimate.js.map +1 -0
  134. package/dist/fleets/warp-lane-policy.d.ts +68 -0
  135. package/dist/fleets/warp-lane-policy.d.ts.map +1 -0
  136. package/dist/fleets/warp-lane-policy.js +91 -0
  137. package/dist/fleets/warp-lane-policy.js.map +1 -0
  138. package/dist/fleets/warp-lane-toll.d.ts +55 -0
  139. package/dist/fleets/warp-lane-toll.d.ts.map +1 -0
  140. package/dist/fleets/warp-lane-toll.js +79 -0
  141. package/dist/fleets/warp-lane-toll.js.map +1 -0
  142. package/dist/identity/actions/create-profile.d.ts +1 -1
  143. package/dist/identity/actions/create-profile.d.ts.map +1 -1
  144. package/dist/identity/actions/create-profile.js +2 -2
  145. package/dist/identity/actions/create-profile.js.map +1 -1
  146. package/dist/identity/actions/index.d.ts +4 -4
  147. package/dist/identity/actions/index.d.ts.map +1 -1
  148. package/dist/identity/actions/index.js +51 -29
  149. package/dist/identity/actions/index.js.map +1 -1
  150. package/dist/identity/index.d.ts +5 -2
  151. package/dist/identity/index.d.ts.map +1 -1
  152. package/dist/identity/index.js +6 -12
  153. package/dist/identity/index.js.map +1 -1
  154. package/dist/identity/research-state.d.ts +60 -0
  155. package/dist/identity/research-state.d.ts.map +1 -0
  156. package/dist/identity/research-state.js +68 -0
  157. package/dist/identity/research-state.js.map +1 -0
  158. package/dist/index.d.ts +24 -0
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +20 -3
  161. package/dist/index.js.map +1 -1
  162. package/dist/internal/c4/account-decoding.d.ts +49 -0
  163. package/dist/internal/c4/account-decoding.d.ts.map +1 -0
  164. package/dist/internal/c4/account-decoding.js +74 -0
  165. package/dist/internal/c4/account-decoding.js.map +1 -0
  166. package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
  167. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  168. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  169. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  170. package/dist/internal/c4/cargo-pod.d.ts +15 -0
  171. package/dist/internal/c4/cargo-pod.d.ts.map +1 -0
  172. package/dist/internal/c4/cargo-pod.js +13 -0
  173. package/dist/internal/c4/cargo-pod.js.map +1 -0
  174. package/dist/internal/c4/character-modifier.d.ts +1 -1
  175. package/dist/internal/c4/character-modifier.d.ts.map +1 -1
  176. package/dist/internal/c4/character-registration.d.ts +2 -0
  177. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  178. package/dist/internal/c4/character-registration.js +2 -0
  179. package/dist/internal/c4/character-registration.js.map +1 -1
  180. package/dist/internal/c4/character.d.ts +157 -0
  181. package/dist/internal/c4/character.d.ts.map +1 -0
  182. package/dist/internal/c4/character.js +64 -0
  183. package/dist/internal/c4/character.js.map +1 -0
  184. package/dist/internal/c4/claim-stake-building-definitions.d.ts.map +1 -1
  185. package/dist/internal/c4/claim-stake-building-definitions.js +2 -1
  186. package/dist/internal/c4/claim-stake-building-definitions.js.map +1 -1
  187. package/dist/internal/c4/claim-stake-configuration.d.ts.map +1 -1
  188. package/dist/internal/c4/claim-stake-configuration.js +5 -36
  189. package/dist/internal/c4/claim-stake-configuration.js.map +1 -1
  190. package/dist/internal/c4/claim-stake-definitions.d.ts +4 -4
  191. package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
  192. package/dist/internal/c4/claim-stake-definitions.js +2 -1
  193. package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
  194. package/dist/internal/c4/claim-stake.d.ts +4 -27
  195. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  196. package/dist/internal/c4/claim-stake.js +38 -83
  197. package/dist/internal/c4/claim-stake.js.map +1 -1
  198. package/dist/internal/c4/combat.d.ts +1 -82
  199. package/dist/internal/c4/combat.d.ts.map +1 -1
  200. package/dist/internal/c4/combat.js +16 -213
  201. package/dist/internal/c4/combat.js.map +1 -1
  202. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  203. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  204. package/dist/internal/c4/crafting-process-codec.js +34 -0
  205. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  206. package/dist/internal/c4/crafting.d.ts +25 -33
  207. package/dist/internal/c4/crafting.d.ts.map +1 -1
  208. package/dist/internal/c4/crafting.js +76 -127
  209. package/dist/internal/c4/crafting.js.map +1 -1
  210. package/dist/internal/c4/currency-cache.d.ts +6 -0
  211. package/dist/internal/c4/currency-cache.d.ts.map +1 -0
  212. package/dist/internal/c4/currency-cache.js +27 -0
  213. package/dist/internal/c4/currency-cache.js.map +1 -0
  214. package/dist/internal/c4/discriminators.d.ts +81 -0
  215. package/dist/internal/c4/discriminators.d.ts.map +1 -0
  216. package/dist/internal/c4/discriminators.js +166 -0
  217. package/dist/internal/c4/discriminators.js.map +1 -0
  218. package/dist/internal/c4/docking-funding.d.ts +4 -0
  219. package/dist/internal/c4/docking-funding.d.ts.map +1 -0
  220. package/dist/internal/c4/docking-funding.js +11 -0
  221. package/dist/internal/c4/docking-funding.js.map +1 -0
  222. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  223. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  224. package/dist/internal/c4/faction-epoch-meter.js +26 -0
  225. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  226. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  227. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  228. package/dist/internal/c4/faction-treasury.js +41 -0
  229. package/dist/internal/c4/faction-treasury.js.map +1 -0
  230. package/dist/internal/c4/faction.d.ts +21 -0
  231. package/dist/internal/c4/faction.d.ts.map +1 -0
  232. package/dist/internal/c4/faction.js +23 -0
  233. package/dist/internal/c4/faction.js.map +1 -0
  234. package/dist/internal/c4/factions.d.ts +13 -57
  235. package/dist/internal/c4/factions.d.ts.map +1 -1
  236. package/dist/internal/c4/factions.js +79 -222
  237. package/dist/internal/c4/factions.js.map +1 -1
  238. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  239. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  240. package/dist/internal/c4/fleet-arrival.js +42 -0
  241. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  242. package/dist/internal/c4/fleet-creation.d.ts +7 -0
  243. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  244. package/dist/internal/c4/fleet-creation.js +171 -0
  245. package/dist/internal/c4/fleet-creation.js.map +1 -0
  246. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  247. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  248. package/dist/internal/c4/fleet-crew-binding.js +31 -44
  249. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  250. package/dist/internal/c4/fleet-respawn.d.ts +17 -0
  251. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  252. package/dist/internal/c4/fleet-respawn.js +62 -0
  253. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  254. package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
  255. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  256. package/dist/internal/c4/fleet-ship-assembly.js +44 -0
  257. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  258. package/dist/internal/c4/fleet.d.ts +48 -19
  259. package/dist/internal/c4/fleet.d.ts.map +1 -1
  260. package/dist/internal/c4/fleet.js +50 -87
  261. package/dist/internal/c4/fleet.js.map +1 -1
  262. package/dist/internal/c4/game-definition-layout.d.ts +2 -0
  263. package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
  264. package/dist/internal/c4/game-definition-layout.js +4 -0
  265. package/dist/internal/c4/game-definition-layout.js.map +1 -1
  266. package/dist/internal/c4/game.d.ts +76 -30
  267. package/dist/internal/c4/game.d.ts.map +1 -1
  268. package/dist/internal/c4/game.js +173 -124
  269. package/dist/internal/c4/game.js.map +1 -1
  270. package/dist/internal/c4/identity.d.ts +3 -152
  271. package/dist/internal/c4/identity.d.ts.map +1 -1
  272. package/dist/internal/c4/identity.js +19 -126
  273. package/dist/internal/c4/identity.js.map +1 -1
  274. package/dist/internal/c4/local-market-order.d.ts +29 -0
  275. package/dist/internal/c4/local-market-order.d.ts.map +1 -0
  276. package/dist/internal/c4/local-market-order.js +46 -0
  277. package/dist/internal/c4/local-market-order.js.map +1 -0
  278. package/dist/internal/c4/loot-layout.js +1 -1
  279. package/dist/internal/c4/loot-layout.js.map +1 -1
  280. package/dist/internal/c4/loot.d.ts +87 -0
  281. package/dist/internal/c4/loot.d.ts.map +1 -0
  282. package/dist/internal/c4/loot.js +108 -0
  283. package/dist/internal/c4/loot.js.map +1 -0
  284. package/dist/internal/c4/loyalty.d.ts +0 -27
  285. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  286. package/dist/internal/c4/loyalty.js +32 -160
  287. package/dist/internal/c4/loyalty.js.map +1 -1
  288. package/dist/internal/c4/market.d.ts +2 -38
  289. package/dist/internal/c4/market.d.ts.map +1 -1
  290. package/dist/internal/c4/market.js +26 -120
  291. package/dist/internal/c4/market.js.map +1 -1
  292. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  293. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  294. package/dist/internal/c4/mining-instructions.js +3 -0
  295. package/dist/internal/c4/mining-instructions.js.map +1 -0
  296. package/dist/internal/c4/open-signal.d.ts +8 -0
  297. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  298. package/dist/internal/c4/open-signal.js +37 -0
  299. package/dist/internal/c4/open-signal.js.map +1 -0
  300. package/dist/internal/c4/pda.d.ts +31 -0
  301. package/dist/internal/c4/pda.d.ts.map +1 -1
  302. package/dist/internal/c4/pda.js +60 -17
  303. package/dist/internal/c4/pda.js.map +1 -1
  304. package/dist/internal/c4/profile-faction.d.ts +2 -1
  305. package/dist/internal/c4/profile-faction.d.ts.map +1 -1
  306. package/dist/internal/c4/profile-faction.js +36 -72
  307. package/dist/internal/c4/profile-faction.js.map +1 -1
  308. package/dist/internal/c4/profile-permissions.d.ts +1 -1
  309. package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
  310. package/dist/internal/c4/profile-permissions.js +2 -1
  311. package/dist/internal/c4/profile-permissions.js.map +1 -1
  312. package/dist/internal/c4/region-geometry.d.ts +8 -0
  313. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  314. package/dist/internal/c4/region-geometry.js +43 -0
  315. package/dist/internal/c4/region-geometry.js.map +1 -0
  316. package/dist/internal/c4/rewards.d.ts +1 -61
  317. package/dist/internal/c4/rewards.d.ts.map +1 -1
  318. package/dist/internal/c4/rewards.js +23 -203
  319. package/dist/internal/c4/rewards.js.map +1 -1
  320. package/dist/internal/c4/runtime-bindings.d.ts +4 -0
  321. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  322. package/dist/internal/c4/runtime-bindings.js +4 -0
  323. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  324. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  325. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  326. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  327. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  328. package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
  329. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  330. package/dist/internal/c4/scan-lifecycle.js +235 -0
  331. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  332. package/dist/internal/c4/scanning.d.ts +1 -28
  333. package/dist/internal/c4/scanning.d.ts.map +1 -1
  334. package/dist/internal/c4/scanning.js +32 -103
  335. package/dist/internal/c4/scanning.js.map +1 -1
  336. package/dist/internal/c4/ship-import.d.ts +4 -0
  337. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  338. package/dist/internal/c4/ship-import.js +13 -0
  339. package/dist/internal/c4/ship-import.js.map +1 -0
  340. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  341. package/dist/internal/c4/ship-stats.js +45 -43
  342. package/dist/internal/c4/ship-stats.js.map +1 -1
  343. package/dist/internal/c4/starbase.d.ts +0 -32
  344. package/dist/internal/c4/starbase.d.ts.map +1 -1
  345. package/dist/internal/c4/starbase.js +26 -136
  346. package/dist/internal/c4/starbase.js.map +1 -1
  347. package/dist/internal/c4/wallet-cargo-cache.js +2 -1
  348. package/dist/internal/c4/wallet-cargo-cache.js.map +1 -1
  349. package/dist/internal/c4/world.d.ts +36 -7
  350. package/dist/internal/c4/world.d.ts.map +1 -1
  351. package/dist/internal/c4/world.js +87 -129
  352. package/dist/internal/c4/world.js.map +1 -1
  353. package/dist/internal/cargo.d.ts +2 -0
  354. package/dist/internal/cargo.d.ts.map +1 -1
  355. package/dist/internal/cargo.js +8 -0
  356. package/dist/internal/cargo.js.map +1 -1
  357. package/dist/internal/fleet.d.ts +1 -0
  358. package/dist/internal/fleet.d.ts.map +1 -1
  359. package/dist/internal/fleet.js +3 -1
  360. package/dist/internal/fleet.js.map +1 -1
  361. package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
  362. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  363. package/dist/internal/loyalty-atlas-bank-state.js +10 -0
  364. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  365. package/dist/internal/planning/account-state.d.ts +6 -0
  366. package/dist/internal/planning/account-state.d.ts.map +1 -1
  367. package/dist/internal/planning/account-state.js +13 -0
  368. package/dist/internal/planning/account-state.js.map +1 -1
  369. package/dist/internal/planning/action-runtime.d.ts +38 -0
  370. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  371. package/dist/internal/planning/action-runtime.js +63 -0
  372. package/dist/internal/planning/action-runtime.js.map +1 -0
  373. package/dist/internal/planning/arrival-guards.d.ts +19 -0
  374. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  375. package/dist/internal/planning/arrival-guards.js +172 -0
  376. package/dist/internal/planning/arrival-guards.js.map +1 -0
  377. package/dist/internal/planning/authorization-adapter.d.ts +45 -37
  378. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  379. package/dist/internal/planning/authorization-adapter.js +169 -81
  380. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  381. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  382. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  383. package/dist/internal/planning/character-registration-guard.js +59 -0
  384. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  385. package/dist/internal/planning/character-registration.d.ts +23 -0
  386. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  387. package/dist/internal/planning/character-registration.js +87 -0
  388. package/dist/internal/planning/character-registration.js.map +1 -0
  389. package/dist/internal/planning/currency-cache-guard.d.ts +4 -0
  390. package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -0
  391. package/dist/internal/planning/currency-cache-guard.js +33 -0
  392. package/dist/internal/planning/currency-cache-guard.js.map +1 -0
  393. package/dist/internal/planning/democracy-history.d.ts +50 -0
  394. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  395. package/dist/internal/planning/democracy-history.js +189 -0
  396. package/dist/internal/planning/democracy-history.js.map +1 -0
  397. package/dist/internal/planning/direct-options.d.ts +17 -0
  398. package/dist/internal/planning/direct-options.d.ts.map +1 -0
  399. package/dist/internal/planning/direct-options.js +43 -0
  400. package/dist/internal/planning/direct-options.js.map +1 -0
  401. package/dist/internal/planning/faction-enrollment.d.ts +0 -4
  402. package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
  403. package/dist/internal/planning/faction-enrollment.js +1 -31
  404. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  405. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  406. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  407. package/dist/internal/planning/faction-trade-guards.js +15 -0
  408. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  409. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  410. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  411. package/dist/internal/planning/faction-trade-state.js +43 -0
  412. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  413. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  414. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  415. package/dist/internal/planning/fleet-arrival.js +107 -0
  416. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  417. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  418. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  419. package/dist/internal/planning/fleet-attack-xp.js +104 -0
  420. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  421. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  422. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  423. package/dist/internal/planning/fleet-creation.js +89 -0
  424. package/dist/internal/planning/fleet-creation.js.map +1 -0
  425. package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
  426. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  427. package/dist/internal/planning/fleet-crew-guard.js +48 -0
  428. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  429. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  430. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  431. package/dist/internal/planning/fleet-crew-transfer.js +123 -0
  432. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  433. package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
  434. package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
  435. package/dist/internal/planning/fleet-dock-funding-guard.js +209 -0
  436. package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
  437. package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
  438. package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
  439. package/dist/internal/planning/fleet-dock-funding.js +154 -0
  440. package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
  441. package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
  442. package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
  443. package/dist/internal/planning/fleet-docking-guard.js +43 -0
  444. package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
  445. package/dist/internal/planning/fleet-docking.d.ts +10 -0
  446. package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
  447. package/dist/internal/planning/fleet-docking.js +71 -0
  448. package/dist/internal/planning/fleet-docking.js.map +1 -0
  449. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  450. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  451. package/dist/internal/planning/fleet-respawn.js +164 -0
  452. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  453. package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
  454. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  455. package/dist/internal/planning/fleet-ship-assembly.js +118 -0
  456. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  457. package/dist/internal/planning/fleet-state.d.ts +25 -0
  458. package/dist/internal/planning/fleet-state.d.ts.map +1 -0
  459. package/dist/internal/planning/fleet-state.js +28 -0
  460. package/dist/internal/planning/fleet-state.js.map +1 -0
  461. package/dist/internal/planning/governance-fees.d.ts +64 -0
  462. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  463. package/dist/internal/planning/governance-fees.js +231 -0
  464. package/dist/internal/planning/governance-fees.js.map +1 -0
  465. package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
  466. package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
  467. package/dist/internal/planning/local-market-order-funding.js +128 -0
  468. package/dist/internal/planning/local-market-order-funding.js.map +1 -0
  469. package/dist/internal/planning/local-market-order.d.ts +40 -0
  470. package/dist/internal/planning/local-market-order.d.ts.map +1 -0
  471. package/dist/internal/planning/local-market-order.js +139 -0
  472. package/dist/internal/planning/local-market-order.js.map +1 -0
  473. package/dist/internal/planning/mining-stop.d.ts +14 -0
  474. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  475. package/dist/internal/planning/mining-stop.js +42 -0
  476. package/dist/internal/planning/mining-stop.js.map +1 -0
  477. package/dist/internal/planning/movement-character.d.ts +7 -0
  478. package/dist/internal/planning/movement-character.d.ts.map +1 -0
  479. package/dist/internal/planning/movement-character.js +41 -0
  480. package/dist/internal/planning/movement-character.js.map +1 -0
  481. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  482. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  483. package/dist/internal/planning/movement-xp-guard.js +104 -0
  484. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  485. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  486. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  487. package/dist/internal/planning/open-signal-guard.js +32 -0
  488. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  489. package/dist/internal/planning/open-signal.d.ts +31 -0
  490. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  491. package/dist/internal/planning/open-signal.js +85 -0
  492. package/dist/internal/planning/open-signal.js.map +1 -0
  493. package/dist/internal/planning/original-token.d.ts +40 -0
  494. package/dist/internal/planning/original-token.d.ts.map +1 -0
  495. package/dist/internal/planning/original-token.js +112 -0
  496. package/dist/internal/planning/original-token.js.map +1 -0
  497. package/dist/internal/planning/own-starbase-facts.d.ts +33 -0
  498. package/dist/internal/planning/own-starbase-facts.d.ts.map +1 -0
  499. package/dist/internal/planning/own-starbase-facts.js +49 -0
  500. package/dist/internal/planning/own-starbase-facts.js.map +1 -0
  501. package/dist/internal/planning/plan-fields.d.ts +60 -0
  502. package/dist/internal/planning/plan-fields.d.ts.map +1 -0
  503. package/dist/internal/planning/plan-fields.js +159 -0
  504. package/dist/internal/planning/plan-fields.js.map +1 -0
  505. package/dist/internal/planning/plan-guards.d.ts +4 -0
  506. package/dist/internal/planning/plan-guards.d.ts.map +1 -0
  507. package/dist/internal/planning/plan-guards.js +168 -0
  508. package/dist/internal/planning/plan-guards.js.map +1 -0
  509. package/dist/internal/planning/profile-key.d.ts +13 -0
  510. package/dist/internal/planning/profile-key.d.ts.map +1 -0
  511. package/dist/internal/planning/profile-key.js +20 -0
  512. package/dist/internal/planning/profile-key.js.map +1 -0
  513. package/dist/internal/planning/recipe-state.d.ts +6 -0
  514. package/dist/internal/planning/recipe-state.d.ts.map +1 -0
  515. package/dist/internal/planning/recipe-state.js +20 -0
  516. package/dist/internal/planning/recipe-state.js.map +1 -0
  517. package/dist/internal/planning/rent.d.ts +19 -0
  518. package/dist/internal/planning/rent.d.ts.map +1 -0
  519. package/dist/internal/planning/rent.js +35 -0
  520. package/dist/internal/planning/rent.js.map +1 -0
  521. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  522. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  523. package/dist/internal/planning/respawn-guards.js +42 -0
  524. package/dist/internal/planning/respawn-guards.js.map +1 -0
  525. package/dist/internal/planning/runtime-guards.d.ts +41 -0
  526. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  527. package/dist/internal/planning/runtime-guards.js +640 -0
  528. package/dist/internal/planning/runtime-guards.js.map +1 -0
  529. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  530. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  531. package/dist/internal/planning/scan-completion-guard.js +95 -0
  532. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  533. package/dist/internal/planning/scan-completion.d.ts +20 -0
  534. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  535. package/dist/internal/planning/scan-completion.js +197 -0
  536. package/dist/internal/planning/scan-completion.js.map +1 -0
  537. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  538. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  539. package/dist/internal/planning/scan-detect-guard.js +77 -0
  540. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  541. package/dist/internal/planning/scan-detect.d.ts +24 -0
  542. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  543. package/dist/internal/planning/scan-detect.js +245 -0
  544. package/dist/internal/planning/scan-detect.js.map +1 -0
  545. package/dist/internal/planning/scan-input.d.ts +9 -0
  546. package/dist/internal/planning/scan-input.d.ts.map +1 -0
  547. package/dist/internal/planning/scan-input.js +58 -0
  548. package/dist/internal/planning/scan-input.js.map +1 -0
  549. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  550. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  551. package/dist/internal/planning/ship-import-funding.js +53 -0
  552. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  553. package/dist/internal/planning/ship-token.d.ts +1 -6
  554. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  555. package/dist/internal/planning/ship-token.js +2 -41
  556. package/dist/internal/planning/ship-token.js.map +1 -1
  557. package/dist/internal/planning/starbase-player-owner.d.ts +21 -0
  558. package/dist/internal/planning/starbase-player-owner.d.ts.map +1 -0
  559. package/dist/internal/planning/starbase-player-owner.js +17 -0
  560. package/dist/internal/planning/starbase-player-owner.js.map +1 -0
  561. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  562. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  563. package/dist/internal/planning/starbase-system-guard.js +94 -0
  564. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  565. package/dist/internal/planning/starbase-system.d.ts +15 -0
  566. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  567. package/dist/internal/planning/starbase-system.js +25 -0
  568. package/dist/internal/planning/starbase-system.js.map +1 -0
  569. package/dist/internal/planning/token-mint.d.ts +4 -0
  570. package/dist/internal/planning/token-mint.d.ts.map +1 -0
  571. package/dist/internal/planning/token-mint.js +16 -0
  572. package/dist/internal/planning/token-mint.js.map +1 -0
  573. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  574. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  575. package/dist/internal/planning/trade-faction-market.js +56 -0
  576. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  577. package/dist/internal/planning/wallet-starbase.d.ts +34 -0
  578. package/dist/internal/planning/wallet-starbase.d.ts.map +1 -0
  579. package/dist/internal/planning/wallet-starbase.js +39 -0
  580. package/dist/internal/planning/wallet-starbase.js.map +1 -0
  581. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  582. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  583. package/dist/internal/planning/xp-runtime.js +117 -0
  584. package/dist/internal/planning/xp-runtime.js.map +1 -0
  585. package/dist/internal/read-meta.d.ts +12 -0
  586. package/dist/internal/read-meta.d.ts.map +1 -1
  587. package/dist/internal/read-meta.js +10 -0
  588. package/dist/internal/read-meta.js.map +1 -1
  589. package/dist/internal/system-program.d.ts +4 -0
  590. package/dist/internal/system-program.d.ts.map +1 -0
  591. package/dist/internal/system-program.js +3 -0
  592. package/dist/internal/system-program.js.map +1 -0
  593. package/dist/loyalty/actions/index.d.ts +1 -1
  594. package/dist/loyalty/actions/index.d.ts.map +1 -1
  595. package/dist/loyalty/actions/index.js +15 -45
  596. package/dist/loyalty/actions/index.js.map +1 -1
  597. package/dist/loyalty/index.d.ts.map +1 -1
  598. package/dist/loyalty/index.js +6 -18
  599. package/dist/loyalty/index.js.map +1 -1
  600. package/dist/markets/actions/index.d.ts +62 -4
  601. package/dist/markets/actions/index.d.ts.map +1 -1
  602. package/dist/markets/actions/index.js +230 -178
  603. package/dist/markets/actions/index.js.map +1 -1
  604. package/dist/markets/actions/trade-faction-market.d.ts +43 -0
  605. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  606. package/dist/markets/actions/trade-faction-market.js +277 -0
  607. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  608. package/dist/markets/index.d.ts +38 -7
  609. package/dist/markets/index.d.ts.map +1 -1
  610. package/dist/markets/index.js +59 -20
  611. package/dist/markets/index.js.map +1 -1
  612. package/dist/mining/actions/index.d.ts +87 -0
  613. package/dist/mining/actions/index.d.ts.map +1 -0
  614. package/dist/mining/actions/index.js +319 -0
  615. package/dist/mining/actions/index.js.map +1 -0
  616. package/dist/mining/estimate.d.ts +114 -0
  617. package/dist/mining/estimate.d.ts.map +1 -0
  618. package/dist/mining/estimate.js +127 -0
  619. package/dist/mining/estimate.js.map +1 -0
  620. package/dist/mining/index.d.ts +9 -2
  621. package/dist/mining/index.d.ts.map +1 -1
  622. package/dist/mining/index.js +10 -13
  623. package/dist/mining/index.js.map +1 -1
  624. package/dist/mining/profile.d.ts +82 -0
  625. package/dist/mining/profile.d.ts.map +1 -0
  626. package/dist/mining/profile.js +109 -0
  627. package/dist/mining/profile.js.map +1 -0
  628. package/dist/planning/assembly.d.ts +6 -1
  629. package/dist/planning/assembly.d.ts.map +1 -1
  630. package/dist/planning/assembly.js +12 -8
  631. package/dist/planning/assembly.js.map +1 -1
  632. package/dist/planning/execution.d.ts +19 -3
  633. package/dist/planning/execution.d.ts.map +1 -1
  634. package/dist/planning/execution.js +504 -72
  635. package/dist/planning/execution.js.map +1 -1
  636. package/dist/planning/index.d.ts +196 -149
  637. package/dist/planning/index.d.ts.map +1 -1
  638. package/dist/planning/index.js +31 -355
  639. package/dist/planning/index.js.map +1 -1
  640. package/dist/planning/plan-construction.d.ts +25 -0
  641. package/dist/planning/plan-construction.d.ts.map +1 -0
  642. package/dist/planning/plan-construction.js +143 -0
  643. package/dist/planning/plan-construction.js.map +1 -0
  644. package/dist/planning/plan-sequence-checkpoint.d.ts +9 -0
  645. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -1
  646. package/dist/planning/plan-sequence-checkpoint.js +16 -7
  647. package/dist/planning/plan-sequence-checkpoint.js.map +1 -1
  648. package/dist/planning/plan-sequence-execution.d.ts +5 -0
  649. package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
  650. package/dist/planning/plan-sequence-execution.js +74 -40
  651. package/dist/planning/plan-sequence-execution.js.map +1 -1
  652. package/dist/planning/plan-sequence.d.ts +2 -1
  653. package/dist/planning/plan-sequence.d.ts.map +1 -1
  654. package/dist/planning/plan-sequence.js +8 -1
  655. package/dist/planning/plan-sequence.js.map +1 -1
  656. package/dist/planning/plan-validation.d.ts +17 -0
  657. package/dist/planning/plan-validation.d.ts.map +1 -0
  658. package/dist/planning/plan-validation.js +127 -0
  659. package/dist/planning/plan-validation.js.map +1 -0
  660. package/dist/planning/simulation.d.ts +25 -1
  661. package/dist/planning/simulation.d.ts.map +1 -1
  662. package/dist/planning/simulation.js +111 -11
  663. package/dist/planning/simulation.js.map +1 -1
  664. package/dist/registry/cargo.d.ts +7 -12
  665. package/dist/registry/cargo.d.ts.map +1 -1
  666. package/dist/registry/cargo.js +20 -20
  667. package/dist/registry/cargo.js.map +1 -1
  668. package/dist/registry/docking.d.ts +10 -0
  669. package/dist/registry/docking.d.ts.map +1 -0
  670. package/dist/registry/docking.js +12 -0
  671. package/dist/registry/docking.js.map +1 -0
  672. package/dist/registry/index.d.ts +4 -0
  673. package/dist/registry/index.d.ts.map +1 -1
  674. package/dist/registry/index.js +190 -224
  675. package/dist/registry/index.js.map +1 -1
  676. package/dist/registry/onboarding.d.ts +10 -2
  677. package/dist/registry/onboarding.d.ts.map +1 -1
  678. package/dist/registry/onboarding.js +20 -7
  679. package/dist/registry/onboarding.js.map +1 -1
  680. package/dist/registry/scanning.d.ts +7 -0
  681. package/dist/registry/scanning.d.ts.map +1 -0
  682. package/dist/registry/scanning.js +13 -0
  683. package/dist/registry/scanning.js.map +1 -0
  684. package/dist/registry/ship-stats-snapshot.js +19 -19
  685. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  686. package/dist/registry/ships.d.ts +22 -2
  687. package/dist/registry/ships.d.ts.map +1 -1
  688. package/dist/registry/ships.js +31 -4
  689. package/dist/registry/ships.js.map +1 -1
  690. package/dist/registry/xp-runtime.d.ts +4 -0
  691. package/dist/registry/xp-runtime.d.ts.map +1 -0
  692. package/dist/registry/xp-runtime.js +14 -0
  693. package/dist/registry/xp-runtime.js.map +1 -0
  694. package/dist/rewards/index.d.ts +11 -5
  695. package/dist/rewards/index.d.ts.map +1 -1
  696. package/dist/rewards/index.js +10 -21
  697. package/dist/rewards/index.js.map +1 -1
  698. package/dist/scanning/actions/index.d.ts +116 -0
  699. package/dist/scanning/actions/index.d.ts.map +1 -0
  700. package/dist/scanning/actions/index.js +191 -0
  701. package/dist/scanning/actions/index.js.map +1 -0
  702. package/dist/scanning/index.d.ts +5 -2
  703. package/dist/scanning/index.d.ts.map +1 -1
  704. package/dist/scanning/index.js +17 -21
  705. package/dist/scanning/index.js.map +1 -1
  706. package/dist/scanning/lifecycle.d.ts +77 -0
  707. package/dist/scanning/lifecycle.d.ts.map +1 -0
  708. package/dist/scanning/lifecycle.js +93 -0
  709. package/dist/scanning/lifecycle.js.map +1 -0
  710. package/dist/scanning/odds.d.ts +111 -0
  711. package/dist/scanning/odds.d.ts.map +1 -0
  712. package/dist/scanning/odds.js +294 -0
  713. package/dist/scanning/odds.js.map +1 -0
  714. package/dist/scanning/signals.d.ts +121 -0
  715. package/dist/scanning/signals.d.ts.map +1 -0
  716. package/dist/scanning/signals.js +171 -0
  717. package/dist/scanning/signals.js.map +1 -0
  718. package/dist/starbases/actions/index.d.ts +1 -1
  719. package/dist/starbases/actions/index.d.ts.map +1 -1
  720. package/dist/starbases/actions/index.js +16 -58
  721. package/dist/starbases/actions/index.js.map +1 -1
  722. package/dist/starbases/index.d.ts.map +1 -1
  723. package/dist/starbases/index.js +3 -11
  724. package/dist/starbases/index.js.map +1 -1
  725. package/dist/world/index.d.ts +110 -5
  726. package/dist/world/index.d.ts.map +1 -1
  727. package/dist/world/index.js +112 -15
  728. package/dist/world/index.js.map +1 -1
  729. package/dist/world/planet-claim-stake-plots.d.ts +130 -0
  730. package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
  731. package/dist/world/planet-claim-stake-plots.js +110 -0
  732. package/dist/world/planet-claim-stake-plots.js.map +1 -0
  733. package/dist/world/starbase-status.d.ts +176 -0
  734. package/dist/world/starbase-status.d.ts.map +1 -0
  735. package/dist/world/starbase-status.js +153 -0
  736. package/dist/world/starbase-status.js.map +1 -0
  737. package/package.json +10 -2
@@ -1,20 +1,25 @@
1
- import { getAddressEncoder, isAddress } from '@solana/kit';
1
+ import { fleetAttackInstructionKey, validateFleetAttackActors, } from '../../internal/planning/fleet-attack-xp.js';
2
+ import { resolveXpRuntime } from '../../internal/planning/xp-runtime.js';
3
+ import { isAddress } from '@solana/kit';
4
+ import { resolveActionRuntime } from '../../internal/planning/action-runtime.js';
2
5
  import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
3
6
  import { readContextRawAccounts } from '../../client/reconciliation.js';
4
- import { sage } from '../../internal/c4/bindings.js';
5
- import { lootAccountDefinition, } from '../../internal/c4/combat.js';
7
+ import { getRetrieveLootInstructionDataEncoder } from '../../internal/c4/runtime-bindings.js';
8
+ import { lootAccountDefinition, } from '../../internal/c4/loot.js';
6
9
  import { deriveFleetAddress, fleetAccountDefinition, } from '../../internal/c4/fleet.js';
7
- import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, } from '../../internal/c4/fleet-crew-binding.js';
10
+ import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, matchesFleetCrewBindingIdentity, } from '../../internal/c4/fleet-crew-binding.js';
8
11
  import { deriveFactionAccountAddress, deriveFactionEconomicsConfigAddress, deriveFactionOwnershipAddress, deriveFactionRelationTrackerAddress, deriveFactionTreasuryAddress, deriveKingSystemTrackerAddress, deriveRegionTrackerAddress, factionAccountDefinition, factionEconomicsConfigAccountDefinition, factionOwnershipAccountDefinition, factionRelationTrackerAccountDefinition, factionTreasuryAccountDefinition, kingSystemTrackerAccountDefinition, regionTrackerAccountDefinition, } from '../../internal/c4/factions.js';
9
- import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/identity.js';
12
+ import { factionValue } from '../../internal/c4/faction.js';
13
+ import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/character.js';
10
14
  import { deriveLoyaltyContributionAddress, deriveLoyaltyEpochAddress, loyaltyContributionAccountDefinition, loyaltyEpochAccountDefinition, } from '../../internal/c4/loyalty.js';
11
15
  import { atlasRewardConfigAccountDefinition, atlasRewardRegistryAccountDefinition, deriveAtlasRewardConfigAddress, deriveAtlasRewardRegistryAddress, } from '../../internal/c4/rewards.js';
12
16
  import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../../internal/c4/world.js';
13
17
  import { requireGameAddress } from '../../internal/game-context.js';
14
- import { adaptApplyCombatStimulantInstruction, adaptAttackFleetInstruction, adaptAttackStarbaseInstruction, adaptRetrieveLootInstruction, validatePlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
15
- import { createPlan, } from '../../planning/index.js';
18
+ import { adaptApplyCombatStimulantInstruction, adaptAttackFleetInstruction, adaptAttackStarbaseInstruction, adaptRetrieveLootInstruction, readPlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
19
+ import { buildPlannerPlan } from '../../planning/plan-construction.js';
16
20
  import { readGameCombatConfiguration } from '../../registry/combat.js';
17
21
  import { resolveCargo, } from '../../registry/index.js';
22
+ import { accountAbsentPrecondition, accountStatePrecondition, } from '../../internal/planning/account-state.js';
18
23
  function invalid(field, value, acceptedRange, remedy) {
19
24
  throw new InvalidActionInputError(field, value, acceptedRange, remedy);
20
25
  }
@@ -35,19 +40,13 @@ function assertKeys(value, field, required, optional = []) {
35
40
  function validateOptions(value) {
36
41
  const options = readRecord(value, 'options');
37
42
  assertKeys(options, 'options', ['authorization']);
38
- const authorizationRecord = readRecord(options.authorization, 'authorization');
39
- assertKeys(authorizationRecord, 'authorization', ['profile', 'authority', 'keyIndex'], ['certificate']);
40
- const authorization = authorizationRecord;
41
- validatePlanAuthorization(authorization);
43
+ const authorization = readPlanAuthorization(options.authorization);
42
44
  return { authorization };
43
45
  }
44
46
  function validateAttackOptions(value) {
45
47
  const options = readRecord(value, 'options');
46
48
  assertKeys(options, 'options', ['authorization', 'loot']);
47
- const authorizationRecord = readRecord(options.authorization, 'authorization');
48
- assertKeys(authorizationRecord, 'authorization', ['profile', 'authority', 'keyIndex'], ['certificate']);
49
- const authorization = authorizationRecord;
50
- validatePlanAuthorization(authorization);
49
+ const authorization = readPlanAuthorization(options.authorization);
51
50
  if (typeof options.loot !== 'string' || !isAddress(options.loot)) {
52
51
  invalid('options.loot', options.loot, 'one valid new Loot account address', 'Generate a new address-only Loot signer and provide its public address before retrying.');
53
52
  }
@@ -66,10 +65,7 @@ function validateAttackStance(value) {
66
65
  function validateRetrieveOptions(value) {
67
66
  const options = readRecord(value, 'options');
68
67
  assertKeys(options, 'options', ['authorization', 'atUnixSeconds']);
69
- const authorizationRecord = readRecord(options.authorization, 'authorization');
70
- assertKeys(authorizationRecord, 'authorization', ['profile', 'authority', 'keyIndex'], ['certificate']);
71
- const authorization = authorizationRecord;
72
- validatePlanAuthorization(authorization);
68
+ const authorization = readPlanAuthorization(options.authorization);
73
69
  if (typeof options.atUnixSeconds !== 'bigint' || options.atUnixSeconds < 0n) {
74
70
  invalid('options.atUnixSeconds', options.atUnixSeconds, 'a non-negative bigint Unix timestamp', 'Provide the explicit current Unix timestamp used to evaluate Loot exclusivity before retrying.');
75
71
  }
@@ -162,9 +158,7 @@ function validateLootSelection(value, loot, fleet, retrievingProfile, atUnixSeco
162
158
  }
163
159
  generated.push([itemIndex, encoded]);
164
160
  }
165
- const instructionDataLength = sage
166
- .getRetrieveLootInstructionDataEncoder()
167
- .encode({
161
+ const instructionDataLength = getRetrieveLootInstructionDataEncoder().encode({
168
162
  keyIndex: 0,
169
163
  want: generated.map(([itemIndex, cargo]) => [
170
164
  itemIndex,
@@ -209,29 +203,6 @@ function rawCargoFingerprint(fleet) {
209
203
  .join(',');
210
204
  return [fleet.cargoHold.seqId, fleet.cargoHold.storageCost, items].join('|');
211
205
  }
212
- async function hashAccountState(account) {
213
- const owner = getAddressEncoder().encode(account.owner);
214
- const canonical = new Uint8Array(owner.length + account.data.length);
215
- canonical.set(owner);
216
- canonical.set(account.data, owner.length);
217
- const digest = new Uint8Array(await globalThis.crypto.subtle.digest('SHA-256', canonical));
218
- return [...digest].map((byte) => byte.toString(16).padStart(2, '0')).join('');
219
- }
220
- async function precondition(account, describes) {
221
- return Object.freeze({
222
- address: account.address,
223
- dataHash: await hashAccountState(account),
224
- describes,
225
- kind: 'account-state',
226
- });
227
- }
228
- function absentPrecondition(address, describes) {
229
- return Object.freeze({
230
- address,
231
- describes,
232
- kind: 'account-absent',
233
- });
234
- }
235
206
  /** Plans application of one configured combat stimulant without predicting its effects.
236
207
  *
237
208
  * The planner validates Fleet ownership and Game membership, current catalog
@@ -311,10 +282,10 @@ export async function planFleetApplyCombatStimulant(ctx, fleet, stimulant, input
311
282
  fail(`Fleet ${fleet.name} (${fleet.address}) has no crew and cannot apply a combat stimulant. Crew the Fleet, refresh it through this context, and retry.`, fleet.address);
312
283
  }
313
284
  const description = `Apply one ${catalogued.cargo.name} combat stimulant from Fleet ${fleet.name} (${fleet.address}); permission, stacking, charge application, and combat outcomes remain chain-authoritative.`;
314
- return createPlan({
285
+ return buildPlannerPlan({
315
286
  kind: 'combat.apply-stimulant',
316
287
  preconditions: [
317
- await precondition(account, `Fleet ${fleet.name} retains its configured Game, owning Profile, supported crewed state, and known ${catalogued.cargo.name} cargo balance.`),
288
+ await accountStatePrecondition(account, `Fleet ${fleet.name} retains its configured Game, owning Profile, supported crewed state, and known ${catalogued.cargo.name} cargo balance.`),
318
289
  ],
319
290
  steps: [
320
291
  {
@@ -331,20 +302,6 @@ export async function planFleetApplyCombatStimulant(ctx, fleet, stimulant, input
331
302
  summary: description,
332
303
  });
333
304
  }
334
- function factionId(fleet) {
335
- if (fleet.npcFactionId > 0)
336
- return fleet.npcFactionId;
337
- switch (fleet.faction) {
338
- case 'mud':
339
- return 1;
340
- case 'oni':
341
- return 2;
342
- case 'ustur':
343
- return 3;
344
- case 'unaligned':
345
- return 0;
346
- }
347
- }
348
305
  function shipFingerprint(fleet) {
349
306
  return fleet.ships
350
307
  .map(({ id, quantity }) => `${String(id)}:${String(quantity)}`)
@@ -404,14 +361,13 @@ async function optionalCrewBinding(ctx, fleet) {
404
361
  const address = await deriveFleetCrewBindingAddress(fleet.address);
405
362
  const [envelope] = await ctx.data.readMany(fleetCrewBindingAccountDefinition, [address]);
406
363
  if (envelope !== undefined &&
407
- (envelope.data.fleet !== fleet.address ||
408
- envelope.data.ownerProfile !== fleet.ownerProfile.address)) {
364
+ !matchesFleetCrewBindingIdentity(envelope.data, fleet.address, fleet.ownerProfile.address)) {
409
365
  fail(`FleetCrewBinding ${address} does not belong to Fleet ${fleet.address} and Profile ${fleet.ownerProfile.address}. Refresh the Fleet crew relationship and retry.`, address);
410
366
  }
411
367
  return envelope?.address;
412
368
  }
413
369
  async function resolveRewardAccounts(ctx, fleet, registry, config, epochIndex) {
414
- const resolvedFaction = factionId(fleet);
370
+ const resolvedFaction = fleet.npcFactionId > 0 ? fleet.npcFactionId : factionValue(fleet.faction);
415
371
  if (resolvedFaction === 0)
416
372
  return { config, registry };
417
373
  const [epochAddress, contributionAddress] = await Promise.all([
@@ -446,33 +402,82 @@ async function resolveRewardAccounts(ctx, fleet, registry, config, epochIndex) {
446
402
  registry,
447
403
  };
448
404
  }
449
- async function resolveNpcAccounts(ctx, fleet, requireFactionAccount) {
405
+ /** Reads and requires an NPC Fleet's canonical FactionOwnership and, when
406
+ * `withFaction`, its Faction account; a player Fleet has neither. */
407
+ async function resolveNpcAccounts(ctx, fleet, withFaction) {
450
408
  if (fleet.npcFactionId === 0)
451
409
  return {};
452
- const ownershipAddress = await deriveFactionOwnershipAddress(fleet.game, 'fleet', fleet.address);
453
- const [ownership] = await ctx.data.readMany(factionOwnershipAccountDefinition, [ownershipAddress]);
410
+ const addresses = await Promise.all([
411
+ deriveFactionOwnershipAddress(fleet.game, 'fleet', fleet.address),
412
+ ...(withFaction
413
+ ? [deriveFactionAccountAddress(fleet.game, fleet.npcFactionId)]
414
+ : []),
415
+ ]);
416
+ const [ownership, faction] = await readContextRawAccounts(ctx, addresses);
417
+ const ownershipData = ownership && factionOwnershipAccountDefinition.decode(ownership);
454
418
  if (ownership === undefined ||
455
- ownership.data.game !== fleet.game ||
456
- ownership.data.asset.kind !== 'fleet' ||
457
- ownership.data.asset.fleet !== fleet.address ||
458
- ownership.data.controllingFactionId !== fleet.npcFactionId) {
459
- fail(`NPC Fleet ${fleet.address} has no matching canonical FactionOwnership for faction ${String(fleet.npcFactionId)}. Refresh the Fleet and faction ownership relationship before retrying.`, ownershipAddress);
460
- }
461
- if (!requireFactionAccount)
462
- return { ownership: ownership.address };
463
- const factionAddress = await deriveFactionAccountAddress(fleet.game, fleet.npcFactionId);
464
- const faction = await ctx.data.read(factionAccountDefinition, factionAddress);
465
- if (faction.data.game !== fleet.game ||
466
- faction.data.factionId !== fleet.npcFactionId) {
467
- fail(`Faction ${factionAddress} does not match NPC Fleet ${fleet.address}'s Game and faction id. Refresh the faction registry relationship before retrying.`, factionAddress);
468
- }
469
- return { factionAccount: faction.address, ownership: ownership.address };
419
+ ownershipData?.game !== fleet.game ||
420
+ ownershipData.asset.kind !== 'fleet' ||
421
+ ownershipData.asset.fleet !== fleet.address ||
422
+ ownershipData.controllingFactionId !== fleet.npcFactionId) {
423
+ fail(`NPC Fleet ${fleet.address} has no matching canonical FactionOwnership for faction ${String(fleet.npcFactionId)}. Refresh the Fleet and faction ownership relationship before retrying.`, addresses[0]);
424
+ }
425
+ if (!withFaction)
426
+ return { ownership };
427
+ const factionData = faction && factionAccountDefinition.decode(faction);
428
+ if (faction === undefined ||
429
+ factionData?.game !== fleet.game ||
430
+ factionData.factionId !== fleet.npcFactionId) {
431
+ fail(`Faction ${addresses[1]} is missing or does not match NPC Fleet ${fleet.address}'s Game and faction id. Refresh the faction registry relationship before retrying.`, addresses[1]);
432
+ }
433
+ return { faction, ownership };
470
434
  }
471
435
  function generatedStance(stance) {
472
436
  return {
473
437
  ammoUsage: stance.ammoUsage === 'none' ? 0 : stance.ammoUsage === 'light' ? 1 : 2,
474
438
  };
475
439
  }
440
+ /** Requires a live Fleet snapshot of the configured Game with known AP, crew
441
+ * and ship composition; an attacking Fleet also needs AP available. */
442
+ function validateAttackFleet(fleet, role, game) {
443
+ const label = `The ${role} Fleet ${fleet.name} (${fleet.address})`;
444
+ if (fleet.game !== game) {
445
+ fail(`${label} belongs to Game ${fleet.game}, not configured Game ${game}. Refresh the Fleet through this context and retry.`, fleet.address);
446
+ }
447
+ if (fleet.state.kind === 'destroyed') {
448
+ fail(`${label} is destroyed and cannot participate in this attack. Refresh the Fleet after respawn and retry.`, fleet.address);
449
+ }
450
+ if (!Number.isSafeInteger(fleet.ap) ||
451
+ fleet.ap < 0 ||
452
+ !Number.isSafeInteger(fleet.crewCount) ||
453
+ fleet.crewCount <= 0) {
454
+ fail(`${label} has unknown or invalid AP or crew state. Refresh the Fleet through this context and retry.`, fleet.address);
455
+ }
456
+ if (fleet.ships.length === 0 ||
457
+ fleet.ships.some(({ quantity }) => quantity <= 0n)) {
458
+ fail(`${label} has no valid known ship composition. Refresh Fleet composition and retry.`, fleet.address);
459
+ }
460
+ if (role === 'attacking' && fleet.ap === 0) {
461
+ fail(`${label} has no known AP available. Wait for AP reload, refresh the Fleet, and retry.`, fleet.address);
462
+ }
463
+ }
464
+ /** Validates the inputs every attack shares: the stance, an attacking Fleet
465
+ * owned by the authorization Profile that can attack, and a new Loot address
466
+ * distinct from the authorization signers. */
467
+ function validateAttack(ctx, attacker, inputStance, inputOptions) {
468
+ const options = validateAttackOptions(inputOptions);
469
+ const stance = validateAttackStance(inputStance);
470
+ const game = requireGameAddress(ctx);
471
+ if (attacker.ownerProfile.address !== options.authorization.profile) {
472
+ fail(`Attacking Fleet ${attacker.address} does not belong to authorization Profile ${options.authorization.profile}. Choose an owned Fleet and retry.`, attacker.address);
473
+ }
474
+ if (options.loot === options.authorization.authority ||
475
+ options.loot === options.authorization.profile) {
476
+ fail(`The new Loot address ${options.loot} must be distinct from the authorization authority and Profile. Generate a separate Loot signer address and retry.`, options.loot);
477
+ }
478
+ validateAttackFleet(attacker, 'attacking', game);
479
+ return { game, options, stance };
480
+ }
476
481
  /** Plans one singleton Fleet-on-Fleet attack without predicting its outcome.
477
482
  *
478
483
  * Range, randomness, recent slot hashes, final combat arithmetic, and chain
@@ -497,43 +502,11 @@ function generatedStance(stance) {
497
502
  * ```
498
503
  */
499
504
  export async function planFleetAttackFleet(ctx, attacker, defender, inputStance, inputOptions) {
500
- const options = validateAttackOptions(inputOptions);
501
- const stance = validateAttackStance(inputStance);
502
- const game = requireGameAddress(ctx);
505
+ const { game, options, stance } = validateAttack(ctx, attacker, inputStance, inputOptions);
503
506
  if (attacker.address === defender.address) {
504
507
  fail(`Fleet ${attacker.address} cannot attack itself. Choose a distinct defending Fleet and retry.`, attacker.address);
505
508
  }
506
- if (attacker.ownerProfile.address !== options.authorization.profile) {
507
- fail(`Attacking Fleet ${attacker.address} does not belong to authorization Profile ${options.authorization.profile}. Choose an owned Fleet and retry.`, attacker.address);
508
- }
509
- if (options.loot === options.authorization.authority ||
510
- options.loot === options.authorization.profile) {
511
- fail(`The new Loot address ${options.loot} must be distinct from the authorization authority and Profile. Generate a separate Loot signer address and retry.`, options.loot);
512
- }
513
- for (const [role, fleet] of [
514
- ['attacking', attacker],
515
- ['defending', defender],
516
- ]) {
517
- if (fleet.game !== game) {
518
- fail(`The ${role} Fleet ${fleet.address} belongs to Game ${fleet.game}, not configured Game ${game}. Refresh both Fleets through this context and retry.`, fleet.address);
519
- }
520
- if (fleet.state.kind === 'destroyed') {
521
- fail(`The ${role} Fleet ${fleet.name} (${fleet.address}) is destroyed and cannot participate in this attack. Refresh the Fleet after respawn and retry.`, fleet.address);
522
- }
523
- if (!Number.isSafeInteger(fleet.ap) ||
524
- fleet.ap < 0 ||
525
- !Number.isSafeInteger(fleet.crewCount) ||
526
- fleet.crewCount <= 0) {
527
- fail(`The ${role} Fleet ${fleet.name} (${fleet.address}) has unknown or invalid AP or crew state. Refresh the Fleet through this context and retry.`, fleet.address);
528
- }
529
- if (fleet.ships.length === 0 ||
530
- fleet.ships.some(({ quantity }) => quantity <= 0n)) {
531
- fail(`The ${role} Fleet ${fleet.name} (${fleet.address}) has no valid known ship composition. Refresh Fleet composition and retry.`, fleet.address);
532
- }
533
- }
534
- if (attacker.ap === 0) {
535
- fail(`Attacking Fleet ${attacker.name} (${attacker.address}) has no known AP available. Wait for AP reload, refresh the Fleet, and retry.`, attacker.address);
536
- }
509
+ validateAttackFleet(defender, 'defending', game);
537
510
  const currentAccounts = await readContextRawAccounts(ctx, [
538
511
  attacker.address,
539
512
  defender.address,
@@ -565,58 +538,93 @@ export async function planFleetAttackFleet(ctx, attacker, defender, inputStance,
565
538
  deriveRegionTrackerAddress(game),
566
539
  deriveFactionRelationTrackerAddress(game),
567
540
  ]);
541
+ const actorIntent = {
542
+ address: attacker.address,
543
+ defender: defender.address,
544
+ game,
545
+ profile: attacker.ownerProfile.address,
546
+ defenderProfile: defender.ownerProfile.address,
547
+ };
548
+ await validateFleetAttackActors(ctx, actorIntent);
549
+ const versions = new Map();
550
+ const attackerXp = await resolveXpRuntime(ctx, { game, character, profile: attacker.ownerProfile.address }, versions);
551
+ const defenderXp = character === defenderCharacter
552
+ ? attackerXp
553
+ : await resolveXpRuntime(ctx, {
554
+ game,
555
+ character: defenderCharacter,
556
+ profile: defender.ownerProfile.address,
557
+ }, versions);
558
+ const xpGuards = [...new Set([attackerXp, defenderXp])].map((xp) => ({
559
+ kind: 'xp-runtime',
560
+ address: game,
561
+ intent: xp.intent,
562
+ accounts: xp.accounts,
563
+ describes: 'Both operator XP budgets remain canonical and reconciled; earned XP and bank balances may change.',
564
+ }));
565
+ const instruction = adaptAttackFleetInstruction({
566
+ ...(attackerNpc.faction === undefined
567
+ ? {}
568
+ : { attackerFactionAccount: attackerNpc.faction.address }),
569
+ ...(attackerNpc.ownership === undefined
570
+ ? {}
571
+ : { attackerFleetOwnership: attackerNpc.ownership.address }),
572
+ attackerRewardsConfig: attackerRewards.config,
573
+ ...(attackerRewards.contribution === undefined
574
+ ? {}
575
+ : { attackerRewardsContribution: attackerRewards.contribution }),
576
+ ...(attackerRewards.epoch === undefined
577
+ ? {}
578
+ : { attackerRewardsEpoch: attackerRewards.epoch }),
579
+ attackerRewardsRegistry: attackerRewards.registry,
580
+ ...(defender.state.kind === 'mining'
581
+ ? { asteroid: defender.state.asteroid.address }
582
+ : {}),
583
+ authorization: options.authorization,
584
+ attackerXpBudget: attackerXp.accounts.xpBudget,
585
+ defenderXpBudget: defenderXp.accounts.xpBudget,
586
+ xpBudgetConfig: attackerXp.accounts.xpBudgetConfig,
587
+ character,
588
+ ...(crewBinding === undefined ? {} : { crewBinding }),
589
+ defenderCharacter,
590
+ ...(defenderNpc.ownership === undefined
591
+ ? {}
592
+ : { defenderFleetOwnership: defenderNpc.ownership.address }),
593
+ defenderRewardsConfig: defenderRewards.config,
594
+ ...(defenderRewards.contribution === undefined
595
+ ? {}
596
+ : { defenderRewardsContribution: defenderRewards.contribution }),
597
+ ...(defenderRewards.epoch === undefined
598
+ ? {}
599
+ : { defenderRewardsEpoch: defenderRewards.epoch }),
600
+ defenderRewardsRegistry: defenderRewards.registry,
601
+ defendingFleet: defender.address,
602
+ factionRelationTracker,
603
+ fleet: attacker.address,
604
+ game,
605
+ loot: options.loot,
606
+ recentSlothashes: 'SysvarS1otHashes111111111111111111111111111',
607
+ regionTracker,
608
+ stance: generatedStance(stance),
609
+ });
568
610
  const description = `Attack Fleet ${defender.name} (${defender.address}) with Fleet ${attacker.name} (${attacker.address}) using ${stance.ammoUsage} ammunition; range, randomness, rewards, Loot, damage, and final combat arithmetic remain chain-authoritative.`;
569
- return createPlan({
611
+ return buildPlannerPlan({
570
612
  kind: 'combat.attack-fleet',
571
613
  preconditions: [
572
- await precondition(attackerAccount, `Attacking Fleet ${attacker.name} retains its owner, Game, live state, crew, AP, faction, and ship composition.`),
573
- await precondition(defenderAccount, `Defending Fleet ${defender.name} retains its owner, Game, live state, crew, faction, and ship composition.`),
614
+ {
615
+ kind: 'fleet-attack',
616
+ ...actorIntent,
617
+ instructionKey: fleetAttackInstructionKey(instruction),
618
+ describes: 'The exact attack instruction and both canonical operators remain bound.',
619
+ },
620
+ ...xpGuards,
621
+ await accountStatePrecondition(attackerAccount, `Attacking Fleet ${attacker.name} retains its owner, Game, live state, crew, AP, faction, and ship composition.`),
622
+ await accountStatePrecondition(defenderAccount, `Defending Fleet ${defender.name} retains its owner, Game, live state, crew, faction, and ship composition.`),
574
623
  ],
575
624
  steps: [
576
625
  {
577
626
  describes: description,
578
- instruction: adaptAttackFleetInstruction({
579
- ...(attackerNpc.factionAccount === undefined
580
- ? {}
581
- : { attackerFactionAccount: attackerNpc.factionAccount }),
582
- ...(attackerNpc.ownership === undefined
583
- ? {}
584
- : { attackerFleetOwnership: attackerNpc.ownership }),
585
- attackerRewardsConfig: attackerRewards.config,
586
- ...(attackerRewards.contribution === undefined
587
- ? {}
588
- : { attackerRewardsContribution: attackerRewards.contribution }),
589
- ...(attackerRewards.epoch === undefined
590
- ? {}
591
- : { attackerRewardsEpoch: attackerRewards.epoch }),
592
- attackerRewardsRegistry: attackerRewards.registry,
593
- ...(defender.state.kind === 'mining'
594
- ? { asteroid: defender.state.asteroid.address }
595
- : {}),
596
- authorization: options.authorization,
597
- character,
598
- ...(crewBinding === undefined ? {} : { crewBinding }),
599
- defenderCharacter,
600
- ...(defenderNpc.ownership === undefined
601
- ? {}
602
- : { defenderFleetOwnership: defenderNpc.ownership }),
603
- defenderRewardsConfig: defenderRewards.config,
604
- ...(defenderRewards.contribution === undefined
605
- ? {}
606
- : { defenderRewardsContribution: defenderRewards.contribution }),
607
- ...(defenderRewards.epoch === undefined
608
- ? {}
609
- : { defenderRewardsEpoch: defenderRewards.epoch }),
610
- defenderRewardsRegistry: defenderRewards.registry,
611
- defendingFleet: defender.address,
612
- factionRelationTracker,
613
- fleet: attacker.address,
614
- game,
615
- loot: options.loot,
616
- recentSlothashes: 'SysvarS1otHashes111111111111111111111111111',
617
- regionTracker,
618
- stance: generatedStance(stance),
619
- }),
627
+ instruction,
620
628
  semantics: [{ kind: 'exclusive', scope: 'transaction' }],
621
629
  signers: [options.authorization.authority, options.loot],
622
630
  },
@@ -639,18 +647,6 @@ function systemFingerprint(system) {
639
647
  version: system.version,
640
648
  }, (_key, value) => typeof value === 'bigint' ? value.toString() : value);
641
649
  }
642
- function starbaseFactionId(owner) {
643
- switch (owner) {
644
- case 'mud':
645
- return 1;
646
- case 'oni':
647
- return 2;
648
- case 'ustur':
649
- return 3;
650
- case 'unaligned':
651
- return null;
652
- }
653
- }
654
650
  /** Plans one singleton Fleet-on-Starbase attack without predicting its outcome.
655
651
  *
656
652
  * The planner validates the owned attacking Fleet, canonical target System and
@@ -676,32 +672,7 @@ function starbaseFactionId(owner) {
676
672
  * ```
677
673
  */
678
674
  export async function planFleetAttackStarbase(ctx, attacker, target, inputStance, inputOptions) {
679
- const options = validateAttackOptions(inputOptions);
680
- const stance = validateAttackStance(inputStance);
681
- const game = requireGameAddress(ctx);
682
- if (attacker.ownerProfile.address !== options.authorization.profile) {
683
- fail(`Attacking Fleet ${attacker.address} does not belong to authorization Profile ${options.authorization.profile}. Choose an owned Fleet and retry.`, attacker.address);
684
- }
685
- if (options.loot === options.authorization.authority ||
686
- options.loot === options.authorization.profile) {
687
- fail(`The new Loot address ${options.loot} must be distinct from the authorization authority and Profile. Generate a separate Loot signer address and retry.`, options.loot);
688
- }
689
- if (attacker.game !== game) {
690
- fail(`Attacking Fleet ${attacker.address} belongs to Game ${attacker.game}, not configured Game ${game}. Refresh the Fleet through this context and retry.`, attacker.address);
691
- }
692
- if (attacker.state.kind === 'destroyed') {
693
- fail(`Attacking Fleet ${attacker.name} (${attacker.address}) is destroyed and cannot attack a Starbase. Refresh the Fleet after respawn and retry.`, attacker.address);
694
- }
695
- if (!Number.isSafeInteger(attacker.ap) ||
696
- attacker.ap <= 0 ||
697
- !Number.isSafeInteger(attacker.crewCount) ||
698
- attacker.crewCount <= 0) {
699
- fail(`Attacking Fleet ${attacker.name} (${attacker.address}) has no known positive AP or valid crew state. Wait for AP reload, refresh the Fleet, and retry.`, attacker.address);
700
- }
701
- if (attacker.ships.length === 0 ||
702
- attacker.ships.some(({ quantity }) => quantity <= 0n)) {
703
- fail(`Attacking Fleet ${attacker.name} (${attacker.address}) has no valid known ship composition. Refresh Fleet composition and retry.`, attacker.address);
704
- }
675
+ const { game, options, stance } = validateAttack(ctx, attacker, inputStance, inputOptions);
705
676
  if (target.game !== game) {
706
677
  fail(`Target Star System ${target.address} belongs to Game ${target.game}, not configured Game ${game}. Refresh the target through this context and retry.`, target.address);
707
678
  }
@@ -720,9 +691,9 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
720
691
  deriveRegionTrackerAddress(game),
721
692
  deriveFleetCrewBindingAddress(attacker.address),
722
693
  ]);
723
- const [probeRelationsAccount, probeRegistryAccount] = await readContextRawAccounts(ctx, [
724
- relationTrackerAddress,
725
- registryAddress,
694
+ const [[probeRelationsAccount, probeRegistryAccount], attackerNpc] = await Promise.all([
695
+ readContextRawAccounts(ctx, [relationTrackerAddress, registryAddress]),
696
+ resolveNpcAccounts(ctx, attacker, true),
726
697
  ]);
727
698
  const probeRelations = factionRelationTrackerAccountDefinition.decode(requireAccount(probeRelationsAccount, relationTrackerAddress, `FactionRelationTracker ${relationTrackerAddress} is missing. Refresh faction relationships and retry.`));
728
699
  const probeRegistry = atlasRewardRegistryAccountDefinition.decode(requireAccount(probeRegistryAccount, registryAddress, `AtlasRewardRegistry ${registryAddress} is missing. Refresh reward configuration and retry.`));
@@ -733,12 +704,6 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
733
704
  fail(`AtlasRewardRegistry ${registryAddress} belongs to another Game. Refresh the configured reward registry and retry.`, registryAddress);
734
705
  }
735
706
  const rewardConfigAddress = await deriveAtlasRewardConfigAddress(game, probeRegistry.activeConfigVersion);
736
- const attackerOwnership = attacker.npcFactionId === 0
737
- ? undefined
738
- : await deriveFactionOwnershipAddress(game, 'fleet', attacker.address);
739
- const attackerFaction = attacker.npcFactionId === 0
740
- ? undefined
741
- : await deriveFactionAccountAddress(game, attacker.npcFactionId);
742
707
  const requiresNpcEconomy = attacker.npcFactionId > 0 &&
743
708
  probeRelations.dynamicCaptureEnabled &&
744
709
  probeRelations.nemesisActive;
@@ -762,8 +727,6 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
762
727
  character,
763
728
  regionTracker,
764
729
  crewBindingAddress,
765
- ...(attackerOwnership === undefined ? [] : [attackerOwnership]),
766
- ...(attackerFaction === undefined ? [] : [attackerFaction]),
767
730
  ...(factionEconomicsConfig === undefined ? [] : [factionEconomicsConfig]),
768
731
  ...(captorTreasury === undefined ? [] : [captorTreasury]),
769
732
  ];
@@ -799,7 +762,8 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
799
762
  if (ownership === undefined && relations.dynamicCaptureEnabled) {
800
763
  fail(`Target Starbase ${target.address} requires canonical FactionOwnership while dynamic capture is enabled. Refresh Starbase ownership and retry.`, ownershipAddress);
801
764
  }
802
- const legacyOwner = starbaseFactionId(target.starbase.owner);
765
+ // KingSystemTracker records an unaligned owner as null.
766
+ const legacyOwner = factionValue(target.starbase.owner) || null;
803
767
  if (ownership !== undefined &&
804
768
  (ownership.game !== game ||
805
769
  ownership.asset.kind !== 'starbase' ||
@@ -844,32 +808,10 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
844
808
  const crewBinding = crewBindingAccount === undefined ? undefined : crewBindingAddress;
845
809
  if (crewBindingAccount !== undefined) {
846
810
  const data = fleetCrewBindingAccountDefinition.decode(crewBindingAccount);
847
- if (data.fleet !== attacker.address ||
848
- data.ownerProfile !== attacker.ownerProfile.address) {
811
+ if (!matchesFleetCrewBindingIdentity(data, attacker.address, attacker.ownerProfile.address)) {
849
812
  fail(`FleetCrewBinding ${crewBindingAddress} does not belong to Fleet ${attacker.address} and Profile ${attacker.ownerProfile.address}. Refresh the Fleet crew relationship and retry.`, crewBindingAddress);
850
813
  }
851
814
  }
852
- const attackerNpc = {};
853
- let attackerOwnershipAccount;
854
- let attackerFactionAccount;
855
- if (attackerOwnership !== undefined && attackerFaction !== undefined) {
856
- attackerOwnershipAccount = requireAccount(current.get(attackerOwnership), attackerOwnership, `NPC Fleet ${attacker.address} has no canonical FactionOwnership. Refresh the Fleet faction relationship and retry.`);
857
- const npcOwnership = factionOwnershipAccountDefinition.decode(attackerOwnershipAccount);
858
- if (npcOwnership.game !== game ||
859
- npcOwnership.asset.kind !== 'fleet' ||
860
- npcOwnership.asset.fleet !== attacker.address ||
861
- npcOwnership.controllingFactionId !== attacker.npcFactionId) {
862
- fail(`NPC Fleet ${attacker.address} has no matching canonical FactionOwnership for faction ${String(attacker.npcFactionId)}. Refresh the Fleet and faction ownership relationship before retrying.`, attackerOwnership);
863
- }
864
- attackerFactionAccount = requireAccount(current.get(attackerFaction), attackerFaction, `Faction ${attackerFaction} is missing for NPC Fleet ${attacker.address}. Refresh the faction registry relationship and retry.`);
865
- const npcFaction = factionAccountDefinition.decode(attackerFactionAccount);
866
- if (npcFaction.game !== game ||
867
- npcFaction.factionId !== attacker.npcFactionId) {
868
- fail(`Faction ${attackerFaction} does not match NPC Fleet ${attacker.address}'s Game and faction id. Refresh the faction registry relationship before retrying.`, attackerFaction);
869
- }
870
- attackerNpc.ownership = attackerOwnership;
871
- attackerNpc.factionAccount = attackerFaction;
872
- }
873
815
  let economicsAccount;
874
816
  let treasuryAccount;
875
817
  if (factionEconomicsConfig !== undefined && captorTreasury !== undefined) {
@@ -928,21 +870,13 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
928
870
  'The optional Fleet crew binding remains unchanged.',
929
871
  ],
930
872
  ]),
931
- ...(attackerOwnershipAccount === undefined
873
+ ...(attackerNpc.ownership === undefined
932
874
  ? []
933
- : [
934
- [
935
- attackerOwnershipAccount,
936
- 'NPC Fleet ownership remains unchanged.',
937
- ],
938
- ]),
939
- ...(attackerFactionAccount === undefined
875
+ : [[attackerNpc.ownership, 'NPC Fleet ownership remains unchanged.']]),
876
+ ...(attackerNpc.faction === undefined
940
877
  ? []
941
878
  : [
942
- [
943
- attackerFactionAccount,
944
- 'The NPC faction account remains unchanged.',
945
- ],
879
+ [attackerNpc.faction, 'The NPC faction account remains unchanged.'],
946
880
  ]),
947
881
  ...(economicsAccount === undefined
948
882
  ? []
@@ -960,29 +894,41 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
960
894
  'The dynamic-capture treasury remains unchanged.',
961
895
  ],
962
896
  ]),
963
- ].map(([account, describes]) => precondition(account, describes)));
897
+ ].map(([account, describes]) => accountStatePrecondition(account, describes)));
964
898
  const absencePreconditions = [
965
- absentPrecondition(options.loot, `Loot account ${options.loot} remains absent until execution.`),
899
+ accountAbsentPrecondition(options.loot, `Loot account ${options.loot} remains absent until execution.`),
966
900
  ...(crewBindingAccount === undefined
967
901
  ? [
968
- absentPrecondition(crewBindingAddress, 'Optional Fleet crew binding remains absent.'),
902
+ accountAbsentPrecondition(crewBindingAddress, 'Optional Fleet crew binding remains absent.'),
969
903
  ]
970
904
  : []),
971
905
  ];
906
+ const runtime = await resolveActionRuntime(ctx, {
907
+ mode: 'starbase-attack',
908
+ game,
909
+ system: target.address,
910
+ starbaseSeqId: starSystemAccountDefinition.decode(systemAccount).sequenceId,
911
+ character,
912
+ });
972
913
  const description = `Attack with Fleet ${attacker.name} (${attacker.address}) against the shared Starbase at ${target.name} (${target.address}) using ${stance.ammoUsage} ammunition; range, capture-cost debit outcome, randomness, rewards, Loot, damage, and final admissibility remain chain-authoritative.`;
973
- return createPlan({
914
+ return buildPlannerPlan({
974
915
  kind: 'combat.attack-starbase',
975
- preconditions: [...statePreconditions, ...absencePreconditions],
916
+ preconditions: [
917
+ ...statePreconditions,
918
+ ...absencePreconditions,
919
+ ...runtime.guards,
920
+ ],
976
921
  steps: [
977
922
  {
978
- describes: description,
923
+ describes: `${description} ${runtime.description}`,
979
924
  instruction: adaptAttackStarbaseInstruction({
980
- ...(attackerNpc.factionAccount === undefined
925
+ ...runtime.accounts,
926
+ ...(attackerNpc.faction === undefined
981
927
  ? {}
982
- : { attackerFactionAccount: attackerNpc.factionAccount }),
928
+ : { attackerFactionAccount: attackerNpc.faction.address }),
983
929
  ...(attackerNpc.ownership === undefined
984
930
  ? {}
985
- : { attackerFleetOwnership: attackerNpc.ownership }),
931
+ : { attackerFleetOwnership: attackerNpc.ownership.address }),
986
932
  authorization: options.authorization,
987
933
  ...(captorTreasury === undefined ? {} : { captorTreasury }),
988
934
  character,
@@ -1009,7 +955,7 @@ export async function planFleetAttackStarbase(ctx, attacker, target, inputStance
1009
955
  signers: [options.authorization.authority, options.loot],
1010
956
  },
1011
957
  ],
1012
- summary: description,
958
+ summary: `${description} ${runtime.description}`,
1013
959
  });
1014
960
  }
1015
961
  function lootSnapshotFingerprint(loot) {
@@ -1025,7 +971,7 @@ function lootSnapshotFingerprint(loot) {
1025
971
  item.exclusivityUnlockAtUnixSeconds,
1026
972
  item.rewardReclaimAtUnixSeconds,
1027
973
  item.inventory.sequenceId,
1028
- item.inventory.storageCostRaw,
974
+ item.inventory.usedStorageUnitsRaw,
1029
975
  ...item.inventory.items
1030
976
  .map(({ cargo, quantityRaw }) => `${String(cargo.id)}:${String(quantityRaw)}`)
1031
977
  .sort(),
@@ -1045,7 +991,7 @@ function rawLootFingerprint(address, loot) {
1045
991
  item.exclusivityUnlockAtUnixSeconds,
1046
992
  item.rewardReclaimAtUnixSeconds,
1047
993
  item.inventory.sequenceId,
1048
- item.inventory.storageCostRaw,
994
+ item.inventory.usedStorageUnitsRaw,
1049
995
  ...item.inventory.amounts
1050
996
  .map(({ amount, cargoId }) => `${String(cargoId)}:${String(amount)}`)
1051
997
  .sort(),
@@ -1115,11 +1061,11 @@ export async function planFleetRetrieveLoot(ctx, fleet, loot, inputWant, inputOp
1115
1061
  ? undefined
1116
1062
  : loot.profile.address;
1117
1063
  const description = `Request ${selection.summary} from Loot ${loot.address} with Fleet ${fleet.name} (${fleet.address}); range, recent-slot randomness, cargo capacity, availability races, and final transfer quantities remain chain-authoritative.`;
1118
- return createPlan({
1064
+ return buildPlannerPlan({
1119
1065
  kind: 'combat.retrieve-loot',
1120
1066
  preconditions: [
1121
- await precondition(fleetAccount, `Fleet ${fleet.name} retains its configured Game, owning Profile, idle state, and normalized crew.`),
1122
- await precondition(lootAccount, `Loot ${loot.address} retains its identity, creator, destroyer exclusivity, and requested known quantities.`),
1067
+ await accountStatePrecondition(fleetAccount, `Fleet ${fleet.name} retains its configured Game, owning Profile, idle state, and normalized crew.`),
1068
+ await accountStatePrecondition(lootAccount, `Loot ${loot.address} retains its identity, creator, destroyer exclusivity, and requested known quantities.`),
1123
1069
  ],
1124
1070
  steps: [
1125
1071
  {