@aephia/atlas-kit 0.6.0-next.7 → 0.6.0-next.70

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 (493) hide show
  1. package/README.md +3 -1
  2. package/dist/cargo/actions/deposit.d.ts +1 -1
  3. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  4. package/dist/cargo/actions/deposit.js +25 -12
  5. package/dist/cargo/actions/deposit.js.map +1 -1
  6. package/dist/cargo/actions/index.d.ts.map +1 -1
  7. package/dist/cargo/actions/index.js +3 -2
  8. package/dist/cargo/actions/index.js.map +1 -1
  9. package/dist/cargo/actions/wallet-token.d.ts +1 -1
  10. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  11. package/dist/cargo/actions/wallet-token.js +1 -9
  12. package/dist/cargo/actions/wallet-token.js.map +1 -1
  13. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  14. package/dist/cargo/actions/withdrawal.js +22 -10
  15. package/dist/cargo/actions/withdrawal.js.map +1 -1
  16. package/dist/claim-stakes/actions/index.d.ts +13 -0
  17. package/dist/claim-stakes/actions/index.d.ts.map +1 -1
  18. package/dist/claim-stakes/actions/index.js +87 -37
  19. package/dist/claim-stakes/actions/index.js.map +1 -1
  20. package/dist/client/contracts.d.ts +16 -6
  21. package/dist/client/contracts.d.ts.map +1 -1
  22. package/dist/client/errors.d.ts +4 -0
  23. package/dist/client/errors.d.ts.map +1 -1
  24. package/dist/client/errors.js +31 -1
  25. package/dist/client/errors.js.map +1 -1
  26. package/dist/client/index.d.ts +1 -0
  27. package/dist/client/index.d.ts.map +1 -1
  28. package/dist/client/index.js +1 -0
  29. package/dist/client/index.js.map +1 -1
  30. package/dist/client/rpc-subscription-provider.d.ts +35 -0
  31. package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
  32. package/dist/client/rpc-subscription-provider.js +190 -0
  33. package/dist/client/rpc-subscription-provider.js.map +1 -0
  34. package/dist/combat/actions/index.d.ts.map +1 -1
  35. package/dist/combat/actions/index.js +98 -50
  36. package/dist/combat/actions/index.js.map +1 -1
  37. package/dist/crafting/actions/index.d.ts.map +1 -1
  38. package/dist/crafting/actions/index.js +49 -29
  39. package/dist/crafting/actions/index.js.map +1 -1
  40. package/dist/crafting/index.d.ts +24 -2
  41. package/dist/crafting/index.d.ts.map +1 -1
  42. package/dist/crafting/index.js +31 -2
  43. package/dist/crafting/index.js.map +1 -1
  44. package/dist/factions/actions/index.d.ts +1 -0
  45. package/dist/factions/actions/index.d.ts.map +1 -1
  46. package/dist/factions/actions/index.js.map +1 -1
  47. package/dist/factions/index.d.ts +1 -1
  48. package/dist/factions/index.d.ts.map +1 -1
  49. package/dist/factions/index.js +1 -1
  50. package/dist/factions/index.js.map +1 -1
  51. package/dist/factions/profile-faction.d.ts +20 -8
  52. package/dist/factions/profile-faction.d.ts.map +1 -1
  53. package/dist/factions/profile-faction.js +20 -8
  54. package/dist/factions/profile-faction.js.map +1 -1
  55. package/dist/fleets/actions/add-ship.d.ts +35 -0
  56. package/dist/fleets/actions/add-ship.d.ts.map +1 -0
  57. package/dist/fleets/actions/add-ship.js +149 -0
  58. package/dist/fleets/actions/add-ship.js.map +1 -0
  59. package/dist/fleets/actions/create-fleet.d.ts +36 -0
  60. package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
  61. package/dist/fleets/actions/create-fleet.js +138 -0
  62. package/dist/fleets/actions/create-fleet.js.map +1 -0
  63. package/dist/fleets/actions/crew-transfer.d.ts +41 -0
  64. package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
  65. package/dist/fleets/actions/crew-transfer.js +114 -0
  66. package/dist/fleets/actions/crew-transfer.js.map +1 -0
  67. package/dist/fleets/actions/index.d.ts +34 -15
  68. package/dist/fleets/actions/index.d.ts.map +1 -1
  69. package/dist/fleets/actions/index.js +168 -109
  70. package/dist/fleets/actions/index.js.map +1 -1
  71. package/dist/fleets/actions/respawn.d.ts +38 -0
  72. package/dist/fleets/actions/respawn.d.ts.map +1 -0
  73. package/dist/fleets/actions/respawn.js +122 -0
  74. package/dist/fleets/actions/respawn.js.map +1 -0
  75. package/dist/fleets/actions/ship-import.d.ts +48 -0
  76. package/dist/fleets/actions/ship-import.d.ts.map +1 -0
  77. package/dist/fleets/actions/ship-import.js +330 -0
  78. package/dist/fleets/actions/ship-import.js.map +1 -0
  79. package/dist/fleets/cooldown.d.ts +44 -0
  80. package/dist/fleets/cooldown.d.ts.map +1 -0
  81. package/dist/fleets/cooldown.js +43 -0
  82. package/dist/fleets/cooldown.js.map +1 -0
  83. package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
  84. package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
  85. package/dist/fleets/coordinate-warp-estimate.js +46 -0
  86. package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
  87. package/dist/fleets/index.d.ts +3 -0
  88. package/dist/fleets/index.d.ts.map +1 -1
  89. package/dist/fleets/index.js +3 -0
  90. package/dist/fleets/index.js.map +1 -1
  91. package/dist/fleets/movement-arithmetic.d.ts +21 -0
  92. package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
  93. package/dist/fleets/movement-arithmetic.js +41 -0
  94. package/dist/fleets/movement-arithmetic.js.map +1 -0
  95. package/dist/fleets/subwarp-estimate.d.ts +70 -0
  96. package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
  97. package/dist/fleets/subwarp-estimate.js +38 -0
  98. package/dist/fleets/subwarp-estimate.js.map +1 -0
  99. package/dist/identity/actions/create-profile.d.ts +56 -0
  100. package/dist/identity/actions/create-profile.d.ts.map +1 -0
  101. package/dist/identity/actions/create-profile.js +139 -0
  102. package/dist/identity/actions/create-profile.js.map +1 -0
  103. package/dist/identity/actions/index.d.ts +4 -3
  104. package/dist/identity/actions/index.d.ts.map +1 -1
  105. package/dist/identity/actions/index.js +49 -27
  106. package/dist/identity/actions/index.js.map +1 -1
  107. package/dist/identity/index.d.ts +15 -0
  108. package/dist/identity/index.d.ts.map +1 -1
  109. package/dist/identity/index.js +15 -0
  110. package/dist/identity/index.js.map +1 -1
  111. package/dist/identity/permissions.d.ts +124 -0
  112. package/dist/identity/permissions.d.ts.map +1 -0
  113. package/dist/identity/permissions.js +171 -0
  114. package/dist/identity/permissions.js.map +1 -0
  115. package/dist/index.d.ts +23 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +18 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
  120. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  121. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  122. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  123. package/dist/internal/c4/character-registration.d.ts +2 -0
  124. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  125. package/dist/internal/c4/character-registration.js +2 -0
  126. package/dist/internal/c4/character-registration.js.map +1 -1
  127. package/dist/internal/c4/claim-stake.d.ts +0 -27
  128. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  129. package/dist/internal/c4/claim-stake.js +0 -33
  130. package/dist/internal/c4/claim-stake.js.map +1 -1
  131. package/dist/internal/c4/combat.d.ts +0 -27
  132. package/dist/internal/c4/combat.d.ts.map +1 -1
  133. package/dist/internal/c4/combat.js +0 -33
  134. package/dist/internal/c4/combat.js.map +1 -1
  135. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  136. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  137. package/dist/internal/c4/crafting-process-codec.js +34 -0
  138. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  139. package/dist/internal/c4/crafting.d.ts +11 -31
  140. package/dist/internal/c4/crafting.d.ts.map +1 -1
  141. package/dist/internal/c4/crafting.js +26 -43
  142. package/dist/internal/c4/crafting.js.map +1 -1
  143. package/dist/internal/c4/faction-adapter.d.ts +12 -0
  144. package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
  145. package/dist/internal/c4/faction-adapter.js +52 -0
  146. package/dist/internal/c4/faction-adapter.js.map +1 -0
  147. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  148. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  149. package/dist/internal/c4/faction-epoch-meter.js +31 -0
  150. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  151. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  152. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  153. package/dist/internal/c4/faction-treasury.js +48 -0
  154. package/dist/internal/c4/faction-treasury.js.map +1 -0
  155. package/dist/internal/c4/factions.d.ts +9 -57
  156. package/dist/internal/c4/factions.d.ts.map +1 -1
  157. package/dist/internal/c4/factions.js +21 -139
  158. package/dist/internal/c4/factions.js.map +1 -1
  159. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  160. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  161. package/dist/internal/c4/fleet-arrival.js +42 -0
  162. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  163. package/dist/internal/c4/fleet-creation.d.ts +7 -0
  164. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  165. package/dist/internal/c4/fleet-creation.js +180 -0
  166. package/dist/internal/c4/fleet-creation.js.map +1 -0
  167. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  168. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  169. package/dist/internal/c4/fleet-crew-binding.js +15 -0
  170. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  171. package/dist/internal/c4/fleet-respawn.d.ts +19 -0
  172. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  173. package/dist/internal/c4/fleet-respawn.js +91 -0
  174. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  175. package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
  176. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  177. package/dist/internal/c4/fleet-ship-assembly.js +44 -0
  178. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  179. package/dist/internal/c4/fleet.d.ts +43 -19
  180. package/dist/internal/c4/fleet.d.ts.map +1 -1
  181. package/dist/internal/c4/fleet.js +1 -0
  182. package/dist/internal/c4/fleet.js.map +1 -1
  183. package/dist/internal/c4/game.d.ts +31 -8
  184. package/dist/internal/c4/game.d.ts.map +1 -1
  185. package/dist/internal/c4/game.js +88 -12
  186. package/dist/internal/c4/game.js.map +1 -1
  187. package/dist/internal/c4/identity.d.ts +2 -7
  188. package/dist/internal/c4/identity.d.ts.map +1 -1
  189. package/dist/internal/c4/identity.js +2 -23
  190. package/dist/internal/c4/identity.js.map +1 -1
  191. package/dist/internal/c4/loyalty.d.ts +0 -27
  192. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  193. package/dist/internal/c4/loyalty.js +0 -33
  194. package/dist/internal/c4/loyalty.js.map +1 -1
  195. package/dist/internal/c4/market.d.ts +1 -37
  196. package/dist/internal/c4/market.d.ts.map +1 -1
  197. package/dist/internal/c4/market.js +11 -49
  198. package/dist/internal/c4/market.js.map +1 -1
  199. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  200. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  201. package/dist/internal/c4/mining-instructions.js +3 -0
  202. package/dist/internal/c4/mining-instructions.js.map +1 -0
  203. package/dist/internal/c4/open-signal.d.ts +8 -0
  204. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  205. package/dist/internal/c4/open-signal.js +37 -0
  206. package/dist/internal/c4/open-signal.js.map +1 -0
  207. package/dist/internal/c4/profile-creation.d.ts +17 -0
  208. package/dist/internal/c4/profile-creation.d.ts.map +1 -0
  209. package/dist/internal/c4/profile-creation.js +36 -0
  210. package/dist/internal/c4/profile-creation.js.map +1 -0
  211. package/dist/internal/c4/profile-permissions.d.ts +14 -0
  212. package/dist/internal/c4/profile-permissions.d.ts.map +1 -0
  213. package/dist/internal/c4/profile-permissions.js +81 -0
  214. package/dist/internal/c4/profile-permissions.js.map +1 -0
  215. package/dist/internal/c4/region-geometry.d.ts +8 -0
  216. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  217. package/dist/internal/c4/region-geometry.js +43 -0
  218. package/dist/internal/c4/region-geometry.js.map +1 -0
  219. package/dist/internal/c4/rewards.d.ts +0 -27
  220. package/dist/internal/c4/rewards.d.ts.map +1 -1
  221. package/dist/internal/c4/rewards.js +0 -33
  222. package/dist/internal/c4/rewards.js.map +1 -1
  223. package/dist/internal/c4/runtime-bindings.d.ts +3 -0
  224. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  225. package/dist/internal/c4/runtime-bindings.js +4 -0
  226. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  227. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  228. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  229. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  230. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  231. package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
  232. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  233. package/dist/internal/c4/scan-lifecycle.js +258 -0
  234. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  235. package/dist/internal/c4/scanning.d.ts +1 -28
  236. package/dist/internal/c4/scanning.d.ts.map +1 -1
  237. package/dist/internal/c4/scanning.js +2 -33
  238. package/dist/internal/c4/scanning.js.map +1 -1
  239. package/dist/internal/c4/ship-import.d.ts +4 -0
  240. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  241. package/dist/internal/c4/ship-import.js +13 -0
  242. package/dist/internal/c4/ship-import.js.map +1 -0
  243. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  244. package/dist/internal/c4/ship-stats.js +25 -21
  245. package/dist/internal/c4/ship-stats.js.map +1 -1
  246. package/dist/internal/c4/starbase.d.ts +0 -32
  247. package/dist/internal/c4/starbase.d.ts.map +1 -1
  248. package/dist/internal/c4/starbase.js +3 -41
  249. package/dist/internal/c4/starbase.js.map +1 -1
  250. package/dist/internal/c4/world.d.ts +12 -2
  251. package/dist/internal/c4/world.d.ts.map +1 -1
  252. package/dist/internal/c4/world.js +28 -6
  253. package/dist/internal/c4/world.js.map +1 -1
  254. package/dist/internal/cargo.d.ts +2 -0
  255. package/dist/internal/cargo.d.ts.map +1 -1
  256. package/dist/internal/cargo.js +8 -0
  257. package/dist/internal/cargo.js.map +1 -1
  258. package/dist/internal/fleet.d.ts +1 -0
  259. package/dist/internal/fleet.d.ts.map +1 -1
  260. package/dist/internal/fleet.js +3 -1
  261. package/dist/internal/fleet.js.map +1 -1
  262. package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
  263. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  264. package/dist/internal/loyalty-atlas-bank-state.js +10 -0
  265. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  266. package/dist/internal/planning/action-runtime.d.ts +38 -0
  267. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  268. package/dist/internal/planning/action-runtime.js +63 -0
  269. package/dist/internal/planning/action-runtime.js.map +1 -0
  270. package/dist/internal/planning/arrival-guards.d.ts +20 -0
  271. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  272. package/dist/internal/planning/arrival-guards.js +187 -0
  273. package/dist/internal/planning/arrival-guards.js.map +1 -0
  274. package/dist/internal/planning/authorization-adapter.d.ts +19 -6
  275. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  276. package/dist/internal/planning/authorization-adapter.js +102 -16
  277. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  278. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  279. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  280. package/dist/internal/planning/character-registration-guard.js +58 -0
  281. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  282. package/dist/internal/planning/character-registration.d.ts +23 -0
  283. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  284. package/dist/internal/planning/character-registration.js +86 -0
  285. package/dist/internal/planning/character-registration.js.map +1 -0
  286. package/dist/internal/planning/democracy-history.d.ts +50 -0
  287. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  288. package/dist/internal/planning/democracy-history.js +198 -0
  289. package/dist/internal/planning/democracy-history.js.map +1 -0
  290. package/dist/internal/planning/faction-enrollment.js +2 -2
  291. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  292. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  293. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  294. package/dist/internal/planning/faction-trade-guards.js +15 -0
  295. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  296. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  297. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  298. package/dist/internal/planning/faction-trade-state.js +43 -0
  299. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  300. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  301. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  302. package/dist/internal/planning/fleet-arrival.js +106 -0
  303. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  304. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  305. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  306. package/dist/internal/planning/fleet-attack-xp.js +110 -0
  307. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  308. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  309. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  310. package/dist/internal/planning/fleet-creation.js +107 -0
  311. package/dist/internal/planning/fleet-creation.js.map +1 -0
  312. package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
  313. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  314. package/dist/internal/planning/fleet-crew-guard.js +47 -0
  315. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  316. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  317. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  318. package/dist/internal/planning/fleet-crew-transfer.js +131 -0
  319. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  320. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  321. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  322. package/dist/internal/planning/fleet-respawn.js +164 -0
  323. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  324. package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
  325. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  326. package/dist/internal/planning/fleet-ship-assembly.js +136 -0
  327. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  328. package/dist/internal/planning/governance-fees.d.ts +64 -0
  329. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  330. package/dist/internal/planning/governance-fees.js +239 -0
  331. package/dist/internal/planning/governance-fees.js.map +1 -0
  332. package/dist/internal/planning/mining-stop.d.ts +14 -0
  333. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  334. package/dist/internal/planning/mining-stop.js +41 -0
  335. package/dist/internal/planning/mining-stop.js.map +1 -0
  336. package/dist/internal/planning/movement-character.d.ts +7 -0
  337. package/dist/internal/planning/movement-character.d.ts.map +1 -0
  338. package/dist/internal/planning/movement-character.js +41 -0
  339. package/dist/internal/planning/movement-character.js.map +1 -0
  340. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  341. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  342. package/dist/internal/planning/movement-xp-guard.js +103 -0
  343. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  344. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  345. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  346. package/dist/internal/planning/open-signal-guard.js +31 -0
  347. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  348. package/dist/internal/planning/open-signal.d.ts +31 -0
  349. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  350. package/dist/internal/planning/open-signal.js +84 -0
  351. package/dist/internal/planning/open-signal.js.map +1 -0
  352. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  353. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  354. package/dist/internal/planning/respawn-guards.js +41 -0
  355. package/dist/internal/planning/respawn-guards.js.map +1 -0
  356. package/dist/internal/planning/runtime-guards.d.ts +43 -0
  357. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  358. package/dist/internal/planning/runtime-guards.js +636 -0
  359. package/dist/internal/planning/runtime-guards.js.map +1 -0
  360. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  361. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  362. package/dist/internal/planning/scan-completion-guard.js +94 -0
  363. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  364. package/dist/internal/planning/scan-completion.d.ts +20 -0
  365. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  366. package/dist/internal/planning/scan-completion.js +220 -0
  367. package/dist/internal/planning/scan-completion.js.map +1 -0
  368. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  369. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  370. package/dist/internal/planning/scan-detect-guard.js +77 -0
  371. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  372. package/dist/internal/planning/scan-detect.d.ts +24 -0
  373. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  374. package/dist/internal/planning/scan-detect.js +244 -0
  375. package/dist/internal/planning/scan-detect.js.map +1 -0
  376. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  377. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  378. package/dist/internal/planning/ship-import-funding.js +52 -0
  379. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  380. package/dist/internal/planning/ship-token.d.ts +10 -0
  381. package/dist/internal/planning/ship-token.d.ts.map +1 -0
  382. package/dist/internal/planning/ship-token.js +47 -0
  383. package/dist/internal/planning/ship-token.js.map +1 -0
  384. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  385. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  386. package/dist/internal/planning/starbase-system-guard.js +93 -0
  387. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  388. package/dist/internal/planning/starbase-system.d.ts +12 -0
  389. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  390. package/dist/internal/planning/starbase-system.js +22 -0
  391. package/dist/internal/planning/starbase-system.js.map +1 -0
  392. package/dist/internal/planning/token-mint.d.ts +4 -0
  393. package/dist/internal/planning/token-mint.d.ts.map +1 -0
  394. package/dist/internal/planning/token-mint.js +15 -0
  395. package/dist/internal/planning/token-mint.js.map +1 -0
  396. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  397. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  398. package/dist/internal/planning/trade-faction-market.js +56 -0
  399. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  400. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  401. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  402. package/dist/internal/planning/xp-runtime.js +126 -0
  403. package/dist/internal/planning/xp-runtime.js.map +1 -0
  404. package/dist/loyalty/actions/index.d.ts.map +1 -1
  405. package/dist/loyalty/actions/index.js +4 -3
  406. package/dist/loyalty/actions/index.js.map +1 -1
  407. package/dist/loyalty/index.d.ts.map +1 -1
  408. package/dist/loyalty/index.js +2 -6
  409. package/dist/loyalty/index.js.map +1 -1
  410. package/dist/markets/actions/index.d.ts +1 -0
  411. package/dist/markets/actions/index.d.ts.map +1 -1
  412. package/dist/markets/actions/index.js +40 -16
  413. package/dist/markets/actions/index.js.map +1 -1
  414. package/dist/markets/actions/trade-faction-market.d.ts +43 -0
  415. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  416. package/dist/markets/actions/trade-faction-market.js +291 -0
  417. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  418. package/dist/mining/actions/index.d.ts +84 -0
  419. package/dist/mining/actions/index.d.ts.map +1 -0
  420. package/dist/mining/actions/index.js +328 -0
  421. package/dist/mining/actions/index.js.map +1 -0
  422. package/dist/mining/estimate.d.ts +114 -0
  423. package/dist/mining/estimate.d.ts.map +1 -0
  424. package/dist/mining/estimate.js +127 -0
  425. package/dist/mining/estimate.js.map +1 -0
  426. package/dist/mining/index.d.ts +8 -2
  427. package/dist/mining/index.d.ts.map +1 -1
  428. package/dist/mining/index.js +6 -2
  429. package/dist/mining/index.js.map +1 -1
  430. package/dist/planning/assembly.d.ts.map +1 -1
  431. package/dist/planning/assembly.js +18 -0
  432. package/dist/planning/assembly.js.map +1 -1
  433. package/dist/planning/execution.d.ts.map +1 -1
  434. package/dist/planning/execution.js +378 -12
  435. package/dist/planning/execution.js.map +1 -1
  436. package/dist/planning/index.d.ts +180 -132
  437. package/dist/planning/index.d.ts.map +1 -1
  438. package/dist/planning/index.js +845 -104
  439. package/dist/planning/index.js.map +1 -1
  440. package/dist/planning/simulation.d.ts +25 -1
  441. package/dist/planning/simulation.d.ts.map +1 -1
  442. package/dist/planning/simulation.js +111 -11
  443. package/dist/planning/simulation.js.map +1 -1
  444. package/dist/registry/cargo.d.ts +6 -11
  445. package/dist/registry/cargo.d.ts.map +1 -1
  446. package/dist/registry/cargo.js +19 -19
  447. package/dist/registry/cargo.js.map +1 -1
  448. package/dist/registry/index.d.ts +4 -0
  449. package/dist/registry/index.d.ts.map +1 -1
  450. package/dist/registry/index.js.map +1 -1
  451. package/dist/registry/onboarding.d.ts +8 -1
  452. package/dist/registry/onboarding.d.ts.map +1 -1
  453. package/dist/registry/onboarding.js +18 -5
  454. package/dist/registry/onboarding.js.map +1 -1
  455. package/dist/registry/scanning.d.ts +7 -0
  456. package/dist/registry/scanning.d.ts.map +1 -0
  457. package/dist/registry/scanning.js +13 -0
  458. package/dist/registry/scanning.js.map +1 -0
  459. package/dist/registry/ship-stats-snapshot.js +19 -19
  460. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  461. package/dist/registry/ships.d.ts +30 -0
  462. package/dist/registry/ships.d.ts.map +1 -0
  463. package/dist/registry/ships.js +59 -0
  464. package/dist/registry/ships.js.map +1 -0
  465. package/dist/registry/xp-runtime.d.ts +4 -0
  466. package/dist/registry/xp-runtime.d.ts.map +1 -0
  467. package/dist/registry/xp-runtime.js +14 -0
  468. package/dist/registry/xp-runtime.js.map +1 -0
  469. package/dist/scanning/actions/index.d.ts +116 -0
  470. package/dist/scanning/actions/index.d.ts.map +1 -0
  471. package/dist/scanning/actions/index.js +209 -0
  472. package/dist/scanning/actions/index.js.map +1 -0
  473. package/dist/scanning/index.d.ts +4 -1
  474. package/dist/scanning/index.d.ts.map +1 -1
  475. package/dist/scanning/index.js +5 -2
  476. package/dist/scanning/index.js.map +1 -1
  477. package/dist/scanning/lifecycle.d.ts +77 -0
  478. package/dist/scanning/lifecycle.d.ts.map +1 -0
  479. package/dist/scanning/lifecycle.js +93 -0
  480. package/dist/scanning/lifecycle.js.map +1 -0
  481. package/dist/scanning/odds.d.ts +111 -0
  482. package/dist/scanning/odds.d.ts.map +1 -0
  483. package/dist/scanning/odds.js +294 -0
  484. package/dist/scanning/odds.js.map +1 -0
  485. package/dist/scanning/signals.d.ts +121 -0
  486. package/dist/scanning/signals.d.ts.map +1 -0
  487. package/dist/scanning/signals.js +171 -0
  488. package/dist/scanning/signals.js.map +1 -0
  489. package/dist/world/index.d.ts +64 -5
  490. package/dist/world/index.d.ts.map +1 -1
  491. package/dist/world/index.js +53 -4
  492. package/dist/world/index.js.map +1 -1
  493. package/package.json +10 -2
@@ -0,0 +1,328 @@
1
+ import { resolveXpRuntime } from '../../internal/planning/xp-runtime.js';
2
+ import { matchesFleetMiningState } from '../../internal/planning/mining-stop.js';
3
+ import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
4
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
5
+ import { sage } from '../../internal/c4/bindings.js';
6
+ import { deriveFleetAddress, fleetAccountDefinition, } from '../../internal/c4/fleet.js';
7
+ import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/identity.js';
8
+ import { deriveRegionTrackerAddress, regionTrackerAccountDefinition, } from '../../internal/c4/factions.js';
9
+ import { celestialBodyAccountDefinition, deriveCelestialBodyAddress, deriveStarSystemAddress, starSystemAccountDefinition, } from '../../internal/c4/world.js';
10
+ import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, matchesFleetCrewBindingIdentity, } from '../../internal/c4/fleet-crew-binding.js';
11
+ import { requireGameAddress } from '../../internal/game-context.js';
12
+ import { adaptStartMiningAsteroidInstruction, adaptStopMiningAsteroidInstruction, validatePlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
13
+ import { createPlan } from '../../planning/index.js';
14
+ function fail(address, message) {
15
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
16
+ }
17
+ const remedies = {
18
+ docked: 'Undock the Fleet',
19
+ mining: 'Stop mining with planFleetStopMining',
20
+ respawn: 'Wait for the Fleet to recover',
21
+ destroyed: 'Respawn the Fleet through an appropriate game client',
22
+ claimStakeTransfer: 'Finish the Claim Stake transfer',
23
+ };
24
+ function actionCoordinate(fleet) {
25
+ if (fleet.state.kind === 'idle')
26
+ return fleet.location;
27
+ if (fleet.state.kind === 'warp' || fleet.state.kind === 'subwarp')
28
+ return fleet.state.to;
29
+ return fail(fleet.address, `Fleet ${fleet.name} is ${fleet.state.kind} and cannot start mining. ${remedies[fleet.state.kind]}, refresh the Fleet, and retry from idle or a warp/subwarp arrival at the Asteroid's Star System.`);
30
+ }
31
+ function validateOptionsObject(value, field) {
32
+ if (typeof value !== 'object' || value === null || Array.isArray(value)) {
33
+ throw new InvalidActionInputError(field, value, 'an object containing the mining action options or Profile authorization', `Supply ${field} with the documented mining action fields before retrying.`);
34
+ }
35
+ }
36
+ function validateResources(ids, available) {
37
+ if (!Array.isArray(ids) || ids.length === 0) {
38
+ throw new InvalidActionInputError('resourceIds', ids, 'a dense non-empty ascending list of deposit cargo ids', 'Supply at least one resource cargo id from the Asteroid deposit before retrying.');
39
+ }
40
+ for (let i = 0; i < ids.length; i += 1) {
41
+ const id = ids[i];
42
+ if (!Object.hasOwn(ids, i) ||
43
+ !Number.isInteger(id) ||
44
+ id < 0 ||
45
+ id > 65535 ||
46
+ (i > 0 && ids[i - 1] >= id) ||
47
+ !available.includes(id)) {
48
+ throw new InvalidActionInputError('resourceIds', ids, 'unique ascending u16 cargo ids selected from the deposit', 'Select resource cargo ids present in the Asteroid deposit, remove holes and duplicates, and sort them in ascending order before retrying.');
49
+ }
50
+ }
51
+ }
52
+ function required(account, address, label) {
53
+ if (account === undefined) {
54
+ return fail(address, `${label} is missing or returned at a different address. Refresh the Fleet and Asteroid dependencies in the configured Game and retry.`);
55
+ }
56
+ return account;
57
+ }
58
+ /** Plans one inert Fleet mining start at an Asteroid, without signing or simulation.
59
+ *
60
+ * Idle Fleets use their current coordinate; warp/subwarp Fleets use their arrival
61
+ * coordinate, never a local clock. This planner emits only the mining instruction.
62
+ * Direct mining needs Idle. Settle travel through a supported game route, then
63
+ * refresh an Idle Fleet before planning mining. planFleetSettleArrival supports
64
+ * completed current-runtime subwarp with direct Profile authorization; it does
65
+ * not support warp. Current-runtime settlement-plus-mining composition has not
66
+ * been qualified. Idle Fleets do not need the settlement step.
67
+ * Simulate the complete Plan before execution; arrival, permissions, range, fuel,
68
+ * and mining eligibility remain program-authoritative. This planner neither
69
+ * estimates mining output nor stops mining. No FleetCrewBinding account exists
70
+ * in the pinned ten-account instruction.
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * declare const ctx: SageContext;
75
+ * declare const fleet: FleetSnapshot;
76
+ * declare const authorization: PlanAuthorization;
77
+ * declare const asteroid: ResourceDepositSnapshot;
78
+ * const plan = await planFleetStartMining(ctx, fleet, { authorization, asteroid, resourceIds: [8] });
79
+ * ```
80
+ */
81
+ export async function planFleetStartMining(ctx, fleet, options) {
82
+ const game = requireGameAddress(ctx);
83
+ validateOptionsObject(options, 'options');
84
+ validateOptionsObject(options.authorization, 'authorization');
85
+ const { asteroid } = options;
86
+ const authorization = {
87
+ profile: options.authorization.profile,
88
+ authority: options.authorization.authority,
89
+ keyIndex: options.authorization.keyIndex,
90
+ ...(options.authorization.certificate === undefined
91
+ ? {}
92
+ : { certificate: options.authorization.certificate }),
93
+ };
94
+ validatePlanAuthorization(authorization);
95
+ const coordinate = actionCoordinate(fleet);
96
+ const movingSnapshot = fleet.state.kind !== 'idle';
97
+ if (fleet.game !== game ||
98
+ asteroid.game !== game ||
99
+ fleet.ownerProfile.address !== authorization.profile) {
100
+ fail(fleet.address, `Fleet ${fleet.name} and Asteroid ${asteroid.name} must belong to configured Game ${game}, and the Fleet must belong to authorized Profile ${authorization.profile}. Choose the owning Profile and matching Game, refresh both snapshots, and retry.`);
101
+ }
102
+ validateResources(options.resourceIds, asteroid.resources.map((r) => r.cargo.id));
103
+ // Copy before any asynchronous reads so caller mutation cannot change selection.
104
+ const resourceIds = [...options.resourceIds];
105
+ const character = await findCharacterPda(authorization.profile, game);
106
+ const regionTracker = await deriveRegionTrackerAddress(game);
107
+ const addresses = [
108
+ fleet.address,
109
+ asteroid.address,
110
+ asteroid.system.address,
111
+ character,
112
+ regionTracker,
113
+ ];
114
+ const values = await readContextRawAccounts(ctx, addresses);
115
+ const labels = [
116
+ 'Fleet',
117
+ 'Asteroid',
118
+ 'Star System',
119
+ 'Character',
120
+ 'RegionTracker',
121
+ ];
122
+ const accounts = addresses.map((address, index) => required(values[index], address, labels[index]));
123
+ const [fleetAccount, asteroidAccount, systemAccount, characterAccount, trackerAccount,] = accounts;
124
+ const current = fleetAccountDefinition.decode(fleetAccount);
125
+ const currentCoordinate = current.state.kind === 'idle'
126
+ ? current.location
127
+ : current.state.kind === 'warp' || current.state.kind === 'subwarp'
128
+ ? current.state.to
129
+ : undefined;
130
+ if (current.game !== game ||
131
+ current.ownerProfile !== authorization.profile ||
132
+ (await deriveFleetAddress(current)) !== fleet.address ||
133
+ (current.state.kind !== fleet.state.kind &&
134
+ !(current.state.kind === 'idle' &&
135
+ (fleet.state.kind === 'warp' || fleet.state.kind === 'subwarp'))) ||
136
+ currentCoordinate?.x !== coordinate.x ||
137
+ currentCoordinate?.y !== coordinate.y) {
138
+ fail(fleet.address, `Fleet ${fleet.name} no longer matches its Game, Profile, canonical address, state, or mining coordinate. Refresh the Fleet and create a new mining Plan before retrying.`);
139
+ }
140
+ const deposit = celestialBodyAccountDefinition.decode(asteroidAccount);
141
+ if (deposit.kind !== 'asteroid' ||
142
+ deposit.game !== game ||
143
+ deposit.id !== asteroid.bodyId ||
144
+ (await deriveCelestialBodyAddress(game, deposit.id)) !== asteroid.address ||
145
+ deposit.system !== asteroid.system.address) {
146
+ fail(asteroid.address, `Asteroid ${asteroid.name} no longer matches its Game, canonical address, or Star System. Refresh the resource deposit and choose an Asteroid in the Fleet's current or arrival Star System before retrying.`);
147
+ }
148
+ validateResources(resourceIds, deposit.details.resources.map((r) => r.cargoId));
149
+ const system = starSystemAccountDefinition.decode(systemAccount);
150
+ if (system.game !== game ||
151
+ (await deriveStarSystemAddress(game, system.systemId)) !==
152
+ systemAccount.address) {
153
+ fail(systemAccount.address, 'Star System does not match its Game or canonical address. Refresh the Asteroid and Star System in the configured Game before retrying.');
154
+ }
155
+ // Compare stored fixed-point coordinates, not rounded display numbers.
156
+ const exactFleet = sage.getFleetDecoder().decode(fleetAccount.data);
157
+ const exactCoordinate = exactFleet.state.__kind === 'MoveWarp'
158
+ ? exactFleet.state.fields[0].to
159
+ : exactFleet.state.__kind === 'MoveSubwarp'
160
+ ? exactFleet.state.fields[0].journey.to
161
+ : exactFleet.location;
162
+ const exactSystem = sage.getStarSystemDecoder().decode(systemAccount.data);
163
+ if (exactCoordinate[0].raw !== exactSystem.coordinates[0].raw ||
164
+ exactCoordinate[1].raw !== exactSystem.coordinates[1].raw) {
165
+ fail(asteroid.address, `Asteroid ${asteroid.name} is not in Fleet ${fleet.name}'s current or arrival Star System. Choose a deposit at the Fleet's mining coordinate or move the Fleet there, refresh, and retry.`);
166
+ }
167
+ const characterData = characterAccountDefinition.decode(characterAccount);
168
+ if (characterData.game !== game ||
169
+ characterData.playerProfile !== authorization.profile) {
170
+ fail(character, 'Character does not match the owning Profile and configured Game. Refresh or repair the canonical Character registration before retrying.');
171
+ }
172
+ const tracker = regionTrackerAccountDefinition.decode(trackerAccount);
173
+ if (tracker.game !== game) {
174
+ fail(regionTracker, 'RegionTracker does not match the configured Game. Refresh world region data for this Game before retrying.');
175
+ }
176
+ const resources = resourceIds
177
+ .map((id) => {
178
+ const resource = asteroid.resources.find((r) => r.cargo.id === id);
179
+ return `${resource.cargo.name} (cargo ${id})`;
180
+ })
181
+ .join(', ');
182
+ const describes = `Start mining with Fleet ${fleet.name} at Asteroid ${asteroid.name}: ${resources}.`;
183
+ const settlementWarning = movingSnapshot
184
+ ? ' Direct mining needs Idle. Settle travel through a supported game route, then refresh an Idle Fleet before planning mining. planFleetSettleArrival supports completed current-runtime subwarp with direct Profile authorization, not warp. Current-runtime settlement-plus-mining composition has not been qualified.'
185
+ : '';
186
+ return createPlan({
187
+ kind: 'fleet.start-mining',
188
+ summary: describes,
189
+ steps: [
190
+ {
191
+ describes: `${describes}${settlementWarning} Simulate before execution; arrival, permissions, range, fuel, and mining eligibility remain chain-authoritative.`,
192
+ signers: [authorization.authority],
193
+ instruction: adaptStartMiningAsteroidInstruction({
194
+ authorization,
195
+ fleet: fleet.address,
196
+ character,
197
+ starSystem: systemAccount.address,
198
+ regionTracker,
199
+ asteroid: asteroid.address,
200
+ game,
201
+ resources: resourceIds,
202
+ }),
203
+ },
204
+ ],
205
+ preconditions: [],
206
+ });
207
+ }
208
+ /** Plans one inert stop-mining instruction using the Asteroid in Fleet state.
209
+ *
210
+ * The snapshot and a fresh canonical Fleet must be mining the same Asteroid.
211
+ * A finite persisted guard rechecks this state before signing; old unguarded
212
+ * stop Plans must be recreated. Exit fuel was observed on PTR even for Idle,
213
+ * so Idle is not a free no-op. The read-to-chain race remains: simulate before
214
+ * execution; a later state change can still consume fuel or fail upkeep checks.
215
+ * No yield, cargo amount, or execution success is promised. DO_MINING
216
+ * permission remains chain-authoritative. Only validated canonical optional
217
+ * accounts are included, including the chain-created neutral CrewBinding at
218
+ * its canonical PDA; proven absence uses the generated omitted-account sentinel.
219
+ * Planning does not sign, simulate, or submit a transaction.
220
+ *
221
+ * @example
222
+ * ```ts
223
+ * declare const ctx: SageContext;
224
+ * declare const fleet: FleetSnapshot;
225
+ * declare const authorization: PlanAuthorization;
226
+ * const plan = await planFleetStopMining(ctx, fleet, { authorization });
227
+ * ```
228
+ */
229
+ export async function planFleetStopMining(ctx, fleet, options) {
230
+ const game = requireGameAddress(ctx);
231
+ validateOptionsObject(options, 'options');
232
+ validateOptionsObject(options.authorization, 'authorization');
233
+ const authorization = {
234
+ profile: options.authorization.profile,
235
+ authority: options.authorization.authority,
236
+ keyIndex: options.authorization.keyIndex,
237
+ ...(options.authorization.certificate === undefined
238
+ ? {}
239
+ : { certificate: options.authorization.certificate }),
240
+ };
241
+ validatePlanAuthorization(authorization);
242
+ if (fleet.state.kind !== 'mining') {
243
+ fail(fleet.address, `Fleet ${fleet.name} is ${fleet.state.kind} and cannot stop mining. Refresh the Fleet and retry only with a mining snapshot; an idle Fleet has already stopped.`);
244
+ }
245
+ if (fleet.game !== game ||
246
+ fleet.ownerProfile.address !== authorization.profile) {
247
+ fail(fleet.address, `Fleet ${fleet.name} must belong to configured Game ${game} and authorized Profile ${authorization.profile}. Choose the owning Profile and matching Game, refresh the Fleet, and retry.`);
248
+ }
249
+ const asteroid = fleet.state.asteroid.address;
250
+ const intent = {
251
+ address: fleet.address,
252
+ game,
253
+ profile: authorization.profile,
254
+ asteroid,
255
+ };
256
+ const [character, crewBinding, regionTracker] = await Promise.all([
257
+ findCharacterPda(authorization.profile, game),
258
+ deriveFleetCrewBindingAddress(fleet.address),
259
+ deriveRegionTrackerAddress(game),
260
+ ]);
261
+ const [currentFleet, crewAccount, regionAccount] = await readContextRawAccounts(ctx, [
262
+ intent.address,
263
+ crewBinding,
264
+ regionTracker,
265
+ ]);
266
+ let matches = false;
267
+ try {
268
+ matches = await matchesFleetMiningState(currentFleet, intent);
269
+ }
270
+ catch {
271
+ // Adapter errors must not hide the action-level remedy for a saved snapshot.
272
+ }
273
+ if (!matches)
274
+ fail(intent.address, 'The fresh Fleet is unavailable, invalid, or no longer owned by this Profile and mining the selected Asteroid in this Game. Refresh the Fleet and recreate the stop Plan only while it is mining; an idle stop can still consume exit fuel.');
275
+ if (crewAccount !== undefined) {
276
+ const crew = fleetCrewBindingAccountDefinition.decode(crewAccount);
277
+ if (crewAccount.address !== crewBinding ||
278
+ !matchesFleetCrewBindingIdentity(crew, fleet.address, authorization.profile)) {
279
+ fail(crewBinding, 'FleetCrewBinding does not match its canonical address, Fleet, or owning Profile. Refresh the Fleet crew registration and retry.');
280
+ }
281
+ }
282
+ if (regionAccount !== undefined) {
283
+ const region = regionTrackerAccountDefinition.decode(regionAccount);
284
+ if (regionAccount.address !== regionTracker || region.game !== game) {
285
+ fail(regionTracker, 'RegionTracker does not match its canonical address or configured Game. Refresh world region data for this Game and retry.');
286
+ }
287
+ }
288
+ const xp = await resolveXpRuntime(ctx, {
289
+ game,
290
+ character,
291
+ profile: options.authorization.profile,
292
+ });
293
+ return createPlan({
294
+ kind: 'fleet.stop-mining',
295
+ summary: `Stop mining for Fleet ${fleet.name}.`,
296
+ steps: [
297
+ {
298
+ describes: `Stop mining for Fleet ${fleet.name} at Asteroid ${asteroid}, returning it to idle. Fresh mining state is checked before signing; exit fuel can still be consumed, including if the Fleet becomes idle in the read-to-chain race. Simulate before execution; permission and mining results remain chain-authoritative.`,
299
+ signers: [authorization.authority],
300
+ instruction: adaptStopMiningAsteroidInstruction({
301
+ ...xp.accounts,
302
+ authorization,
303
+ character,
304
+ fleet: intent.address,
305
+ game,
306
+ asteroid,
307
+ ...(crewAccount === undefined ? {} : { crewBinding }),
308
+ ...(regionAccount === undefined ? {} : { regionTracker }),
309
+ }),
310
+ },
311
+ ],
312
+ preconditions: [
313
+ {
314
+ kind: 'xp-runtime',
315
+ address: game,
316
+ intent: xp.intent,
317
+ accounts: xp.accounts,
318
+ describes: 'The configured Game and canonical Character XP accounts remain eligible for mining settlement.',
319
+ },
320
+ {
321
+ kind: 'fleet-mining',
322
+ ...intent,
323
+ describes: 'The canonical Fleet remains owned by the authorized Profile and mining the planned Asteroid in the configured Game.',
324
+ },
325
+ ],
326
+ });
327
+ }
328
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mining/actions/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /** One selected Asteroid resource, using translated storage units rather than encoded fixed point.
2
+ * `runtimeMultiplier` is the caller's effective multiplier, including any applicable
3
+ * crew/research effects. No modifier composition or eligibility is inferred.
4
+ * @example
5
+ * ```ts
6
+ * const resource: MiningEstimateResourceInput = {
7
+ * cargoId: 300, richness: 2, storageCost: 2, runtimeMultiplier: 1.5,
8
+ * };
9
+ * ```
10
+ */
11
+ export interface MiningEstimateResourceInput {
12
+ readonly cargoId: number;
13
+ readonly richness: number;
14
+ readonly storageCost: number;
15
+ readonly runtimeMultiplier: number;
16
+ }
17
+ /** Explicit constant-rate Asteroid scenario. Balances and rates use cargo units;
18
+ * capacity, occupancy and storage costs use translated storage units. Occupancy
19
+ * includes all available Food; Ammo is held separately and frees no cargo space.
20
+ * Supply all 1–8 selected resources, including zero-yield rows. Fleet rate already
21
+ * includes ship/component effects: do not apply those again in the multipliers.
22
+ * @example
23
+ * ```ts
24
+ * const input: MiningEstimateInput = {
25
+ * fleetUnitsPerSecond: 2, durationSeconds: 60,
26
+ * resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
27
+ * cargo: { occupiedSpace: 10, capacity: 100 },
28
+ * food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
29
+ * ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
30
+ * };
31
+ * ```
32
+ */
33
+ export interface MiningEstimateInput {
34
+ readonly fleetUnitsPerSecond: number;
35
+ /** Requested duration; the result reports the clipped duration. */
36
+ readonly durationSeconds: number;
37
+ readonly resources: readonly MiningEstimateResourceInput[];
38
+ readonly cargo: {
39
+ readonly occupiedSpace: number;
40
+ readonly capacity: number;
41
+ };
42
+ readonly food: {
43
+ readonly availableUnits: number;
44
+ readonly burnUnitsPerSecond: number;
45
+ readonly storageCost: number;
46
+ };
47
+ readonly ammo: {
48
+ readonly availableUnits: number;
49
+ readonly burnUnitsPerSecond: number;
50
+ };
51
+ }
52
+ /** Constraints reached at the end of an estimate; simultaneous limits are retained.
53
+ * @example
54
+ * ```ts
55
+ * const reason: MiningEstimateLimit = 'food';
56
+ * ```
57
+ */
58
+ export type MiningEstimateLimit = 'duration' | 'food' | 'ammo' | 'cargo' | 'no-output';
59
+ /** Immutable, JSON-safe constant-rate estimate, not a settlement guarantee.
60
+ * Projected quantities are fractional numbers; chain rounding, changing state,
61
+ * eligibility and tick ordering are excluded. A null limit means unbounded by
62
+ * that constraint, never an unknown balance. No-output scenarios run for zero time
63
+ * and project no upkeep. An initially full hold conservatively permits no mining,
64
+ * even when Food outflow could offset output: tick ordering is not established.
65
+ * @example
66
+ * ```ts
67
+ * declare const estimate: MiningEstimate;
68
+ * console.log(estimate.durationSeconds, estimate.limitingFactors);
69
+ * ```
70
+ */
71
+ export interface MiningEstimate {
72
+ readonly basis: 'official-model-estimate';
73
+ /** Requested duration clipped to the modeled limits, in seconds. */
74
+ readonly durationSeconds: number;
75
+ readonly outputs: readonly {
76
+ readonly cargoId: number;
77
+ readonly unitsPerSecond: number;
78
+ readonly projectedUnits: number;
79
+ }[];
80
+ readonly resourceVolumeInflowPerSecond: number;
81
+ readonly foodVolumeOutflowPerSecond: number;
82
+ /** May be negative when Food consumption frees more space than mining uses. */
83
+ readonly netCargoGrowthPerSecond: number;
84
+ readonly limitsSeconds: {
85
+ readonly food: number | null;
86
+ readonly ammo: number | null;
87
+ readonly cargo: number | null;
88
+ };
89
+ readonly limitingFactors: readonly MiningEstimateLimit[];
90
+ readonly consumedFoodUnits: number;
91
+ readonly consumedAmmoUnits: number;
92
+ readonly finalOccupiedSpace: number;
93
+ }
94
+ /** Estimates constant-rate Asteroid output, clipping duration to Food, Ammo and
95
+ * cargo capacity. Each rate is Fleet rate / selected count × richness × explicit
96
+ * effective runtime multiplier. Food consumption offsets volume growth while
97
+ * mining; Ammo does not. Hardness is absent from the official current C4 model.
98
+ * This is pure: it neither reads accounts nor validates resource eligibility.
99
+ * @throws InvalidDerivationInputError for invalid selections, inconsistent cargo
100
+ * occupancy, negative/nonfinite values or arithmetic overflow.
101
+ * @example
102
+ * ```ts
103
+ * const estimate = deriveMiningEstimate({
104
+ * fleetUnitsPerSecond: 2, durationSeconds: 60,
105
+ * resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
106
+ * cargo: { occupiedSpace: 10, capacity: 100 },
107
+ * food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
108
+ * ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
109
+ * });
110
+ * console.log(estimate.outputs, estimate.limitingFactors);
111
+ * ```
112
+ */
113
+ export declare function deriveMiningEstimate(input: MiningEstimateInput): MiningEstimate;
114
+ //# sourceMappingURL=estimate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimate.d.ts","sourceRoot":"","sources":["../../src/mining/estimate.ts"],"names":[],"mappings":"AAGA;;;;;;;;;GASG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAC3D,QAAQ,CAAC,KAAK,EAAE;QAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;KACrC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC7B,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEvD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;KACjC,EAAE,CAAC;IACJ,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,0BAA0B,EAAE,MAAM,CAAC;IAC5C,+EAA+E;IAC/E,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,mBAAmB,GACzB,cAAc,CAmLhB"}
@@ -0,0 +1,127 @@
1
+ import { InvalidDerivationInputError } from '../client/errors.js';
2
+ import { freezeResolvedSnapshot } from '../internal/resolved-snapshot.js';
3
+ function checked(field, value) {
4
+ if (!Number.isFinite(value) || value < 0) {
5
+ throw new InvalidDerivationInputError(field, value, 'Supply finite, nonnegative mining inputs whose calculated rates, quantities and time limits remain finite.');
6
+ }
7
+ return value;
8
+ }
9
+ function invalid(field, value, remedy) {
10
+ throw new InvalidDerivationInputError(field, value, remedy);
11
+ }
12
+ /** Estimates constant-rate Asteroid output, clipping duration to Food, Ammo and
13
+ * cargo capacity. Each rate is Fleet rate / selected count × richness × explicit
14
+ * effective runtime multiplier. Food consumption offsets volume growth while
15
+ * mining; Ammo does not. Hardness is absent from the official current C4 model.
16
+ * This is pure: it neither reads accounts nor validates resource eligibility.
17
+ * @throws InvalidDerivationInputError for invalid selections, inconsistent cargo
18
+ * occupancy, negative/nonfinite values or arithmetic overflow.
19
+ * @example
20
+ * ```ts
21
+ * const estimate = deriveMiningEstimate({
22
+ * fleetUnitsPerSecond: 2, durationSeconds: 60,
23
+ * resources: [{ cargoId: 300, richness: 1, storageCost: 1, runtimeMultiplier: 1 }],
24
+ * cargo: { occupiedSpace: 10, capacity: 100 },
25
+ * food: { availableUnits: 10, burnUnitsPerSecond: 0.1, storageCost: 1 },
26
+ * ammo: { availableUnits: 10, burnUnitsPerSecond: 0.1 },
27
+ * });
28
+ * console.log(estimate.outputs, estimate.limitingFactors);
29
+ * ```
30
+ */
31
+ export function deriveMiningEstimate(input) {
32
+ const base = checked('Fleet mining units per second', input.fleetUnitsPerSecond);
33
+ const requested = checked('Mining duration seconds', input.durationSeconds);
34
+ const count = input.resources.length;
35
+ if (count < 1 || count > 8)
36
+ invalid('Selected resource count', count, 'Select between one and eight distinct Asteroid resources.');
37
+ const seen = new Set();
38
+ const rates = Array.from(input.resources, (resource, index) => {
39
+ if (resource === null || typeof resource !== 'object') {
40
+ invalid('Selected resource index', index, 'Supply a dense list of resource objects with explicit numeric inputs.');
41
+ }
42
+ const id = resource.cargoId;
43
+ if (!Number.isInteger(id) || id < 0 || id > 65535 || seen.has(id)) {
44
+ invalid('Selected cargo id', id, 'Supply distinct integer cargo ids between 0 and 65535 from the Asteroid deposit.');
45
+ }
46
+ seen.add(id);
47
+ const richness = checked('Resource richness', resource.richness);
48
+ const multiplier = checked('Resource runtime multiplier', resource.runtimeMultiplier);
49
+ const storageCost = checked('Resource storage cost', resource.storageCost);
50
+ const unitsPerSecond = checked('Resource output rate', checked('Richness-adjusted output rate', (base / count) * richness) *
51
+ multiplier);
52
+ return {
53
+ cargoId: id,
54
+ unitsPerSecond,
55
+ volume: checked('Resource volume inflow', unitsPerSecond * storageCost),
56
+ };
57
+ });
58
+ const capacity = checked('Cargo capacity', input.cargo.capacity);
59
+ const occupied = checked('Occupied cargo space', input.cargo.occupiedSpace);
60
+ if (occupied > capacity)
61
+ invalid('Occupied cargo space', occupied, 'Supply occupancy no greater than cargo capacity.');
62
+ const foodAvailable = checked('Available Food units', input.food.availableUnits);
63
+ const foodBurn = checked('Food burn units per second', input.food.burnUnitsPerSecond);
64
+ const foodStorage = checked('Food storage cost', input.food.storageCost);
65
+ if (checked('Available Food volume', foodAvailable * foodStorage) > occupied) {
66
+ invalid('Occupied cargo space', occupied, 'Include the volume of all available Food in occupied cargo space.');
67
+ }
68
+ const ammoAvailable = checked('Available Ammo units', input.ammo.availableUnits);
69
+ const ammoBurn = checked('Ammo burn units per second', input.ammo.burnUnitsPerSecond);
70
+ const resourceVolumeInflowPerSecond = rates.reduce((sum, row) => checked('Total resource volume inflow', sum + row.volume), 0);
71
+ const foodVolumeOutflowPerSecond = checked('Food volume outflow', foodBurn * foodStorage);
72
+ const netCargoGrowthPerSecond = resourceVolumeInflowPerSecond - foodVolumeOutflowPerSecond;
73
+ const limitsSeconds = {
74
+ food: foodBurn === 0
75
+ ? null
76
+ : checked('Food time limit', foodAvailable / foodBurn),
77
+ ammo: ammoBurn === 0
78
+ ? null
79
+ : checked('Ammo time limit', ammoAvailable / ammoBurn),
80
+ cargo: occupied === capacity
81
+ ? 0
82
+ : netCargoGrowthPerSecond > 0
83
+ ? checked('Cargo time limit', (capacity - occupied) / netCargoGrowthPerSecond)
84
+ : null,
85
+ };
86
+ const constraints = [
87
+ ['duration', requested],
88
+ ['food', limitsSeconds.food],
89
+ ['ammo', limitsSeconds.ammo],
90
+ ['cargo', limitsSeconds.cargo],
91
+ ];
92
+ const noOutput = rates.every((row) => row.unitsPerSecond === 0);
93
+ const durationSeconds = noOutput
94
+ ? 0
95
+ : Math.min(...constraints.flatMap(([, seconds]) => seconds === null ? [] : [seconds]));
96
+ const tolerance = Math.max(1e-9, durationSeconds * 1e-9);
97
+ const limitingFactors = noOutput
98
+ ? ['no-output']
99
+ : constraints
100
+ .filter(([, seconds]) => seconds !== null &&
101
+ Math.abs(seconds - durationSeconds) <= tolerance)
102
+ .map(([reason]) => reason);
103
+ const consumedFoodUnits = checked('Consumed Food units', foodBurn * durationSeconds);
104
+ const consumedAmmoUnits = checked('Consumed Ammo units', ammoBurn * durationSeconds);
105
+ const inflow = checked('Projected cargo inflow', resourceVolumeInflowPerSecond * durationSeconds);
106
+ const outflow = checked('Projected Food outflow', foodVolumeOutflowPerSecond * durationSeconds);
107
+ // Subtract Food first to avoid overflowing a temporary sum near Number.MAX_VALUE.
108
+ const finalOccupiedSpace = Math.min(capacity, checked('Projected occupied cargo space', Math.max(0, occupied - outflow) + inflow));
109
+ return freezeResolvedSnapshot({
110
+ basis: 'official-model-estimate',
111
+ durationSeconds,
112
+ outputs: rates.map(({ cargoId, unitsPerSecond }) => ({
113
+ cargoId,
114
+ unitsPerSecond,
115
+ projectedUnits: checked('Projected resource units', unitsPerSecond * durationSeconds),
116
+ })),
117
+ resourceVolumeInflowPerSecond,
118
+ foodVolumeOutflowPerSecond,
119
+ netCargoGrowthPerSecond,
120
+ limitsSeconds,
121
+ limitingFactors,
122
+ consumedFoodUnits,
123
+ consumedAmmoUnits,
124
+ finalOccupiedSpace,
125
+ });
126
+ }
127
+ //# sourceMappingURL=estimate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../src/mining/estimate.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,7 @@ export interface MiningOutputRateInput {
43
43
  readonly cargoId: number;
44
44
  readonly richness: number;
45
45
  }
46
- /** One richness-adjusted resource output in cargo units per second.
46
+ /** One nominal resource output after sharing Fleet capacity and applying richness.
47
47
  * @example
48
48
  * ```ts
49
49
  * const rate: MiningOutputRate = { cargoId: 8, unitsPerSecond: 4.5 };
@@ -61,6 +61,7 @@ export interface MiningOutputRate {
61
61
  * ```
62
62
  */
63
63
  export interface FleetMiningOutput extends ResourceDepositItem {
64
+ /** Nominal cargo units per second, with Fleet capacity shared among selected resources. */
64
65
  readonly unitsPerSecond: number;
65
66
  }
66
67
  /** Immutable current extraction relationship for one active mining Fleet.
@@ -77,6 +78,7 @@ export interface FleetMiningSnapshot {
77
78
  readonly asteroid: EntityRef<'celestialBody'>;
78
79
  readonly lastUpdatedAtUnixSeconds: bigint;
79
80
  readonly regionXpModifier: WorldFixedValue;
81
+ /** Fleet base rate before sharing among selected resources and applying richness. */
80
82
  readonly miningRate: {
81
83
  readonly raw: bigint;
82
84
  readonly unitsPerSecond: number;
@@ -121,7 +123,10 @@ export declare function maybeGetResourceDeposit(context: SageContext, asteroid:
121
123
  * ```
122
124
  */
123
125
  export declare function deriveMiningStateAgeSeconds(lastUpdatedAtUnixSeconds: bigint, atUnixSeconds: bigint): number;
124
- /** Derives each selected output rate as Fleet units/second times deposit richness.
126
+ /** Shares Fleet units/second equally among selected resources, then applies richness.
127
+ * Supply the complete selected resource list, including zero-richness selections.
128
+ * An empty selection returns no rates. Results are nominal estimates; cargo
129
+ * limits, upkeep and whole-unit settlement remain chain-authoritative.
125
130
  * @example
126
131
  * ```ts
127
132
  * const rates = deriveMiningOutputRates(2, [{ cargoId: 8, richness: 1.5 }]);
@@ -153,4 +158,5 @@ export declare function getFleetMiningState(context: SageContext, fleet: Address
153
158
  * ```
154
159
  */
155
160
  export declare function getFleetMiningStatesByOwner(context: SageContext, owner: Address, options?: MiningDiscoveryOptions): Promise<readonly FleetMiningSnapshot[]>;
161
+ export { deriveMiningEstimate, type MiningEstimate, type MiningEstimateInput, type MiningEstimateLimit, type MiningEstimateResourceInput, } from './estimate.js';
156
162
  //# sourceMappingURL=index.d.ts.map