@aephia/atlas-kit 0.6.0-next.17 → 0.6.0-next.171

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 (926) hide show
  1. package/README.md +2 -1
  2. package/dist/cargo/actions/deposit.d.ts +5 -2
  3. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  4. package/dist/cargo/actions/deposit.js +60 -129
  5. package/dist/cargo/actions/deposit.js.map +1 -1
  6. package/dist/cargo/actions/index.d.ts +14 -7
  7. package/dist/cargo/actions/index.d.ts.map +1 -1
  8. package/dist/cargo/actions/index.js +108 -95
  9. package/dist/cargo/actions/index.js.map +1 -1
  10. package/dist/cargo/actions/wallet-context.d.ts +52 -3
  11. package/dist/cargo/actions/wallet-context.d.ts.map +1 -1
  12. package/dist/cargo/actions/wallet-context.js +118 -7
  13. package/dist/cargo/actions/wallet-context.js.map +1 -1
  14. package/dist/cargo/actions/wallet-token.d.ts +1 -6
  15. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  16. package/dist/cargo/actions/wallet-token.js +0 -45
  17. package/dist/cargo/actions/wallet-token.js.map +1 -1
  18. package/dist/cargo/actions/withdrawal.d.ts +1 -1
  19. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  20. package/dist/cargo/actions/withdrawal.js +39 -168
  21. package/dist/cargo/actions/withdrawal.js.map +1 -1
  22. package/dist/cargo/index.d.ts.map +1 -1
  23. package/dist/cargo/index.js +2 -10
  24. package/dist/cargo/index.js.map +1 -1
  25. package/dist/claim-stakes/actions/index.d.ts +93 -14
  26. package/dist/claim-stakes/actions/index.d.ts.map +1 -1
  27. package/dist/claim-stakes/actions/index.js +739 -742
  28. package/dist/claim-stakes/actions/index.js.map +1 -1
  29. package/dist/claim-stakes/index.d.ts +22 -6
  30. package/dist/claim-stakes/index.d.ts.map +1 -1
  31. package/dist/claim-stakes/index.js +34 -19
  32. package/dist/claim-stakes/index.js.map +1 -1
  33. package/dist/client/context.d.ts.map +1 -1
  34. package/dist/client/context.js +354 -38
  35. package/dist/client/context.js.map +1 -1
  36. package/dist/client/contracts.d.ts +69 -6
  37. package/dist/client/contracts.d.ts.map +1 -1
  38. package/dist/client/deployments.d.ts +17 -0
  39. package/dist/client/deployments.d.ts.map +1 -1
  40. package/dist/client/deployments.js +17 -0
  41. package/dist/client/deployments.js.map +1 -1
  42. package/dist/client/errors.d.ts +2 -2
  43. package/dist/client/errors.d.ts.map +1 -1
  44. package/dist/client/errors.js.map +1 -1
  45. package/dist/client/index.d.ts +57 -1
  46. package/dist/client/index.d.ts.map +1 -1
  47. package/dist/client/index.js +56 -0
  48. package/dist/client/index.js.map +1 -1
  49. package/dist/client/rpc-subscription-provider.d.ts +37 -0
  50. package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
  51. package/dist/client/rpc-subscription-provider.js +224 -0
  52. package/dist/client/rpc-subscription-provider.js.map +1 -0
  53. package/dist/combat/actions/index.d.ts +30 -12
  54. package/dist/combat/actions/index.d.ts.map +1 -1
  55. package/dist/combat/actions/index.js +360 -302
  56. package/dist/combat/actions/index.js.map +1 -1
  57. package/dist/combat/index.d.ts +25 -8
  58. package/dist/combat/index.d.ts.map +1 -1
  59. package/dist/combat/index.js +21 -18
  60. package/dist/combat/index.js.map +1 -1
  61. package/dist/crafting/actions/fee-rate.d.ts +47 -0
  62. package/dist/crafting/actions/fee-rate.d.ts.map +1 -0
  63. package/dist/crafting/actions/fee-rate.js +58 -0
  64. package/dist/crafting/actions/fee-rate.js.map +1 -0
  65. package/dist/crafting/actions/index.d.ts +29 -18
  66. package/dist/crafting/actions/index.d.ts.map +1 -1
  67. package/dist/crafting/actions/index.js +298 -352
  68. package/dist/crafting/actions/index.js.map +1 -1
  69. package/dist/crafting/estimate.d.ts +101 -0
  70. package/dist/crafting/estimate.d.ts.map +1 -0
  71. package/dist/crafting/estimate.js +108 -0
  72. package/dist/crafting/estimate.js.map +1 -0
  73. package/dist/crafting/index.d.ts +34 -3
  74. package/dist/crafting/index.d.ts.map +1 -1
  75. package/dist/crafting/index.js +50 -28
  76. package/dist/crafting/index.js.map +1 -1
  77. package/dist/factions/actions/index.d.ts +2 -1
  78. package/dist/factions/actions/index.d.ts.map +1 -1
  79. package/dist/factions/actions/index.js +6 -4
  80. package/dist/factions/actions/index.js.map +1 -1
  81. package/dist/factions/index.d.ts +19 -2
  82. package/dist/factions/index.d.ts.map +1 -1
  83. package/dist/factions/index.js +38 -26
  84. package/dist/factions/index.js.map +1 -1
  85. package/dist/factions/profile-faction.d.ts +20 -8
  86. package/dist/factions/profile-faction.d.ts.map +1 -1
  87. package/dist/factions/profile-faction.js +20 -8
  88. package/dist/factions/profile-faction.js.map +1 -1
  89. package/dist/fleets/actions/add-ship.d.ts +48 -0
  90. package/dist/fleets/actions/add-ship.d.ts.map +1 -0
  91. package/dist/fleets/actions/add-ship.js +136 -0
  92. package/dist/fleets/actions/add-ship.js.map +1 -0
  93. package/dist/fleets/actions/create-fleet.d.ts +36 -0
  94. package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
  95. package/dist/fleets/actions/create-fleet.js +108 -0
  96. package/dist/fleets/actions/create-fleet.js.map +1 -0
  97. package/dist/fleets/actions/crew-transfer.d.ts +45 -0
  98. package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
  99. package/dist/fleets/actions/crew-transfer.js +99 -0
  100. package/dist/fleets/actions/crew-transfer.js.map +1 -0
  101. package/dist/fleets/actions/deployment-storage.d.ts +161 -0
  102. package/dist/fleets/actions/deployment-storage.d.ts.map +1 -0
  103. package/dist/fleets/actions/deployment-storage.js +297 -0
  104. package/dist/fleets/actions/deployment-storage.js.map +1 -0
  105. package/dist/fleets/actions/disband.d.ts +42 -0
  106. package/dist/fleets/actions/disband.d.ts.map +1 -0
  107. package/dist/fleets/actions/disband.js +107 -0
  108. package/dist/fleets/actions/disband.js.map +1 -0
  109. package/dist/fleets/actions/dock-bounds.d.ts +38 -0
  110. package/dist/fleets/actions/dock-bounds.d.ts.map +1 -0
  111. package/dist/fleets/actions/dock-bounds.js +46 -0
  112. package/dist/fleets/actions/dock-bounds.js.map +1 -0
  113. package/dist/fleets/actions/index.d.ts +90 -25
  114. package/dist/fleets/actions/index.d.ts.map +1 -1
  115. package/dist/fleets/actions/index.js +492 -353
  116. package/dist/fleets/actions/index.js.map +1 -1
  117. package/dist/fleets/actions/respawn.d.ts +38 -0
  118. package/dist/fleets/actions/respawn.d.ts.map +1 -0
  119. package/dist/fleets/actions/respawn.js +93 -0
  120. package/dist/fleets/actions/respawn.js.map +1 -0
  121. package/dist/fleets/actions/ship-import.d.ts +1 -1
  122. package/dist/fleets/actions/ship-import.d.ts.map +1 -1
  123. package/dist/fleets/actions/ship-import.js +61 -90
  124. package/dist/fleets/actions/ship-import.js.map +1 -1
  125. package/dist/fleets/actions/sync.d.ts +24 -0
  126. package/dist/fleets/actions/sync.d.ts.map +1 -0
  127. package/dist/fleets/actions/sync.js +55 -0
  128. package/dist/fleets/actions/sync.js.map +1 -0
  129. package/dist/fleets/composition-stats.d.ts +101 -0
  130. package/dist/fleets/composition-stats.d.ts.map +1 -0
  131. package/dist/fleets/composition-stats.js +354 -0
  132. package/dist/fleets/composition-stats.js.map +1 -0
  133. package/dist/fleets/cooldown.d.ts +47 -0
  134. package/dist/fleets/cooldown.d.ts.map +1 -0
  135. package/dist/fleets/cooldown.js +48 -0
  136. package/dist/fleets/cooldown.js.map +1 -0
  137. package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
  138. package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
  139. package/dist/fleets/coordinate-warp-estimate.js +46 -0
  140. package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
  141. package/dist/fleets/index.d.ts +36 -0
  142. package/dist/fleets/index.d.ts.map +1 -1
  143. package/dist/fleets/index.js +55 -12
  144. package/dist/fleets/index.js.map +1 -1
  145. package/dist/fleets/movement-arithmetic.d.ts +21 -0
  146. package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
  147. package/dist/fleets/movement-arithmetic.js +45 -0
  148. package/dist/fleets/movement-arithmetic.js.map +1 -0
  149. package/dist/fleets/subwarp-estimate.d.ts +72 -0
  150. package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
  151. package/dist/fleets/subwarp-estimate.js +40 -0
  152. package/dist/fleets/subwarp-estimate.js.map +1 -0
  153. package/dist/fleets/travel-profile.d.ts +102 -0
  154. package/dist/fleets/travel-profile.d.ts.map +1 -0
  155. package/dist/fleets/travel-profile.js +120 -0
  156. package/dist/fleets/travel-profile.js.map +1 -0
  157. package/dist/fleets/warp-lane-estimate.d.ts +59 -0
  158. package/dist/fleets/warp-lane-estimate.d.ts.map +1 -0
  159. package/dist/fleets/warp-lane-estimate.js +36 -0
  160. package/dist/fleets/warp-lane-estimate.js.map +1 -0
  161. package/dist/fleets/warp-lane-policy.d.ts +74 -0
  162. package/dist/fleets/warp-lane-policy.d.ts.map +1 -0
  163. package/dist/fleets/warp-lane-policy.js +103 -0
  164. package/dist/fleets/warp-lane-policy.js.map +1 -0
  165. package/dist/fleets/warp-lane-toll.d.ts +55 -0
  166. package/dist/fleets/warp-lane-toll.d.ts.map +1 -0
  167. package/dist/fleets/warp-lane-toll.js +79 -0
  168. package/dist/fleets/warp-lane-toll.js.map +1 -0
  169. package/dist/identity/actions/create-profile.d.ts +1 -1
  170. package/dist/identity/actions/create-profile.d.ts.map +1 -1
  171. package/dist/identity/actions/create-profile.js +2 -2
  172. package/dist/identity/actions/create-profile.js.map +1 -1
  173. package/dist/identity/actions/index.d.ts +5 -4
  174. package/dist/identity/actions/index.d.ts.map +1 -1
  175. package/dist/identity/actions/index.js +52 -29
  176. package/dist/identity/actions/index.js.map +1 -1
  177. package/dist/identity/actions/research-unlock.d.ts +61 -0
  178. package/dist/identity/actions/research-unlock.d.ts.map +1 -0
  179. package/dist/identity/actions/research-unlock.js +166 -0
  180. package/dist/identity/actions/research-unlock.js.map +1 -0
  181. package/dist/identity/index.d.ts +63 -2
  182. package/dist/identity/index.d.ts.map +1 -1
  183. package/dist/identity/index.js +64 -12
  184. package/dist/identity/index.js.map +1 -1
  185. package/dist/identity/research-state.d.ts +60 -0
  186. package/dist/identity/research-state.d.ts.map +1 -0
  187. package/dist/identity/research-state.js +68 -0
  188. package/dist/identity/research-state.js.map +1 -0
  189. package/dist/index.d.ts +26 -1
  190. package/dist/index.d.ts.map +1 -1
  191. package/dist/index.js +24 -7
  192. package/dist/index.js.map +1 -1
  193. package/dist/internal/c4/account-decoding.d.ts +49 -0
  194. package/dist/internal/c4/account-decoding.d.ts.map +1 -0
  195. package/dist/internal/c4/account-decoding.js +74 -0
  196. package/dist/internal/c4/account-decoding.js.map +1 -0
  197. package/dist/internal/c4/career-xp.d.ts +58 -0
  198. package/dist/internal/c4/career-xp.d.ts.map +1 -0
  199. package/dist/internal/c4/career-xp.js +80 -0
  200. package/dist/internal/c4/career-xp.js.map +1 -0
  201. package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
  202. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  203. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  204. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  205. package/dist/internal/c4/cargo-instructions.d.ts +24 -0
  206. package/dist/internal/c4/cargo-instructions.d.ts.map +1 -0
  207. package/dist/internal/c4/cargo-instructions.js +30 -0
  208. package/dist/internal/c4/cargo-instructions.js.map +1 -0
  209. package/dist/internal/c4/cargo-pod.d.ts +15 -0
  210. package/dist/internal/c4/cargo-pod.d.ts.map +1 -0
  211. package/dist/internal/c4/cargo-pod.js +13 -0
  212. package/dist/internal/c4/cargo-pod.js.map +1 -0
  213. package/dist/internal/c4/character-modifier.d.ts +1 -1
  214. package/dist/internal/c4/character-modifier.d.ts.map +1 -1
  215. package/dist/internal/c4/character-registration.d.ts +2 -0
  216. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  217. package/dist/internal/c4/character-registration.js +2 -0
  218. package/dist/internal/c4/character-registration.js.map +1 -1
  219. package/dist/internal/c4/character.d.ts +157 -0
  220. package/dist/internal/c4/character.d.ts.map +1 -0
  221. package/dist/internal/c4/character.js +64 -0
  222. package/dist/internal/c4/character.js.map +1 -0
  223. package/dist/internal/c4/claim-stake-building-definitions.d.ts.map +1 -1
  224. package/dist/internal/c4/claim-stake-building-definitions.js +2 -1
  225. package/dist/internal/c4/claim-stake-building-definitions.js.map +1 -1
  226. package/dist/internal/c4/claim-stake-configuration.d.ts.map +1 -1
  227. package/dist/internal/c4/claim-stake-configuration.js +5 -36
  228. package/dist/internal/c4/claim-stake-configuration.js.map +1 -1
  229. package/dist/internal/c4/claim-stake-definitions.d.ts +8 -4
  230. package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
  231. package/dist/internal/c4/claim-stake-definitions.js +6 -2
  232. package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
  233. package/dist/internal/c4/claim-stake-plots.d.ts +17 -0
  234. package/dist/internal/c4/claim-stake-plots.d.ts.map +1 -0
  235. package/dist/internal/c4/claim-stake-plots.js +29 -0
  236. package/dist/internal/c4/claim-stake-plots.js.map +1 -0
  237. package/dist/internal/c4/claim-stake-standing.d.ts +80 -0
  238. package/dist/internal/c4/claim-stake-standing.d.ts.map +1 -0
  239. package/dist/internal/c4/claim-stake-standing.js +61 -0
  240. package/dist/internal/c4/claim-stake-standing.js.map +1 -0
  241. package/dist/internal/c4/claim-stake-storage.d.ts +45 -0
  242. package/dist/internal/c4/claim-stake-storage.d.ts.map +1 -0
  243. package/dist/internal/c4/claim-stake-storage.js +207 -0
  244. package/dist/internal/c4/claim-stake-storage.js.map +1 -0
  245. package/dist/internal/c4/claim-stake.d.ts +13 -33
  246. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  247. package/dist/internal/c4/claim-stake.js +49 -94
  248. package/dist/internal/c4/claim-stake.js.map +1 -1
  249. package/dist/internal/c4/combat-storage.d.ts +20 -0
  250. package/dist/internal/c4/combat-storage.d.ts.map +1 -0
  251. package/dist/internal/c4/combat-storage.js +43 -0
  252. package/dist/internal/c4/combat-storage.js.map +1 -0
  253. package/dist/internal/c4/combat.d.ts +1 -82
  254. package/dist/internal/c4/combat.d.ts.map +1 -1
  255. package/dist/internal/c4/combat.js +16 -213
  256. package/dist/internal/c4/combat.js.map +1 -1
  257. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  258. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  259. package/dist/internal/c4/crafting-process-codec.js +34 -0
  260. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  261. package/dist/internal/c4/crafting-storage.d.ts +20 -0
  262. package/dist/internal/c4/crafting-storage.d.ts.map +1 -0
  263. package/dist/internal/c4/crafting-storage.js +54 -0
  264. package/dist/internal/c4/crafting-storage.js.map +1 -0
  265. package/dist/internal/c4/crafting.d.ts +33 -33
  266. package/dist/internal/c4/crafting.d.ts.map +1 -1
  267. package/dist/internal/c4/crafting.js +76 -127
  268. package/dist/internal/c4/crafting.js.map +1 -1
  269. package/dist/internal/c4/currency-cache.d.ts +6 -0
  270. package/dist/internal/c4/currency-cache.d.ts.map +1 -0
  271. package/dist/internal/c4/currency-cache.js +27 -0
  272. package/dist/internal/c4/currency-cache.js.map +1 -0
  273. package/dist/internal/c4/discriminators.d.ts +93 -0
  274. package/dist/internal/c4/discriminators.d.ts.map +1 -0
  275. package/dist/internal/c4/discriminators.js +190 -0
  276. package/dist/internal/c4/discriminators.js.map +1 -0
  277. package/dist/internal/c4/docking-funding.d.ts +4 -0
  278. package/dist/internal/c4/docking-funding.d.ts.map +1 -0
  279. package/dist/internal/c4/docking-funding.js +11 -0
  280. package/dist/internal/c4/docking-funding.js.map +1 -0
  281. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  282. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  283. package/dist/internal/c4/faction-epoch-meter.js +26 -0
  284. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  285. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  286. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  287. package/dist/internal/c4/faction-treasury.js +41 -0
  288. package/dist/internal/c4/faction-treasury.js.map +1 -0
  289. package/dist/internal/c4/faction.d.ts +21 -0
  290. package/dist/internal/c4/faction.d.ts.map +1 -0
  291. package/dist/internal/c4/faction.js +23 -0
  292. package/dist/internal/c4/faction.js.map +1 -0
  293. package/dist/internal/c4/factions.d.ts +40 -60
  294. package/dist/internal/c4/factions.d.ts.map +1 -1
  295. package/dist/internal/c4/factions.js +106 -225
  296. package/dist/internal/c4/factions.js.map +1 -1
  297. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  298. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  299. package/dist/internal/c4/fleet-arrival.js +42 -0
  300. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  301. package/dist/internal/c4/fleet-creation.d.ts +14 -0
  302. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  303. package/dist/internal/c4/fleet-creation.js +177 -0
  304. package/dist/internal/c4/fleet-creation.js.map +1 -0
  305. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  306. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  307. package/dist/internal/c4/fleet-crew-binding.js +31 -44
  308. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  309. package/dist/internal/c4/fleet-disband-layout.d.ts +7 -0
  310. package/dist/internal/c4/fleet-disband-layout.d.ts.map +1 -0
  311. package/dist/internal/c4/fleet-disband-layout.js +7 -0
  312. package/dist/internal/c4/fleet-disband-layout.js.map +1 -0
  313. package/dist/internal/c4/fleet-disband.d.ts +41 -0
  314. package/dist/internal/c4/fleet-disband.d.ts.map +1 -0
  315. package/dist/internal/c4/fleet-disband.js +86 -0
  316. package/dist/internal/c4/fleet-disband.js.map +1 -0
  317. package/dist/internal/c4/fleet-points.d.ts +3 -0
  318. package/dist/internal/c4/fleet-points.d.ts.map +1 -0
  319. package/dist/internal/c4/fleet-points.js +8 -0
  320. package/dist/internal/c4/fleet-points.js.map +1 -0
  321. package/dist/internal/c4/fleet-respawn.d.ts +17 -0
  322. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  323. package/dist/internal/c4/fleet-respawn.js +62 -0
  324. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  325. package/dist/internal/c4/fleet-ship-assembly.d.ts +26 -0
  326. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  327. package/dist/internal/c4/fleet-ship-assembly.js +96 -0
  328. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  329. package/dist/internal/c4/fleet-storage.d.ts +44 -0
  330. package/dist/internal/c4/fleet-storage.d.ts.map +1 -0
  331. package/dist/internal/c4/fleet-storage.js +108 -0
  332. package/dist/internal/c4/fleet-storage.js.map +1 -0
  333. package/dist/internal/c4/fleet-sync.d.ts +5 -0
  334. package/dist/internal/c4/fleet-sync.d.ts.map +1 -0
  335. package/dist/internal/c4/fleet-sync.js +15 -0
  336. package/dist/internal/c4/fleet-sync.js.map +1 -0
  337. package/dist/internal/c4/fleet.d.ts +65 -24
  338. package/dist/internal/c4/fleet.d.ts.map +1 -1
  339. package/dist/internal/c4/fleet.js +50 -91
  340. package/dist/internal/c4/fleet.js.map +1 -1
  341. package/dist/internal/c4/game-definition-layout.d.ts +2 -0
  342. package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
  343. package/dist/internal/c4/game-definition-layout.js +4 -0
  344. package/dist/internal/c4/game-definition-layout.js.map +1 -1
  345. package/dist/internal/c4/game.d.ts +122 -32
  346. package/dist/internal/c4/game.d.ts.map +1 -1
  347. package/dist/internal/c4/game.js +229 -130
  348. package/dist/internal/c4/game.js.map +1 -1
  349. package/dist/internal/c4/identity.d.ts +3 -152
  350. package/dist/internal/c4/identity.d.ts.map +1 -1
  351. package/dist/internal/c4/identity.js +19 -126
  352. package/dist/internal/c4/identity.js.map +1 -1
  353. package/dist/internal/c4/local-market-order.d.ts +29 -0
  354. package/dist/internal/c4/local-market-order.d.ts.map +1 -0
  355. package/dist/internal/c4/local-market-order.js +46 -0
  356. package/dist/internal/c4/local-market-order.js.map +1 -0
  357. package/dist/internal/c4/loot-layout.js +1 -1
  358. package/dist/internal/c4/loot-layout.js.map +1 -1
  359. package/dist/internal/c4/loot.d.ts +89 -0
  360. package/dist/internal/c4/loot.d.ts.map +1 -0
  361. package/dist/internal/c4/loot.js +109 -0
  362. package/dist/internal/c4/loot.js.map +1 -0
  363. package/dist/internal/c4/loyalty.d.ts +7 -30
  364. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  365. package/dist/internal/c4/loyalty.js +41 -163
  366. package/dist/internal/c4/loyalty.js.map +1 -1
  367. package/dist/internal/c4/market-storage.d.ts +25 -0
  368. package/dist/internal/c4/market-storage.d.ts.map +1 -0
  369. package/dist/internal/c4/market-storage.js +53 -0
  370. package/dist/internal/c4/market-storage.js.map +1 -0
  371. package/dist/internal/c4/market.d.ts +5 -38
  372. package/dist/internal/c4/market.d.ts.map +1 -1
  373. package/dist/internal/c4/market.js +26 -120
  374. package/dist/internal/c4/market.js.map +1 -1
  375. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  376. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  377. package/dist/internal/c4/mining-instructions.js +3 -0
  378. package/dist/internal/c4/mining-instructions.js.map +1 -0
  379. package/dist/internal/c4/open-signal.d.ts +8 -0
  380. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  381. package/dist/internal/c4/open-signal.js +37 -0
  382. package/dist/internal/c4/open-signal.js.map +1 -0
  383. package/dist/internal/c4/pda.d.ts +49 -1
  384. package/dist/internal/c4/pda.d.ts.map +1 -1
  385. package/dist/internal/c4/pda.js +122 -17
  386. package/dist/internal/c4/pda.js.map +1 -1
  387. package/dist/internal/c4/profile-faction.d.ts +2 -1
  388. package/dist/internal/c4/profile-faction.d.ts.map +1 -1
  389. package/dist/internal/c4/profile-faction.js +36 -72
  390. package/dist/internal/c4/profile-faction.js.map +1 -1
  391. package/dist/internal/c4/profile-permissions.d.ts +1 -1
  392. package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
  393. package/dist/internal/c4/profile-permissions.js +17 -1
  394. package/dist/internal/c4/profile-permissions.js.map +1 -1
  395. package/dist/internal/c4/region-geometry.d.ts +8 -0
  396. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  397. package/dist/internal/c4/region-geometry.js +43 -0
  398. package/dist/internal/c4/region-geometry.js.map +1 -0
  399. package/dist/internal/c4/rewards.d.ts +1 -61
  400. package/dist/internal/c4/rewards.d.ts.map +1 -1
  401. package/dist/internal/c4/rewards.js +23 -203
  402. package/dist/internal/c4/rewards.js.map +1 -1
  403. package/dist/internal/c4/runtime-bindings.d.ts +4 -0
  404. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  405. package/dist/internal/c4/runtime-bindings.js +4 -0
  406. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  407. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  408. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  409. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  410. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  411. package/dist/internal/c4/scan-lifecycle.d.ts +324 -0
  412. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  413. package/dist/internal/c4/scan-lifecycle.js +249 -0
  414. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  415. package/dist/internal/c4/scan-storage.d.ts +7 -0
  416. package/dist/internal/c4/scan-storage.d.ts.map +1 -0
  417. package/dist/internal/c4/scan-storage.js +10 -0
  418. package/dist/internal/c4/scan-storage.js.map +1 -0
  419. package/dist/internal/c4/scanning.d.ts +4 -41
  420. package/dist/internal/c4/scanning.d.ts.map +1 -1
  421. package/dist/internal/c4/scanning.js +27 -108
  422. package/dist/internal/c4/scanning.js.map +1 -1
  423. package/dist/internal/c4/ship-import.d.ts +4 -0
  424. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  425. package/dist/internal/c4/ship-import.js +13 -0
  426. package/dist/internal/c4/ship-import.js.map +1 -0
  427. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  428. package/dist/internal/c4/ship-stats.js +46 -44
  429. package/dist/internal/c4/ship-stats.js.map +1 -1
  430. package/dist/internal/c4/starbase.d.ts +0 -32
  431. package/dist/internal/c4/starbase.d.ts.map +1 -1
  432. package/dist/internal/c4/starbase.js +26 -136
  433. package/dist/internal/c4/starbase.js.map +1 -1
  434. package/dist/internal/c4/stimulant.d.ts +26 -0
  435. package/dist/internal/c4/stimulant.d.ts.map +1 -0
  436. package/dist/internal/c4/stimulant.js +36 -0
  437. package/dist/internal/c4/stimulant.js.map +1 -0
  438. package/dist/internal/c4/wallet-cargo-cache.js +2 -1
  439. package/dist/internal/c4/wallet-cargo-cache.js.map +1 -1
  440. package/dist/internal/c4/world.d.ts +40 -7
  441. package/dist/internal/c4/world.d.ts.map +1 -1
  442. package/dist/internal/c4/world.js +87 -129
  443. package/dist/internal/c4/world.js.map +1 -1
  444. package/dist/internal/cargo.d.ts +2 -0
  445. package/dist/internal/cargo.d.ts.map +1 -1
  446. package/dist/internal/cargo.js +8 -0
  447. package/dist/internal/cargo.js.map +1 -1
  448. package/dist/internal/fleet-route.d.ts +12 -0
  449. package/dist/internal/fleet-route.d.ts.map +1 -0
  450. package/dist/internal/fleet-route.js +11 -0
  451. package/dist/internal/fleet-route.js.map +1 -0
  452. package/dist/internal/fleet.d.ts +3 -2
  453. package/dist/internal/fleet.d.ts.map +1 -1
  454. package/dist/internal/fleet.js +3 -5
  455. package/dist/internal/fleet.js.map +1 -1
  456. package/dist/internal/loyalty-atlas-bank-state.d.ts +17 -0
  457. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  458. package/dist/internal/loyalty-atlas-bank-state.js +11 -0
  459. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  460. package/dist/internal/planning/account-state.d.ts +6 -0
  461. package/dist/internal/planning/account-state.d.ts.map +1 -1
  462. package/dist/internal/planning/account-state.js +13 -0
  463. package/dist/internal/planning/account-state.js.map +1 -1
  464. package/dist/internal/planning/action-runtime.d.ts +38 -0
  465. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  466. package/dist/internal/planning/action-runtime.js +63 -0
  467. package/dist/internal/planning/action-runtime.js.map +1 -0
  468. package/dist/internal/planning/arrival-guards.d.ts +19 -0
  469. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  470. package/dist/internal/planning/arrival-guards.js +172 -0
  471. package/dist/internal/planning/arrival-guards.js.map +1 -0
  472. package/dist/internal/planning/authorization-adapter.d.ts +61 -39
  473. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  474. package/dist/internal/planning/authorization-adapter.js +219 -83
  475. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  476. package/dist/internal/planning/cargo-storage-actions.d.ts +8 -0
  477. package/dist/internal/planning/cargo-storage-actions.d.ts.map +1 -0
  478. package/dist/internal/planning/cargo-storage-actions.js +97 -0
  479. package/dist/internal/planning/cargo-storage-actions.js.map +1 -0
  480. package/dist/internal/planning/character-access.d.ts +28 -0
  481. package/dist/internal/planning/character-access.d.ts.map +1 -0
  482. package/dist/internal/planning/character-access.js +41 -0
  483. package/dist/internal/planning/character-access.js.map +1 -0
  484. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  485. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  486. package/dist/internal/planning/character-registration-guard.js +59 -0
  487. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  488. package/dist/internal/planning/character-registration.d.ts +23 -0
  489. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  490. package/dist/internal/planning/character-registration.js +87 -0
  491. package/dist/internal/planning/character-registration.js.map +1 -0
  492. package/dist/internal/planning/claim-stake-storage-actions.d.ts +12 -0
  493. package/dist/internal/planning/claim-stake-storage-actions.d.ts.map +1 -0
  494. package/dist/internal/planning/claim-stake-storage-actions.js +63 -0
  495. package/dist/internal/planning/claim-stake-storage-actions.js.map +1 -0
  496. package/dist/internal/planning/combat-storage-actions.d.ts +9 -0
  497. package/dist/internal/planning/combat-storage-actions.d.ts.map +1 -0
  498. package/dist/internal/planning/combat-storage-actions.js +55 -0
  499. package/dist/internal/planning/combat-storage-actions.js.map +1 -0
  500. package/dist/internal/planning/crafting-storage-actions.d.ts +7 -0
  501. package/dist/internal/planning/crafting-storage-actions.d.ts.map +1 -0
  502. package/dist/internal/planning/crafting-storage-actions.js +64 -0
  503. package/dist/internal/planning/crafting-storage-actions.js.map +1 -0
  504. package/dist/internal/planning/currency-cache-guard.d.ts +6 -0
  505. package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -0
  506. package/dist/internal/planning/currency-cache-guard.js +77 -0
  507. package/dist/internal/planning/currency-cache-guard.js.map +1 -0
  508. package/dist/internal/planning/democracy-history.d.ts +50 -0
  509. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  510. package/dist/internal/planning/democracy-history.js +189 -0
  511. package/dist/internal/planning/democracy-history.js.map +1 -0
  512. package/dist/internal/planning/direct-options.d.ts +17 -0
  513. package/dist/internal/planning/direct-options.d.ts.map +1 -0
  514. package/dist/internal/planning/direct-options.js +43 -0
  515. package/dist/internal/planning/direct-options.js.map +1 -0
  516. package/dist/internal/planning/disband-storage-actions.d.ts +9 -0
  517. package/dist/internal/planning/disband-storage-actions.d.ts.map +1 -0
  518. package/dist/internal/planning/disband-storage-actions.js +24 -0
  519. package/dist/internal/planning/disband-storage-actions.js.map +1 -0
  520. package/dist/internal/planning/faction-enrollment.d.ts +0 -4
  521. package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
  522. package/dist/internal/planning/faction-enrollment.js +1 -31
  523. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  524. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  525. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  526. package/dist/internal/planning/faction-trade-guards.js +15 -0
  527. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  528. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  529. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  530. package/dist/internal/planning/faction-trade-state.js +43 -0
  531. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  532. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  533. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  534. package/dist/internal/planning/fleet-arrival.js +107 -0
  535. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  536. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  537. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  538. package/dist/internal/planning/fleet-attack-xp.js +104 -0
  539. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  540. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  541. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  542. package/dist/internal/planning/fleet-creation.js +89 -0
  543. package/dist/internal/planning/fleet-creation.js.map +1 -0
  544. package/dist/internal/planning/fleet-crew-guard.d.ts +29 -0
  545. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  546. package/dist/internal/planning/fleet-crew-guard.js +48 -0
  547. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  548. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  549. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  550. package/dist/internal/planning/fleet-crew-transfer.js +152 -0
  551. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  552. package/dist/internal/planning/fleet-disband-guard.d.ts +12 -0
  553. package/dist/internal/planning/fleet-disband-guard.d.ts.map +1 -0
  554. package/dist/internal/planning/fleet-disband-guard.js +54 -0
  555. package/dist/internal/planning/fleet-disband-guard.js.map +1 -0
  556. package/dist/internal/planning/fleet-disband.d.ts +36 -0
  557. package/dist/internal/planning/fleet-disband.d.ts.map +1 -0
  558. package/dist/internal/planning/fleet-disband.js +82 -0
  559. package/dist/internal/planning/fleet-disband.js.map +1 -0
  560. package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
  561. package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
  562. package/dist/internal/planning/fleet-dock-funding-guard.js +216 -0
  563. package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
  564. package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
  565. package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
  566. package/dist/internal/planning/fleet-dock-funding.js +164 -0
  567. package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
  568. package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
  569. package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
  570. package/dist/internal/planning/fleet-docking-guard.js +44 -0
  571. package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
  572. package/dist/internal/planning/fleet-docking.d.ts +25 -0
  573. package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
  574. package/dist/internal/planning/fleet-docking.js +106 -0
  575. package/dist/internal/planning/fleet-docking.js.map +1 -0
  576. package/dist/internal/planning/fleet-rental.d.ts +5 -0
  577. package/dist/internal/planning/fleet-rental.d.ts.map +1 -0
  578. package/dist/internal/planning/fleet-rental.js +9 -0
  579. package/dist/internal/planning/fleet-rental.js.map +1 -0
  580. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  581. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  582. package/dist/internal/planning/fleet-respawn.js +164 -0
  583. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  584. package/dist/internal/planning/fleet-ship-assembly.d.ts +38 -0
  585. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  586. package/dist/internal/planning/fleet-ship-assembly.js +167 -0
  587. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  588. package/dist/internal/planning/fleet-state.d.ts +25 -0
  589. package/dist/internal/planning/fleet-state.d.ts.map +1 -0
  590. package/dist/internal/planning/fleet-state.js +28 -0
  591. package/dist/internal/planning/fleet-state.js.map +1 -0
  592. package/dist/internal/planning/governance-fees.d.ts +64 -0
  593. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  594. package/dist/internal/planning/governance-fees.js +231 -0
  595. package/dist/internal/planning/governance-fees.js.map +1 -0
  596. package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
  597. package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
  598. package/dist/internal/planning/local-market-order-funding.js +128 -0
  599. package/dist/internal/planning/local-market-order-funding.js.map +1 -0
  600. package/dist/internal/planning/local-market-order.d.ts +40 -0
  601. package/dist/internal/planning/local-market-order.d.ts.map +1 -0
  602. package/dist/internal/planning/local-market-order.js +139 -0
  603. package/dist/internal/planning/local-market-order.js.map +1 -0
  604. package/dist/internal/planning/market-storage-actions.d.ts +7 -0
  605. package/dist/internal/planning/market-storage-actions.d.ts.map +1 -0
  606. package/dist/internal/planning/market-storage-actions.js +71 -0
  607. package/dist/internal/planning/market-storage-actions.js.map +1 -0
  608. package/dist/internal/planning/mining-stop.d.ts +14 -0
  609. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  610. package/dist/internal/planning/mining-stop.js +42 -0
  611. package/dist/internal/planning/mining-stop.js.map +1 -0
  612. package/dist/internal/planning/mining-storage-actions.d.ts +11 -0
  613. package/dist/internal/planning/mining-storage-actions.d.ts.map +1 -0
  614. package/dist/internal/planning/mining-storage-actions.js +57 -0
  615. package/dist/internal/planning/mining-storage-actions.js.map +1 -0
  616. package/dist/internal/planning/movement-storage-actions.d.ts +7 -0
  617. package/dist/internal/planning/movement-storage-actions.d.ts.map +1 -0
  618. package/dist/internal/planning/movement-storage-actions.js +38 -0
  619. package/dist/internal/planning/movement-storage-actions.js.map +1 -0
  620. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  621. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  622. package/dist/internal/planning/movement-xp-guard.js +104 -0
  623. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  624. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  625. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  626. package/dist/internal/planning/open-signal-guard.js +32 -0
  627. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  628. package/dist/internal/planning/open-signal.d.ts +31 -0
  629. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  630. package/dist/internal/planning/open-signal.js +94 -0
  631. package/dist/internal/planning/open-signal.js.map +1 -0
  632. package/dist/internal/planning/original-token.d.ts +40 -0
  633. package/dist/internal/planning/original-token.d.ts.map +1 -0
  634. package/dist/internal/planning/original-token.js +112 -0
  635. package/dist/internal/planning/original-token.js.map +1 -0
  636. package/dist/internal/planning/own-starbase-facts.d.ts +37 -0
  637. package/dist/internal/planning/own-starbase-facts.d.ts.map +1 -0
  638. package/dist/internal/planning/own-starbase-facts.js +52 -0
  639. package/dist/internal/planning/own-starbase-facts.js.map +1 -0
  640. package/dist/internal/planning/plan-fields.d.ts +60 -0
  641. package/dist/internal/planning/plan-fields.d.ts.map +1 -0
  642. package/dist/internal/planning/plan-fields.js +159 -0
  643. package/dist/internal/planning/plan-fields.js.map +1 -0
  644. package/dist/internal/planning/plan-guards.d.ts +4 -0
  645. package/dist/internal/planning/plan-guards.d.ts.map +1 -0
  646. package/dist/internal/planning/plan-guards.js +184 -0
  647. package/dist/internal/planning/plan-guards.js.map +1 -0
  648. package/dist/internal/planning/profile-key.d.ts +13 -0
  649. package/dist/internal/planning/profile-key.d.ts.map +1 -0
  650. package/dist/internal/planning/profile-key.js +20 -0
  651. package/dist/internal/planning/profile-key.js.map +1 -0
  652. package/dist/internal/planning/profile-storage-funding-guard.d.ts +29 -0
  653. package/dist/internal/planning/profile-storage-funding-guard.d.ts.map +1 -0
  654. package/dist/internal/planning/profile-storage-funding-guard.js +115 -0
  655. package/dist/internal/planning/profile-storage-funding-guard.js.map +1 -0
  656. package/dist/internal/planning/profile-storage-funding.d.ts +46 -0
  657. package/dist/internal/planning/profile-storage-funding.d.ts.map +1 -0
  658. package/dist/internal/planning/profile-storage-funding.js +58 -0
  659. package/dist/internal/planning/profile-storage-funding.js.map +1 -0
  660. package/dist/internal/planning/recipe-state.d.ts +9 -0
  661. package/dist/internal/planning/recipe-state.d.ts.map +1 -0
  662. package/dist/internal/planning/recipe-state.js +23 -0
  663. package/dist/internal/planning/recipe-state.js.map +1 -0
  664. package/dist/internal/planning/region-access.d.ts +30 -0
  665. package/dist/internal/planning/region-access.d.ts.map +1 -0
  666. package/dist/internal/planning/region-access.js +94 -0
  667. package/dist/internal/planning/region-access.js.map +1 -0
  668. package/dist/internal/planning/rent-catalog.d.ts +37 -0
  669. package/dist/internal/planning/rent-catalog.d.ts.map +1 -0
  670. package/dist/internal/planning/rent-catalog.js +165 -0
  671. package/dist/internal/planning/rent-catalog.js.map +1 -0
  672. package/dist/internal/planning/rent.d.ts +19 -0
  673. package/dist/internal/planning/rent.d.ts.map +1 -0
  674. package/dist/internal/planning/rent.js +35 -0
  675. package/dist/internal/planning/rent.js.map +1 -0
  676. package/dist/internal/planning/research-unlock.d.ts +69 -0
  677. package/dist/internal/planning/research-unlock.d.ts.map +1 -0
  678. package/dist/internal/planning/research-unlock.js +287 -0
  679. package/dist/internal/planning/research-unlock.js.map +1 -0
  680. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  681. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  682. package/dist/internal/planning/respawn-guards.js +42 -0
  683. package/dist/internal/planning/respawn-guards.js.map +1 -0
  684. package/dist/internal/planning/runtime-guards.d.ts +41 -0
  685. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  686. package/dist/internal/planning/runtime-guards.js +658 -0
  687. package/dist/internal/planning/runtime-guards.js.map +1 -0
  688. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  689. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  690. package/dist/internal/planning/scan-completion-guard.js +95 -0
  691. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  692. package/dist/internal/planning/scan-completion.d.ts +20 -0
  693. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  694. package/dist/internal/planning/scan-completion.js +198 -0
  695. package/dist/internal/planning/scan-completion.js.map +1 -0
  696. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  697. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  698. package/dist/internal/planning/scan-detect-guard.js +77 -0
  699. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  700. package/dist/internal/planning/scan-detect.d.ts +24 -0
  701. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  702. package/dist/internal/planning/scan-detect.js +246 -0
  703. package/dist/internal/planning/scan-detect.js.map +1 -0
  704. package/dist/internal/planning/scan-idle-scope.d.ts +5 -0
  705. package/dist/internal/planning/scan-idle-scope.d.ts.map +1 -0
  706. package/dist/internal/planning/scan-idle-scope.js +5 -0
  707. package/dist/internal/planning/scan-idle-scope.js.map +1 -0
  708. package/dist/internal/planning/scan-input.d.ts +9 -0
  709. package/dist/internal/planning/scan-input.d.ts.map +1 -0
  710. package/dist/internal/planning/scan-input.js +58 -0
  711. package/dist/internal/planning/scan-input.js.map +1 -0
  712. package/dist/internal/planning/scan-storage-actions.d.ts +9 -0
  713. package/dist/internal/planning/scan-storage-actions.d.ts.map +1 -0
  714. package/dist/internal/planning/scan-storage-actions.js +27 -0
  715. package/dist/internal/planning/scan-storage-actions.js.map +1 -0
  716. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  717. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  718. package/dist/internal/planning/ship-import-funding.js +53 -0
  719. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  720. package/dist/internal/planning/ship-token.d.ts +1 -6
  721. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  722. package/dist/internal/planning/ship-token.js +0 -37
  723. package/dist/internal/planning/ship-token.js.map +1 -1
  724. package/dist/internal/planning/starbase-player-owner.d.ts +21 -0
  725. package/dist/internal/planning/starbase-player-owner.d.ts.map +1 -0
  726. package/dist/internal/planning/starbase-player-owner.js +17 -0
  727. package/dist/internal/planning/starbase-player-owner.js.map +1 -0
  728. package/dist/internal/planning/starbase-player-recovery-guard.d.ts +7 -0
  729. package/dist/internal/planning/starbase-player-recovery-guard.d.ts.map +1 -0
  730. package/dist/internal/planning/starbase-player-recovery-guard.js +39 -0
  731. package/dist/internal/planning/starbase-player-recovery-guard.js.map +1 -0
  732. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  733. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  734. package/dist/internal/planning/starbase-system-guard.js +94 -0
  735. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  736. package/dist/internal/planning/starbase-system.d.ts +15 -0
  737. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  738. package/dist/internal/planning/starbase-system.js +25 -0
  739. package/dist/internal/planning/starbase-system.js.map +1 -0
  740. package/dist/internal/planning/storage-action-readers.d.ts +10 -0
  741. package/dist/internal/planning/storage-action-readers.d.ts.map +1 -0
  742. package/dist/internal/planning/storage-action-readers.js +58 -0
  743. package/dist/internal/planning/storage-action-readers.js.map +1 -0
  744. package/dist/internal/planning/storage-actions.d.ts +89 -0
  745. package/dist/internal/planning/storage-actions.d.ts.map +1 -0
  746. package/dist/internal/planning/storage-actions.js +183 -0
  747. package/dist/internal/planning/storage-actions.js.map +1 -0
  748. package/dist/internal/planning/token-mint.d.ts.map +1 -1
  749. package/dist/internal/planning/token-mint.js +2 -1
  750. package/dist/internal/planning/token-mint.js.map +1 -1
  751. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  752. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  753. package/dist/internal/planning/trade-faction-market.js +56 -0
  754. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  755. package/dist/internal/planning/wallet-starbase.d.ts +34 -0
  756. package/dist/internal/planning/wallet-starbase.d.ts.map +1 -0
  757. package/dist/internal/planning/wallet-starbase.js +39 -0
  758. package/dist/internal/planning/wallet-starbase.js.map +1 -0
  759. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  760. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  761. package/dist/internal/planning/xp-runtime.js +122 -0
  762. package/dist/internal/planning/xp-runtime.js.map +1 -0
  763. package/dist/internal/read-meta.d.ts +12 -0
  764. package/dist/internal/read-meta.d.ts.map +1 -1
  765. package/dist/internal/read-meta.js +10 -0
  766. package/dist/internal/read-meta.js.map +1 -1
  767. package/dist/internal/system-program.d.ts +4 -0
  768. package/dist/internal/system-program.d.ts.map +1 -0
  769. package/dist/internal/system-program.js +3 -0
  770. package/dist/internal/system-program.js.map +1 -0
  771. package/dist/loyalty/actions/index.d.ts +1 -1
  772. package/dist/loyalty/actions/index.d.ts.map +1 -1
  773. package/dist/loyalty/actions/index.js +16 -46
  774. package/dist/loyalty/actions/index.js.map +1 -1
  775. package/dist/loyalty/index.d.ts +4 -0
  776. package/dist/loyalty/index.d.ts.map +1 -1
  777. package/dist/loyalty/index.js +21 -33
  778. package/dist/loyalty/index.js.map +1 -1
  779. package/dist/markets/actions/index.d.ts +62 -4
  780. package/dist/markets/actions/index.d.ts.map +1 -1
  781. package/dist/markets/actions/index.js +261 -187
  782. package/dist/markets/actions/index.js.map +1 -1
  783. package/dist/markets/actions/trade-faction-market.d.ts +45 -0
  784. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  785. package/dist/markets/actions/trade-faction-market.js +311 -0
  786. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  787. package/dist/markets/index.d.ts +38 -7
  788. package/dist/markets/index.d.ts.map +1 -1
  789. package/dist/markets/index.js +59 -20
  790. package/dist/markets/index.js.map +1 -1
  791. package/dist/mining/actions/index.d.ts +18 -15
  792. package/dist/mining/actions/index.d.ts.map +1 -1
  793. package/dist/mining/actions/index.js +146 -69
  794. package/dist/mining/actions/index.js.map +1 -1
  795. package/dist/mining/estimate-input.d.ts +103 -0
  796. package/dist/mining/estimate-input.d.ts.map +1 -0
  797. package/dist/mining/estimate-input.js +86 -0
  798. package/dist/mining/estimate-input.js.map +1 -0
  799. package/dist/mining/estimate.d.ts +114 -0
  800. package/dist/mining/estimate.d.ts.map +1 -0
  801. package/dist/mining/estimate.js +127 -0
  802. package/dist/mining/estimate.js.map +1 -0
  803. package/dist/mining/index.d.ts +10 -2
  804. package/dist/mining/index.d.ts.map +1 -1
  805. package/dist/mining/index.js +11 -13
  806. package/dist/mining/index.js.map +1 -1
  807. package/dist/mining/profile.d.ts +82 -0
  808. package/dist/mining/profile.d.ts.map +1 -0
  809. package/dist/mining/profile.js +109 -0
  810. package/dist/mining/profile.js.map +1 -0
  811. package/dist/planning/assembly.d.ts +6 -1
  812. package/dist/planning/assembly.d.ts.map +1 -1
  813. package/dist/planning/assembly.js +12 -8
  814. package/dist/planning/assembly.js.map +1 -1
  815. package/dist/planning/execution.d.ts +19 -3
  816. package/dist/planning/execution.d.ts.map +1 -1
  817. package/dist/planning/execution.js +623 -72
  818. package/dist/planning/execution.js.map +1 -1
  819. package/dist/planning/index.d.ts +252 -165
  820. package/dist/planning/index.d.ts.map +1 -1
  821. package/dist/planning/index.js +31 -388
  822. package/dist/planning/index.js.map +1 -1
  823. package/dist/planning/plan-construction.d.ts +25 -0
  824. package/dist/planning/plan-construction.d.ts.map +1 -0
  825. package/dist/planning/plan-construction.js +143 -0
  826. package/dist/planning/plan-construction.js.map +1 -0
  827. package/dist/planning/plan-sequence-checkpoint.d.ts +9 -0
  828. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -1
  829. package/dist/planning/plan-sequence-checkpoint.js +16 -7
  830. package/dist/planning/plan-sequence-checkpoint.js.map +1 -1
  831. package/dist/planning/plan-sequence-execution.d.ts +5 -0
  832. package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
  833. package/dist/planning/plan-sequence-execution.js +74 -40
  834. package/dist/planning/plan-sequence-execution.js.map +1 -1
  835. package/dist/planning/plan-sequence.d.ts +2 -1
  836. package/dist/planning/plan-sequence.d.ts.map +1 -1
  837. package/dist/planning/plan-sequence.js +8 -1
  838. package/dist/planning/plan-sequence.js.map +1 -1
  839. package/dist/planning/plan-validation.d.ts +17 -0
  840. package/dist/planning/plan-validation.d.ts.map +1 -0
  841. package/dist/planning/plan-validation.js +147 -0
  842. package/dist/planning/plan-validation.js.map +1 -0
  843. package/dist/planning/simulation.d.ts +25 -1
  844. package/dist/planning/simulation.d.ts.map +1 -1
  845. package/dist/planning/simulation.js +111 -11
  846. package/dist/planning/simulation.js.map +1 -1
  847. package/dist/registry/cargo.d.ts +7 -12
  848. package/dist/registry/cargo.d.ts.map +1 -1
  849. package/dist/registry/cargo.js +19 -20
  850. package/dist/registry/cargo.js.map +1 -1
  851. package/dist/registry/definition-section-snapshot.d.ts +1 -1
  852. package/dist/registry/definition-section-snapshot.d.ts.map +1 -1
  853. package/dist/registry/definition-section-snapshot.js +10 -3
  854. package/dist/registry/definition-section-snapshot.js.map +1 -1
  855. package/dist/registry/docking.d.ts +10 -0
  856. package/dist/registry/docking.d.ts.map +1 -0
  857. package/dist/registry/docking.js +12 -0
  858. package/dist/registry/docking.js.map +1 -0
  859. package/dist/registry/index.d.ts +35 -4
  860. package/dist/registry/index.d.ts.map +1 -1
  861. package/dist/registry/index.js +226 -227
  862. package/dist/registry/index.js.map +1 -1
  863. package/dist/registry/onboarding.d.ts +10 -2
  864. package/dist/registry/onboarding.d.ts.map +1 -1
  865. package/dist/registry/onboarding.js +22 -7
  866. package/dist/registry/onboarding.js.map +1 -1
  867. package/dist/registry/scanning.d.ts +7 -0
  868. package/dist/registry/scanning.d.ts.map +1 -0
  869. package/dist/registry/scanning.js +13 -0
  870. package/dist/registry/scanning.js.map +1 -0
  871. package/dist/registry/ship-stats-snapshot.d.ts.map +1 -1
  872. package/dist/registry/ship-stats-snapshot.js +38 -24
  873. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  874. package/dist/registry/ships.d.ts +22 -2
  875. package/dist/registry/ships.d.ts.map +1 -1
  876. package/dist/registry/ships.js +31 -4
  877. package/dist/registry/ships.js.map +1 -1
  878. package/dist/registry/xp-runtime.d.ts +4 -0
  879. package/dist/registry/xp-runtime.d.ts.map +1 -0
  880. package/dist/registry/xp-runtime.js +14 -0
  881. package/dist/registry/xp-runtime.js.map +1 -0
  882. package/dist/rewards/index.d.ts +11 -5
  883. package/dist/rewards/index.d.ts.map +1 -1
  884. package/dist/rewards/index.js +10 -21
  885. package/dist/rewards/index.js.map +1 -1
  886. package/dist/scanning/actions/index.d.ts +116 -0
  887. package/dist/scanning/actions/index.d.ts.map +1 -0
  888. package/dist/scanning/actions/index.js +215 -0
  889. package/dist/scanning/actions/index.js.map +1 -0
  890. package/dist/scanning/index.d.ts +10 -12
  891. package/dist/scanning/index.d.ts.map +1 -1
  892. package/dist/scanning/index.js +19 -23
  893. package/dist/scanning/index.js.map +1 -1
  894. package/dist/scanning/lifecycle.d.ts +77 -0
  895. package/dist/scanning/lifecycle.d.ts.map +1 -0
  896. package/dist/scanning/lifecycle.js +93 -0
  897. package/dist/scanning/lifecycle.js.map +1 -0
  898. package/dist/scanning/odds.d.ts +115 -0
  899. package/dist/scanning/odds.d.ts.map +1 -0
  900. package/dist/scanning/odds.js +294 -0
  901. package/dist/scanning/odds.js.map +1 -0
  902. package/dist/scanning/signals.d.ts +126 -0
  903. package/dist/scanning/signals.d.ts.map +1 -0
  904. package/dist/scanning/signals.js +173 -0
  905. package/dist/scanning/signals.js.map +1 -0
  906. package/dist/starbases/actions/index.d.ts +49 -4
  907. package/dist/starbases/actions/index.d.ts.map +1 -1
  908. package/dist/starbases/actions/index.js +120 -69
  909. package/dist/starbases/actions/index.js.map +1 -1
  910. package/dist/starbases/index.d.ts +18 -0
  911. package/dist/starbases/index.d.ts.map +1 -1
  912. package/dist/starbases/index.js +24 -11
  913. package/dist/starbases/index.js.map +1 -1
  914. package/dist/world/index.d.ts +185 -6
  915. package/dist/world/index.d.ts.map +1 -1
  916. package/dist/world/index.js +186 -15
  917. package/dist/world/index.js.map +1 -1
  918. package/dist/world/planet-claim-stake-plots.d.ts +139 -0
  919. package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
  920. package/dist/world/planet-claim-stake-plots.js +117 -0
  921. package/dist/world/planet-claim-stake-plots.js.map +1 -0
  922. package/dist/world/starbase-status.d.ts +217 -0
  923. package/dist/world/starbase-status.d.ts.map +1 -0
  924. package/dist/world/starbase-status.js +218 -0
  925. package/dist/world/starbase-status.js.map +1 -0
  926. package/package.json +6 -2
@@ -1,13 +1,48 @@
1
+ import { validateCurrencyCache } from '../internal/c4/currency-cache.js';
2
+ import { revalidateDockFunding } from '../internal/planning/fleet-dock-funding.js';
3
+ import { decodeDockingSequences } from '../registry/docking.js';
4
+ import { revalidateMarketOrder, marketOrderFundingAddresses, } from '../internal/planning/local-market-order-funding.js';
5
+ import { resolveFleetCrewTransfer } from '../internal/planning/fleet-crew-transfer.js';
6
+ import { revalidateScanCompletion } from '../internal/planning/scan-completion.js';
7
+ import { openSignalAddresses, validateOpenSignal, } from '../internal/planning/open-signal.js';
8
+ import { revalidateDetect } from '../internal/planning/scan-detect.js';
9
+ import { resolveFleetRespawn } from '../internal/planning/fleet-respawn.js';
10
+ import { validateFleetAttackActors } from '../internal/planning/fleet-attack-xp.js';
11
+ import { RENT_ADDRESS, readRent } from '../internal/planning/rent.js';
12
+ import { getBase64Decoder, } from '@solana/kit';
13
+ import { hashCharacterAccess } from '../internal/planning/character-access.js';
14
+ import { validateFleetDockingPolicy } from '../internal/planning/fleet-docking.js';
15
+ import { validateStarbaseSystem } from '../internal/planning/starbase-system.js';
16
+ import { fleetActionCoordinate, hashRegionAccess, hashRegionPath, } from '../internal/planning/region-access.js';
17
+ import { revalidateCharacterRegistration, isEmptySystemAccount, } from '../internal/planning/character-registration.js';
18
+ import { validateFleetArrivalIntent } from '../internal/planning/fleet-arrival.js';
19
+ import { isRuntimeGuard, revalidateRuntimeGuards, } from '../internal/planning/runtime-guards.js';
20
+ import { isFactionTradeGuard } from '../internal/planning/faction-trade-guards.js';
21
+ import { resolveShipImportFunding, validateShipImportFunding, } from '../internal/planning/ship-import-funding.js';
22
+ import { matchesFleetMiningState } from '../internal/planning/mining-stop.js';
23
+ import { requireGameAddress } from '../internal/game-context.js';
24
+ import { matchesFactionTradeState } from '../internal/planning/faction-trade-state.js';
25
+ import { resolveFleetShipAssembly, validateFleetShipAssembly, } from '../internal/planning/fleet-ship-assembly.js';
26
+ import { resolveFleetCreation, validateFleetCreation, } from '../internal/planning/fleet-creation.js';
1
27
  import { validateTokenMint } from '../internal/planning/token-mint.js';
2
- import { hashGameShipConfigurations } from '../registry/ships.js';
28
+ import { resolveResearchUnlock, validateResearchUnlock, } from '../internal/planning/research-unlock.js';
29
+ import { storageSteps, validateStorageFunding, } from '../internal/planning/storage-actions.js';
30
+ import { readStorageAction, storageActionAccounts, } from '../internal/planning/storage-action-readers.js';
31
+ import { decodeGameCargoConfigurationRows } from '../internal/c4/game.js';
32
+ import { CLOCK_ADDRESS } from '../internal/planning/faction-enrollment.js';
33
+ import { decodeGameResearchUnlockRules } from '../internal/c4/game.js';
34
+ import { hashGameShipConfigurations, decodeGameShipAssemblyCatalog, } from '../registry/ships.js';
3
35
  import { validateGameForCharacterRegistration } from '../registry/onboarding.js';
4
36
  import { hashAccountState } from '../internal/planning/account-state.js';
5
- import { hashGameCargoConfigurations } from '../registry/cargo.js';
37
+ import { hashGameCargoConfigurationGuards } from '../registry/cargo.js';
6
38
  import { validateWalletCargoCache } from '../internal/c4/wallet-cargo-cache.js';
7
- import { getAddressEncoder, getProgramDerivedAddress, getAddressDecoder, getBase58Decoder, getBase64EncodedWireTransaction, getSignatureFromTransaction, isAddress, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, signAndSendTransactionWithSigners, signTransactionWithSigners, } from '@solana/kit';
39
+ import { deriveCargoDefinitionsCacheAddress } from '../internal/c4/pda.js';
40
+ import { getBase58Decoder, getBase64EncodedWireTransaction, getSignatureFromTransaction, isAddress, isTransactionModifyingSigner, isTransactionPartialSigner, isTransactionSendingSigner, signAndSendTransactionWithSigners, signTransactionWithSigners, } from '@solana/kit';
8
41
  import { InvalidActionInputError, SageSdkError } from '../client/errors.js';
9
42
  import { invalidateContextAddresses, readContextRawAccounts, } from '../client/reconciliation.js';
10
- import { assemblePlan, validateAssemblyPolicy, validatePlanAssemblyPolicy, validatePlan, } from './assembly.js';
43
+ import { assembleValidatedPlanWithContext, requireWriteRpc, validateAssemblyPolicy, validatePlanAssemblyPolicy, validatePlan, } from './assembly.js';
44
+ import { hashRecipeConfiguration, validateRecipeUsage, } from '../internal/planning/recipe-state.js';
45
+ import { originalTokenBalance } from '../internal/planning/original-token.js';
11
46
  const DEFAULT_TIMEOUT_MS = 60_000;
12
47
  const DEFAULT_POLL_INTERVAL_MS = 500;
13
48
  const MAX_HOST_TIMER_MS = 2_147_483_647;
@@ -29,20 +64,26 @@ class SignerMismatchError extends InvalidActionInputError {
29
64
  this.unexpected = unexpected;
30
65
  }
31
66
  }
32
- class MissingWriteTransportError extends SageSdkError {
33
- constructor() {
34
- super('MISSING_WRITE_TRANSPORT', 'This SAGE context has no writeRpc transport, so it cannot execute a Plan. Pass the optional writeRpc transport when creating the context, then retry.');
35
- }
36
- }
37
- class ActionPreconditionFailedError extends SageSdkError {
67
+ export class ActionPreconditionFailedError extends SageSdkError {
38
68
  describes;
39
69
  observedSlot;
40
- constructor(precondition, observedSlot) {
41
- super('ACTION_PRECONDITION_FAILED', `The account state required by this Plan changed at ${precondition.address}: ${precondition.describes} Refresh the affected game state and create a new Plan before retrying.`, { address: precondition.address });
70
+ constructor(precondition, observedSlot, cause, address = precondition.address) {
71
+ super('ACTION_PRECONDITION_FAILED', `The account state required by this Plan changed at ${address}: ${cause ?? precondition.describes} Refresh the affected game state and create a new Plan before retrying.`, { address });
42
72
  this.describes = precondition.describes;
43
73
  this.observedSlot = observedSlot;
44
74
  }
45
75
  }
76
+ /** The cause a wrapped guard failure may carry: only a validator's own
77
+ * precondition cause and remedy for the guarded address. Adapter, provider and
78
+ * unknown failures yield `undefined`, so the wrapper falls back to the guard's
79
+ * generic description and never concatenates inner exception text. */
80
+ function guardCause(precondition, error) {
81
+ return error instanceof SageSdkError &&
82
+ error.code === 'ACTION_PRECONDITION_FAILED' &&
83
+ (error.address === undefined || error.address === precondition.address)
84
+ ? error.message
85
+ : undefined;
86
+ }
46
87
  class TransactionExpiredError extends SageSdkError {
47
88
  signature;
48
89
  lastValidBlockHeight;
@@ -268,41 +309,262 @@ function assertPlanTransactionMessage(expected, actual) {
268
309
  invalid('signers', 'modified compiled transaction message', 'signers that preserve the assembled fee payer, instructions, programs, and account roles while optionally replacing only the transaction lifetime', 'Use a signer that signs the assembled Plan without changing its message, or reassemble a new Plan for the intended transaction before retrying.');
269
310
  }
270
311
  }
271
- function readFinalLastValidBlockHeight(transaction) {
272
- if (!('lastValidBlockHeight' in transaction.lifetimeConstraint))
273
- return null;
274
- const value = transaction.lifetimeConstraint.lastValidBlockHeight;
275
- if (typeof value !== 'bigint' || value < 0n || value > MAX_U64) {
276
- invalid('signers', 'invalid final lastValidBlockHeight metadata', 'a final transaction lifetime with lastValidBlockHeight encoded as an unsigned 64-bit bigint', 'Use a signer that returns trustworthy blockhash lifetime metadata, or use an opaque sending signer whose lifetime cannot produce a definite-expiry claim.');
277
- }
278
- return value;
279
- }
280
- // Original Token Account layout: mint/authority at 0/32, initialized state at
281
- // 108, and u32 COption tags at 72/109/129. No capability decoder is imported.
312
+ /** Whether the account still is the guarded original Token account, with at
313
+ * least the guarded balance for a `token-account` guard. */
282
314
  function matchesTokenAccount(account, expected) {
283
- if (account.executable ||
284
- account.owner !== 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' ||
285
- account.data.length !== 165)
286
- return false;
287
- const bytes = new DataView(account.data.buffer, account.data.byteOffset, account.data.byteLength);
288
- if ((expected.kind === 'token-account' &&
289
- bytes.getBigUint64(64, true) < expected.minimumBalance) ||
290
- bytes.getUint8(108) !== 1 ||
291
- [72, 109, 129].some((offset) => bytes.getUint32(offset, true) > 1))
292
- return false;
293
- const decoder = getAddressDecoder();
294
- return (decoder.decode(account.data.subarray(0, 32)) === expected.mint &&
295
- decoder.decode(account.data.subarray(32, 64)) === expected.owner);
315
+ const balance = originalTokenBalance(account, expected.mint, expected.owner);
316
+ return (typeof balance === 'bigint' &&
317
+ (expected.kind !== 'token-account' || balance >= expected.minimumBalance));
318
+ }
319
+ function checkRegistrationFunding(registrations, fee) {
320
+ const balances = new Map();
321
+ for (const registration of registrations) {
322
+ const previous = balances.get(registration.funder);
323
+ if (previous === undefined || registration.observedLamports < previous)
324
+ balances.set(registration.funder, registration.observedLamports);
325
+ }
326
+ if (fee && balances.has(fee.payer))
327
+ balances.set(fee.payer, balances.get(fee.payer) - fee.lamports);
328
+ for (const registration of registrations) {
329
+ const balance = balances.get(registration.funder);
330
+ if (balance < registration.requiredLamports)
331
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Character registration funding cannot cover the ordered upfront storage and applicable transaction fee. Fund the wallet separately and recreate the Plan; a later Character refund cannot fund an earlier allocation.', { address: registration.funder });
332
+ balances.set(registration.funder, balance - registration.netDebit);
333
+ }
334
+ if (fee)
335
+ for (const registration of registrations) {
336
+ const balance = balances.get(registration.funder);
337
+ if (balance !== 0n && balance < registration.minimumBalance)
338
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Character registration leaves the funder below its empty-System-account rent minimum. Leave zero or a rent-exempt balance after storage and fees, then recreate the Plan.', { address: registration.funder });
339
+ }
296
340
  }
297
- async function checkPreconditions(context, preconditions, commitment) {
298
- const addresses = [...new Set(preconditions.map(({ address }) => address))];
341
+ async function checkPreconditions(context, allPreconditions, steps, commitment) {
342
+ for (const guard of allPreconditions) {
343
+ if (guard.kind === 'fleet-crew-transfer') {
344
+ try {
345
+ await resolveFleetCrewTransfer(context, guard, guard, commitment);
346
+ }
347
+ catch (error) {
348
+ throw new ActionPreconditionFailedError(guard, undefined, error instanceof SageSdkError
349
+ ? error.message
350
+ : 'Crew transfer prerequisites could not be verified. Refresh crew state and recreate the Plan.');
351
+ }
352
+ }
353
+ if (guard.kind === 'scan-completion')
354
+ await revalidateScanCompletion(context, guard, commitment);
355
+ if (guard.kind === 'scan-detect')
356
+ await revalidateDetect(context, guard, commitment);
357
+ if (guard.kind === 'fleet-attack') {
358
+ try {
359
+ await validateFleetAttackActors(context, guard);
360
+ }
361
+ catch (error) {
362
+ throw new ActionPreconditionFailedError(guard, undefined, guardCause(guard, error) ??
363
+ 'The attacking or defending Fleet or Character could not be verified. Refresh both Fleets and their Characters, then recreate the Plan before signing.');
364
+ }
365
+ }
366
+ }
367
+ for (const guard of allPreconditions) {
368
+ if (guard.kind !== 'fleet-respawn')
369
+ continue;
370
+ try {
371
+ const current = await resolveFleetRespawn(context, { ...guard, fleet: guard.address }, guard, commitment);
372
+ const planned = steps[0].instruction;
373
+ const fresh = current.instruction;
374
+ if (planned.programAddress !== fresh.programAddress ||
375
+ planned.data?.length !== fresh.data?.length ||
376
+ fresh.data?.some((v, i) => planned.data?.[i] !== v) ||
377
+ planned.accounts?.length !== fresh.accounts?.length ||
378
+ fresh.accounts?.some((a, i) => planned.accounts?.[i]?.address !== a.address ||
379
+ planned.accounts?.[i]?.role !== a.role))
380
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Recovery instruction accounts changed. Recreate and inspect the recovery Plan before signing.');
381
+ }
382
+ catch (error) {
383
+ throw new ActionPreconditionFailedError(guard, undefined, error instanceof SageSdkError
384
+ ? error.message
385
+ : 'Recovery prerequisites could not be validated. Refresh the Fleet and recreate the Plan.');
386
+ }
387
+ }
388
+ const checkedXp = new Set();
389
+ const freshGameVersions = new Map();
390
+ const registrationFunding = [];
391
+ const initializations = new Map();
392
+ for (const guard of allPreconditions) {
393
+ if (guard.kind !== 'character-registration')
394
+ continue;
395
+ registrationFunding.push(await revalidateCharacterRegistration(context, guard, commitment, freshGameVersions, initializations));
396
+ }
397
+ checkRegistrationFunding(registrationFunding);
398
+ for (const guard of allPreconditions) {
399
+ if (guard.kind !== 'fleet-arrival')
400
+ continue;
401
+ try {
402
+ const current = await validateFleetArrivalIntent(context, guard.intent, freshGameVersions);
403
+ for (const xp of allPreconditions) {
404
+ if (xp.kind !== 'xp-runtime' ||
405
+ xp.intent.game !== current.xp.intent.game ||
406
+ xp.intent.character !== current.xp.intent.character ||
407
+ xp.intent.structure !== current.xp.intent.structure ||
408
+ (xp.intent.profile !== undefined &&
409
+ xp.intent.profile !== current.intent.profile))
410
+ continue;
411
+ if (['xpBudget', 'xpBudgetConfig', 'xpAccrual'].some((key) => xp.accounts[key] !== current.xp.accounts[key]))
412
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Arrival XP runtime changed. Refresh the Fleet and recreate the Plan.');
413
+ checkedXp.add(xp);
414
+ }
415
+ if (current.character !== guard.character ||
416
+ current.regionTracker !== guard.regionTracker)
417
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Arrival account links changed. Refresh the Fleet and recreate the Plan.');
418
+ }
419
+ catch (error) {
420
+ throw new ActionPreconditionFailedError(guard, undefined, error instanceof SageSdkError
421
+ ? error.message
422
+ : 'Arrival prerequisites could not be validated. Refresh the Fleet and recreate the Plan.');
423
+ }
424
+ }
425
+ await revalidateRuntimeGuards(context, allPreconditions
426
+ .filter(isRuntimeGuard)
427
+ .filter((guard) => !checkedXp.has(guard)), freshGameVersions);
428
+ const preconditions = allPreconditions.filter((guard) => !isRuntimeGuard(guard) &&
429
+ guard.kind !== 'fleet-attack' &&
430
+ guard.kind !== 'fleet-arrival' &&
431
+ guard.kind !== 'character-registration' &&
432
+ guard.kind !== 'scan-detect' &&
433
+ guard.kind !== 'scan-completion' &&
434
+ guard.kind !== 'fleet-respawn' &&
435
+ guard.kind !== 'fleet-crew-transfer');
436
+ const fleetCreationAccounts = new Map();
437
+ const fleetAssemblyAccounts = new Map();
438
+ const importFundingAccounts = new Map();
439
+ const assemblyGames = new Set();
440
+ const assemblyCatalogs = new Map();
441
+ const requiredAddresses = new Set(preconditions.map(({ address }) => address));
442
+ for (const guard of preconditions) {
443
+ if (guard.kind === 'fleet-dock-funding' && guard.status === 'available') {
444
+ for (const address of [
445
+ guard.profile,
446
+ guard.starbasePlayer,
447
+ guard.system,
448
+ guard.game,
449
+ RENT_ADDRESS,
450
+ ])
451
+ requiredAddresses.add(address);
452
+ }
453
+ if (guard.kind === 'region-access')
454
+ requiredAddresses.add(guard.system);
455
+ if (guard.kind === 'region-path')
456
+ requiredAddresses.add(guard.fleet);
457
+ if (guard.kind === 'fleet-docking-policy')
458
+ for (const address of [
459
+ guard.ownership,
460
+ guard.system,
461
+ guard.starbasePlayer,
462
+ ])
463
+ requiredAddresses.add(address);
464
+ if (guard.kind === 'local-market-order' && guard.status === 'available') {
465
+ for (const address of [
466
+ guard.character,
467
+ guard.starbasePlayer,
468
+ ...marketOrderFundingAddresses(guard.profile, allPreconditions),
469
+ ])
470
+ requiredAddresses.add(address);
471
+ }
472
+ if (guard.kind === 'scan-signal-open') {
473
+ for (const address of openSignalAddresses(guard))
474
+ requiredAddresses.add(address);
475
+ }
476
+ if (guard.kind !== 'fleet-create')
477
+ continue;
478
+ const resolved = await resolveFleetCreation(guard);
479
+ if (resolved.fleet !== guard.address)
480
+ throw new ActionPreconditionFailedError(guard, undefined, 'The Fleet address does not match this Game, Profile and exact label. Recreate the Fleet creation Plan from its intended label.');
481
+ fleetCreationAccounts.set(guard, resolved);
482
+ for (const address of [
483
+ resolved.game,
484
+ resolved.profile,
485
+ resolved.system,
486
+ resolved.character,
487
+ resolved.profileFaction,
488
+ resolved.starbasePlayer,
489
+ resolved.fleet,
490
+ resolved.rent,
491
+ resolved.clock,
492
+ ])
493
+ requiredAddresses.add(address);
494
+ }
495
+ for (const guard of preconditions) {
496
+ if (guard.kind !== 'fleet-add-ship')
497
+ continue;
498
+ const resolved = await resolveFleetShipAssembly(guard);
499
+ fleetAssemblyAccounts.set(guard, resolved);
500
+ assemblyGames.add(resolved.game);
501
+ for (const address of [
502
+ resolved.game,
503
+ resolved.profile,
504
+ resolved.system,
505
+ resolved.character,
506
+ resolved.profileFaction,
507
+ resolved.starbasePlayer,
508
+ resolved.fleet,
509
+ resolved.rent,
510
+ resolved.clock,
511
+ ])
512
+ requiredAddresses.add(address);
513
+ }
514
+ for (const guard of preconditions) {
515
+ if (guard.kind !== 'research-unlock')
516
+ continue;
517
+ for (const address of [
518
+ guard.game,
519
+ guard.profile,
520
+ guard.system,
521
+ guard.starbasePlayer,
522
+ guard.currencyCache,
523
+ CLOCK_ADDRESS,
524
+ RENT_ADDRESS,
525
+ ])
526
+ requiredAddresses.add(address);
527
+ }
528
+ // Profile storage funding is rederived from each instruction and the fresh
529
+ // accounts it resizes; a deposit's cargo id comes from its source mint.
530
+ const storageActionSteps = storageSteps(steps);
531
+ for (const step of storageActionSteps) {
532
+ for (const address of [
533
+ step.instruction.accounts[step.signer + 1].address,
534
+ ...storageActionAccounts(step.kind, step.instruction),
535
+ RENT_ADDRESS,
536
+ ])
537
+ requiredAddresses.add(address);
538
+ if (step.kind === 'deposit')
539
+ requiredAddresses.add(requireGameAddress(context));
540
+ }
541
+ for (const guard of preconditions) {
542
+ if (guard.kind !== 'ship-import-funding')
543
+ continue;
544
+ let resolved;
545
+ try {
546
+ resolved = await resolveShipImportFunding(guard);
547
+ }
548
+ catch {
549
+ throw new ActionPreconditionFailedError(guard, undefined, 'The ship import target does not match its Game, Profile and System. Refresh the canonical StarbasePlayer and prepare a new import.');
550
+ }
551
+ importFundingAccounts.set(guard, resolved);
552
+ for (const address of [
553
+ resolved.profile,
554
+ resolved.character,
555
+ resolved.starbasePlayer,
556
+ resolved.rent,
557
+ ])
558
+ requiredAddresses.add(address);
559
+ }
560
+ const addresses = [...requiredAddresses];
299
561
  const accounts = await readContextRawAccounts(context, addresses, {
300
562
  commitment,
301
563
  });
302
564
  const byAddress = new Map(addresses.map((address, index) => [address, accounts[index]]));
303
565
  const cargoIdsByGame = new Map();
304
566
  for (const guard of preconditions) {
305
- if (guard.kind !== 'game-cargo-config')
567
+ if (guard.kind !== 'game-cargo-bytes-config')
306
568
  continue;
307
569
  const ids = cargoIdsByGame.get(guard.address) ?? [];
308
570
  ids.push(guard.cargoId);
@@ -320,27 +582,276 @@ async function checkPreconditions(context, preconditions, commitment) {
320
582
  // Invocation-local only: every execution attempt still reads and decodes fresh state.
321
583
  const cargoHashesByGame = new Map();
322
584
  const validatedGames = new Set();
323
- for (const precondition of preconditions) {
585
+ // One exact decode per fresh Game row, shared by every Game guard below.
586
+ const gameDecodes = new Map();
587
+ const profileFunding = new Map();
588
+ const fundedTargets = new Set();
589
+ let storageResults;
590
+ // One decoded cargo row set per Game, shared by cargo-definition guards and
591
+ // a deposit's cargo lookup.
592
+ const cargoRowsByGame = new Map();
593
+ const cargoRows = (game) => {
594
+ let rows = cargoRowsByGame.get(game.address);
595
+ if (!rows) {
596
+ rows = decodeGameCargoConfigurationRows(game, gameDecodes);
597
+ cargoRowsByGame.set(game.address, rows);
598
+ }
599
+ return rows;
600
+ };
601
+ const recordFunding = (guard, funding, target = `${guard.kind}:${guard.address}`) => {
602
+ // Repeated guards for one action are assertions, not additional debits.
603
+ // Every guard still validates its own ceiling before reaching here.
604
+ if (fundedTargets.has(target))
605
+ return;
606
+ fundedTargets.add(target);
607
+ const current = profileFunding.get(guard.profile);
608
+ profileFunding.set(guard.profile, {
609
+ debit: (current?.debit ?? 0n) + funding.profileDebit,
610
+ reserve: funding.profileReserve,
611
+ guard,
612
+ });
613
+ };
614
+ const fleetFailure = (guard, error) => {
615
+ // Only SDK diagnostics from this bounded validation batch are exposed.
616
+ // Never stringify provider/codec objects or retain their inner causes.
617
+ if (error instanceof SageSdkError &&
618
+ error.address !== undefined &&
619
+ requiredAddresses.has(error.address))
620
+ return new ActionPreconditionFailedError(guard, byAddress.get(error.address)?.slot, error.message, error.address);
621
+ return new ActionPreconditionFailedError(guard, undefined, 'Fleet prerequisites could not be validated. Refresh the related accounts and replan with a supported binding version.');
622
+ };
623
+ // A docking Plan from another deployment is reported as such before any
624
+ // freshness guard, whatever the saved guard order.
625
+ for (const precondition of preconditions)
626
+ if ((precondition.kind === 'fleet-dock-funding' ||
627
+ precondition.kind === 'fleet-docking-policy') &&
628
+ precondition.game !== requireGameAddress(context))
629
+ throw fleetFailure(precondition, new SageSdkError('ACTION_PRECONDITION_FAILED', precondition.kind === 'fleet-dock-funding'
630
+ ? `The docking Plan belongs to Game ${precondition.game}, but the context uses Game ${requireGameAddress(context)}. Recreate it with the intended Game context.`
631
+ : 'The docking faction policy belongs to another Game. Recreate the Plan with the intended Game context.', { address: precondition.address }));
632
+ // Dependent docking and cargo storage estimates run after every other
633
+ // freshness guard, so an exact account-state, cargo-definition or policy
634
+ // diagnostic wins whatever the saved order.
635
+ const estimate = (g) => g.kind === 'fleet-dock-funding' || g.kind === 'profile-storage-funding';
636
+ const ordered = [
637
+ ...preconditions.filter((g) => !estimate(g)),
638
+ ...preconditions.filter((g) => g.kind === 'fleet-dock-funding'),
639
+ ...preconditions.filter((g) => g.kind === 'profile-storage-funding'),
640
+ ];
641
+ for (const precondition of ordered) {
324
642
  const account = byAddress.get(precondition.address);
643
+ if (precondition.kind === 'fleet-dock-funding') {
644
+ try {
645
+ const funding = revalidateDockFunding(precondition, byAddress, precondition.status === 'available'
646
+ ? decodeDockingSequences(byAddress.get(precondition.game), gameDecodes)
647
+ : undefined);
648
+ if (funding)
649
+ recordFunding(precondition, funding);
650
+ }
651
+ catch (error) {
652
+ throw fleetFailure(precondition, error);
653
+ }
654
+ continue;
655
+ }
656
+ if (precondition.kind === 'local-market-order') {
657
+ try {
658
+ if (precondition.game !== requireGameAddress(context))
659
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'The order belongs to another Game. Recreate it with the intended Game context.');
660
+ revalidateMarketOrder(precondition, byAddress, allPreconditions);
661
+ }
662
+ catch (error) {
663
+ const failedAddress = error instanceof SageSdkError ? error.address : undefined;
664
+ throw new ActionPreconditionFailedError(precondition, byAddress.get(failedAddress ?? precondition.address)?.slot, error instanceof SageSdkError
665
+ ? error.message
666
+ : 'The Local Market debit bounds could not be verified. Refresh its funding accounts and recreate the order Plan.', failedAddress);
667
+ }
668
+ continue;
669
+ }
670
+ if (precondition.kind === 'scan-signal-open') {
671
+ if (precondition.game !== requireGameAddress(context))
672
+ throw new ActionPreconditionFailedError(precondition, undefined, 'This signal setup belongs to a different configured Game. Refetch and recreate the Plan using the intended Game context.');
673
+ try {
674
+ recordFunding(precondition, await validateOpenSignal(precondition, byAddress, precondition.authorityHash));
675
+ }
676
+ catch (error) {
677
+ throw fleetFailure(precondition, error);
678
+ }
679
+ continue;
680
+ }
681
+ if (precondition.kind === 'ship-import-funding') {
682
+ try {
683
+ const funding = validateShipImportFunding(precondition, importFundingAccounts.get(precondition), byAddress, precondition.maximumProfileDebit);
684
+ recordFunding(precondition, funding);
685
+ }
686
+ catch (error) {
687
+ throw fleetFailure(precondition, error);
688
+ }
689
+ continue;
690
+ }
691
+ if (precondition.kind === 'profile-storage-funding') {
692
+ try {
693
+ storageResults ??= validateStorageFunding(steps, preconditions.filter((guard) => guard.kind === 'profile-storage-funding'), byAddress, (instruction) => readStorageAction(instruction, byAddress,
694
+ // A deposit Plan's cargo-definition guards already required the
695
+ // Game in this batch.
696
+ (mint) => cargoRows(byAddress.get(requireGameAddress(context))).rows.find((row) => row.mint === mint)?.id));
697
+ const result = storageResults.get(precondition);
698
+ if ('error' in result)
699
+ throw result.error;
700
+ const { funding } = result;
701
+ // Each guard is one action, and several may resize one account, so
702
+ // every guard adds its own debit. A zero debit withdraws nothing and
703
+ // imposes no Profile reserve on the combined check.
704
+ if (funding.profileDebit > 0n)
705
+ recordFunding(precondition, funding, `${precondition.kind}:${String(ordered.indexOf(precondition))}`);
706
+ }
707
+ catch (error) {
708
+ // Every storage check failure names the Profile, a resized account
709
+ // or the Rent sysvar, all read in this batch.
710
+ throw fleetFailure(precondition, error);
711
+ }
712
+ continue;
713
+ }
714
+ if (precondition.kind === 'research-unlock') {
715
+ try {
716
+ const game = byAddress.get(precondition.game);
717
+ if (precondition.game !== requireGameAddress(context) || !game)
718
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'The research unlock belongs to another or missing Game. Recreate it with the intended Game context.', { address: precondition.game });
719
+ const resolved = await resolveResearchUnlock(precondition);
720
+ if (resolved.character !== precondition.address ||
721
+ resolved.starbasePlayer !== precondition.starbasePlayer ||
722
+ resolved.currencyCache !== precondition.currencyCache)
723
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'The research unlock accounts are not canonical for this Game, Profile and System. Recreate the Plan with planUnlockResearchNode.');
724
+ const funding = await validateResearchUnlock(precondition, resolved, byAddress, decodeGameResearchUnlockRules(game, gameDecodes));
725
+ // A zero storage debit withdraws nothing, so it imposes no Profile
726
+ // reserve on the combined check.
727
+ if (funding.profileDebit > 0n)
728
+ recordFunding(precondition, funding);
729
+ }
730
+ catch (error) {
731
+ const failed = error instanceof SageSdkError ? error.address : undefined;
732
+ throw new ActionPreconditionFailedError(precondition, byAddress.get(failed ?? precondition.address)?.slot, error instanceof SageSdkError
733
+ ? error.message
734
+ : 'Research prerequisites could not be validated. Refresh the Character, Starbase Player and Game definitions, then recreate the unlock Plan.', failed);
735
+ }
736
+ continue;
737
+ }
738
+ if (precondition.kind === 'fleet-add-ship') {
739
+ try {
740
+ const game = byAddress.get(precondition.game);
741
+ let catalog = assemblyCatalogs.get(precondition.game);
742
+ if (!catalog && game) {
743
+ catalog = decodeGameShipAssemblyCatalog(game, gameDecodes);
744
+ assemblyCatalogs.set(precondition.game, catalog);
745
+ }
746
+ const funding = await validateFleetShipAssembly(precondition, fleetAssemblyAccounts.get(precondition), byAddress, precondition, catalog);
747
+ recordFunding(precondition, funding);
748
+ }
749
+ catch (error) {
750
+ throw fleetFailure(precondition, error);
751
+ }
752
+ continue;
753
+ }
754
+ if (precondition.kind === 'fleet-create') {
755
+ try {
756
+ const funding = await validateFleetCreation(precondition, fleetCreationAccounts.get(precondition), byAddress, precondition.maximumProfileDebit);
757
+ recordFunding(precondition, funding);
758
+ }
759
+ catch (error) {
760
+ throw fleetFailure(precondition, error);
761
+ }
762
+ continue;
763
+ }
764
+ if (precondition.kind === 'fleet-docking-policy') {
765
+ try {
766
+ await validateFleetDockingPolicy({
767
+ tracker: account,
768
+ ownership: byAddress.get(precondition.ownership),
769
+ system: byAddress.get(precondition.system),
770
+ starbasePlayer: byAddress.get(precondition.starbasePlayer),
771
+ }, precondition);
772
+ }
773
+ catch (error) {
774
+ throw fleetFailure(precondition, error);
775
+ }
776
+ continue;
777
+ }
325
778
  let narrowed = true;
779
+ let cause;
326
780
  if (precondition.kind === 'token-account')
327
781
  narrowed =
328
782
  account !== undefined && matchesTokenAccount(account, precondition);
329
- if (precondition.kind === 'token-mint' ||
783
+ if (precondition.kind === 'currency-cache' ||
784
+ precondition.kind === 'region-access' ||
785
+ precondition.kind === 'region-path' ||
786
+ precondition.kind === 'character-access' ||
787
+ precondition.kind === 'starbase-system' ||
788
+ precondition.kind === 'fleet-mining' ||
789
+ isFactionTradeGuard(precondition) ||
790
+ precondition.kind === 'recipe-state' ||
791
+ precondition.kind === 'token-mint' ||
330
792
  precondition.kind === 'game-ship-config' ||
331
793
  precondition.kind === 'game-account' ||
332
- precondition.kind === 'game-cargo-config' ||
794
+ precondition.kind === 'game-cargo-bytes-config' ||
333
795
  precondition.kind === 'cargo-cache') {
334
796
  try {
335
797
  if (!account)
336
798
  narrowed = false;
799
+ else if (precondition.kind === 'currency-cache') {
800
+ narrowed = precondition.game === requireGameAddress(context);
801
+ if (narrowed)
802
+ await validateCurrencyCache(account, precondition.game);
803
+ }
804
+ else if (precondition.kind === 'region-access') {
805
+ narrowed =
806
+ precondition.game === requireGameAddress(context) &&
807
+ (await hashRegionAccess(account, byAddress.get(precondition.system), precondition.game)) === precondition.accessHash;
808
+ }
809
+ else if (precondition.kind === 'region-path') {
810
+ const origin = fleetActionCoordinate(byAddress.get(precondition.fleet), precondition.game);
811
+ narrowed =
812
+ precondition.game === requireGameAddress(context) &&
813
+ origin?.x === precondition.fromX &&
814
+ origin.y === precondition.fromY &&
815
+ (await hashRegionPath(account, precondition.game, { x: precondition.fromX, y: precondition.fromY }, { x: precondition.toX, y: precondition.toY })) === precondition.pathHash;
816
+ }
817
+ else if (precondition.kind === 'character-access') {
818
+ narrowed =
819
+ precondition.game === requireGameAddress(context) &&
820
+ (await hashCharacterAccess(account, precondition)) ===
821
+ precondition.stateHash;
822
+ }
823
+ else if (precondition.kind === 'starbase-system') {
824
+ narrowed = precondition.game === requireGameAddress(context);
825
+ if (narrowed)
826
+ await validateStarbaseSystem(account, precondition);
827
+ }
828
+ else if (precondition.kind === 'fleet-mining') {
829
+ narrowed =
830
+ precondition.game === requireGameAddress(context) &&
831
+ (await matchesFleetMiningState(account, precondition));
832
+ }
833
+ else if (isFactionTradeGuard(precondition)) {
834
+ narrowed = await matchesFactionTradeState(account, precondition);
835
+ }
836
+ else if (precondition.kind === 'recipe-state') {
837
+ narrowed =
838
+ (await hashRecipeConfiguration(account)) ===
839
+ precondition.configHash;
840
+ if (narrowed)
841
+ validateRecipeUsage(account, precondition.requiredUses);
842
+ }
337
843
  else if (precondition.kind === 'token-mint') {
338
844
  narrowed = validateTokenMint(account) === precondition.decimals;
339
845
  }
340
846
  else if (precondition.kind === 'game-ship-config') {
341
847
  let hashes = shipHashesByGame.get(precondition.address);
342
848
  if (!hashes) {
343
- hashes = await hashGameShipConfigurations(account, shipIdsByGame.get(precondition.address));
849
+ let catalog = assemblyCatalogs.get(precondition.address);
850
+ if (!catalog && assemblyGames.has(precondition.address)) {
851
+ catalog = decodeGameShipAssemblyCatalog(account, gameDecodes);
852
+ assemblyCatalogs.set(precondition.address, catalog);
853
+ }
854
+ hashes = await hashGameShipConfigurations(account, shipIdsByGame.get(precondition.address), catalog, gameDecodes);
344
855
  shipHashesByGame.set(precondition.address, hashes);
345
856
  }
346
857
  narrowed =
@@ -348,14 +859,20 @@ async function checkPreconditions(context, preconditions, commitment) {
348
859
  }
349
860
  else if (precondition.kind === 'game-account') {
350
861
  if (!validatedGames.has(account.address)) {
351
- validateGameForCharacterRegistration(account);
862
+ if (assemblyGames.has(precondition.address)) {
863
+ if (!assemblyCatalogs.has(precondition.address))
864
+ assemblyCatalogs.set(precondition.address, decodeGameShipAssemblyCatalog(account, gameDecodes));
865
+ }
866
+ else
867
+ validateGameForCharacterRegistration(account, gameDecodes);
352
868
  validatedGames.add(account.address);
353
869
  }
354
870
  }
355
- else if (precondition.kind === 'game-cargo-config') {
871
+ else if (precondition.kind === 'game-cargo-bytes-config') {
356
872
  let hashes = cargoHashesByGame.get(precondition.address);
357
873
  if (!hashes) {
358
- hashes = await hashGameCargoConfigurations(account, cargoIdsByGame.get(precondition.address));
874
+ const ids = cargoIdsByGame.get(precondition.address);
875
+ hashes = await hashGameCargoConfigurationGuards(account, ids, cargoRows(account));
359
876
  cargoHashesByGame.set(precondition.address, hashes);
360
877
  }
361
878
  narrowed =
@@ -363,35 +880,43 @@ async function checkPreconditions(context, preconditions, commitment) {
363
880
  }
364
881
  else {
365
882
  validateWalletCargoCache(account, precondition.game, precondition.bump);
366
- const [canonical, bump] = await getProgramDerivedAddress({
367
- programAddress: account.owner,
368
- seeds: [
369
- new TextEncoder().encode('CargoDefinitionsCache'),
370
- getAddressEncoder().encode(precondition.game),
371
- ],
372
- });
883
+ // validateWalletCargoCache requires the SAGE owner.
884
+ const [canonical, bump] = await deriveCargoDefinitionsCacheAddress(precondition.game);
373
885
  narrowed =
374
886
  canonical === account.address && bump === precondition.bump;
375
887
  }
376
888
  }
377
- catch {
889
+ catch (error) {
378
890
  narrowed = false;
891
+ cause = guardCause(precondition, error);
379
892
  }
380
893
  }
381
894
  if (!narrowed ||
382
895
  (precondition.kind === 'token-account-or-absent' &&
383
896
  account !== undefined &&
384
897
  !matchesTokenAccount(account, precondition)) ||
898
+ (precondition.kind === 'system-account-or-absent' &&
899
+ account !== undefined &&
900
+ (account.owner !== '11111111111111111111111111111111' ||
901
+ account.executable ||
902
+ account.data.length !== 0)) ||
385
903
  (precondition.kind === 'account-absent' && account !== undefined) ||
386
904
  (precondition.kind === 'account-state' &&
387
905
  (account === undefined ||
388
906
  (await hashAccountState(account.owner, account.data)) !==
389
907
  precondition.dataHash))) {
390
- throw new ActionPreconditionFailedError(precondition, account?.slot);
908
+ throw new ActionPreconditionFailedError(precondition, account?.slot, cause);
391
909
  }
392
910
  }
911
+ for (const [profile, funding] of profileFunding) {
912
+ // Validation above guarantees a fresh Profile from the same finite batch.
913
+ const account = byAddress.get(profile);
914
+ if (account.lamports < funding.reserve + funding.debit)
915
+ throw new ActionPreconditionFailedError(funding.guard, account.slot, 'The Profile cannot cover the combined Profile storage debits while preserving its rent reserve. Fund the Profile explicitly, then recreate and inspect the Plans.', profile);
916
+ }
917
+ return registrationFunding;
393
918
  }
394
- function commitmentReached(actual, requested) {
919
+ export function commitmentReached(actual, requested) {
395
920
  if (actual === null)
396
921
  return false;
397
922
  const strength = {
@@ -516,7 +1041,9 @@ async function confirmTransaction(writeRpc, signature, lastValidBlockHeight, opt
516
1041
  }
517
1042
  }
518
1043
  }
519
- async function signAndSubmit(writeRpc, transaction, signers, sendingSigner, commitment, lifecycle) {
1044
+ async function signAndSubmit(writeRpc, transaction, contextSlot, signers, sendingSigner, commitment, lifecycle) {
1045
+ // Capture RPC metadata before handing the transaction to any signer.
1046
+ const { blockhash, lastValidBlockHeight: assembledHeight } = transaction.lifetimeConstraint;
520
1047
  await lifecycle?.onBeforeSign();
521
1048
  if (sendingSigner !== undefined) {
522
1049
  let enteredOpaqueSender = false;
@@ -525,7 +1052,6 @@ async function signAndSubmit(writeRpc, transaction, signers, sendingSigner, comm
525
1052
  async signAndSendTransactions(transactions, config) {
526
1053
  for (const signed of transactions) {
527
1054
  assertPlanTransactionMessage(transaction, signed);
528
- readFinalLastValidBlockHeight(signed);
529
1055
  }
530
1056
  await lifecycle?.onBeforeOpaqueInvoke();
531
1057
  enteredOpaqueSender = true;
@@ -551,8 +1077,13 @@ async function signAndSubmit(writeRpc, transaction, signers, sendingSigner, comm
551
1077
  const signed = await signTransactionWithSigners(signingSigners, transaction);
552
1078
  assertPlanTransactionMessage(transaction, signed);
553
1079
  const signature = getSignatureFromTransaction(signed);
554
- const lastValidBlockHeight = readFinalLastValidBlockHeight(signed);
555
- await lifecycle?.onSigned(signature);
1080
+ const lastValidBlockHeight = 'blockhash' in signed.lifetimeConstraint &&
1081
+ signed.lifetimeConstraint.blockhash === blockhash
1082
+ ? assembledHeight
1083
+ : null;
1084
+ await lifecycle?.onSigned(signature, lastValidBlockHeight === null
1085
+ ? null
1086
+ : Object.freeze({ lastValidBlockHeight, contextSlot }));
556
1087
  await lifecycle?.onBeforeSubmit();
557
1088
  try {
558
1089
  const submittedSignature = await writeRpc
@@ -613,22 +1144,42 @@ export async function executePlanWithLifecycle(context, plan, options, lifecycle
613
1144
  validatePlanAssemblyPolicy(plan, validated);
614
1145
  const signers = matchSigners(plan, validated);
615
1146
  const sendingSigner = resolveSendingSigner(signers);
616
- const writeRpc = context.writeRpc;
617
- if (writeRpc === undefined)
618
- throw new MissingWriteTransportError();
619
- await checkPreconditions(context, plan.preconditions, validated.commitment);
620
- const transaction = await assemblePlan(context, plan, {
1147
+ const writeRpc = requireWriteRpc(context, 'execute');
1148
+ // Guard order is not trusted: funding follows instruction order, including hydrated Plans.
1149
+ const ordered = [...plan.preconditions].sort((a, b) => {
1150
+ const index = (guard) => guard.kind === 'character-registration'
1151
+ ? plan.steps.findIndex((step) => step.instruction.accounts?.[2]?.address === guard.address)
1152
+ : -1;
1153
+ return index(a) - index(b);
1154
+ });
1155
+ const registrationFunding = await checkPreconditions(context, ordered, plan.steps, validated.commitment);
1156
+ const { transaction, contextSlot } = await assembleValidatedPlanWithContext(writeRpc, plan, {
621
1157
  feePayer: validated.feePayer.address,
622
1158
  commitment: validated.commitment,
623
- ...(validated.computeUnitLimit === undefined
624
- ? {}
625
- : { computeUnitLimit: validated.computeUnitLimit }),
626
- ...(validated.priorityFeeMicroLamports === undefined
627
- ? {}
628
- : { priorityFeeMicroLamports: validated.priorityFeeMicroLamports }),
1159
+ computeUnitLimit: validated.computeUnitLimit,
1160
+ priorityFeeMicroLamports: validated.priorityFeeMicroLamports,
629
1161
  });
1162
+ if (registrationFunding.length > 0) {
1163
+ if (typeof writeRpc.getFeeForMessage !== 'function')
1164
+ throw new SageSdkError('MISSING_WRITE_TRANSPORT', 'The writeRpc transport has no callable getFeeForMessage method, so Character registration cannot check current transaction fees before signing. Update the custom writeRpc transport to implement the required SageWriteRpc getFeeForMessage method, then retry.');
1165
+ const payer = validated.feePayer.address;
1166
+ const { value: fee } = await writeRpc
1167
+ .getFeeForMessage(getBase64Decoder().decode(transaction.messageBytes), { commitment: validated.commitment })
1168
+ .send();
1169
+ if (typeof fee !== 'bigint' || fee < 0n)
1170
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Current transaction fee could not be determined. Refresh the blockhash and recreate the registration Plan before signing.', { address: payer });
1171
+ if (!registrationFunding.some((funding) => funding.funder === payer)) {
1172
+ const [account, rent] = await readContextRawAccounts(context, [payer, RENT_ADDRESS], { commitment: validated.commitment });
1173
+ if (!account || !isEmptySystemAccount(account) || !rent)
1174
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Registration fee payer must be an existing empty System wallet with current Rent available. Select and fund it separately.', { address: payer });
1175
+ const remaining = account.lamports - fee;
1176
+ if (remaining < 0n || (remaining > 0n && remaining < readRent(rent)(0)))
1177
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'Registration fee payer cannot pay the current fee and retain zero or a rent-exempt balance. Fund it separately.', { address: payer });
1178
+ }
1179
+ checkRegistrationFunding(registrationFunding, { payer, lamports: fee });
1180
+ }
630
1181
  await lifecycle?.onPrepared(sendingSigner === undefined ? 'observable' : 'opaque');
631
- const submission = await signAndSubmit(writeRpc, transaction, signers, sendingSigner, validated.commitment, lifecycle);
1182
+ const submission = await signAndSubmit(writeRpc, transaction, contextSlot, signers, sendingSigner, validated.commitment, lifecycle);
632
1183
  if (submission.status === 'unknown')
633
1184
  return submission;
634
1185
  const result = await confirmTransaction(writeRpc, submission.signature, submission.lastValidBlockHeight, validated);