@aephia/atlas-kit 0.6.0-next.10 → 0.6.0-next.101

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 (645) hide show
  1. package/README.md +3 -1
  2. package/dist/cargo/actions/deposit.d.ts +1 -1
  3. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  4. package/dist/cargo/actions/deposit.js +29 -15
  5. package/dist/cargo/actions/deposit.js.map +1 -1
  6. package/dist/cargo/actions/index.d.ts.map +1 -1
  7. package/dist/cargo/actions/index.js +11 -16
  8. package/dist/cargo/actions/index.js.map +1 -1
  9. package/dist/cargo/actions/wallet-token.d.ts +1 -1
  10. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  11. package/dist/cargo/actions/wallet-token.js +1 -9
  12. package/dist/cargo/actions/wallet-token.js.map +1 -1
  13. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  14. package/dist/cargo/actions/withdrawal.js +32 -30
  15. package/dist/cargo/actions/withdrawal.js.map +1 -1
  16. package/dist/claim-stakes/actions/index.d.ts +13 -0
  17. package/dist/claim-stakes/actions/index.d.ts.map +1 -1
  18. package/dist/claim-stakes/actions/index.js +138 -112
  19. package/dist/claim-stakes/actions/index.js.map +1 -1
  20. package/dist/claim-stakes/index.d.ts +14 -0
  21. package/dist/claim-stakes/index.d.ts.map +1 -1
  22. package/dist/claim-stakes/index.js +23 -2
  23. package/dist/claim-stakes/index.js.map +1 -1
  24. package/dist/client/context.d.ts.map +1 -1
  25. package/dist/client/context.js +1 -1
  26. package/dist/client/context.js.map +1 -1
  27. package/dist/client/contracts.d.ts +16 -6
  28. package/dist/client/contracts.d.ts.map +1 -1
  29. package/dist/client/errors.d.ts +6 -2
  30. package/dist/client/errors.d.ts.map +1 -1
  31. package/dist/client/errors.js +31 -1
  32. package/dist/client/errors.js.map +1 -1
  33. package/dist/client/index.d.ts +35 -0
  34. package/dist/client/index.d.ts.map +1 -1
  35. package/dist/client/index.js +35 -0
  36. package/dist/client/index.js.map +1 -1
  37. package/dist/client/rpc-subscription-provider.d.ts +35 -0
  38. package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
  39. package/dist/client/rpc-subscription-provider.js +190 -0
  40. package/dist/client/rpc-subscription-provider.js.map +1 -0
  41. package/dist/combat/actions/index.d.ts.map +1 -1
  42. package/dist/combat/actions/index.js +105 -68
  43. package/dist/combat/actions/index.js.map +1 -1
  44. package/dist/crafting/actions/index.d.ts +11 -0
  45. package/dist/crafting/actions/index.d.ts.map +1 -1
  46. package/dist/crafting/actions/index.js +102 -109
  47. package/dist/crafting/actions/index.js.map +1 -1
  48. package/dist/crafting/index.d.ts +33 -3
  49. package/dist/crafting/index.d.ts.map +1 -1
  50. package/dist/crafting/index.js +45 -16
  51. package/dist/crafting/index.js.map +1 -1
  52. package/dist/factions/actions/index.d.ts +1 -0
  53. package/dist/factions/actions/index.d.ts.map +1 -1
  54. package/dist/factions/actions/index.js +2 -1
  55. package/dist/factions/actions/index.js.map +1 -1
  56. package/dist/factions/index.d.ts +1 -1
  57. package/dist/factions/index.d.ts.map +1 -1
  58. package/dist/factions/index.js +14 -8
  59. package/dist/factions/index.js.map +1 -1
  60. package/dist/factions/profile-faction.d.ts +20 -8
  61. package/dist/factions/profile-faction.d.ts.map +1 -1
  62. package/dist/factions/profile-faction.js +20 -8
  63. package/dist/factions/profile-faction.js.map +1 -1
  64. package/dist/fleets/actions/add-ship.d.ts +35 -0
  65. package/dist/fleets/actions/add-ship.d.ts.map +1 -0
  66. package/dist/fleets/actions/add-ship.js +149 -0
  67. package/dist/fleets/actions/add-ship.js.map +1 -0
  68. package/dist/fleets/actions/create-fleet.d.ts +36 -0
  69. package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
  70. package/dist/fleets/actions/create-fleet.js +138 -0
  71. package/dist/fleets/actions/create-fleet.js.map +1 -0
  72. package/dist/fleets/actions/crew-transfer.d.ts +41 -0
  73. package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
  74. package/dist/fleets/actions/crew-transfer.js +114 -0
  75. package/dist/fleets/actions/crew-transfer.js.map +1 -0
  76. package/dist/fleets/actions/dock-bounds.d.ts +38 -0
  77. package/dist/fleets/actions/dock-bounds.d.ts.map +1 -0
  78. package/dist/fleets/actions/dock-bounds.js +46 -0
  79. package/dist/fleets/actions/dock-bounds.js.map +1 -0
  80. package/dist/fleets/actions/index.d.ts +37 -16
  81. package/dist/fleets/actions/index.d.ts.map +1 -1
  82. package/dist/fleets/actions/index.js +246 -154
  83. package/dist/fleets/actions/index.js.map +1 -1
  84. package/dist/fleets/actions/respawn.d.ts +38 -0
  85. package/dist/fleets/actions/respawn.d.ts.map +1 -0
  86. package/dist/fleets/actions/respawn.js +122 -0
  87. package/dist/fleets/actions/respawn.js.map +1 -0
  88. package/dist/fleets/actions/ship-import.d.ts.map +1 -1
  89. package/dist/fleets/actions/ship-import.js +43 -14
  90. package/dist/fleets/actions/ship-import.js.map +1 -1
  91. package/dist/fleets/cooldown.d.ts +44 -0
  92. package/dist/fleets/cooldown.d.ts.map +1 -0
  93. package/dist/fleets/cooldown.js +43 -0
  94. package/dist/fleets/cooldown.js.map +1 -0
  95. package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
  96. package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
  97. package/dist/fleets/coordinate-warp-estimate.js +46 -0
  98. package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
  99. package/dist/fleets/index.d.ts +35 -0
  100. package/dist/fleets/index.d.ts.map +1 -1
  101. package/dist/fleets/index.js +52 -2
  102. package/dist/fleets/index.js.map +1 -1
  103. package/dist/fleets/movement-arithmetic.d.ts +21 -0
  104. package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
  105. package/dist/fleets/movement-arithmetic.js +41 -0
  106. package/dist/fleets/movement-arithmetic.js.map +1 -0
  107. package/dist/fleets/subwarp-estimate.d.ts +70 -0
  108. package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
  109. package/dist/fleets/subwarp-estimate.js +38 -0
  110. package/dist/fleets/subwarp-estimate.js.map +1 -0
  111. package/dist/fleets/travel-profile.d.ts +102 -0
  112. package/dist/fleets/travel-profile.d.ts.map +1 -0
  113. package/dist/fleets/travel-profile.js +120 -0
  114. package/dist/fleets/travel-profile.js.map +1 -0
  115. package/dist/fleets/warp-lane-estimate.d.ts +59 -0
  116. package/dist/fleets/warp-lane-estimate.d.ts.map +1 -0
  117. package/dist/fleets/warp-lane-estimate.js +36 -0
  118. package/dist/fleets/warp-lane-estimate.js.map +1 -0
  119. package/dist/fleets/warp-lane-policy.d.ts +68 -0
  120. package/dist/fleets/warp-lane-policy.d.ts.map +1 -0
  121. package/dist/fleets/warp-lane-policy.js +91 -0
  122. package/dist/fleets/warp-lane-policy.js.map +1 -0
  123. package/dist/fleets/warp-lane-toll.d.ts +55 -0
  124. package/dist/fleets/warp-lane-toll.d.ts.map +1 -0
  125. package/dist/fleets/warp-lane-toll.js +79 -0
  126. package/dist/fleets/warp-lane-toll.js.map +1 -0
  127. package/dist/identity/actions/create-profile.d.ts +2 -0
  128. package/dist/identity/actions/create-profile.d.ts.map +1 -1
  129. package/dist/identity/actions/create-profile.js +14 -9
  130. package/dist/identity/actions/create-profile.js.map +1 -1
  131. package/dist/identity/actions/index.d.ts +3 -3
  132. package/dist/identity/actions/index.d.ts.map +1 -1
  133. package/dist/identity/actions/index.js +50 -28
  134. package/dist/identity/actions/index.js.map +1 -1
  135. package/dist/identity/index.d.ts +12 -2
  136. package/dist/identity/index.d.ts.map +1 -1
  137. package/dist/identity/index.js +10 -1
  138. package/dist/identity/index.js.map +1 -1
  139. package/dist/identity/permissions.d.ts +19 -6
  140. package/dist/identity/permissions.d.ts.map +1 -1
  141. package/dist/identity/permissions.js +27 -10
  142. package/dist/identity/permissions.js.map +1 -1
  143. package/dist/identity/research-state.d.ts +60 -0
  144. package/dist/identity/research-state.d.ts.map +1 -0
  145. package/dist/identity/research-state.js +68 -0
  146. package/dist/identity/research-state.js.map +1 -0
  147. package/dist/index.d.ts +24 -0
  148. package/dist/index.d.ts.map +1 -1
  149. package/dist/index.js +20 -3
  150. package/dist/index.js.map +1 -1
  151. package/dist/internal/c4/account-decoding.d.ts +12 -0
  152. package/dist/internal/c4/account-decoding.d.ts.map +1 -0
  153. package/dist/internal/c4/account-decoding.js +36 -0
  154. package/dist/internal/c4/account-decoding.js.map +1 -0
  155. package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
  156. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  157. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  158. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  159. package/dist/internal/c4/character-modifier.d.ts +1 -1
  160. package/dist/internal/c4/character-modifier.d.ts.map +1 -1
  161. package/dist/internal/c4/character-registration.d.ts +2 -0
  162. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  163. package/dist/internal/c4/character-registration.js +2 -0
  164. package/dist/internal/c4/character-registration.js.map +1 -1
  165. package/dist/internal/c4/character.d.ts +155 -0
  166. package/dist/internal/c4/character.d.ts.map +1 -0
  167. package/dist/internal/c4/character.js +79 -0
  168. package/dist/internal/c4/character.js.map +1 -0
  169. package/dist/internal/c4/claim-stake-configuration.js +4 -2
  170. package/dist/internal/c4/claim-stake-configuration.js.map +1 -1
  171. package/dist/internal/c4/claim-stake-definitions.d.ts +4 -4
  172. package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
  173. package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
  174. package/dist/internal/c4/claim-stake.d.ts +4 -27
  175. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  176. package/dist/internal/c4/claim-stake.js +30 -41
  177. package/dist/internal/c4/claim-stake.js.map +1 -1
  178. package/dist/internal/c4/combat.d.ts +0 -27
  179. package/dist/internal/c4/combat.d.ts.map +1 -1
  180. package/dist/internal/c4/combat.js +10 -52
  181. package/dist/internal/c4/combat.js.map +1 -1
  182. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  183. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  184. package/dist/internal/c4/crafting-process-codec.js +34 -0
  185. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  186. package/dist/internal/c4/crafting.d.ts +25 -33
  187. package/dist/internal/c4/crafting.d.ts.map +1 -1
  188. package/dist/internal/c4/crafting.js +61 -49
  189. package/dist/internal/c4/crafting.js.map +1 -1
  190. package/dist/internal/c4/currency-cache.d.ts +6 -0
  191. package/dist/internal/c4/currency-cache.d.ts.map +1 -0
  192. package/dist/internal/c4/currency-cache.js +30 -0
  193. package/dist/internal/c4/currency-cache.js.map +1 -0
  194. package/dist/internal/c4/docking-funding.d.ts +4 -0
  195. package/dist/internal/c4/docking-funding.d.ts.map +1 -0
  196. package/dist/internal/c4/docking-funding.js +11 -0
  197. package/dist/internal/c4/docking-funding.js.map +1 -0
  198. package/dist/internal/c4/faction-adapter.d.ts +12 -0
  199. package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
  200. package/dist/internal/c4/faction-adapter.js +52 -0
  201. package/dist/internal/c4/faction-adapter.js.map +1 -0
  202. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  203. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  204. package/dist/internal/c4/faction-epoch-meter.js +31 -0
  205. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  206. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  207. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  208. package/dist/internal/c4/faction-treasury.js +48 -0
  209. package/dist/internal/c4/faction-treasury.js.map +1 -0
  210. package/dist/internal/c4/faction.d.ts +18 -0
  211. package/dist/internal/c4/faction.d.ts.map +1 -0
  212. package/dist/internal/c4/faction.js +18 -0
  213. package/dist/internal/c4/faction.js.map +1 -0
  214. package/dist/internal/c4/factions.d.ts +9 -57
  215. package/dist/internal/c4/factions.d.ts.map +1 -1
  216. package/dist/internal/c4/factions.js +29 -156
  217. package/dist/internal/c4/factions.js.map +1 -1
  218. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  219. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  220. package/dist/internal/c4/fleet-arrival.js +42 -0
  221. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  222. package/dist/internal/c4/fleet-creation.d.ts +7 -0
  223. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  224. package/dist/internal/c4/fleet-creation.js +180 -0
  225. package/dist/internal/c4/fleet-creation.js.map +1 -0
  226. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  227. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  228. package/dist/internal/c4/fleet-crew-binding.js +20 -3
  229. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  230. package/dist/internal/c4/fleet-respawn.d.ts +17 -0
  231. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  232. package/dist/internal/c4/fleet-respawn.js +62 -0
  233. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  234. package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
  235. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  236. package/dist/internal/c4/fleet-ship-assembly.js +44 -0
  237. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  238. package/dist/internal/c4/fleet.d.ts +45 -19
  239. package/dist/internal/c4/fleet.d.ts.map +1 -1
  240. package/dist/internal/c4/fleet.js +37 -29
  241. package/dist/internal/c4/fleet.js.map +1 -1
  242. package/dist/internal/c4/game-definition-layout.d.ts +2 -0
  243. package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
  244. package/dist/internal/c4/game-definition-layout.js +4 -0
  245. package/dist/internal/c4/game-definition-layout.js.map +1 -1
  246. package/dist/internal/c4/game.d.ts +47 -12
  247. package/dist/internal/c4/game.d.ts.map +1 -1
  248. package/dist/internal/c4/game.js +110 -21
  249. package/dist/internal/c4/game.js.map +1 -1
  250. package/dist/internal/c4/identity.d.ts +2 -152
  251. package/dist/internal/c4/identity.d.ts.map +1 -1
  252. package/dist/internal/c4/identity.js +6 -110
  253. package/dist/internal/c4/identity.js.map +1 -1
  254. package/dist/internal/c4/local-market-order.d.ts +31 -0
  255. package/dist/internal/c4/local-market-order.d.ts.map +1 -0
  256. package/dist/internal/c4/local-market-order.js +47 -0
  257. package/dist/internal/c4/local-market-order.js.map +1 -0
  258. package/dist/internal/c4/loot-layout.js +1 -1
  259. package/dist/internal/c4/loot-layout.js.map +1 -1
  260. package/dist/internal/c4/loyalty.d.ts +0 -27
  261. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  262. package/dist/internal/c4/loyalty.js +14 -43
  263. package/dist/internal/c4/loyalty.js.map +1 -1
  264. package/dist/internal/c4/market.d.ts +2 -38
  265. package/dist/internal/c4/market.d.ts.map +1 -1
  266. package/dist/internal/c4/market.js +13 -51
  267. package/dist/internal/c4/market.js.map +1 -1
  268. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  269. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  270. package/dist/internal/c4/mining-instructions.js +3 -0
  271. package/dist/internal/c4/mining-instructions.js.map +1 -0
  272. package/dist/internal/c4/open-signal.d.ts +8 -0
  273. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  274. package/dist/internal/c4/open-signal.js +37 -0
  275. package/dist/internal/c4/open-signal.js.map +1 -0
  276. package/dist/internal/c4/pda.js +1 -1
  277. package/dist/internal/c4/pda.js.map +1 -1
  278. package/dist/internal/c4/profile-faction.d.ts.map +1 -1
  279. package/dist/internal/c4/profile-faction.js +11 -21
  280. package/dist/internal/c4/profile-faction.js.map +1 -1
  281. package/dist/internal/c4/profile-permissions.d.ts +5 -3
  282. package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
  283. package/dist/internal/c4/profile-permissions.js +61 -8
  284. package/dist/internal/c4/profile-permissions.js.map +1 -1
  285. package/dist/internal/c4/region-geometry.d.ts +8 -0
  286. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  287. package/dist/internal/c4/region-geometry.js +43 -0
  288. package/dist/internal/c4/region-geometry.js.map +1 -0
  289. package/dist/internal/c4/rewards.d.ts +0 -27
  290. package/dist/internal/c4/rewards.d.ts.map +1 -1
  291. package/dist/internal/c4/rewards.js +16 -41
  292. package/dist/internal/c4/rewards.js.map +1 -1
  293. package/dist/internal/c4/runtime-bindings.d.ts +4 -0
  294. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  295. package/dist/internal/c4/runtime-bindings.js +4 -0
  296. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  297. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  298. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  299. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  300. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  301. package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
  302. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  303. package/dist/internal/c4/scan-lifecycle.js +261 -0
  304. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  305. package/dist/internal/c4/scanning.d.ts +1 -28
  306. package/dist/internal/c4/scanning.d.ts.map +1 -1
  307. package/dist/internal/c4/scanning.js +7 -36
  308. package/dist/internal/c4/scanning.js.map +1 -1
  309. package/dist/internal/c4/ship-import.d.ts +4 -0
  310. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  311. package/dist/internal/c4/ship-import.js +13 -0
  312. package/dist/internal/c4/ship-import.js.map +1 -0
  313. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  314. package/dist/internal/c4/ship-stats.js +25 -21
  315. package/dist/internal/c4/ship-stats.js.map +1 -1
  316. package/dist/internal/c4/starbase.d.ts +0 -32
  317. package/dist/internal/c4/starbase.d.ts.map +1 -1
  318. package/dist/internal/c4/starbase.js +12 -62
  319. package/dist/internal/c4/starbase.js.map +1 -1
  320. package/dist/internal/c4/world.d.ts +36 -7
  321. package/dist/internal/c4/world.d.ts.map +1 -1
  322. package/dist/internal/c4/world.js +67 -48
  323. package/dist/internal/c4/world.js.map +1 -1
  324. package/dist/internal/cargo.d.ts +2 -0
  325. package/dist/internal/cargo.d.ts.map +1 -1
  326. package/dist/internal/cargo.js +8 -0
  327. package/dist/internal/cargo.js.map +1 -1
  328. package/dist/internal/fleet.d.ts +1 -0
  329. package/dist/internal/fleet.d.ts.map +1 -1
  330. package/dist/internal/fleet.js +3 -1
  331. package/dist/internal/fleet.js.map +1 -1
  332. package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
  333. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  334. package/dist/internal/loyalty-atlas-bank-state.js +10 -0
  335. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  336. package/dist/internal/planning/action-runtime.d.ts +38 -0
  337. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  338. package/dist/internal/planning/action-runtime.js +63 -0
  339. package/dist/internal/planning/action-runtime.js.map +1 -0
  340. package/dist/internal/planning/arrival-guards.d.ts +20 -0
  341. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  342. package/dist/internal/planning/arrival-guards.js +187 -0
  343. package/dist/internal/planning/arrival-guards.js.map +1 -0
  344. package/dist/internal/planning/authorization-adapter.d.ts +45 -37
  345. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  346. package/dist/internal/planning/authorization-adapter.js +165 -76
  347. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  348. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  349. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  350. package/dist/internal/planning/character-registration-guard.js +58 -0
  351. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  352. package/dist/internal/planning/character-registration.d.ts +23 -0
  353. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  354. package/dist/internal/planning/character-registration.js +87 -0
  355. package/dist/internal/planning/character-registration.js.map +1 -0
  356. package/dist/internal/planning/currency-cache-guard.d.ts +4 -0
  357. package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -0
  358. package/dist/internal/planning/currency-cache-guard.js +32 -0
  359. package/dist/internal/planning/currency-cache-guard.js.map +1 -0
  360. package/dist/internal/planning/democracy-history.d.ts +50 -0
  361. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  362. package/dist/internal/planning/democracy-history.js +198 -0
  363. package/dist/internal/planning/democracy-history.js.map +1 -0
  364. package/dist/internal/planning/faction-enrollment.d.ts +0 -2
  365. package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
  366. package/dist/internal/planning/faction-enrollment.js +1 -22
  367. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  368. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  369. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  370. package/dist/internal/planning/faction-trade-guards.js +15 -0
  371. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  372. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  373. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  374. package/dist/internal/planning/faction-trade-state.js +43 -0
  375. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  376. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  377. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  378. package/dist/internal/planning/fleet-arrival.js +106 -0
  379. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  380. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  381. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  382. package/dist/internal/planning/fleet-attack-xp.js +110 -0
  383. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  384. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  385. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  386. package/dist/internal/planning/fleet-creation.js +109 -0
  387. package/dist/internal/planning/fleet-creation.js.map +1 -0
  388. package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
  389. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  390. package/dist/internal/planning/fleet-crew-guard.js +47 -0
  391. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  392. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  393. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  394. package/dist/internal/planning/fleet-crew-transfer.js +132 -0
  395. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  396. package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
  397. package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
  398. package/dist/internal/planning/fleet-dock-funding-guard.js +225 -0
  399. package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
  400. package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
  401. package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
  402. package/dist/internal/planning/fleet-dock-funding.js +154 -0
  403. package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
  404. package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
  405. package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
  406. package/dist/internal/planning/fleet-docking-guard.js +42 -0
  407. package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
  408. package/dist/internal/planning/fleet-docking.d.ts +10 -0
  409. package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
  410. package/dist/internal/planning/fleet-docking.js +85 -0
  411. package/dist/internal/planning/fleet-docking.js.map +1 -0
  412. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  413. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  414. package/dist/internal/planning/fleet-respawn.js +167 -0
  415. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  416. package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
  417. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  418. package/dist/internal/planning/fleet-ship-assembly.js +138 -0
  419. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  420. package/dist/internal/planning/governance-fees.d.ts +64 -0
  421. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  422. package/dist/internal/planning/governance-fees.js +239 -0
  423. package/dist/internal/planning/governance-fees.js.map +1 -0
  424. package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
  425. package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
  426. package/dist/internal/planning/local-market-order-funding.js +127 -0
  427. package/dist/internal/planning/local-market-order-funding.js.map +1 -0
  428. package/dist/internal/planning/local-market-order.d.ts +40 -0
  429. package/dist/internal/planning/local-market-order.d.ts.map +1 -0
  430. package/dist/internal/planning/local-market-order.js +166 -0
  431. package/dist/internal/planning/local-market-order.js.map +1 -0
  432. package/dist/internal/planning/mining-stop.d.ts +14 -0
  433. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  434. package/dist/internal/planning/mining-stop.js +41 -0
  435. package/dist/internal/planning/mining-stop.js.map +1 -0
  436. package/dist/internal/planning/movement-character.d.ts +7 -0
  437. package/dist/internal/planning/movement-character.d.ts.map +1 -0
  438. package/dist/internal/planning/movement-character.js +41 -0
  439. package/dist/internal/planning/movement-character.js.map +1 -0
  440. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  441. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  442. package/dist/internal/planning/movement-xp-guard.js +103 -0
  443. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  444. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  445. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  446. package/dist/internal/planning/open-signal-guard.js +31 -0
  447. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  448. package/dist/internal/planning/open-signal.d.ts +31 -0
  449. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  450. package/dist/internal/planning/open-signal.js +86 -0
  451. package/dist/internal/planning/open-signal.js.map +1 -0
  452. package/dist/internal/planning/recipe-state.d.ts +6 -0
  453. package/dist/internal/planning/recipe-state.d.ts.map +1 -0
  454. package/dist/internal/planning/recipe-state.js +20 -0
  455. package/dist/internal/planning/recipe-state.js.map +1 -0
  456. package/dist/internal/planning/rent.d.ts +19 -0
  457. package/dist/internal/planning/rent.d.ts.map +1 -0
  458. package/dist/internal/planning/rent.js +35 -0
  459. package/dist/internal/planning/rent.js.map +1 -0
  460. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  461. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  462. package/dist/internal/planning/respawn-guards.js +41 -0
  463. package/dist/internal/planning/respawn-guards.js.map +1 -0
  464. package/dist/internal/planning/runtime-guards.d.ts +43 -0
  465. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  466. package/dist/internal/planning/runtime-guards.js +638 -0
  467. package/dist/internal/planning/runtime-guards.js.map +1 -0
  468. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  469. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  470. package/dist/internal/planning/scan-completion-guard.js +94 -0
  471. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  472. package/dist/internal/planning/scan-completion.d.ts +20 -0
  473. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  474. package/dist/internal/planning/scan-completion.js +197 -0
  475. package/dist/internal/planning/scan-completion.js.map +1 -0
  476. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  477. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  478. package/dist/internal/planning/scan-detect-guard.js +77 -0
  479. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  480. package/dist/internal/planning/scan-detect.d.ts +24 -0
  481. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  482. package/dist/internal/planning/scan-detect.js +245 -0
  483. package/dist/internal/planning/scan-detect.js.map +1 -0
  484. package/dist/internal/planning/scan-input.d.ts +9 -0
  485. package/dist/internal/planning/scan-input.d.ts.map +1 -0
  486. package/dist/internal/planning/scan-input.js +58 -0
  487. package/dist/internal/planning/scan-input.js.map +1 -0
  488. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  489. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  490. package/dist/internal/planning/ship-import-funding.js +53 -0
  491. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  492. package/dist/internal/planning/ship-token.d.ts +0 -1
  493. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  494. package/dist/internal/planning/ship-token.js +2 -5
  495. package/dist/internal/planning/ship-token.js.map +1 -1
  496. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  497. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  498. package/dist/internal/planning/starbase-system-guard.js +93 -0
  499. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  500. package/dist/internal/planning/starbase-system.d.ts +15 -0
  501. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  502. package/dist/internal/planning/starbase-system.js +25 -0
  503. package/dist/internal/planning/starbase-system.js.map +1 -0
  504. package/dist/internal/planning/token-mint.d.ts +4 -0
  505. package/dist/internal/planning/token-mint.d.ts.map +1 -0
  506. package/dist/internal/planning/token-mint.js +15 -0
  507. package/dist/internal/planning/token-mint.js.map +1 -0
  508. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  509. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  510. package/dist/internal/planning/trade-faction-market.js +56 -0
  511. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  512. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  513. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  514. package/dist/internal/planning/xp-runtime.js +126 -0
  515. package/dist/internal/planning/xp-runtime.js.map +1 -0
  516. package/dist/internal/system-program.d.ts +4 -0
  517. package/dist/internal/system-program.d.ts.map +1 -0
  518. package/dist/internal/system-program.js +3 -0
  519. package/dist/internal/system-program.js.map +1 -0
  520. package/dist/loyalty/actions/index.d.ts.map +1 -1
  521. package/dist/loyalty/actions/index.js +8 -21
  522. package/dist/loyalty/actions/index.js.map +1 -1
  523. package/dist/loyalty/index.d.ts.map +1 -1
  524. package/dist/loyalty/index.js +2 -6
  525. package/dist/loyalty/index.js.map +1 -1
  526. package/dist/markets/actions/index.d.ts +61 -3
  527. package/dist/markets/actions/index.d.ts.map +1 -1
  528. package/dist/markets/actions/index.js +143 -37
  529. package/dist/markets/actions/index.js.map +1 -1
  530. package/dist/markets/actions/trade-faction-market.d.ts +43 -0
  531. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  532. package/dist/markets/actions/trade-faction-market.js +282 -0
  533. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  534. package/dist/markets/index.d.ts +38 -7
  535. package/dist/markets/index.d.ts.map +1 -1
  536. package/dist/markets/index.js +57 -10
  537. package/dist/markets/index.js.map +1 -1
  538. package/dist/mining/actions/index.d.ts +87 -0
  539. package/dist/mining/actions/index.d.ts.map +1 -0
  540. package/dist/mining/actions/index.js +332 -0
  541. package/dist/mining/actions/index.js.map +1 -0
  542. package/dist/mining/estimate.d.ts +114 -0
  543. package/dist/mining/estimate.d.ts.map +1 -0
  544. package/dist/mining/estimate.js +127 -0
  545. package/dist/mining/estimate.js.map +1 -0
  546. package/dist/mining/index.d.ts +9 -2
  547. package/dist/mining/index.d.ts.map +1 -1
  548. package/dist/mining/index.js +7 -2
  549. package/dist/mining/index.js.map +1 -1
  550. package/dist/mining/profile.d.ts +82 -0
  551. package/dist/mining/profile.d.ts.map +1 -0
  552. package/dist/mining/profile.js +109 -0
  553. package/dist/mining/profile.js.map +1 -0
  554. package/dist/planning/assembly.d.ts +5 -0
  555. package/dist/planning/assembly.d.ts.map +1 -1
  556. package/dist/planning/assembly.js +30 -2
  557. package/dist/planning/assembly.js.map +1 -1
  558. package/dist/planning/execution.d.ts +18 -3
  559. package/dist/planning/execution.d.ts.map +1 -1
  560. package/dist/planning/execution.js +492 -40
  561. package/dist/planning/execution.js.map +1 -1
  562. package/dist/planning/index.d.ts +196 -149
  563. package/dist/planning/index.d.ts.map +1 -1
  564. package/dist/planning/index.js +910 -121
  565. package/dist/planning/index.js.map +1 -1
  566. package/dist/planning/plan-sequence-checkpoint.d.ts +9 -0
  567. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -1
  568. package/dist/planning/plan-sequence-checkpoint.js +16 -7
  569. package/dist/planning/plan-sequence-checkpoint.js.map +1 -1
  570. package/dist/planning/plan-sequence-execution.d.ts +5 -0
  571. package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
  572. package/dist/planning/plan-sequence-execution.js +74 -30
  573. package/dist/planning/plan-sequence-execution.js.map +1 -1
  574. package/dist/planning/plan-sequence.d.ts +2 -1
  575. package/dist/planning/plan-sequence.d.ts.map +1 -1
  576. package/dist/planning/plan-sequence.js +8 -1
  577. package/dist/planning/plan-sequence.js.map +1 -1
  578. package/dist/planning/simulation.d.ts +25 -1
  579. package/dist/planning/simulation.d.ts.map +1 -1
  580. package/dist/planning/simulation.js +111 -11
  581. package/dist/planning/simulation.js.map +1 -1
  582. package/dist/registry/cargo.d.ts +7 -12
  583. package/dist/registry/cargo.d.ts.map +1 -1
  584. package/dist/registry/cargo.js +19 -19
  585. package/dist/registry/cargo.js.map +1 -1
  586. package/dist/registry/docking.d.ts +10 -0
  587. package/dist/registry/docking.d.ts.map +1 -0
  588. package/dist/registry/docking.js +12 -0
  589. package/dist/registry/docking.js.map +1 -0
  590. package/dist/registry/index.d.ts +4 -0
  591. package/dist/registry/index.d.ts.map +1 -1
  592. package/dist/registry/index.js.map +1 -1
  593. package/dist/registry/onboarding.d.ts +10 -2
  594. package/dist/registry/onboarding.d.ts.map +1 -1
  595. package/dist/registry/onboarding.js +20 -7
  596. package/dist/registry/onboarding.js.map +1 -1
  597. package/dist/registry/scanning.d.ts +7 -0
  598. package/dist/registry/scanning.d.ts.map +1 -0
  599. package/dist/registry/scanning.js +13 -0
  600. package/dist/registry/scanning.js.map +1 -0
  601. package/dist/registry/ship-stats-snapshot.js +19 -19
  602. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  603. package/dist/registry/ships.d.ts +22 -2
  604. package/dist/registry/ships.d.ts.map +1 -1
  605. package/dist/registry/ships.js +31 -4
  606. package/dist/registry/ships.js.map +1 -1
  607. package/dist/registry/xp-runtime.d.ts +4 -0
  608. package/dist/registry/xp-runtime.d.ts.map +1 -0
  609. package/dist/registry/xp-runtime.js +14 -0
  610. package/dist/registry/xp-runtime.js.map +1 -0
  611. package/dist/scanning/actions/index.d.ts +116 -0
  612. package/dist/scanning/actions/index.d.ts.map +1 -0
  613. package/dist/scanning/actions/index.js +185 -0
  614. package/dist/scanning/actions/index.js.map +1 -0
  615. package/dist/scanning/index.d.ts +5 -2
  616. package/dist/scanning/index.d.ts.map +1 -1
  617. package/dist/scanning/index.js +13 -9
  618. package/dist/scanning/index.js.map +1 -1
  619. package/dist/scanning/lifecycle.d.ts +77 -0
  620. package/dist/scanning/lifecycle.d.ts.map +1 -0
  621. package/dist/scanning/lifecycle.js +93 -0
  622. package/dist/scanning/lifecycle.js.map +1 -0
  623. package/dist/scanning/odds.d.ts +111 -0
  624. package/dist/scanning/odds.d.ts.map +1 -0
  625. package/dist/scanning/odds.js +294 -0
  626. package/dist/scanning/odds.js.map +1 -0
  627. package/dist/scanning/signals.d.ts +121 -0
  628. package/dist/scanning/signals.d.ts.map +1 -0
  629. package/dist/scanning/signals.js +171 -0
  630. package/dist/scanning/signals.js.map +1 -0
  631. package/dist/starbases/actions/index.js +1 -1
  632. package/dist/starbases/actions/index.js.map +1 -1
  633. package/dist/world/index.d.ts +110 -5
  634. package/dist/world/index.d.ts.map +1 -1
  635. package/dist/world/index.js +109 -4
  636. package/dist/world/index.js.map +1 -1
  637. package/dist/world/planet-claim-stake-plots.d.ts +130 -0
  638. package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
  639. package/dist/world/planet-claim-stake-plots.js +110 -0
  640. package/dist/world/planet-claim-stake-plots.js.map +1 -0
  641. package/dist/world/starbase-status.d.ts +176 -0
  642. package/dist/world/starbase-status.d.ts.map +1 -0
  643. package/dist/world/starbase-status.js +153 -0
  644. package/dist/world/starbase-status.js.map +1 -0
  645. package/package.json +10 -2
@@ -1,16 +1,24 @@
1
- import { getAddressEncoder, getBytesEncoder, getProgramDerivedAddress, isAddress, } from '@solana/kit';
1
+ import { deriveCurrencyCache, validateCurrencyCache, } from '../../internal/c4/currency-cache.js';
2
+ import { resolveDockFunding } from '../../internal/planning/fleet-dock-funding.js';
3
+ import { validateFleetDockingPolicy } from '../../internal/planning/fleet-docking.js';
4
+ import { deriveFactionOwnershipAddress } from '../../internal/c4/factions.js';
5
+ import { regionContainsCoordinate } from '../../internal/c4/region-geometry.js';
6
+ import { hashMovementCharacter } from '../../internal/planning/movement-character.js';
7
+ import { resolveXpRuntime } from '../../internal/planning/xp-runtime.js';
8
+ import { getAddressEncoder, isAddress } from '@solana/kit';
2
9
  import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
3
10
  import { readContextRawAccounts } from '../../client/reconciliation.js';
4
11
  import { deriveFleetAddress, fleetAccountDefinition, } from '../../internal/c4/fleet.js';
5
- import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, } from '../../internal/c4/fleet-crew-binding.js';
12
+ import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, matchesFleetCrewBindingIdentity, } from '../../internal/c4/fleet-crew-binding.js';
6
13
  import { deriveFactionRelationTrackerAddress, deriveRegionTrackerAddress, factionRelationTrackerAccountDefinition, regionTrackerAccountDefinition, } from '../../internal/c4/factions.js';
7
- import { sage } from '../../internal/c4/bindings.js';
8
- import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/identity.js';
14
+ import { FixedPoint, getFleetDecoder, getRegionTrackerDecoder, getStarSystemDecoder, } from '../../internal/c4/runtime-bindings.js';
15
+ import { characterAccountDefinition, findCharacterPda, } from '../../internal/c4/character.js';
9
16
  import { deriveStarbasePlayerAddress, starbasePlayerAccountDefinition, } from '../../internal/c4/starbase.js';
10
17
  import { buildStarSystemDiscoveryFilters, deriveStarSystemAddress, starSystemAccountDefinition, } from '../../internal/c4/world.js';
11
18
  import { requireGameAddress } from '../../internal/game-context.js';
12
- import { adaptDockedToIdleInstruction, adaptFleetSettleArrivalInstruction, adaptIdleToDockedInstruction, adaptStartSubwarpInstruction, adaptStopSubwarpInstruction, adaptWarpLaneInstruction, adaptWarpToCoordinateInstruction, validatePlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
19
+ import { adaptDockedToIdleInstruction, adaptIdleToDockedInstruction, adaptStartSubwarpInstruction, adaptStopSubwarpInstruction, adaptWarpLaneInstruction, adaptWarpToCoordinateInstruction, validatePlanAuthorization, } from '../../internal/planning/authorization-adapter.js';
13
20
  import { createPlan, } from '../../planning/index.js';
21
+ import { resolveFleetArrival } from '../../internal/planning/fleet-arrival.js';
14
22
  const FLEET_STATE_IDLE = 'fleet.state.idle';
15
23
  const FLEET_STATE_MOVEMENT_STARTED = 'fleet.state.movement-started';
16
24
  function movementStartSemantics(fleet) {
@@ -32,36 +40,35 @@ function fail(message, address) {
32
40
  throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
33
41
  }
34
42
  function validateSettleArrivalOptions(value) {
43
+ const remedy = 'Pass only { authorization: { profile, authority, keyIndex } } for Career XP subwarp. Certificates and delegated sub-Profiles are not supported.';
35
44
  if (value === null || typeof value !== 'object' || Array.isArray(value)) {
36
- throw new InvalidActionInputError('options', value, 'an object containing only funder', 'Pass { funder } with one valid z.ink/Solana address before retrying.');
45
+ throw new InvalidActionInputError('options', value, 'one explicit arrival authorization route', remedy);
37
46
  }
38
47
  const record = value;
39
- if (Object.keys(record).length !== 1 ||
40
- !Object.hasOwn(record, 'funder') ||
41
- typeof record.funder !== 'string' ||
42
- !isAddress(record.funder)) {
43
- throw new InvalidActionInputError('options.funder', record.funder, 'one valid z.ink/Solana account address and no other option fields', 'Set options.funder to the address that will fund Fleet arrival settlement before retrying.');
44
- }
45
- return { funder: record.funder };
46
- }
47
- function requireSettleArrivalState(fleet) {
48
- switch (fleet.state.kind) {
49
- case 'subwarp':
50
- case 'warp':
51
- return fleet.state.kind;
52
- case 'idle':
53
- return fail(`Fleet ${fleet.name} is idle and has no movement arrival to settle. Start a warp or subwarp movement, refresh the Fleet, and retry after or during that movement.`, fleet.address);
54
- case 'docked':
55
- return fail(`Fleet ${fleet.name} is docked and has no movement arrival to settle. Undock the Fleet, start a warp or subwarp movement, refresh it, and retry.`, fleet.address);
56
- case 'mining':
57
- return fail(`Fleet ${fleet.name} is mining, not moving toward an arrival. Stop mining through an appropriate game client, refresh the Fleet, and retry only after starting warp or subwarp movement.`, fleet.address);
58
- case 'respawn':
59
- return fail(`Fleet ${fleet.name} is in respawn, not warp or subwarp movement. Wait for the Fleet to finish respawning or advance it through an appropriate game client, refresh it, and retry only after starting movement.`, fleet.address);
60
- case 'destroyed':
61
- return fail(`Fleet ${fleet.name} is destroyed and cannot have a movement arrival settled. Respawn the Fleet through an appropriate game client, refresh it, and retry only after starting warp or subwarp movement.`, fleet.address);
62
- case 'claimStakeTransfer':
63
- return fail(`Fleet ${fleet.name} is in a claimStakeTransfer state, not movement. Finish the Claim Stake transfer, refresh the Fleet, and retry only after starting warp or subwarp movement.`, fleet.address);
48
+ if (Object.keys(record).length === 1 &&
49
+ Object.hasOwn(record, 'authorization')) {
50
+ const auth = record.authorization;
51
+ if (auth !== null && typeof auth === 'object' && !Array.isArray(auth)) {
52
+ const fields = auth;
53
+ if (Object.keys(fields).length === 3 &&
54
+ Object.hasOwn(fields, 'keyIndex') &&
55
+ Object.hasOwn(fields, 'profile') &&
56
+ Object.hasOwn(fields, 'authority') &&
57
+ typeof fields.profile === 'string' &&
58
+ isAddress(fields.profile) &&
59
+ typeof fields.authority === 'string' &&
60
+ isAddress(fields.authority)) {
61
+ const authorization = {
62
+ profile: fields.profile,
63
+ authority: fields.authority,
64
+ keyIndex: fields.keyIndex,
65
+ };
66
+ validatePlanAuthorization(authorization);
67
+ return { authorization };
68
+ }
69
+ }
64
70
  }
71
+ throw new InvalidActionInputError('options', value, 'direct Profile authorization', remedy);
65
72
  }
66
73
  const STOP_SUBWARP_REMEDIES = {
67
74
  claimStakeTransfer: 'Finish the Claim Stake transfer',
@@ -228,7 +235,7 @@ async function validateIdleFleetRead(account, fleet, game, actionLocation, planN
228
235
  stateLocation?.y !== actionLocation.y) {
229
236
  fail(`Fleet ${fleet.name} changed or no longer matches its configured Game, owner, address, PDA, or idle coordinate, movement state, and action coordinate. Refresh the Fleet and create a new ${planName} Plan before retrying.`, fleet.address);
230
237
  }
231
- const exact = sage.getFleetDecoder().decode(account.data);
238
+ const exact = getFleetDecoder().decode(account.data);
232
239
  let exactLocation = exact.location;
233
240
  if (exact.state.__kind === 'MoveWarp') {
234
241
  exactLocation = exact.state.fields[0].to;
@@ -248,59 +255,16 @@ function validateRegionTrackerRead(account, fleet, game, canonicalAddress, actio
248
255
  if (account.address !== canonicalAddress || data.game !== game) {
249
256
  fail(`Fleet ${fleet.name} cannot ${action} because RegionTracker does not match the configured Game or canonical PDA: ${account.address}; refresh the world region data for the configured Game and retry.`, account.address);
250
257
  }
251
- return sage.getRegionTrackerDecoder().decode(account.data);
258
+ return getRegionTrackerDecoder().decode(account.data);
252
259
  }
253
260
  function validateCrewBindingRead(account, fleet, canonicalAddress) {
254
261
  const data = fleetCrewBindingAccountDefinition.decode(account);
255
262
  if (account.address !== canonicalAddress ||
256
- data.fleet !== fleet.address ||
257
- data.ownerProfile !== fleet.ownerProfile.address) {
263
+ !matchesFleetCrewBindingIdentity(data, fleet.address, fleet.ownerProfile.address)) {
258
264
  fail(`FleetCrewBinding does not match Fleet ${fleet.address}, its owner Profile, or its canonical PDA: ${account.address}. Refresh the Fleet crew registration or remove the invalid binding before retrying.`, account.address);
259
265
  }
260
266
  return data;
261
267
  }
262
- function pointIsOnSegment(point, start, end) {
263
- const cross = (point.y - start.y) * (end.x - start.x) -
264
- (point.x - start.x) * (end.y - start.y);
265
- return (cross === 0n &&
266
- point.x >= (start.x < end.x ? start.x : end.x) &&
267
- point.x <= (start.x > end.x ? start.x : end.x) &&
268
- point.y >= (start.y < end.y ? start.y : end.y) &&
269
- point.y <= (start.y > end.y ? start.y : end.y));
270
- }
271
- function regionContainsCoordinate(region, coordinate) {
272
- const boundingBox = {
273
- maxX: region.boundingBox.maxX.raw,
274
- maxY: region.boundingBox.maxY.raw,
275
- minX: region.boundingBox.minX.raw,
276
- minY: region.boundingBox.minY.raw,
277
- };
278
- const border = region.border.map(([x, y]) => ({ x: x.raw, y: y.raw }));
279
- if (border.length < 3 ||
280
- coordinate.x < boundingBox.minX ||
281
- coordinate.x > boundingBox.maxX ||
282
- coordinate.y < boundingBox.minY ||
283
- coordinate.y > boundingBox.maxY) {
284
- return false;
285
- }
286
- let inside = false;
287
- for (let index = 0; index < border.length; index += 1) {
288
- const start = border[index];
289
- const end = border[(index + 1) % border.length];
290
- if (pointIsOnSegment(coordinate, start, end))
291
- return true;
292
- if (start.y > coordinate.y !== end.y > coordinate.y) {
293
- const deltaY = end.y - start.y;
294
- const pointSide = (coordinate.x - start.x) * deltaY;
295
- const edgeSide = (coordinate.y - start.y) * (end.x - start.x);
296
- if ((deltaY > 0n && pointSide < edgeSide) ||
297
- (deltaY < 0n && pointSide > edgeSide)) {
298
- inside = !inside;
299
- }
300
- }
301
- }
302
- return inside;
303
- }
304
268
  function resolveRegionId(tracker, coordinate, displayCoordinate, label, fleet, trackerAddress) {
305
269
  const region = tracker.regions.unsizedList.find((candidate) => regionContainsCoordinate(candidate, coordinate));
306
270
  if (region === undefined) {
@@ -311,8 +275,8 @@ function resolveRegionId(tracker, coordinate, displayCoordinate, label, fleet, t
311
275
  function exactCoordinate(coordinate) {
312
276
  const spec = { fractionalBits: 56, signed: true, totalBits: 64 };
313
277
  return {
314
- x: sage.FixedPoint.fromNumber(coordinate.x, spec).raw,
315
- y: sage.FixedPoint.fromNumber(coordinate.y, spec).raw,
278
+ x: FixedPoint.fromNumber(coordinate.x, spec).raw,
279
+ y: FixedPoint.fromNumber(coordinate.y, spec).raw,
316
280
  };
317
281
  }
318
282
  async function resolveCoordinateMovement(ctx, fleet, authorization, actionLocation, destination) {
@@ -362,7 +326,13 @@ async function planCoordinateMovement(mode, ctx, fleet, options) {
362
326
  validateDestination(fleet, actionLocation, options.destination);
363
327
  const game = requireGameAddress(ctx);
364
328
  const resolved = await resolveCoordinateMovement(ctx, fleet, options.authorization, actionLocation, options.destination);
329
+ const xp = await resolveXpRuntime(ctx, {
330
+ game,
331
+ character: resolved.character,
332
+ profile: options.authorization.profile,
333
+ });
365
334
  const common = {
335
+ ...xp.accounts,
366
336
  authorization: options.authorization,
367
337
  character: resolved.character,
368
338
  ...(resolved.crewBinding === undefined
@@ -386,10 +356,27 @@ async function planCoordinateMovement(mode, ctx, fleet, options) {
386
356
  const verb = mode === 'subwarp' ? 'Subwarp' : 'Warp';
387
357
  const description = `${verb} fleet ${fleet.name} to coordinate (${String(options.destination.x)}, ${String(options.destination.y)}).`;
388
358
  const accounts = [
359
+ {
360
+ kind: 'xp-runtime',
361
+ address: game,
362
+ intent: xp.intent,
363
+ accounts: xp.accounts,
364
+ describes: 'The configured Game and canonical Character XP accounts remain eligible for movement.',
365
+ },
389
366
  await precondition(resolved.fleetAccount, fleet.state.kind === 'idle'
390
367
  ? `Fleet ${fleet.name} remains idle at coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`
391
368
  : `Fleet ${fleet.name} remains ${fleet.state.kind} with action coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`),
392
- await precondition(resolved.characterAccount, `The canonical Character remains assigned to Profile ${options.authorization.profile} in the configured Game.`),
369
+ {
370
+ kind: 'movement-character',
371
+ address: resolved.character,
372
+ game,
373
+ profile: options.authorization.profile,
374
+ stateHash: await hashMovementCharacter(resolved.characterAccount, {
375
+ game,
376
+ profile: options.authorization.profile,
377
+ }),
378
+ describes: 'The canonical Character retains its movement modifiers and non-accrual state.',
379
+ },
393
380
  await precondition(resolved.regionTrackerAccount, `The configured RegionTracker continues to map Fleet ${fleet.name}'s current and destination coordinates.`),
394
381
  ...(resolved.crewBindingAccount === undefined
395
382
  ? []
@@ -411,31 +398,6 @@ async function planCoordinateMovement(mode, ctx, fleet, options) {
411
398
  summary: description,
412
399
  });
413
400
  }
414
- async function deriveCurrencyCacheAddress(game) {
415
- const [address] = await getProgramDerivedAddress({
416
- programAddress: sage.SAGE_PROGRAM_ADDRESS,
417
- seeds: [
418
- getBytesEncoder().encode(new TextEncoder().encode('CurrencyConfig')),
419
- getAddressEncoder().encode(game),
420
- ],
421
- });
422
- return address;
423
- }
424
- function validateCurrencyCacheRead(account, fleet, game, canonicalAddress) {
425
- const decoder = sage.getCurrencyConfigCacheDecoder();
426
- const discriminator = sage.CURRENCY_CONFIG_CACHE_DISCRIMINATOR;
427
- const validDiscriminator = discriminator.every((byte, index) => account.data[index] === byte);
428
- if (account.address !== canonicalAddress ||
429
- account.owner !== sage.SAGE_PROGRAM_ADDRESS ||
430
- account.data.length !== decoder.fixedSize ||
431
- !validDiscriminator) {
432
- fail(`Fleet ${fleet.name} cannot use a warp lane because CurrencyCache ${account.address} does not match the configured Game, canonical PDA, owner, or pinned account layout. Refresh the Game currency configuration and retry.`, account.address);
433
- }
434
- const decoded = decoder.decode(account.data);
435
- if (decoded.gameId !== game) {
436
- fail(`Fleet ${fleet.name} cannot use a warp lane because CurrencyCache ${account.address} does not match the configured Game or canonical PDA. Refresh the Game currency configuration and retry.`, account.address);
437
- }
438
- }
439
401
  async function validateLaneSystemRead(account, fleet, game, label) {
440
402
  const data = starSystemAccountDefinition.decode(account);
441
403
  const canonicalAddress = await deriveStarSystemAddress(game, data.systemId);
@@ -446,7 +408,7 @@ async function validateLaneSystemRead(account, fleet, game, label) {
446
408
  }
447
409
  function hasExactSystemLocation(account, location) {
448
410
  starSystemAccountDefinition.decode(account);
449
- const exact = sage.getStarSystemDecoder().decode(account.data);
411
+ const exact = getStarSystemDecoder().decode(account.data);
450
412
  return (exact.coordinates[0].raw === location.x &&
451
413
  exact.coordinates[1].raw === location.y);
452
414
  }
@@ -469,7 +431,7 @@ async function resolveWarpLane(ctx, fleet, actionLocation, options) {
469
431
  }
470
432
  const [character, currencyCache, factionRelationTracker, regionTracker] = await Promise.all([
471
433
  findCharacterPda(options.authorization.profile, game),
472
- deriveCurrencyCacheAddress(game),
434
+ deriveCurrencyCache(game).then(([address]) => address),
473
435
  deriveFactionRelationTrackerAddress(game),
474
436
  deriveRegionTrackerAddress(game),
475
437
  ]);
@@ -491,7 +453,7 @@ async function resolveWarpLane(ctx, fleet, actionLocation, options) {
491
453
  const factionCandidate = reads[destinationOffset + 2];
492
454
  const regionCandidate = reads[destinationOffset + 3];
493
455
  const fleetAccount = requireRawAccount(fleetCandidate, `Fleet ${fleet.name} is no longer available at ${fleet.address}. Refresh the Fleet and retry planning the warp lane.`, fleet.address);
494
- const validatedFleet = await validateIdleFleetRead(fleetAccount, fleet, game, actionLocation);
456
+ const validatedFleet = await validateIdleFleetRead(fleetAccount, fleet, game, actionLocation, 'warp lane');
495
457
  const exactSourceCandidates = sourceCandidates.flatMap((candidate, index) => {
496
458
  const account = reads[sourceOffset + index];
497
459
  return account !== undefined &&
@@ -517,7 +479,7 @@ async function resolveWarpLane(ctx, fleet, actionLocation, options) {
517
479
  validateCharacterForCoordinateMovement(characterAccount, fleet, options.authorization.profile, game, character);
518
480
  const source = await validateLaneSystemRead(sourceAccount, fleet, game, 'source');
519
481
  const destination = await validateLaneSystemRead(destinationAccount, fleet, game, 'destination');
520
- validateCurrencyCacheRead(currencyCacheAccount, fleet, game, currencyCache);
482
+ await validateCurrencyCache(currencyCacheAccount, game, 'warp lane');
521
483
  validateFactionRelationTrackerRead(factionRelationTrackerAccount, fleet, game, factionRelationTracker);
522
484
  validateRegionTrackerRead(regionTrackerAccount, fleet, game, regionTracker);
523
485
  if (sourceSystem === options.destinationSystem) {
@@ -547,7 +509,15 @@ async function resolveWarpLane(ctx, fleet, actionLocation, options) {
547
509
  *
548
510
  * The planner resolves the source Star System from the Fleet's action coordinate,
549
511
  * proves connectivity from that System's decoded connections, and resolves all
550
- * generated instruction accounts internally.
512
+ * generated instruction accounts internally. CurrencyCache shared accounting may
513
+ * change; canonical identity/layout and the existing toll-input guards remain
514
+ * checked before signing. Refresh and recreate older Plans to use this guard.
515
+ *
516
+ * Connectivity does not guarantee eligibility. The program remains authoritative
517
+ * for faction-relationship and destination-risk checks and any ATLAS toll.
518
+ * Tested current PTR routes succeed with empty Fuel tanks. This planner does
519
+ * not estimate lane costs or treat enabled cross-faction economics as blanket
520
+ * permission.
551
521
  *
552
522
  * @example
553
523
  * ```ts
@@ -567,24 +537,54 @@ export async function planFleetWarpLane(ctx, fleet, options) {
567
537
  const actionLocation = requireRefreshableIdleState(fleet, 'warp through a lane');
568
538
  const game = requireGameAddress(ctx);
569
539
  const resolved = await resolveWarpLane(ctx, fleet, actionLocation, options);
540
+ const xp = await resolveXpRuntime(ctx, {
541
+ game,
542
+ character: resolved.character,
543
+ profile: options.authorization.profile,
544
+ });
570
545
  const description = `Warp fleet ${fleet.name} from Star System ${resolved.source.name} to Star System ${resolved.destination.name} via warp lane.`;
571
546
  return createPlan({
572
547
  kind: 'fleet.warp-lane',
573
- preconditions: await Promise.all([
574
- precondition(resolved.fleetAccount, fleet.state.kind === 'idle'
575
- ? `Fleet ${fleet.name} remains idle at Star System ${resolved.source.name}.`
576
- : `Fleet ${fleet.name} remains ${fleet.state.kind} at action source Star System ${resolved.source.name}.`),
577
- precondition(resolved.characterAccount, `The canonical Character remains assigned to Profile ${options.authorization.profile} in the configured Game.`),
578
- precondition(resolved.sourceAccount, `Source Star System ${resolved.source.name} remains at Fleet ${fleet.name}'s action coordinate with a connection to system id ${String(resolved.destination.systemId)}.`),
579
- precondition(resolved.destinationAccount, `Destination Star System ${resolved.destination.name} remains system id ${String(resolved.destination.systemId)} in the configured Game.`),
580
- precondition(resolved.currencyCacheAccount, 'The canonical CurrencyCache remains assigned to the configured Game.'),
581
- precondition(resolved.factionRelationTrackerAccount, 'The canonical FactionRelationTracker remains assigned to the configured Game.'),
582
- precondition(resolved.regionTrackerAccount, 'The canonical RegionTracker remains assigned to the configured Game.'),
583
- ]),
548
+ preconditions: [
549
+ {
550
+ kind: 'xp-runtime',
551
+ address: game,
552
+ intent: xp.intent,
553
+ accounts: xp.accounts,
554
+ describes: 'The configured Game and canonical Character XP accounts remain eligible for movement.',
555
+ },
556
+ ...(await Promise.all([
557
+ precondition(resolved.fleetAccount, fleet.state.kind === 'idle'
558
+ ? `Fleet ${fleet.name} remains idle at Star System ${resolved.source.name}.`
559
+ : `Fleet ${fleet.name} remains ${fleet.state.kind} at action source Star System ${resolved.source.name}.`),
560
+ hashMovementCharacter(resolved.characterAccount, {
561
+ game,
562
+ profile: options.authorization.profile,
563
+ }).then((stateHash) => ({
564
+ kind: 'movement-character',
565
+ address: resolved.character,
566
+ game,
567
+ profile: options.authorization.profile,
568
+ stateHash,
569
+ describes: 'The canonical Character retains its movement modifiers and non-accrual state.',
570
+ })),
571
+ precondition(resolved.sourceAccount, `Source Star System ${resolved.source.name} remains at Fleet ${fleet.name}'s action coordinate with a connection to system id ${String(resolved.destination.systemId)}.`),
572
+ precondition(resolved.destinationAccount, `Destination Star System ${resolved.destination.name} remains system id ${String(resolved.destination.systemId)} in the configured Game.`),
573
+ Promise.resolve({
574
+ kind: 'currency-cache',
575
+ address: resolved.currencyCacheAccount.address,
576
+ game,
577
+ describes: 'The canonical CurrencyCache retains its supported Game identity and layout; shared accounting may change.',
578
+ }),
579
+ precondition(resolved.factionRelationTrackerAccount, 'The canonical FactionRelationTracker remains assigned to the configured Game.'),
580
+ precondition(resolved.regionTrackerAccount, 'The canonical RegionTracker remains assigned to the configured Game.'),
581
+ ])),
582
+ ],
584
583
  steps: [
585
584
  {
586
585
  describes: description,
587
586
  instruction: adaptWarpLaneInstruction({
587
+ ...xp.accounts,
588
588
  authorization: options.authorization,
589
589
  character: resolved.character,
590
590
  currencyCache: resolved.currencyCache,
@@ -634,47 +634,73 @@ export function planFleetSubwarp(ctx, fleet, options) {
634
634
  export function planFleetWarpToCoordinate(ctx, fleet, options) {
635
635
  return planCoordinateMovement('warp', ctx, fleet, options);
636
636
  }
637
- /** Plans settlement of one Fleet warp or subwarp arrival.
637
+ /** Plans settlement after chain time confirms the scheduled Fleet journey duration has elapsed.
638
638
  *
639
- * Settlement is distinct from stopping subwarp early: the program completes an
640
- * elapsed movement, while an in-transit call is a measured safe no-op. Subwarp
641
- * settlement charges the fuel recorded when movement started; warp fuel was
642
- * already charged up front. Settlement does not clear the independent warp
643
- * cooldown, so an arrived Fleet can be idle but still unable to warp again.
639
+ * Game version 2 subwarp requires explicit direct Profile authorization and
640
+ * existing reconciled Career XP accounts. Warp settlement is unsupported.
641
+ * Journeys whose scheduled duration has not elapsed and Idle Fleets fail locally.
642
+ * Planning and execution read fresh accounts; no host clock is used.
643
+ *
644
+ * Settlement does not guarantee reaching the destination: insufficient Fuel can
645
+ * leave the Fleet Idle short of it. Low Fuel produces a planning-time warning,
646
+ * not a rejection. Inspect refreshed state and location after confirmation.
647
+ * Subwarp settles fuel and XP and may refund released storage rent to the
648
+ * Profile. Warp cooldown remains independent. Fresh checks cannot prevent a
649
+ * concurrent transaction from starting another journey before execution; the
650
+ * authorized instruction could stop that new journey. Intentional early
651
+ * stopping remains the separate {@link planFleetStopSubwarp} operation.
644
652
  *
645
653
  * @example
646
654
  * ```ts
647
655
  * declare const ctx: SageContext;
648
656
  * declare const fleet: FleetSnapshot;
649
- * declare const funder: Address;
650
- * const plan = await planFleetSettleArrival(ctx, fleet, { funder });
657
+ * declare const authorization: PlanAuthorization;
658
+ * const plan = await planFleetSettleArrival(ctx, fleet, { authorization });
651
659
  * console.log(plan.describe());
652
660
  * ```
653
661
  */
654
662
  export async function planFleetSettleArrival(ctx, fleet, input) {
655
- const { funder } = validateSettleArrivalOptions(input);
656
- const movement = requireSettleArrivalState(fleet);
657
- const game = requireGameAddress(ctx);
658
- const character = await findCharacterPda(fleet.ownerProfile.address, game);
659
- const description = movement === 'subwarp'
660
- ? `Settle fleet ${fleet.name} after subwarp arrival and charge the fuel recorded when subwarp started.`
661
- : `Settle fleet ${fleet.name} after warp arrival; warp cooldown remains independent.`;
663
+ const options = validateSettleArrivalOptions(input);
664
+ const { intent, character, regionTracker, xp, lowFuel } = await resolveFleetArrival(ctx, fleet.address, options);
665
+ const fuelWarning = lowFuel
666
+ ? ' Fuel is below the recorded journey budget (at planning); may stop short with no Fuel.'
667
+ : '';
668
+ const description = `Settle subwarp: fuel and Career XP; possible rent refund to Profile ${intent.profile}. Settlement does not guarantee reaching the destination.${fuelWarning} Read confirmed state/location. A race could stop a new journey.`;
669
+ const instruction = adaptStopSubwarpInstruction({
670
+ authorization: intent.authorization,
671
+ character,
672
+ fleet: intent.fleet,
673
+ game: intent.game,
674
+ regionTracker,
675
+ ...xp.accounts,
676
+ });
662
677
  return createPlan({
663
678
  kind: 'fleet.settle-arrival',
664
- preconditions: [],
679
+ preconditions: [
680
+ {
681
+ kind: 'fleet-arrival',
682
+ address: intent.fleet,
683
+ intent,
684
+ character,
685
+ regionTracker,
686
+ describes: 'The owned journey must still have elapsed on chain; direct Profile authority must remain valid.',
687
+ },
688
+ {
689
+ kind: 'xp-runtime',
690
+ address: intent.game,
691
+ intent: xp.intent,
692
+ accounts: xp.accounts,
693
+ describes: 'The current Game runtime and required Career XP accounts must remain supported; XP balances may change.',
694
+ },
695
+ ],
665
696
  steps: [
666
697
  {
667
698
  describes: description,
668
- instruction: adaptFleetSettleArrivalInstruction({
669
- character,
670
- fleet: fleet.address,
671
- funder,
672
- game,
673
- }),
674
- signers: [funder],
699
+ instruction,
700
+ signers: [intent.authorization.authority],
675
701
  },
676
702
  ],
677
- summary: `Settle arrival for fleet ${fleet.name}.`,
703
+ summary: `Settle elapsed subwarp for fleet ${fleet.name}.`,
678
704
  });
679
705
  }
680
706
  /** Plans an early Fleet subwarp stop without signing, simulation, or write RPC.
@@ -704,14 +730,28 @@ export async function planFleetStopSubwarp(ctx, fleet, options) {
704
730
  const [regionCandidate] = await readContextRawAccounts(ctx, [regionTracker]);
705
731
  const regionTrackerAccount = requireRawAccount(regionCandidate, `Canonical RegionTracker ${regionTracker} is missing. Verify the configured Game and cluster, refresh world region data, and retry stopping Fleet ${fleet.name}.`, regionTracker);
706
732
  validateRegionTrackerRead(regionTrackerAccount, fleet, game, regionTracker, 'stop subwarp');
733
+ const xp = await resolveXpRuntime(ctx, {
734
+ game,
735
+ character,
736
+ profile: options.authorization.profile,
737
+ });
707
738
  const description = `Stop subwarp early for fleet ${fleet.name}; leave it idle if the trip already completed.`;
708
739
  return createPlan({
709
740
  kind: 'fleet.stop-subwarp',
710
- preconditions: [],
741
+ preconditions: [
742
+ {
743
+ kind: 'xp-runtime',
744
+ address: game,
745
+ intent: xp.intent,
746
+ accounts: xp.accounts,
747
+ describes: 'The configured Game and canonical Character XP accounts remain eligible for movement.',
748
+ },
749
+ ],
711
750
  steps: [
712
751
  {
713
752
  describes: description,
714
753
  instruction: adaptStopSubwarpInstruction({
754
+ ...xp.accounts,
715
755
  authorization: options.authorization,
716
756
  character,
717
757
  fleet: fleet.address,
@@ -850,24 +890,71 @@ export async function planFleetDock(ctx, fleet, options) {
850
890
  ]);
851
891
  const playerAccount = requireRawAccount(playerCandidate, `Fleet ${fleet.name} cannot dock because Character ${characterAddress} is not registered at Starbase ${system.name} in Star System ${systemAddress}. Register the Character at this Starbase before docking, refresh the Fleet, and retry.`, starbasePlayerAddress);
852
892
  validateStarbasePlayerRead(playerAccount, fleet, options.authorization.profile, characterAddress, systemAddress, starbasePlayerAddress, 'dock');
893
+ const [tracker, ownership] = await Promise.all([
894
+ deriveFactionRelationTrackerAddress(game),
895
+ deriveFactionOwnershipAddress(game, 'starbase', systemAddress),
896
+ ]);
897
+ const policy = {
898
+ kind: 'fleet-docking-policy',
899
+ address: tracker,
900
+ game,
901
+ system: systemAddress,
902
+ ownership,
903
+ describes: 'Docking retains qualified default faction gating and legacy System control.',
904
+ };
905
+ const [trackerAccount, ownershipAccount] = await readContextRawAccounts(ctx, [
906
+ tracker,
907
+ ownership,
908
+ ]);
909
+ await validateFleetDockingPolicy(trackerAccount, ownershipAccount, policy);
853
910
  const instruction = adaptIdleToDockedInstruction({
911
+ factionRelationTracker: tracker,
912
+ factionOwnership: ownership,
854
913
  authorization: options.authorization,
855
914
  fleet: fleet.address,
856
915
  game,
857
916
  systemAndStarbasePlayerStarbasePlayer: starbasePlayerAddress,
858
917
  systemAndStarbasePlayerSystem: systemAddress,
859
918
  });
919
+ const fundingIntent = {
920
+ address: fleet.address,
921
+ game,
922
+ profile: options.authorization.profile,
923
+ authority: options.authorization.authority,
924
+ certificate: instruction.accounts[2].address,
925
+ keyIndex: options.authorization.keyIndex,
926
+ character: characterAddress,
927
+ system: systemAddress,
928
+ starbasePlayer: starbasePlayerAddress,
929
+ };
930
+ const amounts = await resolveDockFunding(ctx, fundingIntent, [
931
+ fleetAccount,
932
+ playerAccount,
933
+ systemAccount,
934
+ ]);
935
+ const funding = {
936
+ kind: 'fleet-dock-funding',
937
+ ...fundingIntent,
938
+ ...amounts,
939
+ describes: amounts.status === 'available'
940
+ ? `Maximum gross Profile storage debit: ${String(amounts.maximumProfileDebit)} lamports. No refunds or surplus are credited; transaction fees are separate. Rechecked before signing, not enforced atomically on chain.`
941
+ : `Docking storage debit bounds are unavailable (${amounts.reason}); this does not imply zero Profile debit. Inspect simulation and fund the Profile explicitly if needed; transaction fees are separate.`,
942
+ };
860
943
  const description = `Dock fleet ${fleet.name} at the Starbase in Star System ${system.name}.`;
861
944
  return createPlan({
862
945
  kind: 'fleet.dock',
863
- preconditions: await Promise.all([
864
- precondition(fleetAccount, fleet.state.kind === 'idle'
865
- ? `Fleet ${fleet.name} remains idle at Starbase System ${system.name} coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`
866
- : `Fleet ${fleet.name} remains ${fleet.state.kind} at Starbase System ${system.name} action coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`),
867
- precondition(characterAccount, `The canonical Character remains assigned to Profile ${options.authorization.profile} in the configured Game.`),
868
- precondition(systemAccount, `Star System ${system.name} remains the Starbase System at Fleet ${fleet.name} coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`),
869
- precondition(playerAccount, `The Starbase Player remains registered for Fleet ${fleet.name} at Starbase ${system.name}.`),
870
- ]),
946
+ preconditions: [
947
+ policy,
948
+ ...(await Promise.all([
949
+ precondition(fleetAccount, fleet.state.kind === 'idle'
950
+ ? `Fleet ${fleet.name} remains idle at Starbase System ${system.name} coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`
951
+ : `Fleet ${fleet.name} remains ${fleet.state.kind} at Starbase System ${system.name} action coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`),
952
+ precondition(characterAccount, `The canonical Character remains assigned to Profile ${options.authorization.profile} in the configured Game.`),
953
+ precondition(systemAccount, `Star System ${system.name} remains the Starbase System at Fleet ${fleet.name} coordinate (${String(actionLocation.x)}, ${String(actionLocation.y)}).`),
954
+ precondition(playerAccount, `The Starbase Player remains registered for Fleet ${fleet.name} at Starbase ${system.name}.`),
955
+ ])),
956
+ funding,
957
+ ],
871
958
  steps: [
872
959
  {
873
960
  describes: description,
@@ -879,4 +966,9 @@ export async function planFleetDock(ctx, fleet, options) {
879
966
  });
880
967
  }
881
968
  export { planDepositShipsToGame, } from './ship-import.js';
969
+ export { planCreateFleet, } from './create-fleet.js';
970
+ export { planAddShipToFleet, } from './add-ship.js';
971
+ export { planFleetStartRespawn, planFleetCompleteRespawn, } from './respawn.js';
972
+ export { planLoadFleetCrew, planUnloadFleetCrew, } from './crew-transfer.js';
973
+ export { getFleetDockDebitBounds, } from './dock-bounds.js';
882
974
  //# sourceMappingURL=index.js.map