@aephia/atlas-kit 0.6.0-next.98 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. package/dist/cargo/actions/deposit.d.ts +4 -1
  2. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  3. package/dist/cargo/actions/deposit.js +56 -133
  4. package/dist/cargo/actions/deposit.js.map +1 -1
  5. package/dist/cargo/actions/index.d.ts +14 -7
  6. package/dist/cargo/actions/index.d.ts.map +1 -1
  7. package/dist/cargo/actions/index.js +105 -93
  8. package/dist/cargo/actions/index.js.map +1 -1
  9. package/dist/cargo/actions/wallet-context.d.ts +52 -3
  10. package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
  11. package/dist/cargo/actions/wallet-context.js +118 -7
  12. package/dist/cargo/actions/wallet-context.js.map +1 -1
  13. package/dist/cargo/actions/wallet-token.d.ts +1 -6
  14. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  15. package/dist/cargo/actions/wallet-token.js +0 -45
  16. package/dist/cargo/actions/wallet-token.js.map +1 -1
  17. package/dist/cargo/actions/withdrawal.d.ts +1 -1
  18. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  19. package/dist/cargo/actions/withdrawal.js +37 -163
  20. package/dist/cargo/actions/withdrawal.js.map +1 -1
  21. package/dist/cargo/index.d.ts.map +1 -1
  22. package/dist/cargo/index.js +2 -10
  23. package/dist/cargo/index.js.map +1 -1
  24. package/dist/claim-stakes/actions/index.d.ts +80 -14
  25. package/dist/claim-stakes/actions/index.d.ts.map +1 -1
  26. package/dist/claim-stakes/actions/index.js +668 -717
  27. package/dist/claim-stakes/actions/index.js.map +1 -1
  28. package/dist/claim-stakes/index.d.ts +8 -6
  29. package/dist/claim-stakes/index.d.ts.map +1 -1
  30. package/dist/claim-stakes/index.js +12 -18
  31. package/dist/claim-stakes/index.js.map +1 -1
  32. package/dist/client/context.d.ts.map +1 -1
  33. package/dist/client/context.js +353 -37
  34. package/dist/client/context.js.map +1 -1
  35. package/dist/client/contracts.d.ts +54 -1
  36. package/dist/client/contracts.d.ts.map +1 -1
  37. package/dist/client/deployments.d.ts +17 -0
  38. package/dist/client/deployments.d.ts.map +1 -1
  39. package/dist/client/deployments.js +17 -0
  40. package/dist/client/deployments.js.map +1 -1
  41. package/dist/client/index.d.ts +22 -1
  42. package/dist/client/index.d.ts.map +1 -1
  43. package/dist/client/index.js +21 -0
  44. package/dist/client/index.js.map +1 -1
  45. package/dist/client/rpc-subscription-provider.d.ts +2 -0
  46. package/dist/client/rpc-subscription-provider.d.ts.map +1 -1
  47. package/dist/client/rpc-subscription-provider.js +135 -101
  48. package/dist/client/rpc-subscription-provider.js.map +1 -1
  49. package/dist/combat/actions/index.d.ts +30 -12
  50. package/dist/combat/actions/index.d.ts.map +1 -1
  51. package/dist/combat/actions/index.js +266 -256
  52. package/dist/combat/actions/index.js.map +1 -1
  53. package/dist/combat/index.d.ts +25 -8
  54. package/dist/combat/index.d.ts.map +1 -1
  55. package/dist/combat/index.js +21 -18
  56. package/dist/combat/index.js.map +1 -1
  57. package/dist/crafting/actions/fee-rate.d.ts +47 -0
  58. package/dist/crafting/actions/fee-rate.d.ts.map +1 -0
  59. package/dist/crafting/actions/fee-rate.js +58 -0
  60. package/dist/crafting/actions/fee-rate.js.map +1 -0
  61. package/dist/crafting/actions/index.d.ts +28 -28
  62. package/dist/crafting/actions/index.d.ts.map +1 -1
  63. package/dist/crafting/actions/index.js +246 -317
  64. package/dist/crafting/actions/index.js.map +1 -1
  65. package/dist/crafting/estimate.d.ts +101 -0
  66. package/dist/crafting/estimate.d.ts.map +1 -0
  67. package/dist/crafting/estimate.js +108 -0
  68. package/dist/crafting/estimate.js.map +1 -0
  69. package/dist/crafting/index.d.ts +6 -5
  70. package/dist/crafting/index.d.ts.map +1 -1
  71. package/dist/crafting/index.js +6 -13
  72. package/dist/crafting/index.js.map +1 -1
  73. package/dist/factions/actions/index.d.ts +1 -1
  74. package/dist/factions/actions/index.d.ts.map +1 -1
  75. package/dist/factions/actions/index.js +5 -4
  76. package/dist/factions/actions/index.js.map +1 -1
  77. package/dist/factions/index.d.ts +18 -1
  78. package/dist/factions/index.d.ts.map +1 -1
  79. package/dist/factions/index.js +24 -18
  80. package/dist/factions/index.js.map +1 -1
  81. package/dist/fleets/actions/add-ship.d.ts +18 -5
  82. package/dist/fleets/actions/add-ship.d.ts.map +1 -1
  83. package/dist/fleets/actions/add-ship.js +35 -48
  84. package/dist/fleets/actions/add-ship.js.map +1 -1
  85. package/dist/fleets/actions/create-fleet.d.ts +1 -1
  86. package/dist/fleets/actions/create-fleet.d.ts.map +1 -1
  87. package/dist/fleets/actions/create-fleet.js +8 -38
  88. package/dist/fleets/actions/create-fleet.js.map +1 -1
  89. package/dist/fleets/actions/crew-transfer.d.ts +8 -4
  90. package/dist/fleets/actions/crew-transfer.d.ts.map +1 -1
  91. package/dist/fleets/actions/crew-transfer.js +27 -42
  92. package/dist/fleets/actions/crew-transfer.js.map +1 -1
  93. package/dist/fleets/actions/deployment-storage.d.ts +161 -0
  94. package/dist/fleets/actions/deployment-storage.d.ts.map +1 -0
  95. package/dist/fleets/actions/deployment-storage.js +297 -0
  96. package/dist/fleets/actions/deployment-storage.js.map +1 -0
  97. package/dist/fleets/actions/disband.d.ts +42 -0
  98. package/dist/fleets/actions/disband.d.ts.map +1 -0
  99. package/dist/fleets/actions/disband.js +107 -0
  100. package/dist/fleets/actions/disband.js.map +1 -0
  101. package/dist/fleets/actions/index.d.ts +55 -11
  102. package/dist/fleets/actions/index.d.ts.map +1 -1
  103. package/dist/fleets/actions/index.js +288 -241
  104. package/dist/fleets/actions/index.js.map +1 -1
  105. package/dist/fleets/actions/respawn.d.ts +1 -1
  106. package/dist/fleets/actions/respawn.d.ts.map +1 -1
  107. package/dist/fleets/actions/respawn.js +8 -37
  108. package/dist/fleets/actions/respawn.js.map +1 -1
  109. package/dist/fleets/actions/ship-import.d.ts +1 -1
  110. package/dist/fleets/actions/ship-import.d.ts.map +1 -1
  111. package/dist/fleets/actions/ship-import.js +39 -91
  112. package/dist/fleets/actions/ship-import.js.map +1 -1
  113. package/dist/fleets/actions/sync.d.ts +24 -0
  114. package/dist/fleets/actions/sync.d.ts.map +1 -0
  115. package/dist/fleets/actions/sync.js +55 -0
  116. package/dist/fleets/actions/sync.js.map +1 -0
  117. package/dist/fleets/composition-stats.d.ts +101 -0
  118. package/dist/fleets/composition-stats.d.ts.map +1 -0
  119. package/dist/fleets/composition-stats.js +354 -0
  120. package/dist/fleets/composition-stats.js.map +1 -0
  121. package/dist/fleets/cooldown.d.ts +7 -4
  122. package/dist/fleets/cooldown.d.ts.map +1 -1
  123. package/dist/fleets/cooldown.js +11 -6
  124. package/dist/fleets/cooldown.js.map +1 -1
  125. package/dist/fleets/index.d.ts +1 -0
  126. package/dist/fleets/index.d.ts.map +1 -1
  127. package/dist/fleets/index.js +3 -10
  128. package/dist/fleets/index.js.map +1 -1
  129. package/dist/fleets/movement-arithmetic.d.ts.map +1 -1
  130. package/dist/fleets/movement-arithmetic.js +4 -0
  131. package/dist/fleets/movement-arithmetic.js.map +1 -1
  132. package/dist/fleets/subwarp-estimate.d.ts +3 -1
  133. package/dist/fleets/subwarp-estimate.d.ts.map +1 -1
  134. package/dist/fleets/subwarp-estimate.js +3 -1
  135. package/dist/fleets/subwarp-estimate.js.map +1 -1
  136. package/dist/fleets/warp-lane-policy.d.ts +13 -7
  137. package/dist/fleets/warp-lane-policy.d.ts.map +1 -1
  138. package/dist/fleets/warp-lane-policy.js +19 -7
  139. package/dist/fleets/warp-lane-policy.js.map +1 -1
  140. package/dist/identity/actions/create-profile.d.ts +1 -1
  141. package/dist/identity/actions/create-profile.d.ts.map +1 -1
  142. package/dist/identity/actions/create-profile.js +2 -2
  143. package/dist/identity/actions/create-profile.js.map +1 -1
  144. package/dist/identity/actions/index.d.ts +2 -1
  145. package/dist/identity/actions/index.d.ts.map +1 -1
  146. package/dist/identity/actions/index.js +6 -4
  147. package/dist/identity/actions/index.js.map +1 -1
  148. package/dist/identity/actions/research-unlock.d.ts +61 -0
  149. package/dist/identity/actions/research-unlock.d.ts.map +1 -0
  150. package/dist/identity/actions/research-unlock.js +166 -0
  151. package/dist/identity/actions/research-unlock.js.map +1 -0
  152. package/dist/identity/index.d.ts +62 -2
  153. package/dist/identity/index.d.ts.map +1 -1
  154. package/dist/identity/index.js +63 -12
  155. package/dist/identity/index.js.map +1 -1
  156. package/dist/index.d.ts +2 -1
  157. package/dist/index.d.ts.map +1 -1
  158. package/dist/index.js +4 -4
  159. package/dist/index.js.map +1 -1
  160. package/dist/internal/c4/account-decoding.d.ts +49 -0
  161. package/dist/internal/c4/account-decoding.d.ts.map +1 -0
  162. package/dist/internal/c4/account-decoding.js +74 -0
  163. package/dist/internal/c4/account-decoding.js.map +1 -0
  164. package/dist/internal/c4/career-xp.d.ts +58 -0
  165. package/dist/internal/c4/career-xp.d.ts.map +1 -0
  166. package/dist/internal/c4/career-xp.js +80 -0
  167. package/dist/internal/c4/career-xp.js.map +1 -0
  168. package/dist/internal/c4/cargo-instructions.d.ts +24 -0
  169. package/dist/internal/c4/cargo-instructions.d.ts.map +1 -0
  170. package/dist/internal/c4/cargo-instructions.js +30 -0
  171. package/dist/internal/c4/cargo-instructions.js.map +1 -0
  172. package/dist/internal/c4/cargo-pod.d.ts +15 -0
  173. package/dist/internal/c4/cargo-pod.d.ts.map +1 -0
  174. package/dist/internal/c4/cargo-pod.js +13 -0
  175. package/dist/internal/c4/cargo-pod.js.map +1 -0
  176. package/dist/internal/c4/character-modifier.d.ts +1 -1
  177. package/dist/internal/c4/character-modifier.d.ts.map +1 -1
  178. package/dist/internal/c4/character.d.ts +157 -0
  179. package/dist/internal/c4/character.d.ts.map +1 -0
  180. package/dist/internal/c4/character.js +64 -0
  181. package/dist/internal/c4/character.js.map +1 -0
  182. package/dist/internal/c4/claim-stake-building-definitions.d.ts.map +1 -1
  183. package/dist/internal/c4/claim-stake-building-definitions.js +2 -1
  184. package/dist/internal/c4/claim-stake-building-definitions.js.map +1 -1
  185. package/dist/internal/c4/claim-stake-configuration.d.ts.map +1 -1
  186. package/dist/internal/c4/claim-stake-configuration.js +5 -36
  187. package/dist/internal/c4/claim-stake-configuration.js.map +1 -1
  188. package/dist/internal/c4/claim-stake-definitions.d.ts +4 -0
  189. package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
  190. package/dist/internal/c4/claim-stake-definitions.js +6 -2
  191. package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
  192. package/dist/internal/c4/claim-stake-plots.d.ts +17 -0
  193. package/dist/internal/c4/claim-stake-plots.d.ts.map +1 -0
  194. package/dist/internal/c4/claim-stake-plots.js +29 -0
  195. package/dist/internal/c4/claim-stake-plots.js.map +1 -0
  196. package/dist/internal/c4/claim-stake-standing.d.ts +80 -0
  197. package/dist/internal/c4/claim-stake-standing.d.ts.map +1 -0
  198. package/dist/internal/c4/claim-stake-standing.js +61 -0
  199. package/dist/internal/c4/claim-stake-standing.js.map +1 -0
  200. package/dist/internal/c4/claim-stake-storage.d.ts +45 -0
  201. package/dist/internal/c4/claim-stake-storage.d.ts.map +1 -0
  202. package/dist/internal/c4/claim-stake-storage.js +207 -0
  203. package/dist/internal/c4/claim-stake-storage.js.map +1 -0
  204. package/dist/internal/c4/claim-stake.d.ts +9 -6
  205. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  206. package/dist/internal/c4/claim-stake.js +24 -56
  207. package/dist/internal/c4/claim-stake.js.map +1 -1
  208. package/dist/internal/c4/combat-storage.d.ts +20 -0
  209. package/dist/internal/c4/combat-storage.d.ts.map +1 -0
  210. package/dist/internal/c4/combat-storage.js +43 -0
  211. package/dist/internal/c4/combat-storage.js.map +1 -0
  212. package/dist/internal/c4/combat.d.ts +1 -55
  213. package/dist/internal/c4/combat.d.ts.map +1 -1
  214. package/dist/internal/c4/combat.js +16 -180
  215. package/dist/internal/c4/combat.js.map +1 -1
  216. package/dist/internal/c4/crafting-storage.d.ts +20 -0
  217. package/dist/internal/c4/crafting-storage.d.ts.map +1 -0
  218. package/dist/internal/c4/crafting-storage.js +54 -0
  219. package/dist/internal/c4/crafting-storage.js.map +1 -0
  220. package/dist/internal/c4/crafting.d.ts +9 -1
  221. package/dist/internal/c4/crafting.d.ts.map +1 -1
  222. package/dist/internal/c4/crafting.js +38 -98
  223. package/dist/internal/c4/crafting.js.map +1 -1
  224. package/dist/internal/c4/currency-cache.d.ts +1 -1
  225. package/dist/internal/c4/currency-cache.d.ts.map +1 -1
  226. package/dist/internal/c4/currency-cache.js +6 -9
  227. package/dist/internal/c4/currency-cache.js.map +1 -1
  228. package/dist/internal/c4/discriminators.d.ts +93 -0
  229. package/dist/internal/c4/discriminators.d.ts.map +1 -0
  230. package/dist/internal/c4/discriminators.js +190 -0
  231. package/dist/internal/c4/discriminators.js.map +1 -0
  232. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -1
  233. package/dist/internal/c4/faction-epoch-meter.js +5 -10
  234. package/dist/internal/c4/faction-epoch-meter.js.map +1 -1
  235. package/dist/internal/c4/faction-treasury.d.ts.map +1 -1
  236. package/dist/internal/c4/faction-treasury.js +11 -18
  237. package/dist/internal/c4/faction-treasury.js.map +1 -1
  238. package/dist/internal/c4/faction.d.ts +21 -0
  239. package/dist/internal/c4/faction.d.ts.map +1 -0
  240. package/dist/internal/c4/faction.js +23 -0
  241. package/dist/internal/c4/faction.js.map +1 -0
  242. package/dist/internal/c4/factions.d.ts +31 -3
  243. package/dist/internal/c4/factions.d.ts.map +1 -1
  244. package/dist/internal/c4/factions.js +103 -104
  245. package/dist/internal/c4/factions.js.map +1 -1
  246. package/dist/internal/c4/fleet-creation.d.ts +9 -2
  247. package/dist/internal/c4/fleet-creation.d.ts.map +1 -1
  248. package/dist/internal/c4/fleet-creation.js +15 -18
  249. package/dist/internal/c4/fleet-creation.js.map +1 -1
  250. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  251. package/dist/internal/c4/fleet-crew-binding.js +21 -49
  252. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  253. package/dist/internal/c4/fleet-disband-layout.d.ts +7 -0
  254. package/dist/internal/c4/fleet-disband-layout.d.ts.map +1 -0
  255. package/dist/internal/c4/fleet-disband-layout.js +7 -0
  256. package/dist/internal/c4/fleet-disband-layout.js.map +1 -0
  257. package/dist/internal/c4/fleet-disband.d.ts +41 -0
  258. package/dist/internal/c4/fleet-disband.d.ts.map +1 -0
  259. package/dist/internal/c4/fleet-disband.js +86 -0
  260. package/dist/internal/c4/fleet-disband.js.map +1 -0
  261. package/dist/internal/c4/fleet-points.d.ts +3 -0
  262. package/dist/internal/c4/fleet-points.d.ts.map +1 -0
  263. package/dist/internal/c4/fleet-points.js +8 -0
  264. package/dist/internal/c4/fleet-points.js.map +1 -0
  265. package/dist/internal/c4/fleet-ship-assembly.d.ts +20 -5
  266. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -1
  267. package/dist/internal/c4/fleet-ship-assembly.js +62 -10
  268. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -1
  269. package/dist/internal/c4/fleet-storage.d.ts +44 -0
  270. package/dist/internal/c4/fleet-storage.d.ts.map +1 -0
  271. package/dist/internal/c4/fleet-storage.js +108 -0
  272. package/dist/internal/c4/fleet-storage.js.map +1 -0
  273. package/dist/internal/c4/fleet-sync.d.ts +5 -0
  274. package/dist/internal/c4/fleet-sync.d.ts.map +1 -0
  275. package/dist/internal/c4/fleet-sync.js +15 -0
  276. package/dist/internal/c4/fleet-sync.js.map +1 -0
  277. package/dist/internal/c4/fleet.d.ts +20 -5
  278. package/dist/internal/c4/fleet.d.ts.map +1 -1
  279. package/dist/internal/c4/fleet.js +24 -84
  280. package/dist/internal/c4/fleet.js.map +1 -1
  281. package/dist/internal/c4/game.d.ts +76 -21
  282. package/dist/internal/c4/game.d.ts.map +1 -1
  283. package/dist/internal/c4/game.js +127 -116
  284. package/dist/internal/c4/game.js.map +1 -1
  285. package/dist/internal/c4/identity.d.ts +2 -153
  286. package/dist/internal/c4/identity.d.ts.map +1 -1
  287. package/dist/internal/c4/identity.js +19 -126
  288. package/dist/internal/c4/identity.js.map +1 -1
  289. package/dist/internal/c4/local-market-order.d.ts +4 -6
  290. package/dist/internal/c4/local-market-order.d.ts.map +1 -1
  291. package/dist/internal/c4/local-market-order.js +5 -6
  292. package/dist/internal/c4/local-market-order.js.map +1 -1
  293. package/dist/internal/c4/loot-layout.js +1 -1
  294. package/dist/internal/c4/loot-layout.js.map +1 -1
  295. package/dist/internal/c4/loot.d.ts +89 -0
  296. package/dist/internal/c4/loot.d.ts.map +1 -0
  297. package/dist/internal/c4/loot.js +109 -0
  298. package/dist/internal/c4/loot.js.map +1 -0
  299. package/dist/internal/c4/loyalty.d.ts +7 -3
  300. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  301. package/dist/internal/c4/loyalty.js +41 -130
  302. package/dist/internal/c4/loyalty.js.map +1 -1
  303. package/dist/internal/c4/market-storage.d.ts +25 -0
  304. package/dist/internal/c4/market-storage.d.ts.map +1 -0
  305. package/dist/internal/c4/market-storage.js +53 -0
  306. package/dist/internal/c4/market-storage.js.map +1 -0
  307. package/dist/internal/c4/market.d.ts +3 -0
  308. package/dist/internal/c4/market.d.ts.map +1 -1
  309. package/dist/internal/c4/market.js +20 -76
  310. package/dist/internal/c4/market.js.map +1 -1
  311. package/dist/internal/c4/mining-instructions.d.ts +1 -1
  312. package/dist/internal/c4/mining-instructions.d.ts.map +1 -1
  313. package/dist/internal/c4/mining-instructions.js +1 -1
  314. package/dist/internal/c4/mining-instructions.js.map +1 -1
  315. package/dist/internal/c4/open-signal.d.ts +1 -1
  316. package/dist/internal/c4/open-signal.d.ts.map +1 -1
  317. package/dist/internal/c4/open-signal.js +1 -1
  318. package/dist/internal/c4/open-signal.js.map +1 -1
  319. package/dist/internal/c4/pda.d.ts +49 -1
  320. package/dist/internal/c4/pda.d.ts.map +1 -1
  321. package/dist/internal/c4/pda.js +122 -17
  322. package/dist/internal/c4/pda.js.map +1 -1
  323. package/dist/internal/c4/profile-faction.d.ts +2 -1
  324. package/dist/internal/c4/profile-faction.d.ts.map +1 -1
  325. package/dist/internal/c4/profile-faction.js +36 -72
  326. package/dist/internal/c4/profile-faction.js.map +1 -1
  327. package/dist/internal/c4/profile-permissions.d.ts +1 -1
  328. package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
  329. package/dist/internal/c4/profile-permissions.js +16 -1
  330. package/dist/internal/c4/profile-permissions.js.map +1 -1
  331. package/dist/internal/c4/rewards.d.ts +1 -34
  332. package/dist/internal/c4/rewards.d.ts.map +1 -1
  333. package/dist/internal/c4/rewards.js +23 -170
  334. package/dist/internal/c4/rewards.js.map +1 -1
  335. package/dist/internal/c4/runtime-bindings.d.ts +2 -1
  336. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -1
  337. package/dist/internal/c4/runtime-bindings.js +1 -1
  338. package/dist/internal/c4/runtime-bindings.js.map +1 -1
  339. package/dist/internal/c4/scan-lifecycle.d.ts +21 -3
  340. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -1
  341. package/dist/internal/c4/scan-lifecycle.js +35 -44
  342. package/dist/internal/c4/scan-lifecycle.js.map +1 -1
  343. package/dist/internal/c4/scan-storage.d.ts +7 -0
  344. package/dist/internal/c4/scan-storage.d.ts.map +1 -0
  345. package/dist/internal/c4/scan-storage.js +10 -0
  346. package/dist/internal/c4/scan-storage.js.map +1 -0
  347. package/dist/internal/c4/scanning.d.ts +3 -13
  348. package/dist/internal/c4/scanning.d.ts.map +1 -1
  349. package/dist/internal/c4/scanning.js +25 -75
  350. package/dist/internal/c4/scanning.js.map +1 -1
  351. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  352. package/dist/internal/c4/ship-stats.js +24 -26
  353. package/dist/internal/c4/ship-stats.js.map +1 -1
  354. package/dist/internal/c4/starbase.d.ts.map +1 -1
  355. package/dist/internal/c4/starbase.js +24 -96
  356. package/dist/internal/c4/starbase.js.map +1 -1
  357. package/dist/internal/c4/stimulant.d.ts +26 -0
  358. package/dist/internal/c4/stimulant.d.ts.map +1 -0
  359. package/dist/internal/c4/stimulant.js +36 -0
  360. package/dist/internal/c4/stimulant.js.map +1 -0
  361. package/dist/internal/c4/wallet-cargo-cache.js +2 -1
  362. package/dist/internal/c4/wallet-cargo-cache.js.map +1 -1
  363. package/dist/internal/c4/world.d.ts +6 -2
  364. package/dist/internal/c4/world.d.ts.map +1 -1
  365. package/dist/internal/c4/world.js +32 -107
  366. package/dist/internal/c4/world.js.map +1 -1
  367. package/dist/internal/fleet-route.d.ts +12 -0
  368. package/dist/internal/fleet-route.d.ts.map +1 -0
  369. package/dist/internal/fleet-route.js +11 -0
  370. package/dist/internal/fleet-route.js.map +1 -0
  371. package/dist/internal/fleet.d.ts +3 -3
  372. package/dist/internal/fleet.d.ts.map +1 -1
  373. package/dist/internal/fleet.js +1 -5
  374. package/dist/internal/fleet.js.map +1 -1
  375. package/dist/internal/loyalty-atlas-bank-state.d.ts +3 -2
  376. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -1
  377. package/dist/internal/loyalty-atlas-bank-state.js +4 -3
  378. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -1
  379. package/dist/internal/planning/account-state.d.ts +6 -0
  380. package/dist/internal/planning/account-state.d.ts.map +1 -1
  381. package/dist/internal/planning/account-state.js +13 -0
  382. package/dist/internal/planning/account-state.js.map +1 -1
  383. package/dist/internal/planning/arrival-guards.d.ts +0 -1
  384. package/dist/internal/planning/arrival-guards.d.ts.map +1 -1
  385. package/dist/internal/planning/arrival-guards.js +3 -18
  386. package/dist/internal/planning/arrival-guards.js.map +1 -1
  387. package/dist/internal/planning/authorization-adapter.d.ts +59 -36
  388. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  389. package/dist/internal/planning/authorization-adapter.js +165 -71
  390. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  391. package/dist/internal/planning/cargo-storage-actions.d.ts +8 -0
  392. package/dist/internal/planning/cargo-storage-actions.d.ts.map +1 -0
  393. package/dist/internal/planning/cargo-storage-actions.js +97 -0
  394. package/dist/internal/planning/cargo-storage-actions.js.map +1 -0
  395. package/dist/internal/planning/character-access.d.ts +28 -0
  396. package/dist/internal/planning/character-access.d.ts.map +1 -0
  397. package/dist/internal/planning/character-access.js +41 -0
  398. package/dist/internal/planning/character-access.js.map +1 -0
  399. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -1
  400. package/dist/internal/planning/character-registration-guard.js +2 -1
  401. package/dist/internal/planning/character-registration-guard.js.map +1 -1
  402. package/dist/internal/planning/character-registration.d.ts.map +1 -1
  403. package/dist/internal/planning/character-registration.js +2 -1
  404. package/dist/internal/planning/character-registration.js.map +1 -1
  405. package/dist/internal/planning/claim-stake-storage-actions.d.ts +12 -0
  406. package/dist/internal/planning/claim-stake-storage-actions.d.ts.map +1 -0
  407. package/dist/internal/planning/claim-stake-storage-actions.js +63 -0
  408. package/dist/internal/planning/claim-stake-storage-actions.js.map +1 -0
  409. package/dist/internal/planning/combat-storage-actions.d.ts +9 -0
  410. package/dist/internal/planning/combat-storage-actions.d.ts.map +1 -0
  411. package/dist/internal/planning/combat-storage-actions.js +55 -0
  412. package/dist/internal/planning/combat-storage-actions.js.map +1 -0
  413. package/dist/internal/planning/crafting-storage-actions.d.ts +7 -0
  414. package/dist/internal/planning/crafting-storage-actions.d.ts.map +1 -0
  415. package/dist/internal/planning/crafting-storage-actions.js +64 -0
  416. package/dist/internal/planning/crafting-storage-actions.js.map +1 -0
  417. package/dist/internal/planning/currency-cache-guard.d.ts +3 -1
  418. package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -1
  419. package/dist/internal/planning/currency-cache-guard.js +47 -2
  420. package/dist/internal/planning/currency-cache-guard.js.map +1 -1
  421. package/dist/internal/planning/democracy-history.d.ts.map +1 -1
  422. package/dist/internal/planning/democracy-history.js +6 -15
  423. package/dist/internal/planning/democracy-history.js.map +1 -1
  424. package/dist/internal/planning/direct-options.d.ts +17 -0
  425. package/dist/internal/planning/direct-options.d.ts.map +1 -0
  426. package/dist/internal/planning/direct-options.js +43 -0
  427. package/dist/internal/planning/direct-options.js.map +1 -0
  428. package/dist/internal/planning/disband-storage-actions.d.ts +9 -0
  429. package/dist/internal/planning/disband-storage-actions.d.ts.map +1 -0
  430. package/dist/internal/planning/disband-storage-actions.js +24 -0
  431. package/dist/internal/planning/disband-storage-actions.js.map +1 -0
  432. package/dist/internal/planning/faction-enrollment.d.ts +0 -2
  433. package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
  434. package/dist/internal/planning/faction-enrollment.js +0 -9
  435. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  436. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -1
  437. package/dist/internal/planning/fleet-arrival.js +10 -8
  438. package/dist/internal/planning/fleet-arrival.js.map +1 -1
  439. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -1
  440. package/dist/internal/planning/fleet-attack-xp.js +5 -11
  441. package/dist/internal/planning/fleet-attack-xp.js.map +1 -1
  442. package/dist/internal/planning/fleet-creation.d.ts.map +1 -1
  443. package/dist/internal/planning/fleet-creation.js +17 -36
  444. package/dist/internal/planning/fleet-creation.js.map +1 -1
  445. package/dist/internal/planning/fleet-crew-guard.d.ts +2 -1
  446. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -1
  447. package/dist/internal/planning/fleet-crew-guard.js +2 -1
  448. package/dist/internal/planning/fleet-crew-guard.js.map +1 -1
  449. package/dist/internal/planning/fleet-crew-transfer.d.ts +1 -1
  450. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -1
  451. package/dist/internal/planning/fleet-crew-transfer.js +45 -24
  452. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -1
  453. package/dist/internal/planning/fleet-disband-guard.d.ts +12 -0
  454. package/dist/internal/planning/fleet-disband-guard.d.ts.map +1 -0
  455. package/dist/internal/planning/fleet-disband-guard.js +54 -0
  456. package/dist/internal/planning/fleet-disband-guard.js.map +1 -0
  457. package/dist/internal/planning/fleet-disband.d.ts +36 -0
  458. package/dist/internal/planning/fleet-disband.d.ts.map +1 -0
  459. package/dist/internal/planning/fleet-disband.js +82 -0
  460. package/dist/internal/planning/fleet-disband.js.map +1 -0
  461. package/dist/internal/planning/fleet-dock-funding-guard.d.ts +3 -3
  462. package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -1
  463. package/dist/internal/planning/fleet-dock-funding-guard.js +87 -96
  464. package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -1
  465. package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -1
  466. package/dist/internal/planning/fleet-dock-funding.js +10 -0
  467. package/dist/internal/planning/fleet-dock-funding.js.map +1 -1
  468. package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -1
  469. package/dist/internal/planning/fleet-docking-guard.js +3 -1
  470. package/dist/internal/planning/fleet-docking-guard.js.map +1 -1
  471. package/dist/internal/planning/fleet-docking.d.ts +17 -2
  472. package/dist/internal/planning/fleet-docking.d.ts.map +1 -1
  473. package/dist/internal/planning/fleet-docking.js +83 -62
  474. package/dist/internal/planning/fleet-docking.js.map +1 -1
  475. package/dist/internal/planning/fleet-rental.d.ts +5 -0
  476. package/dist/internal/planning/fleet-rental.d.ts.map +1 -0
  477. package/dist/internal/planning/fleet-rental.js +9 -0
  478. package/dist/internal/planning/fleet-rental.js.map +1 -0
  479. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -1
  480. package/dist/internal/planning/fleet-respawn.js +10 -12
  481. package/dist/internal/planning/fleet-respawn.js.map +1 -1
  482. package/dist/internal/planning/fleet-ship-assembly.d.ts +2 -0
  483. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -1
  484. package/dist/internal/planning/fleet-ship-assembly.js +94 -64
  485. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -1
  486. package/dist/internal/planning/fleet-state.d.ts +25 -0
  487. package/dist/internal/planning/fleet-state.d.ts.map +1 -0
  488. package/dist/internal/planning/fleet-state.js +28 -0
  489. package/dist/internal/planning/fleet-state.js.map +1 -0
  490. package/dist/internal/planning/governance-fees.d.ts.map +1 -1
  491. package/dist/internal/planning/governance-fees.js +7 -15
  492. package/dist/internal/planning/governance-fees.js.map +1 -1
  493. package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -1
  494. package/dist/internal/planning/local-market-order-funding.js +4 -2
  495. package/dist/internal/planning/local-market-order-funding.js.map +1 -1
  496. package/dist/internal/planning/local-market-order.d.ts +4 -4
  497. package/dist/internal/planning/local-market-order.d.ts.map +1 -1
  498. package/dist/internal/planning/local-market-order.js +82 -109
  499. package/dist/internal/planning/local-market-order.js.map +1 -1
  500. package/dist/internal/planning/market-storage-actions.d.ts +7 -0
  501. package/dist/internal/planning/market-storage-actions.d.ts.map +1 -0
  502. package/dist/internal/planning/market-storage-actions.js +71 -0
  503. package/dist/internal/planning/market-storage-actions.js.map +1 -0
  504. package/dist/internal/planning/mining-stop.d.ts.map +1 -1
  505. package/dist/internal/planning/mining-stop.js +2 -1
  506. package/dist/internal/planning/mining-stop.js.map +1 -1
  507. package/dist/internal/planning/mining-storage-actions.d.ts +11 -0
  508. package/dist/internal/planning/mining-storage-actions.d.ts.map +1 -0
  509. package/dist/internal/planning/mining-storage-actions.js +57 -0
  510. package/dist/internal/planning/mining-storage-actions.js.map +1 -0
  511. package/dist/internal/planning/movement-storage-actions.d.ts +7 -0
  512. package/dist/internal/planning/movement-storage-actions.d.ts.map +1 -0
  513. package/dist/internal/planning/movement-storage-actions.js +38 -0
  514. package/dist/internal/planning/movement-storage-actions.js.map +1 -0
  515. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -1
  516. package/dist/internal/planning/movement-xp-guard.js +3 -2
  517. package/dist/internal/planning/movement-xp-guard.js.map +1 -1
  518. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -1
  519. package/dist/internal/planning/open-signal-guard.js +2 -1
  520. package/dist/internal/planning/open-signal-guard.js.map +1 -1
  521. package/dist/internal/planning/open-signal.d.ts.map +1 -1
  522. package/dist/internal/planning/open-signal.js +16 -7
  523. package/dist/internal/planning/open-signal.js.map +1 -1
  524. package/dist/internal/planning/original-token.d.ts +40 -0
  525. package/dist/internal/planning/original-token.d.ts.map +1 -0
  526. package/dist/internal/planning/original-token.js +112 -0
  527. package/dist/internal/planning/original-token.js.map +1 -0
  528. package/dist/internal/planning/own-starbase-facts.d.ts +37 -0
  529. package/dist/internal/planning/own-starbase-facts.d.ts.map +1 -0
  530. package/dist/internal/planning/own-starbase-facts.js +52 -0
  531. package/dist/internal/planning/own-starbase-facts.js.map +1 -0
  532. package/dist/internal/planning/plan-fields.d.ts +60 -0
  533. package/dist/internal/planning/plan-fields.d.ts.map +1 -0
  534. package/dist/internal/planning/plan-fields.js +159 -0
  535. package/dist/internal/planning/plan-fields.js.map +1 -0
  536. package/dist/internal/planning/plan-guards.d.ts +4 -0
  537. package/dist/internal/planning/plan-guards.d.ts.map +1 -0
  538. package/dist/internal/planning/plan-guards.js +184 -0
  539. package/dist/internal/planning/plan-guards.js.map +1 -0
  540. package/dist/internal/planning/profile-key.d.ts +13 -0
  541. package/dist/internal/planning/profile-key.d.ts.map +1 -0
  542. package/dist/internal/planning/profile-key.js +20 -0
  543. package/dist/internal/planning/profile-key.js.map +1 -0
  544. package/dist/internal/planning/profile-storage-funding-guard.d.ts +29 -0
  545. package/dist/internal/planning/profile-storage-funding-guard.d.ts.map +1 -0
  546. package/dist/internal/planning/profile-storage-funding-guard.js +115 -0
  547. package/dist/internal/planning/profile-storage-funding-guard.js.map +1 -0
  548. package/dist/internal/planning/profile-storage-funding.d.ts +46 -0
  549. package/dist/internal/planning/profile-storage-funding.d.ts.map +1 -0
  550. package/dist/internal/planning/profile-storage-funding.js +58 -0
  551. package/dist/internal/planning/profile-storage-funding.js.map +1 -0
  552. package/dist/internal/planning/recipe-state.d.ts +4 -1
  553. package/dist/internal/planning/recipe-state.d.ts.map +1 -1
  554. package/dist/internal/planning/recipe-state.js +7 -4
  555. package/dist/internal/planning/recipe-state.js.map +1 -1
  556. package/dist/internal/planning/region-access.d.ts +30 -0
  557. package/dist/internal/planning/region-access.d.ts.map +1 -0
  558. package/dist/internal/planning/region-access.js +94 -0
  559. package/dist/internal/planning/region-access.js.map +1 -0
  560. package/dist/internal/planning/rent-catalog.d.ts +37 -0
  561. package/dist/internal/planning/rent-catalog.d.ts.map +1 -0
  562. package/dist/internal/planning/rent-catalog.js +165 -0
  563. package/dist/internal/planning/rent-catalog.js.map +1 -0
  564. package/dist/internal/planning/research-unlock.d.ts +69 -0
  565. package/dist/internal/planning/research-unlock.d.ts.map +1 -0
  566. package/dist/internal/planning/research-unlock.js +287 -0
  567. package/dist/internal/planning/research-unlock.js.map +1 -0
  568. package/dist/internal/planning/respawn-guards.js +2 -1
  569. package/dist/internal/planning/respawn-guards.js.map +1 -1
  570. package/dist/internal/planning/runtime-guards.d.ts +0 -2
  571. package/dist/internal/planning/runtime-guards.d.ts.map +1 -1
  572. package/dist/internal/planning/runtime-guards.js +49 -29
  573. package/dist/internal/planning/runtime-guards.js.map +1 -1
  574. package/dist/internal/planning/scan-completion-guard.d.ts +6 -6
  575. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -1
  576. package/dist/internal/planning/scan-completion-guard.js +8 -7
  577. package/dist/internal/planning/scan-completion-guard.js.map +1 -1
  578. package/dist/internal/planning/scan-completion.d.ts.map +1 -1
  579. package/dist/internal/planning/scan-completion.js +9 -7
  580. package/dist/internal/planning/scan-completion.js.map +1 -1
  581. package/dist/internal/planning/scan-detect-guard.d.ts +1 -1
  582. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -1
  583. package/dist/internal/planning/scan-detect-guard.js +2 -2
  584. package/dist/internal/planning/scan-detect-guard.js.map +1 -1
  585. package/dist/internal/planning/scan-detect.d.ts +1 -1
  586. package/dist/internal/planning/scan-detect.d.ts.map +1 -1
  587. package/dist/internal/planning/scan-detect.js +10 -8
  588. package/dist/internal/planning/scan-detect.js.map +1 -1
  589. package/dist/internal/planning/scan-idle-scope.d.ts +5 -0
  590. package/dist/internal/planning/scan-idle-scope.d.ts.map +1 -0
  591. package/dist/internal/planning/scan-idle-scope.js +5 -0
  592. package/dist/internal/planning/scan-idle-scope.js.map +1 -0
  593. package/dist/internal/planning/scan-storage-actions.d.ts +9 -0
  594. package/dist/internal/planning/scan-storage-actions.d.ts.map +1 -0
  595. package/dist/internal/planning/scan-storage-actions.js +27 -0
  596. package/dist/internal/planning/scan-storage-actions.js.map +1 -0
  597. package/dist/internal/planning/ship-import-funding.js +3 -2
  598. package/dist/internal/planning/ship-import-funding.js.map +1 -1
  599. package/dist/internal/planning/ship-token.d.ts +1 -5
  600. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  601. package/dist/internal/planning/ship-token.js +0 -36
  602. package/dist/internal/planning/ship-token.js.map +1 -1
  603. package/dist/internal/planning/starbase-player-owner.d.ts +21 -0
  604. package/dist/internal/planning/starbase-player-owner.d.ts.map +1 -0
  605. package/dist/internal/planning/starbase-player-owner.js +17 -0
  606. package/dist/internal/planning/starbase-player-owner.js.map +1 -0
  607. package/dist/internal/planning/starbase-player-recovery-guard.d.ts +7 -0
  608. package/dist/internal/planning/starbase-player-recovery-guard.d.ts.map +1 -0
  609. package/dist/internal/planning/starbase-player-recovery-guard.js +39 -0
  610. package/dist/internal/planning/starbase-player-recovery-guard.js.map +1 -0
  611. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -1
  612. package/dist/internal/planning/starbase-system-guard.js +2 -1
  613. package/dist/internal/planning/starbase-system-guard.js.map +1 -1
  614. package/dist/internal/planning/starbase-system.d.ts +5 -2
  615. package/dist/internal/planning/starbase-system.d.ts.map +1 -1
  616. package/dist/internal/planning/starbase-system.js +6 -3
  617. package/dist/internal/planning/starbase-system.js.map +1 -1
  618. package/dist/internal/planning/storage-action-readers.d.ts +10 -0
  619. package/dist/internal/planning/storage-action-readers.d.ts.map +1 -0
  620. package/dist/internal/planning/storage-action-readers.js +58 -0
  621. package/dist/internal/planning/storage-action-readers.js.map +1 -0
  622. package/dist/internal/planning/storage-actions.d.ts +89 -0
  623. package/dist/internal/planning/storage-actions.d.ts.map +1 -0
  624. package/dist/internal/planning/storage-actions.js +183 -0
  625. package/dist/internal/planning/storage-actions.js.map +1 -0
  626. package/dist/internal/planning/token-mint.d.ts.map +1 -1
  627. package/dist/internal/planning/token-mint.js +2 -1
  628. package/dist/internal/planning/token-mint.js.map +1 -1
  629. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -1
  630. package/dist/internal/planning/trade-faction-market.js +4 -4
  631. package/dist/internal/planning/trade-faction-market.js.map +1 -1
  632. package/dist/internal/planning/wallet-starbase.d.ts +34 -0
  633. package/dist/internal/planning/wallet-starbase.d.ts.map +1 -0
  634. package/dist/internal/planning/wallet-starbase.js +39 -0
  635. package/dist/internal/planning/wallet-starbase.js.map +1 -0
  636. package/dist/internal/planning/xp-runtime.d.ts.map +1 -1
  637. package/dist/internal/planning/xp-runtime.js +16 -20
  638. package/dist/internal/planning/xp-runtime.js.map +1 -1
  639. package/dist/internal/read-meta.d.ts +12 -0
  640. package/dist/internal/read-meta.d.ts.map +1 -1
  641. package/dist/internal/read-meta.js +10 -0
  642. package/dist/internal/read-meta.js.map +1 -1
  643. package/dist/loyalty/actions/index.d.ts +1 -1
  644. package/dist/loyalty/actions/index.d.ts.map +1 -1
  645. package/dist/loyalty/actions/index.js +12 -43
  646. package/dist/loyalty/actions/index.js.map +1 -1
  647. package/dist/loyalty/index.d.ts +4 -0
  648. package/dist/loyalty/index.d.ts.map +1 -1
  649. package/dist/loyalty/index.js +19 -27
  650. package/dist/loyalty/index.js.map +1 -1
  651. package/dist/markets/actions/index.d.ts +1 -1
  652. package/dist/markets/actions/index.d.ts.map +1 -1
  653. package/dist/markets/actions/index.js +140 -178
  654. package/dist/markets/actions/index.js.map +1 -1
  655. package/dist/markets/actions/trade-faction-market.d.ts +4 -2
  656. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -1
  657. package/dist/markets/actions/trade-faction-market.js +59 -39
  658. package/dist/markets/actions/trade-faction-market.js.map +1 -1
  659. package/dist/markets/index.d.ts.map +1 -1
  660. package/dist/markets/index.js +3 -11
  661. package/dist/markets/index.js.map +1 -1
  662. package/dist/mining/actions/index.d.ts +1 -1
  663. package/dist/mining/actions/index.d.ts.map +1 -1
  664. package/dist/mining/actions/index.js +84 -47
  665. package/dist/mining/actions/index.js.map +1 -1
  666. package/dist/mining/estimate-input.d.ts +103 -0
  667. package/dist/mining/estimate-input.d.ts.map +1 -0
  668. package/dist/mining/estimate-input.js +86 -0
  669. package/dist/mining/estimate-input.js.map +1 -0
  670. package/dist/mining/index.d.ts +1 -0
  671. package/dist/mining/index.d.ts.map +1 -1
  672. package/dist/mining/index.js +4 -11
  673. package/dist/mining/index.js.map +1 -1
  674. package/dist/planning/assembly.d.ts +1 -1
  675. package/dist/planning/assembly.d.ts.map +1 -1
  676. package/dist/planning/assembly.js +6 -30
  677. package/dist/planning/assembly.js.map +1 -1
  678. package/dist/planning/execution.d.ts +1 -0
  679. package/dist/planning/execution.d.ts.map +1 -1
  680. package/dist/planning/execution.js +149 -45
  681. package/dist/planning/execution.js.map +1 -1
  682. package/dist/planning/index.d.ts +70 -7
  683. package/dist/planning/index.d.ts.map +1 -1
  684. package/dist/planning/index.js +28 -1141
  685. package/dist/planning/index.js.map +1 -1
  686. package/dist/planning/plan-construction.d.ts +25 -0
  687. package/dist/planning/plan-construction.d.ts.map +1 -0
  688. package/dist/planning/plan-construction.js +143 -0
  689. package/dist/planning/plan-construction.js.map +1 -0
  690. package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
  691. package/dist/planning/plan-sequence-execution.js +1 -11
  692. package/dist/planning/plan-sequence-execution.js.map +1 -1
  693. package/dist/planning/plan-validation.d.ts +17 -0
  694. package/dist/planning/plan-validation.d.ts.map +1 -0
  695. package/dist/planning/plan-validation.js +147 -0
  696. package/dist/planning/plan-validation.js.map +1 -0
  697. package/dist/registry/cargo.d.ts +2 -2
  698. package/dist/registry/cargo.d.ts.map +1 -1
  699. package/dist/registry/cargo.js +3 -4
  700. package/dist/registry/cargo.js.map +1 -1
  701. package/dist/registry/definition-section-snapshot.d.ts +1 -1
  702. package/dist/registry/definition-section-snapshot.d.ts.map +1 -1
  703. package/dist/registry/definition-section-snapshot.js +10 -3
  704. package/dist/registry/definition-section-snapshot.js.map +1 -1
  705. package/dist/registry/index.d.ts +31 -4
  706. package/dist/registry/index.d.ts.map +1 -1
  707. package/dist/registry/index.js +226 -227
  708. package/dist/registry/index.js.map +1 -1
  709. package/dist/registry/onboarding.d.ts.map +1 -1
  710. package/dist/registry/onboarding.js +4 -2
  711. package/dist/registry/onboarding.js.map +1 -1
  712. package/dist/registry/ship-stats-snapshot.d.ts.map +1 -1
  713. package/dist/registry/ship-stats-snapshot.js +19 -5
  714. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  715. package/dist/registry/ships.js +1 -1
  716. package/dist/registry/ships.js.map +1 -1
  717. package/dist/rewards/index.d.ts +11 -5
  718. package/dist/rewards/index.d.ts.map +1 -1
  719. package/dist/rewards/index.js +10 -21
  720. package/dist/rewards/index.js.map +1 -1
  721. package/dist/scanning/actions/index.d.ts +1 -1
  722. package/dist/scanning/actions/index.d.ts.map +1 -1
  723. package/dist/scanning/actions/index.js +38 -8
  724. package/dist/scanning/actions/index.js.map +1 -1
  725. package/dist/scanning/index.d.ts +6 -11
  726. package/dist/scanning/index.d.ts.map +1 -1
  727. package/dist/scanning/index.js +7 -15
  728. package/dist/scanning/index.js.map +1 -1
  729. package/dist/scanning/odds.d.ts +5 -1
  730. package/dist/scanning/odds.d.ts.map +1 -1
  731. package/dist/scanning/odds.js.map +1 -1
  732. package/dist/scanning/signals.d.ts +6 -1
  733. package/dist/scanning/signals.d.ts.map +1 -1
  734. package/dist/scanning/signals.js +3 -1
  735. package/dist/scanning/signals.js.map +1 -1
  736. package/dist/starbases/actions/index.d.ts +49 -4
  737. package/dist/starbases/actions/index.d.ts.map +1 -1
  738. package/dist/starbases/actions/index.js +120 -69
  739. package/dist/starbases/actions/index.js.map +1 -1
  740. package/dist/starbases/index.d.ts +18 -0
  741. package/dist/starbases/index.d.ts.map +1 -1
  742. package/dist/starbases/index.js +24 -11
  743. package/dist/starbases/index.js.map +1 -1
  744. package/dist/world/index.d.ts +87 -13
  745. package/dist/world/index.d.ts.map +1 -1
  746. package/dist/world/index.js +88 -22
  747. package/dist/world/index.js.map +1 -1
  748. package/dist/world/planet-claim-stake-plots.d.ts +49 -40
  749. package/dist/world/planet-claim-stake-plots.d.ts.map +1 -1
  750. package/dist/world/planet-claim-stake-plots.js +47 -40
  751. package/dist/world/planet-claim-stake-plots.js.map +1 -1
  752. package/dist/world/starbase-status.d.ts +54 -13
  753. package/dist/world/starbase-status.d.ts.map +1 -1
  754. package/dist/world/starbase-status.js +65 -0
  755. package/dist/world/starbase-status.js.map +1 -1
  756. package/package.json +2 -2
  757. package/dist/internal/c4/faction-adapter.d.ts +0 -12
  758. package/dist/internal/c4/faction-adapter.d.ts.map +0 -1
  759. package/dist/internal/c4/faction-adapter.js +0 -52
  760. package/dist/internal/c4/faction-adapter.js.map +0 -1
  761. package/dist/internal/planning/movement-character.d.ts +0 -7
  762. package/dist/internal/planning/movement-character.d.ts.map +0 -1
  763. package/dist/internal/planning/movement-character.js +0 -41
  764. package/dist/internal/planning/movement-character.js.map +0 -1
@@ -1,51 +1,22 @@
1
- import { validateCurrencyInstructions } from '../internal/planning/currency-cache-guard.js';
2
- import { normalizeFleetDockFundingGuard, dockFundingGuardToJSON, validateFleetDockFundingGuards, } from '../internal/planning/fleet-dock-funding-guard.js';
3
- import { normalizeLocalMarketOrderGuard, localMarketOrderGuardToJSON, validateLocalMarketOrderInstructions, } from '../internal/planning/local-market-order.js';
4
- import { validateCrewTransferInstructions, } from '../internal/planning/fleet-crew-guard.js';
5
- import { validateCompletionInstructions, scanCompletionDiscriminators, } from '../internal/planning/scan-completion-guard.js';
6
- import { validateOpenSignalInstructions } from '../internal/planning/open-signal-guard.js';
7
- import { validateDetectInstructions, } from '../internal/planning/scan-detect-guard.js';
8
- import { validateRespawnInstructions } from '../internal/planning/respawn-guards.js';
9
- import { validateFleetAttackInstructions, } from '../internal/planning/fleet-attack-xp.js';
10
- import { validateMovementXpInstructions } from '../internal/planning/movement-xp-guard.js';
11
- import { validateFleetDockingGuards } from '../internal/planning/fleet-docking-guard.js';
12
- import { validateStarbaseSystemInstructions, validateStarbaseSystemGuards, } from '../internal/planning/starbase-system-guard.js';
13
- import { validateCharacterRegistrationInstructions } from '../internal/planning/character-registration-guard.js';
14
- import { normalizeArrivalGuard, arrivalGuardToJSON, validateArrivalInstructions, } from '../internal/planning/arrival-guards.js';
15
- import { isRuntimeGuard, normalizeRuntimeGuard, runtimeGuardToJSON, validateRuntimeInstructions, } from '../internal/planning/runtime-guards.js';
16
- import { isTradeBuyGuard, isTradeSellGuard, isTradeMeterGuard, isFactionTradeGuard, } from '../internal/planning/faction-trade-guards.js';
17
- import { AccountRole, getBase64Decoder, getBase64Encoder, isAddress, isWritableRole, } from '@solana/kit';
18
- import { InvalidActionInputError, SageSdkError } from '../client/errors.js';
19
- import { deepFreeze } from '../internal/immutable-tree.js';
20
- import { validateMiningStopInstructions } from '../internal/planning/mining-stop.js';
21
- import { validatePlanComposition } from './composition.js';
22
- import { isPlanInstance, registerPlanInstance } from './plan-instances.js';
1
+ import {} from '../internal/planning/fleet-dock-funding-guard.js';
2
+ import {} from '../internal/planning/local-market-order.js';
3
+ import {} from '../internal/planning/scan-completion-guard.js';
4
+ import {} from '../internal/planning/arrival-guards.js';
5
+ import {} from '../internal/planning/runtime-guards.js';
6
+ import { assertKeys, invalid, readAddress, readRecord, readString, } from '../internal/planning/plan-fields.js';
7
+ import { normalizePrecondition } from '../internal/planning/plan-guards.js';
8
+ import { AccountRole, getBase64Decoder, getBase64Encoder, } from '@solana/kit';
9
+ import { InvalidActionInputError } from '../client/errors.js';
10
+ import { brandPlan, immutableInstruction } from './plan-construction.js';
11
+ import { isPlanInstance } from './plan-instances.js';
12
+ import { validateCreationBindings, validateHydrationBindings, validatePlanBindings, } from './plan-validation.js';
23
13
  const BASE64_PATTERN = /^(?:[A-Za-z\d+/]{4})*(?:[A-Za-z\d+/]{2}==|[A-Za-z\d+/]{3}=)?$/u;
24
- const DATA_HASH_PATTERN = /^[\da-f]{64}$/u;
25
14
  const ACCOUNT_ROLES = new Set([
26
15
  AccountRole.READONLY,
27
16
  AccountRole.WRITABLE,
28
17
  AccountRole.READONLY_SIGNER,
29
18
  AccountRole.WRITABLE_SIGNER,
30
19
  ]);
31
- function invalid(field, value, acceptedRange) {
32
- throw new InvalidActionInputError(field, value, acceptedRange, 'Correct this Plan field and recreate or hydrate the Plan before retrying.');
33
- }
34
- function readRecord(value, field) {
35
- if (value === null || typeof value !== 'object' || Array.isArray(value)) {
36
- return invalid(field, value, 'a plain object');
37
- }
38
- return value;
39
- }
40
- function assertKeys(value, field, required, optional = []) {
41
- const keys = Object.keys(value);
42
- const accepted = new Set([...required, ...optional]);
43
- const missing = required.find((key) => !Object.hasOwn(value, key));
44
- const unexpected = keys.find((key) => !accepted.has(key));
45
- if (missing !== undefined || unexpected !== undefined) {
46
- invalid(field, missing === undefined ? unexpected : `missing ${missing}`, `exactly the fields ${[...required, ...optional].join(', ')}`);
47
- }
48
- }
49
20
  function readArray(value, field) {
50
21
  if (!Array.isArray(value)) {
51
22
  return invalid(field, value, 'an ordered array');
@@ -59,29 +30,16 @@ function readArray(value, field) {
59
30
  }
60
31
  return normalized;
61
32
  }
62
- function readString(value, field) {
63
- return typeof value === 'string' ? value : invalid(field, value, 'a string');
64
- }
65
33
  function readToken(value, field) {
66
34
  return typeof value === 'string' && value.length > 0
67
35
  ? value
68
36
  : invalid(field, value, 'a non-empty string');
69
37
  }
70
- function readAddress(value, field) {
71
- return typeof value === 'string' && isAddress(value)
72
- ? value
73
- : invalid(field, value, 'a valid base58 Solana address');
74
- }
75
38
  function readRole(value, field) {
76
39
  return typeof value === 'number' && ACCOUNT_ROLES.has(value)
77
40
  ? value
78
41
  : invalid(field, value, 'an AccountRole integer from 0 through 3');
79
42
  }
80
- function readDataHash(value, field) {
81
- return typeof value === 'string' && DATA_HASH_PATTERN.test(value)
82
- ? value
83
- : invalid(field, value, 'a lowercase 64-character SHA-256 hex digest');
84
- }
85
43
  function decodeBase64(value, field) {
86
44
  if (typeof value !== 'string' || !BASE64_PATTERN.test(value)) {
87
45
  return invalid(field, value, 'canonical base64-encoded instruction bytes');
@@ -92,23 +50,6 @@ function decodeBase64(value, field) {
92
50
  }
93
51
  return bytes;
94
52
  }
95
- function uniqueAddresses(addresses) {
96
- return Object.freeze([...new Set(addresses)]);
97
- }
98
- function immutableInstruction(programAddress, accounts, data) {
99
- const instruction = {
100
- ...(accounts === undefined ? {} : { accounts }),
101
- programAddress,
102
- };
103
- if (data !== undefined) {
104
- const bytes = new Uint8Array(data);
105
- Object.defineProperty(instruction, 'data', {
106
- enumerable: true,
107
- get: () => new Uint8Array(bytes),
108
- });
109
- }
110
- return Object.freeze(instruction);
111
- }
112
53
  function normalizeInstruction(value, field) {
113
54
  const instruction = readRecord(value, field);
114
55
  assertKeys(instruction, field, ['programAddress'], ['accounts', 'data']);
@@ -175,864 +116,6 @@ function normalizeSemanticFact(value, field) {
175
116
  }
176
117
  return invalid(`${field}.kind`, semantic.kind, 'one of exclusive, requires, invalidates, or transition');
177
118
  }
178
- function normalizePrecondition(value, field) {
179
- const precondition = readRecord(value, field);
180
- if (precondition.kind === 'fleet-arrival')
181
- return normalizeArrivalGuard(precondition, field);
182
- if (isRuntimeGuard(precondition))
183
- return normalizeRuntimeGuard(precondition, field);
184
- if (precondition.kind === 'character-registration') {
185
- assertKeys(precondition, field, [
186
- 'kind',
187
- 'address',
188
- 'game',
189
- 'profile',
190
- 'profileDataHash',
191
- 'funder',
192
- 'xpBudget',
193
- 'xpBudgetConfig',
194
- 'maximumFunderDebit',
195
- 'characterSize',
196
- 'initializationHash',
197
- 'characterLamports',
198
- 'budgetLamports',
199
- 'describes',
200
- ]);
201
- if (typeof precondition.characterSize !== 'number' ||
202
- !Number.isSafeInteger(precondition.characterSize) ||
203
- precondition.characterSize < 423)
204
- invalid(`${field}.characterSize`, precondition.characterSize, 'a qualified Character allocation of at least 423 bytes');
205
- for (const key of ['characterLamports', 'budgetLamports'])
206
- if (typeof precondition[key] !== 'bigint' || precondition[key] < 0n)
207
- invalid(`${field}.${key}`, precondition[key], 'a nonnegative bigint');
208
- const maximumFunderDebit = precondition.maximumFunderDebit;
209
- if (typeof maximumFunderDebit !== 'bigint' || maximumFunderDebit < 0n)
210
- invalid(`${field}.maximumFunderDebit`, maximumFunderDebit, 'a nonnegative bigint');
211
- return Object.freeze({
212
- kind: 'character-registration',
213
- address: readAddress(precondition.address, `${field}.address`),
214
- game: readAddress(precondition.game, `${field}.game`),
215
- profile: readAddress(precondition.profile, `${field}.profile`),
216
- profileDataHash: readDataHash(precondition.profileDataHash, `${field}.profileDataHash`),
217
- funder: readAddress(precondition.funder, `${field}.funder`),
218
- xpBudget: readAddress(precondition.xpBudget, `${field}.xpBudget`),
219
- xpBudgetConfig: readAddress(precondition.xpBudgetConfig, `${field}.xpBudgetConfig`),
220
- maximumFunderDebit,
221
- characterLamports: precondition.characterLamports,
222
- budgetLamports: precondition.budgetLamports,
223
- characterSize: precondition.characterSize,
224
- initializationHash: readDataHash(precondition.initializationHash, `${field}.initializationHash`),
225
- describes: readString(precondition.describes, `${field}.describes`),
226
- });
227
- }
228
- if (precondition.kind === 'ship-import-funding') {
229
- assertKeys(precondition, field, [
230
- 'kind',
231
- 'address',
232
- 'game',
233
- 'profile',
234
- 'system',
235
- 'shipId',
236
- 'maximumProfileDebit',
237
- 'describes',
238
- ]);
239
- const shipId = precondition.shipId;
240
- if (typeof shipId !== 'number' ||
241
- !Number.isInteger(shipId) ||
242
- shipId < 0 ||
243
- shipId > 65535)
244
- invalid(`${field}.shipId`, shipId, 'an unsigned u16 ship configuration ID');
245
- const maximumProfileDebit = precondition.maximumProfileDebit;
246
- if (typeof maximumProfileDebit !== 'bigint' || maximumProfileDebit < 0n)
247
- invalid(`${field}.maximumProfileDebit`, maximumProfileDebit, 'a nonnegative bigint');
248
- return Object.freeze({
249
- kind: 'ship-import-funding',
250
- address: readAddress(precondition.address, `${field}.address`),
251
- game: readAddress(precondition.game, `${field}.game`),
252
- profile: readAddress(precondition.profile, `${field}.profile`),
253
- system: readAddress(precondition.system, `${field}.system`),
254
- shipId,
255
- maximumProfileDebit,
256
- describes: readString(precondition.describes, `${field}.describes`),
257
- });
258
- }
259
- if (precondition.kind === 'fleet-attack') {
260
- assertKeys(precondition, field, [
261
- 'kind',
262
- 'address',
263
- 'defender',
264
- 'game',
265
- 'profile',
266
- 'defenderProfile',
267
- 'instructionKey',
268
- 'describes',
269
- ]);
270
- return Object.freeze({
271
- kind: 'fleet-attack',
272
- address: readAddress(precondition.address, `${field}.address`),
273
- defender: readAddress(precondition.defender, `${field}.defender`),
274
- game: readAddress(precondition.game, `${field}.game`),
275
- profile: readAddress(precondition.profile, `${field}.profile`),
276
- defenderProfile: readAddress(precondition.defenderProfile, `${field}.defenderProfile`),
277
- instructionKey: readString(precondition.instructionKey, `${field}.instructionKey`),
278
- describes: readString(precondition.describes, `${field}.describes`),
279
- });
280
- }
281
- if (precondition.kind === 'currency-cache') {
282
- assertKeys(precondition, field, ['kind', 'address', 'game', 'describes']);
283
- return Object.freeze({
284
- kind: 'currency-cache',
285
- address: readAddress(precondition.address, `${field}.address`),
286
- game: readAddress(precondition.game, `${field}.game`),
287
- describes: readString(precondition.describes, `${field}.describes`),
288
- });
289
- }
290
- if (precondition.kind === 'movement-character') {
291
- assertKeys(precondition, field, [
292
- 'kind',
293
- 'address',
294
- 'game',
295
- 'profile',
296
- 'stateHash',
297
- 'describes',
298
- ]);
299
- return Object.freeze({
300
- kind: 'movement-character',
301
- address: readAddress(precondition.address, `${field}.address`),
302
- game: readAddress(precondition.game, `${field}.game`),
303
- profile: readAddress(precondition.profile, `${field}.profile`),
304
- stateHash: readDataHash(precondition.stateHash, `${field}.stateHash`),
305
- describes: readString(precondition.describes, `${field}.describes`),
306
- });
307
- }
308
- if (precondition.kind === 'fleet-docking-policy') {
309
- assertKeys(precondition, field, [
310
- 'kind',
311
- 'address',
312
- 'game',
313
- 'system',
314
- 'ownership',
315
- 'describes',
316
- ]);
317
- return Object.freeze({
318
- kind: 'fleet-docking-policy',
319
- address: readAddress(precondition.address, `${field}.address`),
320
- game: readAddress(precondition.game, `${field}.game`),
321
- system: readAddress(precondition.system, `${field}.system`),
322
- ownership: readAddress(precondition.ownership, `${field}.ownership`),
323
- describes: readString(precondition.describes, `${field}.describes`),
324
- });
325
- }
326
- if (precondition.kind === 'starbase-system') {
327
- assertKeys(precondition, field, ['kind', 'address', 'game', 'starbaseSequenceId', 'describes'], ['requireCss']);
328
- if (precondition.requireCss !== undefined &&
329
- precondition.requireCss !== true)
330
- invalid(`${field}.requireCss`, precondition.requireCss, 'true when CSS access is required, otherwise omitted');
331
- const sequence = precondition.starbaseSequenceId;
332
- if (typeof sequence !== 'bigint' ||
333
- sequence < 0n ||
334
- sequence > 18446744073709551615n)
335
- invalid(`${field}.starbaseSequenceId`, sequence, 'an unsigned u64 Starbase sequence');
336
- return Object.freeze({
337
- kind: 'starbase-system',
338
- address: readAddress(precondition.address, `${field}.address`),
339
- game: readAddress(precondition.game, `${field}.game`),
340
- starbaseSequenceId: sequence,
341
- ...(precondition.requireCss === undefined
342
- ? {}
343
- : { requireCss: true }),
344
- describes: readString(precondition.describes, `${field}.describes`),
345
- });
346
- }
347
- if (precondition.kind === 'fleet-mining') {
348
- assertKeys(precondition, field, [
349
- 'kind',
350
- 'address',
351
- 'game',
352
- 'profile',
353
- 'asteroid',
354
- 'describes',
355
- ]);
356
- return Object.freeze({
357
- kind: 'fleet-mining',
358
- address: readAddress(precondition.address, `${field}.address`),
359
- game: readAddress(precondition.game, `${field}.game`),
360
- profile: readAddress(precondition.profile, `${field}.profile`),
361
- asteroid: readAddress(precondition.asteroid, `${field}.asteroid`),
362
- describes: readString(precondition.describes, `${field}.describes`),
363
- });
364
- }
365
- if (isFactionTradeGuard(precondition)) {
366
- const kind = precondition.kind;
367
- assertKeys(precondition, field, [
368
- 'kind',
369
- 'address',
370
- 'game',
371
- 'factionId',
372
- 'describes',
373
- 'schemaVersion',
374
- ...(isTradeBuyGuard(precondition)
375
- ? ['cargoId', 'floorRaw']
376
- : isTradeSellGuard(precondition)
377
- ? ['atlasOutCapPerEpochRaw', 'epochLengthSeconds']
378
- : []),
379
- ]);
380
- const unsigned = (key, max = 65535) => {
381
- const n = precondition[key];
382
- if (typeof n !== 'number' || !Number.isInteger(n) || n < 0 || n > max)
383
- invalid(`${field}.${key}`, n, `an unsigned ${max === 255 ? 'u8' : 'u16'} integer`);
384
- return n;
385
- };
386
- const integer = (key, signed = false) => {
387
- const n = precondition[key];
388
- const min = signed ? -(1n << 63n) : 0n;
389
- const max = signed ? (1n << 63n) - 1n : (1n << 64n) - 1n;
390
- if (typeof n !== 'bigint' || n < min || n > max)
391
- invalid(`${field}.${key}`, n, signed ? 'an i64 bigint' : 'a u64 bigint');
392
- return n;
393
- };
394
- const common = {
395
- address: readAddress(precondition.address, `${field}.address`),
396
- game: readAddress(precondition.game, `${field}.game`),
397
- factionId: unsigned('factionId'),
398
- schemaVersion: unsigned('schemaVersion', 255),
399
- describes: readString(precondition.describes, `${field}.describes`),
400
- };
401
- if (isTradeBuyGuard(precondition))
402
- return Object.freeze({
403
- kind,
404
- ...common,
405
- cargoId: unsigned('cargoId'),
406
- floorRaw: integer('floorRaw'),
407
- });
408
- if (isTradeSellGuard(precondition))
409
- return Object.freeze({
410
- kind,
411
- ...common,
412
- atlasOutCapPerEpochRaw: integer('atlasOutCapPerEpochRaw'),
413
- epochLengthSeconds: integer('epochLengthSeconds', true),
414
- });
415
- return Object.freeze({ kind, ...common });
416
- }
417
- if (precondition.kind === 'fleet-add-ship') {
418
- assertKeys(precondition, field, [
419
- 'kind',
420
- 'address',
421
- 'game',
422
- 'profile',
423
- 'authority',
424
- 'system',
425
- 'shipId',
426
- 'amount',
427
- 'keyIndex',
428
- 'configHash',
429
- 'maximumProfileDebit',
430
- 'describes',
431
- ]);
432
- const keyIndex = precondition.keyIndex;
433
- if (typeof keyIndex !== 'number' ||
434
- !Number.isInteger(keyIndex) ||
435
- keyIndex < 0 ||
436
- keyIndex > 65535)
437
- invalid(`${field}.keyIndex`, keyIndex, 'an integer from 0 through 65535');
438
- const shipId = precondition.shipId;
439
- if (typeof shipId !== 'number' ||
440
- !Number.isInteger(shipId) ||
441
- shipId < 0 ||
442
- shipId > 65535)
443
- invalid(`${field}.shipId`, shipId, 'a u16 ship configuration ID');
444
- const amount = precondition.amount;
445
- if (typeof amount !== 'bigint' || amount < 1n || amount > 255n)
446
- invalid(`${field}.amount`, amount, 'a whole ship quantity from 1n through 255n');
447
- const maximumProfileDebit = precondition.maximumProfileDebit;
448
- if (typeof maximumProfileDebit !== 'bigint' || maximumProfileDebit < 0n)
449
- invalid(`${field}.maximumProfileDebit`, maximumProfileDebit, 'a nonnegative bigint');
450
- return Object.freeze({
451
- kind: 'fleet-add-ship',
452
- address: readAddress(precondition.address, `${field}.address`),
453
- game: readAddress(precondition.game, `${field}.game`),
454
- profile: readAddress(precondition.profile, `${field}.profile`),
455
- authority: readAddress(precondition.authority, `${field}.authority`),
456
- system: readAddress(precondition.system, `${field}.system`),
457
- keyIndex,
458
- shipId,
459
- amount,
460
- maximumProfileDebit,
461
- configHash: readDataHash(precondition.configHash, `${field}.configHash`),
462
- describes: readString(precondition.describes, `${field}.describes`),
463
- });
464
- }
465
- if (precondition.kind === 'scan-completion') {
466
- const addresses = [
467
- 'address',
468
- 'game',
469
- 'signal',
470
- 'profile',
471
- 'character',
472
- 'authority',
473
- 'policy',
474
- 'loot',
475
- 'xpBudget',
476
- 'xpConfig',
477
- ];
478
- assertKeys(precondition, field, [
479
- 'kind',
480
- 'operation',
481
- ...addresses,
482
- 'keyIndex',
483
- 'status',
484
- 'expectedSequence',
485
- 'configHash',
486
- 'describes',
487
- ]);
488
- if (typeof precondition.operation !== 'string' ||
489
- !Object.hasOwn(scanCompletionDiscriminators, precondition.operation))
490
- invalid(field, precondition.operation, 'a supported scan lifecycle operation');
491
- const keyIndex = precondition.keyIndex, status = precondition.status, sequence = precondition.expectedSequence;
492
- if (typeof keyIndex !== 'number' ||
493
- !Number.isInteger(keyIndex) ||
494
- keyIndex < 0 ||
495
- keyIndex > 65535)
496
- invalid(field, keyIndex, 'a u16 key index');
497
- if (typeof status !== 'number' ||
498
- !Number.isInteger(status) ||
499
- status < 1 ||
500
- status > 6)
501
- invalid(field, status, 'a current nonempty signal state');
502
- if (typeof sequence !== 'bigint' ||
503
- sequence < 0n ||
504
- sequence > 18446744073709551615n)
505
- invalid(field, sequence, 'a u64 sequence');
506
- const parsed = Object.fromEntries(addresses.map((k) => [k, readAddress(precondition[k], `${field}.${k}`)]));
507
- return Object.freeze({
508
- kind: 'scan-completion',
509
- operation: precondition.operation,
510
- ...parsed,
511
- keyIndex,
512
- status,
513
- expectedSequence: sequence,
514
- configHash: readDataHash(precondition.configHash, field),
515
- describes: readString(precondition.describes, field),
516
- });
517
- }
518
- if (precondition.kind === 'scan-detect') {
519
- assertKeys(precondition, field, [
520
- 'kind',
521
- 'address',
522
- 'game',
523
- 'profile',
524
- 'authority',
525
- 'character',
526
- 'signal',
527
- 'pattern',
528
- 'policy',
529
- 'loot',
530
- 'tracker',
531
- 'keyIndex',
532
- 'patternId',
533
- 'focus',
534
- 'expectedSequence',
535
- 'policyRevision',
536
- 'profileRevision',
537
- 'configHash',
538
- 'describes',
539
- ]);
540
- const numbers = {};
541
- for (const [key, max] of [
542
- ['keyIndex', 65535],
543
- ['patternId', 65535],
544
- ['focus', 4],
545
- ['policyRevision', 4294967295],
546
- ['profileRevision', 4294967295],
547
- ]) {
548
- const value = precondition[key];
549
- if (typeof value !== 'number' ||
550
- !Number.isInteger(value) ||
551
- value < 0 ||
552
- value > max)
553
- invalid(`${field}.${key}`, value, `an integer from zero through ${max}`);
554
- numbers[key] = value;
555
- }
556
- const sequence = precondition.expectedSequence;
557
- if (typeof sequence !== 'bigint' ||
558
- sequence < 0n ||
559
- sequence > 18446744073709551615n)
560
- invalid(`${field}.expectedSequence`, sequence, 'a u64 bigint');
561
- return Object.freeze({
562
- kind: 'scan-detect',
563
- address: readAddress(precondition.address, field),
564
- game: readAddress(precondition.game, field),
565
- profile: readAddress(precondition.profile, field),
566
- authority: readAddress(precondition.authority, field),
567
- character: readAddress(precondition.character, field),
568
- signal: readAddress(precondition.signal, field),
569
- pattern: readAddress(precondition.pattern, field),
570
- policy: readAddress(precondition.policy, field),
571
- loot: readAddress(precondition.loot, field),
572
- tracker: readAddress(precondition.tracker, field),
573
- keyIndex: numbers.keyIndex,
574
- patternId: numbers.patternId,
575
- focus: numbers.focus,
576
- policyRevision: numbers.policyRevision,
577
- profileRevision: numbers.profileRevision,
578
- expectedSequence: sequence,
579
- configHash: readDataHash(precondition.configHash, field),
580
- describes: readString(precondition.describes, field),
581
- });
582
- }
583
- if (precondition.kind === 'fleet-crew-transfer') {
584
- assertKeys(precondition, field, [
585
- 'kind',
586
- 'direction',
587
- 'address',
588
- 'game',
589
- 'profile',
590
- 'authority',
591
- 'system',
592
- 'starbasePlayer',
593
- 'keyIndex',
594
- 'count',
595
- 'systemSequenceId',
596
- 'describes',
597
- ]);
598
- for (const key of ['count', 'keyIndex']) {
599
- const n = precondition[key];
600
- if (typeof n !== 'number' ||
601
- !Number.isInteger(n) ||
602
- n < (key === 'count' ? 1 : 0) ||
603
- n > 65535)
604
- invalid(field, n, 'a positive u16 count and u16 key index');
605
- }
606
- const direction = precondition.direction, sequence = precondition.systemSequenceId;
607
- if (direction !== 'load' && direction !== 'unload')
608
- invalid(field, direction, 'load or unload');
609
- if (typeof sequence !== 'bigint' ||
610
- sequence < 0n ||
611
- sequence > (1n << 64n) - 1n)
612
- invalid(field, sequence, 'a u64 System generation');
613
- return Object.freeze({
614
- kind: 'fleet-crew-transfer',
615
- direction,
616
- address: readAddress(precondition.address, field),
617
- game: readAddress(precondition.game, field),
618
- profile: readAddress(precondition.profile, field),
619
- authority: readAddress(precondition.authority, field),
620
- system: readAddress(precondition.system, field),
621
- starbasePlayer: readAddress(precondition.starbasePlayer, field),
622
- count: precondition.count,
623
- keyIndex: precondition.keyIndex,
624
- systemSequenceId: sequence,
625
- describes: readString(precondition.describes, field),
626
- });
627
- }
628
- if (precondition.kind === 'fleet-respawn') {
629
- assertKeys(precondition, field, [
630
- 'kind',
631
- 'address',
632
- 'game',
633
- 'profile',
634
- 'authority',
635
- 'system',
636
- 'keyIndex',
637
- 'phase',
638
- 'fleetHash',
639
- 'maximumRecoveryFee',
640
- 'maximumProfileDebit',
641
- 'describes',
642
- ]);
643
- const keyIndex = precondition.keyIndex;
644
- if (typeof keyIndex !== 'number' ||
645
- !Number.isInteger(keyIndex) ||
646
- keyIndex < 0 ||
647
- keyIndex > 65535)
648
- invalid(`${field}.keyIndex`, keyIndex, 'a u16 key index');
649
- const phase = precondition.phase;
650
- if (phase !== 'start' && phase !== 'complete')
651
- invalid(`${field}.phase`, phase, 'start or complete');
652
- const maximumRecoveryFee = precondition.maximumRecoveryFee, maximumProfileDebit = precondition.maximumProfileDebit;
653
- for (const value of [maximumRecoveryFee, maximumProfileDebit])
654
- if (typeof value !== 'bigint' || value < 0n || value > (1n << 64n) - 1n)
655
- invalid(field, value, 'a nonnegative u64 funding ceiling');
656
- return Object.freeze({
657
- kind: 'fleet-respawn',
658
- address: readAddress(precondition.address, field),
659
- game: readAddress(precondition.game, field),
660
- profile: readAddress(precondition.profile, field),
661
- authority: readAddress(precondition.authority, field),
662
- system: readAddress(precondition.system, field),
663
- keyIndex,
664
- phase,
665
- fleetHash: readDataHash(precondition.fleetHash, field),
666
- maximumRecoveryFee: maximumRecoveryFee,
667
- maximumProfileDebit: maximumProfileDebit,
668
- describes: readString(precondition.describes, field),
669
- });
670
- }
671
- if (precondition.kind === 'fleet-dock-funding')
672
- return normalizeFleetDockFundingGuard(precondition);
673
- if (precondition.kind === 'local-market-order')
674
- return normalizeLocalMarketOrderGuard(precondition);
675
- if (precondition.kind === 'scan-signal-open') {
676
- assertKeys(precondition, field, [
677
- 'kind',
678
- 'address',
679
- 'game',
680
- 'fleet',
681
- 'profile',
682
- 'authority',
683
- 'character',
684
- 'keyIndex',
685
- 'authorityHash',
686
- 'maximumProfileDebit',
687
- 'describes',
688
- ]);
689
- const keyIndex = precondition.keyIndex;
690
- if (typeof keyIndex !== 'number' ||
691
- !Number.isInteger(keyIndex) ||
692
- keyIndex < 0 ||
693
- keyIndex > 65535)
694
- invalid(field, keyIndex, 'a u16 key index');
695
- const maximumProfileDebit = precondition.maximumProfileDebit;
696
- if (typeof maximumProfileDebit !== 'bigint' ||
697
- maximumProfileDebit < 0n ||
698
- maximumProfileDebit > 0xffffffffffffffffn)
699
- invalid(field, maximumProfileDebit, 'a nonnegative u64 funding ceiling');
700
- return Object.freeze({
701
- kind: 'scan-signal-open',
702
- authorityHash: readDataHash(precondition.authorityHash, field),
703
- address: readAddress(precondition.address, field),
704
- game: readAddress(precondition.game, field),
705
- fleet: readAddress(precondition.fleet, field),
706
- profile: readAddress(precondition.profile, field),
707
- authority: readAddress(precondition.authority, field),
708
- character: readAddress(precondition.character, field),
709
- keyIndex,
710
- maximumProfileDebit,
711
- describes: readString(precondition.describes, field),
712
- });
713
- }
714
- if (precondition.kind === 'fleet-create') {
715
- assertKeys(precondition, field, [
716
- 'kind',
717
- 'address',
718
- 'game',
719
- 'profile',
720
- 'authority',
721
- 'system',
722
- 'keyIndex',
723
- 'label',
724
- 'maximumProfileDebit',
725
- 'describes',
726
- ]);
727
- const keyIndex = precondition.keyIndex;
728
- if (typeof keyIndex !== 'number' ||
729
- !Number.isSafeInteger(keyIndex) ||
730
- keyIndex < 0 ||
731
- keyIndex > 65_535)
732
- invalid(`${field}.keyIndex`, keyIndex, 'an integer from 0 through 65535');
733
- const label = readString(precondition.label, `${field}.label`);
734
- const bytes = new TextEncoder().encode(label);
735
- if (label.trim().length === 0 ||
736
- label.includes('\0') ||
737
- bytes.length > 64 ||
738
- new TextDecoder('utf-8', { ignoreBOM: true }).decode(bytes) !== label)
739
- invalid(`${field}.label`, label, 'a nonblank, NUL-free Unicode label of at most 64 UTF-8 bytes');
740
- const maximumProfileDebit = precondition.maximumProfileDebit;
741
- if (typeof maximumProfileDebit !== 'bigint' || maximumProfileDebit < 0n)
742
- invalid(`${field}.maximumProfileDebit`, maximumProfileDebit, 'a nonnegative bigint');
743
- return Object.freeze({
744
- kind: 'fleet-create',
745
- address: readAddress(precondition.address, `${field}.address`),
746
- game: readAddress(precondition.game, `${field}.game`),
747
- profile: readAddress(precondition.profile, `${field}.profile`),
748
- authority: readAddress(precondition.authority, `${field}.authority`),
749
- system: readAddress(precondition.system, `${field}.system`),
750
- keyIndex,
751
- label,
752
- maximumProfileDebit,
753
- describes: readString(precondition.describes, `${field}.describes`),
754
- });
755
- }
756
- if (precondition.kind === 'system-account-or-absent') {
757
- assertKeys(precondition, field, ['kind', 'address', 'describes']);
758
- return Object.freeze({
759
- kind: 'system-account-or-absent',
760
- address: readAddress(precondition.address, `${field}.address`),
761
- describes: readString(precondition.describes, `${field}.describes`),
762
- });
763
- }
764
- if (precondition.kind === 'recipe-state') {
765
- assertKeys(precondition, field, [
766
- 'kind',
767
- 'address',
768
- 'configHash',
769
- 'requiredUses',
770
- 'describes',
771
- ]);
772
- const requiredUses = precondition.requiredUses;
773
- if (typeof requiredUses !== 'bigint' ||
774
- requiredUses < 0n ||
775
- requiredUses > (1n << 64n) - 1n)
776
- invalid(`${field}.requiredUses`, requiredUses, 'an unsigned u64 bigint');
777
- const configHash = readDataHash(precondition.configHash, `${field}.configHash`);
778
- return Object.freeze({
779
- kind: 'recipe-state',
780
- address: readAddress(precondition.address, `${field}.address`),
781
- configHash,
782
- requiredUses,
783
- describes: readString(precondition.describes, `${field}.describes`),
784
- });
785
- }
786
- if (precondition.kind === 'token-mint') {
787
- assertKeys(precondition, field, [
788
- 'kind',
789
- 'address',
790
- 'decimals',
791
- 'describes',
792
- ]);
793
- const decimals = precondition.decimals;
794
- if (typeof decimals !== 'number' ||
795
- !Number.isInteger(decimals) ||
796
- decimals < 0 ||
797
- decimals > 255)
798
- invalid(`${field}.decimals`, decimals, 'an unsigned u8 mint decimals value');
799
- return Object.freeze({
800
- kind: 'token-mint',
801
- address: readAddress(precondition.address, `${field}.address`),
802
- decimals,
803
- describes: readString(precondition.describes, `${field}.describes`),
804
- });
805
- }
806
- if (precondition.kind === 'game-ship-config') {
807
- assertKeys(precondition, field, [
808
- 'kind',
809
- 'address',
810
- 'shipId',
811
- 'configHash',
812
- 'describes',
813
- ]);
814
- const id = precondition.shipId;
815
- if (typeof id !== 'number' || !Number.isInteger(id) || id < 0 || id > 65535)
816
- invalid(`${field}.shipId`, id, 'a u16 ship configuration ID');
817
- return Object.freeze({
818
- kind: 'game-ship-config',
819
- address: readAddress(precondition.address, `${field}.address`),
820
- shipId: id,
821
- configHash: readDataHash(precondition.configHash, `${field}.configHash`),
822
- describes: readString(precondition.describes, `${field}.describes`),
823
- });
824
- }
825
- if (precondition.kind === 'game-account') {
826
- assertKeys(precondition, field, ['kind', 'address', 'describes']);
827
- return Object.freeze({
828
- kind: 'game-account',
829
- address: readAddress(precondition.address, `${field}.address`),
830
- describes: readString(precondition.describes, `${field}.describes`),
831
- });
832
- }
833
- if (['game-cargo-bytes-config', 'token-account', 'cargo-cache'].includes(String(precondition.kind))) {
834
- const base = {
835
- address: readAddress(precondition.address, `${field}.address`),
836
- describes: readString(precondition.describes, `${field}.describes`),
837
- };
838
- if (precondition.kind === 'token-account') {
839
- assertKeys(precondition, field, [
840
- 'kind',
841
- 'address',
842
- 'mint',
843
- 'owner',
844
- 'minimumBalance',
845
- 'describes',
846
- ]);
847
- const amount = precondition.minimumBalance;
848
- if (typeof amount !== 'bigint' ||
849
- amount < 0n ||
850
- amount > (1n << 64n) - 1n)
851
- invalid(`${field}.minimumBalance`, amount, 'an unsigned u64 bigint');
852
- return Object.freeze({
853
- ...base,
854
- kind: 'token-account',
855
- mint: readAddress(precondition.mint, `${field}.mint`),
856
- owner: readAddress(precondition.owner, `${field}.owner`),
857
- minimumBalance: amount,
858
- });
859
- }
860
- if (precondition.kind === 'game-cargo-bytes-config') {
861
- assertKeys(precondition, field, [
862
- 'kind',
863
- 'address',
864
- 'cargoId',
865
- 'configHash',
866
- 'describes',
867
- ]);
868
- const id = precondition.cargoId;
869
- if (typeof id !== 'number' ||
870
- !Number.isInteger(id) ||
871
- id < 0 ||
872
- id > 65535)
873
- invalid(`${field}.cargoId`, id, 'a u16 cargo ID');
874
- return Object.freeze({
875
- ...base,
876
- kind: precondition.kind,
877
- cargoId: id,
878
- configHash: readDataHash(precondition.configHash, `${field}.configHash`),
879
- });
880
- }
881
- assertKeys(precondition, field, [
882
- 'kind',
883
- 'address',
884
- 'game',
885
- 'bump',
886
- 'describes',
887
- ]);
888
- const bump = precondition.bump;
889
- if (typeof bump !== 'number' ||
890
- !Number.isInteger(bump) ||
891
- bump < 0 ||
892
- bump > 255)
893
- invalid(`${field}.bump`, bump, 'a u8 PDA bump');
894
- return Object.freeze({
895
- ...base,
896
- kind: 'cargo-cache',
897
- game: readAddress(precondition.game, `${field}.game`),
898
- bump,
899
- });
900
- }
901
- if (precondition.kind === 'token-account-or-absent') {
902
- assertKeys(precondition, field, [
903
- 'kind',
904
- 'address',
905
- 'mint',
906
- 'owner',
907
- 'describes',
908
- ]);
909
- return Object.freeze({
910
- kind: 'token-account-or-absent',
911
- address: readAddress(precondition.address, `${field}.address`),
912
- mint: readAddress(precondition.mint, `${field}.mint`),
913
- owner: readAddress(precondition.owner, `${field}.owner`),
914
- describes: readString(precondition.describes, `${field}.describes`),
915
- });
916
- }
917
- if (precondition.kind === 'account-absent') {
918
- assertKeys(precondition, field, ['kind', 'address', 'describes']);
919
- return Object.freeze({
920
- kind: 'account-absent',
921
- address: readAddress(precondition.address, `${field}.address`),
922
- describes: readString(precondition.describes, `${field}.describes`),
923
- });
924
- }
925
- if (precondition.kind !== 'account-state') {
926
- invalid(`${field}.kind`, precondition.kind, 'a supported current Plan guard; recreate the Plan using the current capability planner');
927
- }
928
- assertKeys(precondition, field, ['kind', 'address', 'dataHash', 'describes']);
929
- return Object.freeze({
930
- kind: 'account-state',
931
- address: readAddress(precondition.address, `${field}.address`),
932
- dataHash: readDataHash(precondition.dataHash, `${field}.dataHash`),
933
- describes: readString(precondition.describes, `${field}.describes`),
934
- });
935
- }
936
- function getAffected(steps) {
937
- return uniqueAddresses(steps.flatMap((step) => (step.instruction.accounts ?? [])
938
- .filter((account) => isWritableRole(account.role))
939
- .map((account) => account.address)));
940
- }
941
- function getRequiredSigners(steps) {
942
- return uniqueAddresses(steps.flatMap((step) => step.signers));
943
- }
944
- function instructionToJSON(instruction) {
945
- const value = {
946
- ...(instruction.accounts === undefined
947
- ? {}
948
- : {
949
- accounts: instruction.accounts.map((account) => ({
950
- address: account.address,
951
- role: account.role,
952
- })),
953
- }),
954
- ...(instruction.data === undefined
955
- ? {}
956
- : { data: getBase64Decoder().decode(instruction.data) }),
957
- programAddress: instruction.programAddress,
958
- };
959
- return deepFreeze(value);
960
- }
961
- function planToJSON(plan) {
962
- return deepFreeze({
963
- v: 27,
964
- kind: plan.kind,
965
- summary: plan.summary,
966
- affected: [...plan.affected],
967
- requiredSigners: [...plan.requiredSigners],
968
- steps: plan.steps.map((step) => ({
969
- instruction: instructionToJSON(step.instruction),
970
- describes: step.describes,
971
- ...((step.semantics?.length ?? 0) > 0
972
- ? { semantics: step.semantics.map((semantic) => ({ ...semantic })) }
973
- : {}),
974
- signers: [...step.signers],
975
- })),
976
- preconditions: plan.preconditions.map((guard) => {
977
- if (guard.kind === 'recipe-state')
978
- return { ...guard, requiredUses: String(guard.requiredUses) };
979
- if (guard.kind === 'scan-detect' || guard.kind === 'scan-completion')
980
- return { ...guard, expectedSequence: String(guard.expectedSequence) };
981
- if (guard.kind === 'fleet-dock-funding')
982
- return dockFundingGuardToJSON(guard);
983
- if (guard.kind === 'fleet-arrival')
984
- return arrivalGuardToJSON(guard);
985
- if (guard.kind === 'fleet-crew-transfer')
986
- return { ...guard, systemSequenceId: String(guard.systemSequenceId) };
987
- if (guard.kind === 'fleet-respawn')
988
- return {
989
- ...guard,
990
- maximumRecoveryFee: String(guard.maximumRecoveryFee),
991
- maximumProfileDebit: String(guard.maximumProfileDebit),
992
- };
993
- if (isRuntimeGuard(guard))
994
- return runtimeGuardToJSON(guard);
995
- if (isTradeBuyGuard(guard))
996
- return { ...guard, floorRaw: String(guard.floorRaw) };
997
- if (isTradeSellGuard(guard))
998
- return {
999
- ...guard,
1000
- atlasOutCapPerEpochRaw: String(guard.atlasOutCapPerEpochRaw),
1001
- epochLengthSeconds: String(guard.epochLengthSeconds),
1002
- };
1003
- if (guard.kind === 'fleet-add-ship')
1004
- return {
1005
- ...guard,
1006
- amount: String(guard.amount),
1007
- maximumProfileDebit: String(guard.maximumProfileDebit),
1008
- };
1009
- if (guard.kind === 'character-registration')
1010
- return {
1011
- ...guard,
1012
- maximumFunderDebit: String(guard.maximumFunderDebit),
1013
- characterLamports: String(guard.characterLamports),
1014
- budgetLamports: String(guard.budgetLamports),
1015
- };
1016
- if (guard.kind === 'scan-signal-open' ||
1017
- guard.kind === 'fleet-create' ||
1018
- guard.kind === 'ship-import-funding')
1019
- return {
1020
- ...guard,
1021
- maximumProfileDebit: String(guard.maximumProfileDebit),
1022
- };
1023
- if (guard.kind === 'starbase-system')
1024
- return {
1025
- ...guard,
1026
- starbaseSequenceId: String(guard.starbaseSequenceId),
1027
- };
1028
- if (guard.kind === 'local-market-order')
1029
- return localMarketOrderGuardToJSON(guard);
1030
- if (guard.kind === 'token-account')
1031
- return { ...guard, minimumBalance: String(guard.minimumBalance) };
1032
- return { ...guard };
1033
- }),
1034
- });
1035
- }
1036
119
  /** Creates an inert branded Plan while deriving every aggregate field.
1037
120
  *
1038
121
  * @example
@@ -1052,30 +135,8 @@ export function createPlan(input) {
1052
135
  assertKeys(value, 'plan', ['kind', 'summary', 'steps', 'preconditions']);
1053
136
  const steps = Object.freeze(readArray(value.steps, 'plan.steps').map((step, index) => normalizeStep(step, `plan.steps[${String(index)}]`)));
1054
137
  const preconditions = Object.freeze(readArray(value.preconditions, 'plan.preconditions').map((precondition, index) => normalizePrecondition(precondition, `plan.preconditions[${String(index)}]`)));
1055
- validateCurrencyInstructions(steps, preconditions);
1056
- validateShipImportFundingComposition(preconditions);
1057
- validateStarbaseSystemGuards(steps, preconditions);
1058
- validateFleetDockingGuards(steps, preconditions);
1059
- validateFleetDockFundingGuards(steps, preconditions);
1060
- validateDetectInstructions(steps, preconditions);
1061
- validateCompletionInstructions(steps, preconditions);
1062
- validateRespawnInstructions(steps, preconditions);
1063
- validateCrewTransferInstructions(steps, preconditions);
1064
- validateOpenSignalInstructions(steps, preconditions);
1065
- validateLocalMarketOrderInstructions(steps, preconditions);
1066
- const descriptions = Object.freeze(steps.map((step) => step.describes));
1067
- const plan = {
1068
- kind: readString(value.kind, 'plan.kind'),
1069
- summary: readString(value.summary, 'plan.summary'),
1070
- steps,
1071
- preconditions,
1072
- affected: getAffected(steps),
1073
- requiredSigners: getRequiredSigners(steps),
1074
- describe: () => descriptions,
1075
- toJSON: () => planToJSON(plan),
1076
- };
1077
- registerPlanInstance(plan);
1078
- return Object.freeze(plan);
138
+ validateCreationBindings(steps, preconditions);
139
+ return brandPlan(readString(value.kind, 'plan.kind'), readString(value.summary, 'plan.summary'), steps, preconditions);
1079
140
  }
1080
141
  function readWireInstruction(value, field) {
1081
142
  const instruction = readRecord(value, field);
@@ -1124,114 +185,9 @@ export function planFromJSON(json) {
1124
185
  'affected',
1125
186
  'requiredSigners',
1126
187
  ]);
1127
- if (value.v !== 27) {
1128
- throw new InvalidActionInputError('planJson.v', value.v, 'the current Plan wire version 27', 'Recreate the Plan using the current capability planner; do not change its saved version or migrate its guards.');
188
+ if (value.v !== 35) {
189
+ throw new InvalidActionInputError('planJson.v', value.v, 'the current Plan wire version 35', 'Recreate the Plan using the current capability planner; do not change its saved version or migrate its guards.');
1129
190
  }
1130
- value.preconditions = readArray(value.preconditions, 'planJson.preconditions').map((entry) => {
1131
- const guard = readRecord(entry, 'precondition');
1132
- if (guard.kind === 'recipe-state') {
1133
- if (typeof guard.requiredUses !== 'string' ||
1134
- !/^(0|[1-9][0-9]*)$/.test(guard.requiredUses))
1135
- invalid('requiredUses', guard.requiredUses, 'a canonical unsigned decimal string');
1136
- return { ...guard, requiredUses: BigInt(guard.requiredUses) };
1137
- }
1138
- if (guard.kind === 'fleet-dock-funding')
1139
- return normalizeFleetDockFundingGuard(guard, true);
1140
- if (guard.kind === 'local-market-order')
1141
- return normalizeLocalMarketOrderGuard(guard, true);
1142
- if (guard.kind === 'scan-detect' || guard.kind === 'scan-completion') {
1143
- if (typeof guard.expectedSequence !== 'string' ||
1144
- !/^(0|[1-9][0-9]*)$/.test(guard.expectedSequence))
1145
- invalid('expectedSequence', guard.expectedSequence, 'a canonical unsigned decimal string');
1146
- return { ...guard, expectedSequence: BigInt(guard.expectedSequence) };
1147
- }
1148
- if (guard.kind === 'fleet-arrival')
1149
- return normalizeArrivalGuard(guard, 'precondition', true);
1150
- if (isRuntimeGuard(guard))
1151
- return normalizeRuntimeGuard(guard, 'precondition', true);
1152
- if (isTradeBuyGuard(guard) || isTradeSellGuard(guard)) {
1153
- const keys = isTradeBuyGuard(guard)
1154
- ? ['floorRaw']
1155
- : ['atlasOutCapPerEpochRaw', 'epochLengthSeconds'];
1156
- const decoded = { ...guard };
1157
- for (const key of keys) {
1158
- const raw = guard[key];
1159
- const pattern = key === 'epochLengthSeconds'
1160
- ? /^(0|[1-9][0-9]*|-[1-9][0-9]*)$/
1161
- : /^(0|[1-9][0-9]*)$/;
1162
- if (typeof raw !== 'string' || !pattern.test(raw))
1163
- invalid(key, raw, 'a canonical decimal string');
1164
- decoded[key] = BigInt(raw);
1165
- }
1166
- return decoded;
1167
- }
1168
- if (guard.kind === 'fleet-add-ship') {
1169
- for (const field of ['amount', 'maximumProfileDebit'])
1170
- if (typeof guard[field] !== 'string' ||
1171
- !/^(0|[1-9][0-9]*)$/.test(guard[field]))
1172
- invalid(field, guard[field], 'a canonical unsigned decimal string');
1173
- return {
1174
- ...guard,
1175
- amount: BigInt(guard.amount),
1176
- maximumProfileDebit: BigInt(guard.maximumProfileDebit),
1177
- };
1178
- }
1179
- if (guard.kind === 'character-registration') {
1180
- for (const key of ['characterLamports', 'budgetLamports'])
1181
- if (typeof guard[key] !== 'string' ||
1182
- !/^(0|[1-9][0-9]*)$/.test(guard[key]))
1183
- invalid(key, guard[key], 'a canonical unsigned decimal string');
1184
- if (typeof guard.maximumFunderDebit !== 'string' ||
1185
- !/^(0|[1-9][0-9]*)$/.test(guard.maximumFunderDebit))
1186
- invalid('maximumFunderDebit', guard.maximumFunderDebit, 'a canonical unsigned decimal string');
1187
- return {
1188
- ...guard,
1189
- maximumFunderDebit: BigInt(guard.maximumFunderDebit),
1190
- characterLamports: BigInt(guard.characterLamports),
1191
- budgetLamports: BigInt(guard.budgetLamports),
1192
- };
1193
- }
1194
- if (guard.kind === 'fleet-crew-transfer') {
1195
- if (typeof guard.systemSequenceId !== 'string' ||
1196
- !/^(0|[1-9][0-9]*)$/.test(guard.systemSequenceId))
1197
- invalid('systemSequenceId', guard.systemSequenceId, 'a canonical unsigned decimal string');
1198
- return { ...guard, systemSequenceId: BigInt(guard.systemSequenceId) };
1199
- }
1200
- if (guard.kind === 'fleet-respawn') {
1201
- for (const key of ['maximumRecoveryFee', 'maximumProfileDebit'])
1202
- if (typeof guard[key] !== 'string' ||
1203
- !/^(0|[1-9][0-9]*)$/.test(guard[key]))
1204
- invalid(key, guard[key], 'a canonical unsigned decimal string');
1205
- return {
1206
- ...guard,
1207
- maximumRecoveryFee: BigInt(guard.maximumRecoveryFee),
1208
- maximumProfileDebit: BigInt(guard.maximumProfileDebit),
1209
- };
1210
- }
1211
- if (guard.kind === 'scan-signal-open' ||
1212
- guard.kind === 'fleet-create' ||
1213
- guard.kind === 'ship-import-funding') {
1214
- if (typeof guard.maximumProfileDebit !== 'string' ||
1215
- !/^(0|[1-9][0-9]*)$/.test(guard.maximumProfileDebit))
1216
- invalid('maximumProfileDebit', guard.maximumProfileDebit, 'a canonical unsigned decimal string');
1217
- return {
1218
- ...guard,
1219
- maximumProfileDebit: BigInt(guard.maximumProfileDebit),
1220
- };
1221
- }
1222
- if (guard.kind === 'starbase-system') {
1223
- if (typeof guard.starbaseSequenceId !== 'string' ||
1224
- !/^(0|[1-9][0-9]*)$/.test(guard.starbaseSequenceId))
1225
- invalid('starbaseSequenceId', guard.starbaseSequenceId, 'a canonical unsigned decimal string');
1226
- return { ...guard, starbaseSequenceId: BigInt(guard.starbaseSequenceId) };
1227
- }
1228
- if (guard.kind !== 'token-account')
1229
- return guard;
1230
- if (typeof guard.minimumBalance !== 'string' ||
1231
- !/^(0|[1-9][0-9]*)$/.test(guard.minimumBalance))
1232
- invalid('minimumBalance', guard.minimumBalance, 'a canonical unsigned decimal string');
1233
- return { ...guard, minimumBalance: BigInt(guard.minimumBalance) };
1234
- });
1235
191
  const steps = readArray(value.steps, 'planJson.steps').map((candidate, index) => {
1236
192
  const field = `planJson.steps[${String(index)}]`;
1237
193
  const step = readRecord(candidate, field);
@@ -1247,21 +203,15 @@ export function planFromJSON(json) {
1247
203
  signers: readArray(step.signers, `${field}.signers`).map((signer, signerIndex) => readAddress(signer, `${field}.signers[${String(signerIndex)}]`)),
1248
204
  };
1249
205
  });
1250
- const preconditions = readArray(value.preconditions, 'planJson.preconditions').map((candidate, index) => normalizePrecondition(candidate, `planJson.preconditions[${String(index)}]`));
206
+ const preconditions = readArray(value.preconditions, 'planJson.preconditions').map((candidate, index) => normalizePrecondition(candidate, `planJson.preconditions[${String(index)}]`, true));
1251
207
  const affected = readArray(value.affected, 'planJson.affected').map((candidate, index) => readAddress(candidate, `planJson.affected[${String(index)}]`));
1252
208
  const requiredSigners = readArray(value.requiredSigners, 'planJson.requiredSigners').map((candidate, index) => readAddress(candidate, `planJson.requiredSigners[${String(index)}]`));
1253
- const plan = createPlan({
1254
- kind: readString(value.kind, 'planJson.kind'),
1255
- summary: readString(value.summary, 'planJson.summary'),
1256
- steps,
1257
- preconditions,
1258
- });
1259
- validateStarbaseSystemInstructions(plan.steps, plan.preconditions);
1260
- validateFleetDockingGuards(plan.steps, plan.preconditions);
1261
- validateFleetDockFundingGuards(plan.steps, plan.preconditions);
1262
- validateMovementXpInstructions(plan.steps, plan.preconditions);
1263
- validateFleetAttackInstructions(plan.steps, plan.preconditions);
1264
- validateCharacterRegistrationInstructions(plan.steps, plan.preconditions);
209
+ const kind = readString(value.kind, 'planJson.kind');
210
+ const summary = readString(value.summary, 'planJson.summary');
211
+ const normalizedSteps = Object.freeze(steps.map((step, index) => normalizeStep(step, `planJson.steps[${String(index)}]`)));
212
+ const normalizedPreconditions = Object.freeze(preconditions);
213
+ validateHydrationBindings(normalizedSteps, normalizedPreconditions);
214
+ const plan = brandPlan(kind, summary, normalizedSteps, normalizedPreconditions);
1265
215
  if (!sameAddresses(plan.affected, affected)) {
1266
216
  invalid('planJson.affected', value.affected, 'the first-seen union of writable instruction account addresses');
1267
217
  }
@@ -1278,49 +228,6 @@ function assertPlan(value, index) {
1278
228
  function combinedSummary(steps) {
1279
229
  return steps.map((step) => step.describes).join(' ');
1280
230
  }
1281
- function validateShipImportFundingComposition(guards) {
1282
- const targets = new Map();
1283
- for (const guard of guards) {
1284
- if (guard.kind !== 'ship-import-funding')
1285
- continue;
1286
- const identity = `${guard.game}:${guard.profile}:${guard.system}:${String(guard.shipId)}`;
1287
- const previous = targets.get(guard.address);
1288
- if (previous !== undefined && previous !== identity)
1289
- throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', 'Ship imports retain conflicting identities or different configurations for one StarbasePlayer. Use separate confirmed imports, then refresh inventory and replan; prefunding cannot be shared across independently estimated storage growth.');
1290
- targets.set(guard.address, identity);
1291
- }
1292
- }
1293
- function validateFactionGuardComposition(guards) {
1294
- const retained = new Map();
1295
- for (const guard of guards) {
1296
- if (!isFactionTradeGuard(guard))
1297
- continue;
1298
- const constraints = [
1299
- [
1300
- `${isTradeMeterGuard(guard) ? 'meter' : 'treasury'}:${guard.address}:identity`,
1301
- `${guard.game}:${String(guard.factionId)}`,
1302
- ],
1303
- ];
1304
- if (!isTradeMeterGuard(guard)) {
1305
- constraints.push(isTradeBuyGuard(guard)
1306
- ? [
1307
- `${guard.address}:buy:${String(guard.cargoId)}`,
1308
- String(guard.floorRaw),
1309
- ]
1310
- : [
1311
- `${guard.address}:sell`,
1312
- `${String(guard.atlasOutCapPerEpochRaw)}:${String(guard.epochLengthSeconds)}`,
1313
- ]);
1314
- }
1315
- constraints.push([`${guard.address}:schema`, String(guard.schemaVersion)]);
1316
- for (const [key, value] of constraints) {
1317
- const previous = retained.get(key);
1318
- if (previous !== undefined && previous !== value)
1319
- throw new SageSdkError('INCOMPATIBLE_PLAN_COMPOSITION', 'Faction Market Plans retain incompatible Treasury policy or shared account identity. Refresh the affected Markets and prepare compatible Plans, or use separate confirmed transactions.');
1320
- retained.set(key, value);
1321
- }
1322
- }
1323
- }
1324
231
  /** Combines one or more Plans with deterministic associative flattening.
1325
232
  *
1326
233
  * Semantic validation is eager. Conflict indices are relative to the flattened
@@ -1339,31 +246,11 @@ export function combinePlans(...plans) {
1339
246
  throw new InvalidActionInputError('plans', plans.length, 'one or more Plan values', 'Pass at least one Plan to combinePlans before retrying.');
1340
247
  }
1341
248
  plans.forEach(assertPlan);
1342
- const steps = plans.flatMap((plan) => plan.steps);
1343
- validatePlanComposition(steps);
1344
- const preconditions = plans.flatMap((plan) => plan.preconditions);
1345
- validateFactionGuardComposition(preconditions);
1346
- validateMiningStopInstructions(steps, preconditions);
1347
- validateStarbaseSystemInstructions(steps, preconditions);
1348
- validateFleetDockingGuards(steps, preconditions);
1349
- validateFleetDockFundingGuards(steps, preconditions);
1350
- validateCharacterRegistrationInstructions(steps, preconditions);
1351
- validateArrivalInstructions(steps, preconditions);
1352
- validateDetectInstructions(steps, preconditions);
1353
- validateCompletionInstructions(steps, preconditions);
1354
- validateRespawnInstructions(steps, preconditions);
1355
- validateCrewTransferInstructions(steps, preconditions);
1356
- validateOpenSignalInstructions(steps, preconditions);
1357
- validateLocalMarketOrderInstructions(steps, preconditions);
1358
- validateRuntimeInstructions(steps, preconditions);
1359
- validateMovementXpInstructions(steps, preconditions);
1360
- validateFleetAttackInstructions(steps, preconditions);
1361
- return createPlan({
1362
- kind: 'combined',
1363
- summary: combinedSummary(steps),
1364
- steps,
1365
- preconditions,
1366
- });
249
+ // Branded Plans hold normalized, frozen contents; validate the union once.
250
+ const steps = Object.freeze(plans.flatMap((plan) => plan.steps));
251
+ const preconditions = Object.freeze(plans.flatMap((plan) => plan.preconditions));
252
+ validatePlanBindings(steps, preconditions);
253
+ return brandPlan('combined', combinedSummary(steps), steps, preconditions);
1367
254
  }
1368
255
  export { assemblePlan } from './assembly.js';
1369
256
  export { executePlan, } from './execution.js';