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

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 (620) 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 +27 -14
  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 +10 -15
  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 +30 -29
  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 +137 -111
  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 +104 -67
  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 +101 -108
  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 +44 -15
  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 +245 -153
  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 +41 -13
  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 +48 -27
  134. package/dist/identity/actions/index.js.map +1 -1
  135. package/dist/identity/index.d.ts +8 -0
  136. package/dist/identity/index.d.ts.map +1 -1
  137. package/dist/identity/index.js +8 -0
  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/cargo-bytes-config.d.ts +7 -0
  152. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  153. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  154. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  155. package/dist/internal/c4/character-registration.d.ts +2 -0
  156. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  157. package/dist/internal/c4/character-registration.js +2 -0
  158. package/dist/internal/c4/character-registration.js.map +1 -1
  159. package/dist/internal/c4/claim-stake-definitions.d.ts +4 -4
  160. package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
  161. package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
  162. package/dist/internal/c4/claim-stake.d.ts +4 -27
  163. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  164. package/dist/internal/c4/claim-stake.js +25 -38
  165. package/dist/internal/c4/claim-stake.js.map +1 -1
  166. package/dist/internal/c4/combat.d.ts +0 -27
  167. package/dist/internal/c4/combat.d.ts.map +1 -1
  168. package/dist/internal/c4/combat.js +0 -33
  169. package/dist/internal/c4/combat.js.map +1 -1
  170. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  171. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  172. package/dist/internal/c4/crafting-process-codec.js +34 -0
  173. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  174. package/dist/internal/c4/crafting.d.ts +25 -33
  175. package/dist/internal/c4/crafting.d.ts.map +1 -1
  176. package/dist/internal/c4/crafting.js +53 -44
  177. package/dist/internal/c4/crafting.js.map +1 -1
  178. package/dist/internal/c4/currency-cache.d.ts +6 -0
  179. package/dist/internal/c4/currency-cache.d.ts.map +1 -0
  180. package/dist/internal/c4/currency-cache.js +30 -0
  181. package/dist/internal/c4/currency-cache.js.map +1 -0
  182. package/dist/internal/c4/docking-funding.d.ts +4 -0
  183. package/dist/internal/c4/docking-funding.d.ts.map +1 -0
  184. package/dist/internal/c4/docking-funding.js +11 -0
  185. package/dist/internal/c4/docking-funding.js.map +1 -0
  186. package/dist/internal/c4/faction-adapter.d.ts +12 -0
  187. package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
  188. package/dist/internal/c4/faction-adapter.js +52 -0
  189. package/dist/internal/c4/faction-adapter.js.map +1 -0
  190. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  191. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  192. package/dist/internal/c4/faction-epoch-meter.js +31 -0
  193. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  194. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  195. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  196. package/dist/internal/c4/faction-treasury.js +48 -0
  197. package/dist/internal/c4/faction-treasury.js.map +1 -0
  198. package/dist/internal/c4/factions.d.ts +9 -57
  199. package/dist/internal/c4/factions.d.ts.map +1 -1
  200. package/dist/internal/c4/factions.js +21 -139
  201. package/dist/internal/c4/factions.js.map +1 -1
  202. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  203. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  204. package/dist/internal/c4/fleet-arrival.js +42 -0
  205. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  206. package/dist/internal/c4/fleet-creation.d.ts +7 -0
  207. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  208. package/dist/internal/c4/fleet-creation.js +180 -0
  209. package/dist/internal/c4/fleet-creation.js.map +1 -0
  210. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  211. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  212. package/dist/internal/c4/fleet-crew-binding.js +15 -0
  213. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  214. package/dist/internal/c4/fleet-respawn.d.ts +17 -0
  215. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  216. package/dist/internal/c4/fleet-respawn.js +62 -0
  217. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  218. package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
  219. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  220. package/dist/internal/c4/fleet-ship-assembly.js +44 -0
  221. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  222. package/dist/internal/c4/fleet.d.ts +45 -19
  223. package/dist/internal/c4/fleet.d.ts.map +1 -1
  224. package/dist/internal/c4/fleet.js +26 -7
  225. package/dist/internal/c4/fleet.js.map +1 -1
  226. package/dist/internal/c4/game-definition-layout.d.ts +2 -0
  227. package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
  228. package/dist/internal/c4/game-definition-layout.js +4 -0
  229. package/dist/internal/c4/game-definition-layout.js.map +1 -1
  230. package/dist/internal/c4/game.d.ts +46 -11
  231. package/dist/internal/c4/game.d.ts.map +1 -1
  232. package/dist/internal/c4/game.js +108 -20
  233. package/dist/internal/c4/game.js.map +1 -1
  234. package/dist/internal/c4/identity.d.ts +4 -2
  235. package/dist/internal/c4/identity.d.ts.map +1 -1
  236. package/dist/internal/c4/identity.js +1 -1
  237. package/dist/internal/c4/identity.js.map +1 -1
  238. package/dist/internal/c4/local-market-order.d.ts +31 -0
  239. package/dist/internal/c4/local-market-order.d.ts.map +1 -0
  240. package/dist/internal/c4/local-market-order.js +47 -0
  241. package/dist/internal/c4/local-market-order.js.map +1 -0
  242. package/dist/internal/c4/loyalty.d.ts +0 -27
  243. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  244. package/dist/internal/c4/loyalty.js +0 -33
  245. package/dist/internal/c4/loyalty.js.map +1 -1
  246. package/dist/internal/c4/market.d.ts +2 -38
  247. package/dist/internal/c4/market.d.ts.map +1 -1
  248. package/dist/internal/c4/market.js +13 -51
  249. package/dist/internal/c4/market.js.map +1 -1
  250. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  251. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  252. package/dist/internal/c4/mining-instructions.js +3 -0
  253. package/dist/internal/c4/mining-instructions.js.map +1 -0
  254. package/dist/internal/c4/open-signal.d.ts +8 -0
  255. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  256. package/dist/internal/c4/open-signal.js +37 -0
  257. package/dist/internal/c4/open-signal.js.map +1 -0
  258. package/dist/internal/c4/profile-permissions.d.ts +5 -3
  259. package/dist/internal/c4/profile-permissions.d.ts.map +1 -1
  260. package/dist/internal/c4/profile-permissions.js +61 -8
  261. package/dist/internal/c4/profile-permissions.js.map +1 -1
  262. package/dist/internal/c4/region-geometry.d.ts +8 -0
  263. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  264. package/dist/internal/c4/region-geometry.js +43 -0
  265. package/dist/internal/c4/region-geometry.js.map +1 -0
  266. package/dist/internal/c4/rewards.d.ts +0 -27
  267. package/dist/internal/c4/rewards.d.ts.map +1 -1
  268. package/dist/internal/c4/rewards.js +0 -33
  269. package/dist/internal/c4/rewards.js.map +1 -1
  270. package/dist/internal/c4/runtime-bindings.d.ts +4 -0
  271. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  272. package/dist/internal/c4/runtime-bindings.js +4 -0
  273. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  274. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  275. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  276. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  277. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  278. package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
  279. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  280. package/dist/internal/c4/scan-lifecycle.js +258 -0
  281. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  282. package/dist/internal/c4/scanning.d.ts +1 -28
  283. package/dist/internal/c4/scanning.d.ts.map +1 -1
  284. package/dist/internal/c4/scanning.js +2 -33
  285. package/dist/internal/c4/scanning.js.map +1 -1
  286. package/dist/internal/c4/ship-import.d.ts +4 -0
  287. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  288. package/dist/internal/c4/ship-import.js +13 -0
  289. package/dist/internal/c4/ship-import.js.map +1 -0
  290. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  291. package/dist/internal/c4/ship-stats.js +25 -21
  292. package/dist/internal/c4/ship-stats.js.map +1 -1
  293. package/dist/internal/c4/starbase.d.ts +0 -32
  294. package/dist/internal/c4/starbase.d.ts.map +1 -1
  295. package/dist/internal/c4/starbase.js +3 -41
  296. package/dist/internal/c4/starbase.js.map +1 -1
  297. package/dist/internal/c4/world.d.ts +36 -7
  298. package/dist/internal/c4/world.d.ts.map +1 -1
  299. package/dist/internal/c4/world.js +58 -25
  300. package/dist/internal/c4/world.js.map +1 -1
  301. package/dist/internal/cargo.d.ts +2 -0
  302. package/dist/internal/cargo.d.ts.map +1 -1
  303. package/dist/internal/cargo.js +8 -0
  304. package/dist/internal/cargo.js.map +1 -1
  305. package/dist/internal/fleet.d.ts +1 -0
  306. package/dist/internal/fleet.d.ts.map +1 -1
  307. package/dist/internal/fleet.js +3 -1
  308. package/dist/internal/fleet.js.map +1 -1
  309. package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
  310. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  311. package/dist/internal/loyalty-atlas-bank-state.js +10 -0
  312. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  313. package/dist/internal/planning/action-runtime.d.ts +38 -0
  314. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  315. package/dist/internal/planning/action-runtime.js +63 -0
  316. package/dist/internal/planning/action-runtime.js.map +1 -0
  317. package/dist/internal/planning/arrival-guards.d.ts +20 -0
  318. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  319. package/dist/internal/planning/arrival-guards.js +187 -0
  320. package/dist/internal/planning/arrival-guards.js.map +1 -0
  321. package/dist/internal/planning/authorization-adapter.d.ts +45 -37
  322. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  323. package/dist/internal/planning/authorization-adapter.js +165 -76
  324. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  325. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  326. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  327. package/dist/internal/planning/character-registration-guard.js +58 -0
  328. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  329. package/dist/internal/planning/character-registration.d.ts +23 -0
  330. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  331. package/dist/internal/planning/character-registration.js +86 -0
  332. package/dist/internal/planning/character-registration.js.map +1 -0
  333. package/dist/internal/planning/currency-cache-guard.d.ts +4 -0
  334. package/dist/internal/planning/currency-cache-guard.d.ts.map +1 -0
  335. package/dist/internal/planning/currency-cache-guard.js +32 -0
  336. package/dist/internal/planning/currency-cache-guard.js.map +1 -0
  337. package/dist/internal/planning/democracy-history.d.ts +50 -0
  338. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  339. package/dist/internal/planning/democracy-history.js +198 -0
  340. package/dist/internal/planning/democracy-history.js.map +1 -0
  341. package/dist/internal/planning/faction-enrollment.d.ts +0 -2
  342. package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
  343. package/dist/internal/planning/faction-enrollment.js +1 -22
  344. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  345. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  346. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  347. package/dist/internal/planning/faction-trade-guards.js +15 -0
  348. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  349. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  350. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  351. package/dist/internal/planning/faction-trade-state.js +43 -0
  352. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  353. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  354. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  355. package/dist/internal/planning/fleet-arrival.js +105 -0
  356. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  357. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  358. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  359. package/dist/internal/planning/fleet-attack-xp.js +110 -0
  360. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  361. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  362. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  363. package/dist/internal/planning/fleet-creation.js +108 -0
  364. package/dist/internal/planning/fleet-creation.js.map +1 -0
  365. package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
  366. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  367. package/dist/internal/planning/fleet-crew-guard.js +47 -0
  368. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  369. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  370. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  371. package/dist/internal/planning/fleet-crew-transfer.js +131 -0
  372. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  373. package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
  374. package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
  375. package/dist/internal/planning/fleet-dock-funding-guard.js +225 -0
  376. package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
  377. package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
  378. package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
  379. package/dist/internal/planning/fleet-dock-funding.js +154 -0
  380. package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
  381. package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
  382. package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
  383. package/dist/internal/planning/fleet-docking-guard.js +42 -0
  384. package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
  385. package/dist/internal/planning/fleet-docking.d.ts +10 -0
  386. package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
  387. package/dist/internal/planning/fleet-docking.js +85 -0
  388. package/dist/internal/planning/fleet-docking.js.map +1 -0
  389. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  390. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  391. package/dist/internal/planning/fleet-respawn.js +166 -0
  392. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  393. package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
  394. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  395. package/dist/internal/planning/fleet-ship-assembly.js +137 -0
  396. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  397. package/dist/internal/planning/governance-fees.d.ts +64 -0
  398. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  399. package/dist/internal/planning/governance-fees.js +239 -0
  400. package/dist/internal/planning/governance-fees.js.map +1 -0
  401. package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
  402. package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
  403. package/dist/internal/planning/local-market-order-funding.js +126 -0
  404. package/dist/internal/planning/local-market-order-funding.js.map +1 -0
  405. package/dist/internal/planning/local-market-order.d.ts +40 -0
  406. package/dist/internal/planning/local-market-order.d.ts.map +1 -0
  407. package/dist/internal/planning/local-market-order.js +166 -0
  408. package/dist/internal/planning/local-market-order.js.map +1 -0
  409. package/dist/internal/planning/mining-stop.d.ts +14 -0
  410. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  411. package/dist/internal/planning/mining-stop.js +41 -0
  412. package/dist/internal/planning/mining-stop.js.map +1 -0
  413. package/dist/internal/planning/movement-character.d.ts +7 -0
  414. package/dist/internal/planning/movement-character.d.ts.map +1 -0
  415. package/dist/internal/planning/movement-character.js +41 -0
  416. package/dist/internal/planning/movement-character.js.map +1 -0
  417. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  418. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  419. package/dist/internal/planning/movement-xp-guard.js +103 -0
  420. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  421. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  422. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  423. package/dist/internal/planning/open-signal-guard.js +31 -0
  424. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  425. package/dist/internal/planning/open-signal.d.ts +31 -0
  426. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  427. package/dist/internal/planning/open-signal.js +85 -0
  428. package/dist/internal/planning/open-signal.js.map +1 -0
  429. package/dist/internal/planning/recipe-state.d.ts +6 -0
  430. package/dist/internal/planning/recipe-state.d.ts.map +1 -0
  431. package/dist/internal/planning/recipe-state.js +20 -0
  432. package/dist/internal/planning/recipe-state.js.map +1 -0
  433. package/dist/internal/planning/rent.d.ts +19 -0
  434. package/dist/internal/planning/rent.d.ts.map +1 -0
  435. package/dist/internal/planning/rent.js +35 -0
  436. package/dist/internal/planning/rent.js.map +1 -0
  437. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  438. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  439. package/dist/internal/planning/respawn-guards.js +41 -0
  440. package/dist/internal/planning/respawn-guards.js.map +1 -0
  441. package/dist/internal/planning/runtime-guards.d.ts +43 -0
  442. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  443. package/dist/internal/planning/runtime-guards.js +638 -0
  444. package/dist/internal/planning/runtime-guards.js.map +1 -0
  445. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  446. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  447. package/dist/internal/planning/scan-completion-guard.js +94 -0
  448. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  449. package/dist/internal/planning/scan-completion.d.ts +20 -0
  450. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  451. package/dist/internal/planning/scan-completion.js +196 -0
  452. package/dist/internal/planning/scan-completion.js.map +1 -0
  453. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  454. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  455. package/dist/internal/planning/scan-detect-guard.js +77 -0
  456. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  457. package/dist/internal/planning/scan-detect.d.ts +24 -0
  458. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  459. package/dist/internal/planning/scan-detect.js +244 -0
  460. package/dist/internal/planning/scan-detect.js.map +1 -0
  461. package/dist/internal/planning/scan-input.d.ts +9 -0
  462. package/dist/internal/planning/scan-input.d.ts.map +1 -0
  463. package/dist/internal/planning/scan-input.js +58 -0
  464. package/dist/internal/planning/scan-input.js.map +1 -0
  465. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  466. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  467. package/dist/internal/planning/ship-import-funding.js +52 -0
  468. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  469. package/dist/internal/planning/ship-token.d.ts +0 -1
  470. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  471. package/dist/internal/planning/ship-token.js +2 -5
  472. package/dist/internal/planning/ship-token.js.map +1 -1
  473. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  474. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  475. package/dist/internal/planning/starbase-system-guard.js +93 -0
  476. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  477. package/dist/internal/planning/starbase-system.d.ts +15 -0
  478. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  479. package/dist/internal/planning/starbase-system.js +25 -0
  480. package/dist/internal/planning/starbase-system.js.map +1 -0
  481. package/dist/internal/planning/token-mint.d.ts +4 -0
  482. package/dist/internal/planning/token-mint.d.ts.map +1 -0
  483. package/dist/internal/planning/token-mint.js +15 -0
  484. package/dist/internal/planning/token-mint.js.map +1 -0
  485. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  486. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  487. package/dist/internal/planning/trade-faction-market.js +56 -0
  488. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  489. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  490. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  491. package/dist/internal/planning/xp-runtime.js +126 -0
  492. package/dist/internal/planning/xp-runtime.js.map +1 -0
  493. package/dist/internal/system-program.d.ts +4 -0
  494. package/dist/internal/system-program.d.ts.map +1 -0
  495. package/dist/internal/system-program.js +3 -0
  496. package/dist/internal/system-program.js.map +1 -0
  497. package/dist/loyalty/actions/index.d.ts.map +1 -1
  498. package/dist/loyalty/actions/index.js +7 -20
  499. package/dist/loyalty/actions/index.js.map +1 -1
  500. package/dist/loyalty/index.d.ts.map +1 -1
  501. package/dist/loyalty/index.js +2 -6
  502. package/dist/loyalty/index.js.map +1 -1
  503. package/dist/markets/actions/index.d.ts +61 -3
  504. package/dist/markets/actions/index.d.ts.map +1 -1
  505. package/dist/markets/actions/index.js +142 -36
  506. package/dist/markets/actions/index.js.map +1 -1
  507. package/dist/markets/actions/trade-faction-market.d.ts +43 -0
  508. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  509. package/dist/markets/actions/trade-faction-market.js +282 -0
  510. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  511. package/dist/markets/index.d.ts +38 -7
  512. package/dist/markets/index.d.ts.map +1 -1
  513. package/dist/markets/index.js +57 -10
  514. package/dist/markets/index.js.map +1 -1
  515. package/dist/mining/actions/index.d.ts +87 -0
  516. package/dist/mining/actions/index.d.ts.map +1 -0
  517. package/dist/mining/actions/index.js +332 -0
  518. package/dist/mining/actions/index.js.map +1 -0
  519. package/dist/mining/estimate.d.ts +114 -0
  520. package/dist/mining/estimate.d.ts.map +1 -0
  521. package/dist/mining/estimate.js +127 -0
  522. package/dist/mining/estimate.js.map +1 -0
  523. package/dist/mining/index.d.ts +9 -2
  524. package/dist/mining/index.d.ts.map +1 -1
  525. package/dist/mining/index.js +7 -2
  526. package/dist/mining/index.js.map +1 -1
  527. package/dist/mining/profile.d.ts +82 -0
  528. package/dist/mining/profile.d.ts.map +1 -0
  529. package/dist/mining/profile.js +109 -0
  530. package/dist/mining/profile.js.map +1 -0
  531. package/dist/planning/assembly.d.ts +5 -0
  532. package/dist/planning/assembly.d.ts.map +1 -1
  533. package/dist/planning/assembly.js +30 -2
  534. package/dist/planning/assembly.js.map +1 -1
  535. package/dist/planning/execution.d.ts +18 -3
  536. package/dist/planning/execution.d.ts.map +1 -1
  537. package/dist/planning/execution.js +492 -40
  538. package/dist/planning/execution.js.map +1 -1
  539. package/dist/planning/index.d.ts +196 -149
  540. package/dist/planning/index.d.ts.map +1 -1
  541. package/dist/planning/index.js +910 -121
  542. package/dist/planning/index.js.map +1 -1
  543. package/dist/planning/plan-sequence-checkpoint.d.ts +9 -0
  544. package/dist/planning/plan-sequence-checkpoint.d.ts.map +1 -1
  545. package/dist/planning/plan-sequence-checkpoint.js +16 -7
  546. package/dist/planning/plan-sequence-checkpoint.js.map +1 -1
  547. package/dist/planning/plan-sequence-execution.d.ts +5 -0
  548. package/dist/planning/plan-sequence-execution.d.ts.map +1 -1
  549. package/dist/planning/plan-sequence-execution.js +74 -30
  550. package/dist/planning/plan-sequence-execution.js.map +1 -1
  551. package/dist/planning/plan-sequence.d.ts +2 -1
  552. package/dist/planning/plan-sequence.d.ts.map +1 -1
  553. package/dist/planning/plan-sequence.js +8 -1
  554. package/dist/planning/plan-sequence.js.map +1 -1
  555. package/dist/planning/simulation.d.ts +25 -1
  556. package/dist/planning/simulation.d.ts.map +1 -1
  557. package/dist/planning/simulation.js +111 -11
  558. package/dist/planning/simulation.js.map +1 -1
  559. package/dist/registry/cargo.d.ts +7 -12
  560. package/dist/registry/cargo.d.ts.map +1 -1
  561. package/dist/registry/cargo.js +19 -19
  562. package/dist/registry/cargo.js.map +1 -1
  563. package/dist/registry/docking.d.ts +10 -0
  564. package/dist/registry/docking.d.ts.map +1 -0
  565. package/dist/registry/docking.js +12 -0
  566. package/dist/registry/docking.js.map +1 -0
  567. package/dist/registry/index.d.ts +4 -0
  568. package/dist/registry/index.d.ts.map +1 -1
  569. package/dist/registry/index.js.map +1 -1
  570. package/dist/registry/onboarding.d.ts +10 -2
  571. package/dist/registry/onboarding.d.ts.map +1 -1
  572. package/dist/registry/onboarding.js +20 -7
  573. package/dist/registry/onboarding.js.map +1 -1
  574. package/dist/registry/scanning.d.ts +7 -0
  575. package/dist/registry/scanning.d.ts.map +1 -0
  576. package/dist/registry/scanning.js +13 -0
  577. package/dist/registry/scanning.js.map +1 -0
  578. package/dist/registry/ship-stats-snapshot.js +19 -19
  579. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  580. package/dist/registry/ships.d.ts +22 -2
  581. package/dist/registry/ships.d.ts.map +1 -1
  582. package/dist/registry/ships.js +31 -4
  583. package/dist/registry/ships.js.map +1 -1
  584. package/dist/registry/xp-runtime.d.ts +4 -0
  585. package/dist/registry/xp-runtime.d.ts.map +1 -0
  586. package/dist/registry/xp-runtime.js +14 -0
  587. package/dist/registry/xp-runtime.js.map +1 -0
  588. package/dist/scanning/actions/index.d.ts +116 -0
  589. package/dist/scanning/actions/index.d.ts.map +1 -0
  590. package/dist/scanning/actions/index.js +185 -0
  591. package/dist/scanning/actions/index.js.map +1 -0
  592. package/dist/scanning/index.d.ts +4 -1
  593. package/dist/scanning/index.d.ts.map +1 -1
  594. package/dist/scanning/index.js +12 -8
  595. package/dist/scanning/index.js.map +1 -1
  596. package/dist/scanning/lifecycle.d.ts +77 -0
  597. package/dist/scanning/lifecycle.d.ts.map +1 -0
  598. package/dist/scanning/lifecycle.js +93 -0
  599. package/dist/scanning/lifecycle.js.map +1 -0
  600. package/dist/scanning/odds.d.ts +111 -0
  601. package/dist/scanning/odds.d.ts.map +1 -0
  602. package/dist/scanning/odds.js +294 -0
  603. package/dist/scanning/odds.js.map +1 -0
  604. package/dist/scanning/signals.d.ts +121 -0
  605. package/dist/scanning/signals.d.ts.map +1 -0
  606. package/dist/scanning/signals.js +171 -0
  607. package/dist/scanning/signals.js.map +1 -0
  608. package/dist/world/index.d.ts +110 -5
  609. package/dist/world/index.d.ts.map +1 -1
  610. package/dist/world/index.js +109 -4
  611. package/dist/world/index.js.map +1 -1
  612. package/dist/world/planet-claim-stake-plots.d.ts +130 -0
  613. package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
  614. package/dist/world/planet-claim-stake-plots.js +110 -0
  615. package/dist/world/planet-claim-stake-plots.js.map +1 -0
  616. package/dist/world/starbase-status.d.ts +176 -0
  617. package/dist/world/starbase-status.d.ts.map +1 -0
  618. package/dist/world/starbase-status.js +153 -0
  619. package/dist/world/starbase-status.js.map +1 -0
  620. package/package.json +10 -2
@@ -0,0 +1,137 @@
1
+ import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
2
+ import { fleetShipAssemblySize, isBasicFleetAssemblyShip, } from '../c4/fleet-ship-assembly.js';
3
+ import { decodeGameShipAssemblyCatalog, hashShipAssemblyConfiguration, } from '../../registry/ships.js';
4
+ import { isOffCurveAddress } from '@solana/kit';
5
+ import { SageSdkError } from '../../client/errors.js';
6
+ import { profileAccountDefinition, characterAccountDefinition, findCharacterPda, } from '../c4/identity.js';
7
+ import { profileFactionAccountDefinition, deriveProfileFactionAddress, } from '../c4/profile-faction.js';
8
+ import { starbasePlayerAccountDefinition, deriveStarbasePlayerAddress, } from '../c4/starbase.js';
9
+ import { starSystemAccountDefinition, deriveStarSystemAddress, } from '../c4/world.js';
10
+ import { PROFILE_SCOPE, SAGE_SCOPE } from '../c4/profile-permissions.js';
11
+ import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
12
+ import { RENT_ADDRESS, readRent } from './rent.js';
13
+ export async function resolveFleetShipAssembly(input) {
14
+ const intent = { ...input };
15
+ const [character, profileFaction] = await Promise.all([
16
+ findCharacterPda(intent.profile, intent.game),
17
+ deriveProfileFactionAddress(intent.profile),
18
+ ]);
19
+ return {
20
+ game: intent.game,
21
+ profile: intent.profile,
22
+ authority: intent.authority,
23
+ system: intent.system,
24
+ character,
25
+ profileFaction,
26
+ fleet: intent.address,
27
+ starbasePlayer: await deriveStarbasePlayerAddress(intent.system, character),
28
+ rent: RENT_ADDRESS,
29
+ clock: CLOCK_ADDRESS,
30
+ };
31
+ }
32
+ function fail(address, message) {
33
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
34
+ }
35
+ export async function validateFleetShipAssembly(input, resolved, accounts, expected, catalog) {
36
+ const intent = { ...input };
37
+ if (isOffCurveAddress(intent.authority))
38
+ fail(intent.profile, 'Ship assembly requires an on-curve direct Profile authority. Select a current direct key and replan.');
39
+ const required = (address, name) => {
40
+ const raw = accounts.get(address);
41
+ if (!raw)
42
+ fail(address, `${name} ${address} is missing. Create or select the required account, then replan ship assembly.`);
43
+ if (raw.address !== address || raw.executable)
44
+ fail(address, `${name} ${address} has a contradictory address or is executable. Refresh valid account state before assembling ships.`);
45
+ return raw;
46
+ };
47
+ const profileRaw = required(resolved.profile, 'Profile');
48
+ const profile = profileAccountDefinition.decode(profileRaw);
49
+ const character = characterAccountDefinition.decode(required(resolved.character, 'Character'));
50
+ const faction = profileFactionAccountDefinition.decode(required(resolved.profileFaction, 'ProfileFaction'));
51
+ const system = starSystemAccountDefinition.decode(required(resolved.system, 'Star System'));
52
+ const player = starbasePlayerAccountDefinition.decode(required(resolved.starbasePlayer, 'StarbasePlayer'));
53
+ if (character.game !== intent.game ||
54
+ character.playerProfile !== intent.profile)
55
+ fail(resolved.character, 'The Character belongs to a different Game or Profile. Refresh the canonical Character and replan ship assembly.');
56
+ if (faction.profile !== intent.profile)
57
+ fail(resolved.profileFaction, 'The faction membership belongs to a different Profile. Refresh the canonical membership before assembling ships.');
58
+ if (system.game !== intent.game ||
59
+ (await deriveStarSystemAddress(system.game, system.systemId)) !==
60
+ intent.system ||
61
+ !system.starbase)
62
+ fail(resolved.system, 'The selected System is not canonical for this Game or has no Starbase. Choose a valid Starbase System and replan.');
63
+ if (player.playerProfile !== intent.profile ||
64
+ player.character !== resolved.character ||
65
+ player.system !== intent.system ||
66
+ player.faction !== faction.faction)
67
+ fail(resolved.starbasePlayer, 'The StarbasePlayer has a different Profile, Character, System or faction relationship. Refresh the canonical StarbasePlayer and replan.');
68
+ if (faction.faction === 'unaligned' ||
69
+ system.starbase.owner !== faction.faction)
70
+ fail(resolved.system, 'This planner supports an existing own-faction StarbasePlayer only. Select an own-faction Starbase; other diplomacy or access routes require separate supported planning.');
71
+ if (system.starbase.level !== 'css')
72
+ fail(resolved.system, 'Ship assembly currently supports own-faction CSS Starbases only. Dock at an own-faction CSS Starbase and replan; other access routes need separate support.');
73
+ const fleetRaw = required(resolved.fleet, 'Fleet');
74
+ const fleet = fleetAccountDefinition.decode(fleetRaw);
75
+ if ((await deriveFleetAddress(fleet)) !== intent.address ||
76
+ fleet.game !== intent.game ||
77
+ fleet.ownerProfile !== intent.profile ||
78
+ fleet.faction !== faction.faction ||
79
+ fleet.npcFactionId !== 0)
80
+ fail(resolved.fleet, 'The Fleet has a noncanonical address or different Game, Profile, faction or NPC affiliation. Select a canonical owned player Fleet and replan ship assembly.');
81
+ if (fleet.state.kind !== 'docked' || fleet.state.system !== intent.system)
82
+ fail(resolved.fleet, 'Ship assembly requires the Fleet to remain Docked at the selected System. Dock at an own-faction CSS Starbase and replan.');
83
+ const gameRaw = required(resolved.game, 'Game');
84
+ const definitions = catalog ?? decodeGameShipAssemblyCatalog(gameRaw);
85
+ if (fleet.shipDefinitionsSeqId !== definitions.sequenceId)
86
+ fail(resolved.fleet, 'This SDK route supports current ship-definition sequences only. Refresh the Fleet definitions through a supported game client, then replan; stale-sequence refresh behavior remains chain-authoritative.');
87
+ const selected = definitions.rows.find((row) => row.id === intent.shipId);
88
+ if (!isBasicFleetAssemblyShip(selected))
89
+ fail(resolved.game, 'The selected ship ID is unresolved or is not a requirements-free XXS configuration. Select a defined requirements-free XXS configuration; research, component and other size routes need separate support.');
90
+ // Every validated stored maxShipSize enum permits XXS, the smallest pinned size.
91
+ let quantity = 0n;
92
+ for (const entry of fleet.fleetShips) {
93
+ if (entry.quantity === 0n)
94
+ continue;
95
+ if (!isBasicFleetAssemblyShip(definitions.rows.find((row) => row.id === entry.shipId)))
96
+ fail(resolved.fleet, 'The Fleet already contains a positive unresolved or unsupported ship configuration. Use a Fleet containing only resolved requirements-free XXS ships; mixed-size capacity needs separate support.');
97
+ quantity += entry.quantity;
98
+ }
99
+ const current = fleet.fleetShips.find((entry) => entry.shipId === intent.shipId)
100
+ ?.quantity ?? 0n;
101
+ if (current + intent.amount > 18446744073709551615n)
102
+ fail(resolved.fleet, 'The resulting Fleet ship quantity exceeds the stored u64 limit. Select a smaller valid quantity and replan.');
103
+ if (quantity + intent.amount > BigInt(character.modifiers.values.fleetSize))
104
+ fail(resolved.character, 'The requested ships exceed the Character stored Fleet-size capacity. Reduce the amount or refresh changed Character modifiers, then replan.');
105
+ if (quantity + intent.amount > BigInt(definitions.maxFleetSize))
106
+ fail(resolved.game, 'The requested ships exceed the Game ship-assembly capacity. Reduce the resulting Fleet composition to fit the current Game limit, then replan; a larger Character allowance does not override it.');
107
+ const entitlement = player.shipsInEscrow.find((entry) => entry.shipId === intent.shipId)
108
+ ?.quantityRaw ?? 0n;
109
+ if (entitlement < intent.amount)
110
+ fail(resolved.starbasePlayer, 'The StarbasePlayer has insufficient entitlement for this exact ship configuration. Explicitly import that configuration or reduce the amount, then replan.');
111
+ const configHash = await hashShipAssemblyConfiguration(definitions, selected);
112
+ if (expected && expected.configHash !== configHash)
113
+ fail(resolved.game, 'The selected ship configuration has changed. Replan and inspect its current configuration before signing.');
114
+ const rent = readRent(required(resolved.rent, 'Rent sysvar'));
115
+ const now = readClock(required(resolved.clock, 'Clock sysvar'));
116
+ const fleetRent = rent(fleetShipAssemblySize(fleetRaw, intent.shipId, intent.amount));
117
+ const balance = fleetRaw.lamports;
118
+ const profileDebit = balance < fleetRent ? fleetRent - balance : 0n;
119
+ if (expected !== undefined && profileDebit > expected.maximumProfileDebit)
120
+ fail(resolved.profile, 'Ship assembly now requires a larger Profile debit than this Plan approved. Replan and inspect the updated rent shortfall before signing.');
121
+ const profileReserve = rent(profileRaw.data.length);
122
+ if (profileRaw.lamports < profileReserve + profileDebit)
123
+ fail(resolved.profile, 'The Profile lacks the Fleet rent shortfall while preserving its own rent reserve. Fund the Profile or Fleet target explicitly, then replan.');
124
+ const key = profile.keys[intent.keyIndex];
125
+ if (!key || key.address !== intent.authority)
126
+ fail(resolved.profile, 'The selected direct Profile key is absent or belongs to another authority. Select the current key index for this authority and replan.');
127
+ if (key.expiresAtRaw >= 0n && key.expiresAtRaw < now)
128
+ fail(resolved.profile, 'The selected Profile key has expired. Renew it or select a current direct key and replan ship assembly.');
129
+ const auth = key.scope === PROFILE_SCOPE && (key.permissionsRaw & 1n) !== 0n;
130
+ const manages = key.scope === SAGE_SCOPE && (key.permissionsRaw & (1n << 18n)) !== 0n;
131
+ if (!auth && !manages)
132
+ fail(resolved.profile, 'The selected key cannot manage Fleets. Use a direct Profile AUTH key or a SAGE manageFleet key and replan.');
133
+ if (profileDebit > 0n && !auth && (key.permissionsRaw & (1n << 63n)) === 0n)
134
+ fail(resolved.profile, 'The selected manageFleet key cannot fund the Fleet from the Profile vault. Explicitly prefund the target or choose an authorized vault-funding key, then replan; drainSolVault grants vault withdrawal authority.');
135
+ return { profileDebit, profileReserve, fleetRent, configHash };
136
+ }
137
+ //# sourceMappingURL=fleet-ship-assembly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-ship-assembly.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-ship-assembly.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { Address, SageContext } from '../../client/contracts.js';
2
+ import { type CraftingProcessAccountData } from '../c4/crafting.js';
3
+ import type { ResolvedDemocracyHistory } from './democracy-history.js';
4
+ export interface FeeRequest {
5
+ readonly game: Address;
6
+ readonly system: Address;
7
+ readonly starbaseSeqId: bigint;
8
+ readonly mode: 'market' | 'crafting-start' | 'crafting-complete';
9
+ readonly hasHab?: boolean;
10
+ readonly process?: Address;
11
+ }
12
+ export interface FeeParams {
13
+ readonly craftingFeeBps: number;
14
+ readonly localMarketFeeBps: number;
15
+ readonly localTreasuryShareBps: number;
16
+ readonly treasuryDistributionBps?: number;
17
+ }
18
+ export interface FeeIntent {
19
+ readonly request: FeeRequest;
20
+ readonly governance?: {
21
+ readonly address: Address;
22
+ readonly state: 'absent' | 'initialized';
23
+ readonly version?: number;
24
+ readonly enabled?: number;
25
+ readonly controllerFaction?: number;
26
+ readonly starbaseSeqId?: bigint;
27
+ readonly activeParams?: FeeParams;
28
+ };
29
+ readonly currencyCache?: {
30
+ readonly address: Address;
31
+ readonly version: number;
32
+ };
33
+ readonly treasury?: {
34
+ readonly address: Address;
35
+ readonly state: 'absent' | 'initialized';
36
+ readonly version?: number;
37
+ readonly governance?: Address;
38
+ };
39
+ readonly process?: {
40
+ readonly address: Address;
41
+ readonly version: number;
42
+ readonly feeRecipient?: 'atlas' | 'dao-atlas';
43
+ readonly feeGovernance?: Address;
44
+ readonly feeSnapshot?: CraftingProcessAccountData['feeSnapshot'];
45
+ };
46
+ readonly quote: {
47
+ readonly source: 'default' | 'governance' | 'history-policy' | 'history-generation' | 'history-disabled' | 'process-snapshot' | 'legacy-process';
48
+ readonly params?: FeeParams;
49
+ };
50
+ }
51
+ export interface ResolvedGovernanceFees {
52
+ readonly intent: FeeIntent;
53
+ readonly accounts: {
54
+ readonly starbaseGovernance?: Address;
55
+ readonly currencyCache?: Address;
56
+ readonly starbaseTreasury?: Address;
57
+ };
58
+ readonly description: string;
59
+ }
60
+ /** Resolve current fee accounts and a finite quote without creating or funding anything. */
61
+ export declare function resolveGovernanceFees(ctx: SageContext, request: FeeRequest, history: ResolvedDemocracyHistory): Promise<ResolvedGovernanceFees>;
62
+ /** Compare finite serialized fields; mutable shared balances are deliberately absent. */
63
+ export declare function matchGovernanceFeesIntent(expected: FeeIntent, actual: FeeIntent): boolean;
64
+ //# sourceMappingURL=governance-fees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-fees.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/governance-fees.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,239 @@
1
+ import { getAddressEncoder, getProgramDerivedAddress, getU64Encoder, } from '@solana/kit';
2
+ import { SageSdkError } from '../../client/errors.js';
3
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
4
+ import { CURRENCY_CONFIG_CACHE_DISCRIMINATOR, SAGE_PROGRAM_ADDRESS, STARBASE_GOVERNANCE_DISCRIMINATOR, STARBASE_TREASURY_DISCRIMINATOR, getCurrencyConfigCacheDecoder, getStarbaseGovernanceDecoder, getStarbaseTreasuryDecoder, } from '../c4/runtime-bindings.js';
5
+ import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../c4/world.js';
6
+ import { craftingProcessAccountDefinition, } from '../c4/crafting.js';
7
+ function requireFee(condition, reason) {
8
+ if (!condition)
9
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${reason} Refresh the Starbase fee configuration and recreate this action; ask its operator to initialize missing fee-routing accounts.`);
10
+ }
11
+ async function derive(literal, scope, sequence) {
12
+ return getProgramDerivedAddress({
13
+ programAddress: SAGE_PROGRAM_ADDRESS,
14
+ seeds: [
15
+ new TextEncoder().encode(literal),
16
+ getAddressEncoder().encode(scope),
17
+ ...(sequence === undefined ? [] : [getU64Encoder().encode(sequence)]),
18
+ ],
19
+ });
20
+ }
21
+ function decode(raw, address, discriminator, decoder) {
22
+ requireFee(raw &&
23
+ raw.address === address &&
24
+ raw.owner === SAGE_PROGRAM_ADDRESS &&
25
+ !raw.executable, `Fee-routing account ${address} is missing or has an unexpected owner or address.`);
26
+ requireFee(discriminator.every((byte, index) => raw.data[index] === byte), `Fee-routing account ${address} has the wrong discriminator.`);
27
+ try {
28
+ const [value, consumed] = decoder.read(raw.data, 0);
29
+ requireFee(consumed === raw.data.length, `Fee-routing account ${address} has trailing bytes.`);
30
+ return value;
31
+ }
32
+ catch (cause) {
33
+ if (cause instanceof SageSdkError)
34
+ throw cause;
35
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', `Fee-routing account ${address} cannot be decoded. Refresh the deployment and recreate this action with supported account data.`);
36
+ }
37
+ }
38
+ function params(value) {
39
+ return {
40
+ craftingFeeBps: value.craftingFeeBps,
41
+ localMarketFeeBps: value.localMarketFeeBps,
42
+ localTreasuryShareBps: value.localTreasuryShareBps,
43
+ treasuryDistributionBps: value.treasuryDistributionBps,
44
+ };
45
+ }
46
+ function description(intent) {
47
+ const quote = intent.quote;
48
+ if (!quote.params)
49
+ return 'Legacy Crafting Process has no captured governance fee snapshot. No governed fee amount or recipient is inferred from synthetic defaults.';
50
+ const value = quote.params;
51
+ return `Fee policy source: ${quote.source}. Recipe fee multiplier: ${value.craftingFeeBps} basis points (10,000 = 1×); Local Market fee: ${value.localMarketFeeBps} basis points of executed ATLAS value; local Treasury share: ${value.localTreasuryShareBps} basis points of governed fees.${intent.process?.feeRecipient ? ` Captured original recipe recipient: ${intent.process.feeRecipient}.` : ''}${intent.treasury?.state === 'initialized' ? ` Treasury: ${intent.treasury.address}.` : ''} These rates do not predict an executed debit and can race a policy change after validation.`;
52
+ }
53
+ /** Resolve current fee accounts and a finite quote without creating or funding anything. */
54
+ export async function resolveGovernanceFees(ctx, request, history) {
55
+ requireFee(history.intent.game === request.game &&
56
+ history.intent.system === request.system, 'Fee and history scopes do not match.');
57
+ requireFee(request.mode === 'crafting-complete'
58
+ ? request.process !== undefined
59
+ : request.process === undefined, 'The fee route has an invalid Crafting Process selection.');
60
+ const [governanceAddress, governanceBump] = await derive('StarbaseGovernance', request.system, request.starbaseSeqId);
61
+ const [cacheAddress, cacheBump] = await derive('CurrencyConfig', request.game);
62
+ const needsCache = request.mode !== 'crafting-start' || request.hasHab === true;
63
+ const firstAddresses = request.mode === 'crafting-complete'
64
+ ? [request.process, cacheAddress, request.system]
65
+ : [
66
+ governanceAddress,
67
+ ...(needsCache ? [cacheAddress] : []),
68
+ request.system,
69
+ ];
70
+ const read = async (addresses) => {
71
+ const rows = await readContextRawAccounts(ctx, addresses, {
72
+ commitment: 'confirmed',
73
+ });
74
+ requireFee(rows.length === addresses.length &&
75
+ rows.every((raw, index) => !raw ||
76
+ (raw.address === addresses[index] && raw.slot >= history.slot)), 'Fee-routing reads are incomplete or older than their history context.');
77
+ return rows;
78
+ };
79
+ const rows = await read(firstAddresses);
80
+ {
81
+ const raw = rows[rows.length - 1];
82
+ requireFee(raw && !raw.executable, 'The fee route System account is missing or invalid.');
83
+ const system = starSystemAccountDefinition.decode(raw);
84
+ const canonical = await deriveStarSystemAddress(request.game, system.systemId);
85
+ requireFee(raw.address === request.system &&
86
+ canonical === request.system &&
87
+ system.game === request.game &&
88
+ system.sequenceId === request.starbaseSeqId &&
89
+ system.starbase !== undefined, 'The fee route System does not match its canonical address, Game or active Starbase sequence.');
90
+ }
91
+ let currencyCache;
92
+ if (needsCache) {
93
+ const value = decode(rows[1], cacheAddress, CURRENCY_CONFIG_CACHE_DISCRIMINATOR, getCurrencyConfigCacheDecoder());
94
+ requireFee(value.gameId === request.game && value.bump === cacheBump, 'CurrencyCache does not match the configured Game or canonical PDA bump.');
95
+ currencyCache = { address: cacheAddress, version: value.version };
96
+ }
97
+ let governance;
98
+ let process;
99
+ let quote;
100
+ let treasuryGovernance;
101
+ let treasuryRequired = false;
102
+ if (request.mode === 'crafting-complete') {
103
+ const raw = rows[0];
104
+ requireFee(raw && raw.address === request.process && !raw.executable, 'The selected Crafting Process is missing or invalid.');
105
+ const value = craftingProcessAccountDefinition.decode(raw);
106
+ requireFee(value.system === request.system &&
107
+ value.starbaseSequenceId === request.starbaseSeqId, 'The Crafting Process belongs to a different System or Starbase generation.');
108
+ process = {
109
+ address: request.process,
110
+ version: value.version,
111
+ ...(value.feeRecipient === undefined
112
+ ? {}
113
+ : { feeRecipient: value.feeRecipient }),
114
+ ...(value.feeGovernance === undefined
115
+ ? {}
116
+ : { feeGovernance: value.feeGovernance }),
117
+ ...(value.feeSnapshot === undefined
118
+ ? {}
119
+ : { feeSnapshot: value.feeSnapshot }),
120
+ };
121
+ quote = value.feeSnapshot
122
+ ? {
123
+ source: 'process-snapshot',
124
+ params: {
125
+ craftingFeeBps: value.feeSnapshot.craftingFeeBasisPoints,
126
+ localMarketFeeBps: value.feeSnapshot.localMarketFeeBasisPoints,
127
+ localTreasuryShareBps: value.feeSnapshot.localTreasuryShareBasisPoints,
128
+ },
129
+ }
130
+ : { source: 'legacy-process' };
131
+ treasuryGovernance = value.feeGovernance;
132
+ treasuryRequired = treasuryGovernance !== undefined;
133
+ }
134
+ else {
135
+ const raw = rows[0];
136
+ const value = raw
137
+ ? decode(raw, governanceAddress, STARBASE_GOVERNANCE_DISCRIMINATOR, getStarbaseGovernanceDecoder())
138
+ : undefined;
139
+ if (value) {
140
+ requireFee(value.version === 2 || value.version === 3, 'Starbase governance has an unsupported schema version.');
141
+ requireFee(value.gameId === request.game &&
142
+ value.system === request.system &&
143
+ value.starbaseSeqId === request.starbaseSeqId &&
144
+ value.bump === governanceBump &&
145
+ value.enabled <= 1, 'Starbase governance has invalid scope, sequence, bump or enabled state.');
146
+ requireFee(!(value.version === 3 && history.intent.state === 'absent'), 'This Starbase governance requires initialized daily Democracy history.');
147
+ governance = {
148
+ address: governanceAddress,
149
+ state: 'initialized',
150
+ version: value.version,
151
+ enabled: value.enabled,
152
+ controllerFaction: value.controllerFaction,
153
+ starbaseSeqId: value.starbaseSeqId,
154
+ ...(history.intent.state === 'absent' && value.enabled === 1
155
+ ? { activeParams: params(value.activeParams) }
156
+ : {}),
157
+ };
158
+ }
159
+ else
160
+ governance = { address: governanceAddress, state: 'absent' };
161
+ if (history.intent.state === 'initialized')
162
+ quote = {
163
+ source: history.intent.enabled === 0
164
+ ? 'history-disabled'
165
+ : history.intent.generation
166
+ ? 'history-generation'
167
+ : 'history-policy',
168
+ params: params(history.intent.effectiveParams),
169
+ };
170
+ else if (value?.enabled)
171
+ quote = { source: 'governance', params: params(value.activeParams) };
172
+ else
173
+ quote = {
174
+ source: 'default',
175
+ params: {
176
+ craftingFeeBps: 10000,
177
+ localMarketFeeBps: 0,
178
+ localTreasuryShareBps: 0,
179
+ treasuryDistributionBps: 0,
180
+ },
181
+ };
182
+ if (request.mode === 'market') {
183
+ treasuryGovernance = governanceAddress;
184
+ treasuryRequired = quote.params.localTreasuryShareBps > 0;
185
+ }
186
+ }
187
+ let treasury;
188
+ if (treasuryGovernance) {
189
+ const [treasuryAddress, treasuryBump] = await derive('StarbaseTreasury', treasuryGovernance);
190
+ const [raw] = await read([treasuryAddress]);
191
+ if (raw) {
192
+ const value = decode(raw, treasuryAddress, STARBASE_TREASURY_DISCRIMINATOR, getStarbaseTreasuryDecoder());
193
+ requireFee(value.governance === treasuryGovernance &&
194
+ value.bump === treasuryBump &&
195
+ (request.mode !== 'market' || governance?.state === 'initialized'), 'Starbase Treasury does not match its governance or canonical PDA.');
196
+ treasury = {
197
+ address: treasuryAddress,
198
+ state: 'initialized',
199
+ version: value.version,
200
+ governance: value.governance,
201
+ };
202
+ }
203
+ else {
204
+ requireFee(!treasuryRequired, 'This fee route requires a Starbase Treasury that has not been initialized.');
205
+ treasury = { address: treasuryAddress, state: 'absent' };
206
+ }
207
+ }
208
+ const intent = {
209
+ request: { ...request },
210
+ ...(governance ? { governance } : {}),
211
+ ...(currencyCache ? { currencyCache } : {}),
212
+ ...(treasury ? { treasury } : {}),
213
+ ...(process ? { process } : {}),
214
+ quote,
215
+ };
216
+ return {
217
+ intent,
218
+ accounts: {
219
+ ...(request.mode === 'crafting-complete'
220
+ ? {}
221
+ : { starbaseGovernance: governanceAddress }),
222
+ ...(currencyCache ? { currencyCache: cacheAddress } : {}),
223
+ ...(treasury?.state === 'initialized'
224
+ ? { starbaseTreasury: treasury.address }
225
+ : {}),
226
+ },
227
+ description: description(intent),
228
+ };
229
+ }
230
+ /** Compare finite serialized fields; mutable shared balances are deliberately absent. */
231
+ export function matchGovernanceFeesIntent(expected, actual) {
232
+ const canonical = (value) => JSON.stringify(value, (_key, field) => typeof field === 'bigint'
233
+ ? field.toString()
234
+ : field && typeof field === 'object' && !Array.isArray(field)
235
+ ? Object.fromEntries(Object.entries(field).sort(([left], [right]) => left.localeCompare(right)))
236
+ : field);
237
+ return canonical(expected) === canonical(actual);
238
+ }
239
+ //# sourceMappingURL=governance-fees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance-fees.js","sourceRoot":"","sources":["../../../src/internal/planning/governance-fees.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Address } from '@solana/kit';
2
+ import type { RawAccount, SageContext } from '../../client/contracts.js';
3
+ import type { PlanPrecondition } from '../../planning/index.js';
4
+ import { type MarketOrderAmounts, type MarketOrderIntent, type LocalMarketOrderGuard } from './local-market-order.js';
5
+ export declare function marketOrderFundingAddresses(profile: Address, guards: readonly PlanPrecondition[]): readonly Address[];
6
+ export declare function resolveMarketOrderAmounts(ctx: SageContext, intent: MarketOrderIntent, marketRaw: RawAccount, playerRaw: RawAccount, characterRaw: RawAccount, guards: readonly PlanPrecondition[]): Promise<MarketOrderAmounts>;
7
+ export declare function revalidateMarketOrder(guard: LocalMarketOrderGuard, accounts: ReadonlyMap<Address, RawAccount | undefined>, guards: readonly PlanPrecondition[]): void;
8
+ //# sourceMappingURL=local-market-order-funding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-market-order-funding.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/local-market-order-funding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAQhE,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AAUjC,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,SAAS,OAAO,EAAE,CAIpB;AA0GD,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,WAAW,EAChB,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,UAAU,EACrB,SAAS,EAAE,UAAU,EACrB,YAAY,EAAE,UAAU,EACxB,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,OAAO,CAAC,kBAAkB,CAAC,CAgB7B;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,qBAAqB,EAC5B,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,EACtD,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,IAAI,CAmBN"}
@@ -0,0 +1,126 @@
1
+ import { SAGE_PROGRAM_ADDRESS, LOCAL_MARKET_MAXIMUM_GROWTH_BYTES, CURRENCY_CONFIG_CACHE_DISCRIMINATOR, getCurrencyConfigCacheDecoder, } from '../c4/local-market-order.js';
2
+ import { SageSdkError } from '../../client/errors.js';
3
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
4
+ import { validateProfileAccountShape, characterAccountDefinition, } from '../c4/identity.js';
5
+ import { localMarketAccountDefinition } from '../c4/market.js';
6
+ import { starbasePlayerAccountDefinition } from '../c4/starbase.js';
7
+ import { RENT_ADDRESS, readRent } from './rent.js';
8
+ import { hasQualifiedMarketFees, } from './local-market-order.js';
9
+ function fail(address, message) {
10
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
11
+ }
12
+ function unavailable(reason) {
13
+ return { status: 'unavailable', reason };
14
+ }
15
+ export function marketOrderFundingAddresses(profile, guards) {
16
+ // The normalized market fee guard requires this canonical cache.
17
+ const fees = guards.find((g) => g.kind === 'governance-fees');
18
+ return [profile, RENT_ADDRESS, fees.intent.currencyCache.address];
19
+ }
20
+ function calculateMarketOrderAmounts(intent, accounts, guards, approvedProfileCeiling) {
21
+ const marketRaw = accounts.get(intent.address);
22
+ const playerRaw = accounts.get(intent.starbasePlayer);
23
+ const characterRaw = accounts.get(intent.character);
24
+ if (!marketRaw || !playerRaw || !characterRaw)
25
+ fail(intent.address, 'A Local Market order prerequisite is missing. Refresh the Market, Character and Starbase Player before recreating the Plan.');
26
+ const market = localMarketAccountDefinition.decode(marketRaw);
27
+ const player = starbasePlayerAccountDefinition.decode(playerRaw);
28
+ const character = characterAccountDefinition.decode(characterRaw);
29
+ if (characterRaw.address !== intent.character ||
30
+ character.playerProfile !== intent.profile ||
31
+ character.game !== intent.game ||
32
+ marketRaw.address !== intent.address ||
33
+ playerRaw.address !== intent.starbasePlayer ||
34
+ market.cargo.cargoId !== intent.cargoId ||
35
+ market.system !== intent.system ||
36
+ market.starbaseSequenceId !== intent.starbaseSequenceId ||
37
+ player.playerProfile !== intent.profile ||
38
+ player.character !== intent.character ||
39
+ player.system !== intent.system)
40
+ fail(intent.address, 'The Local Market debit intent no longer matches its Profile, cargo or Starbase Player. Refresh the accounts and recreate the order Plan.');
41
+ if (market.version !== 0)
42
+ return unavailable('unsupported-market-layout');
43
+ if (character.version !== 0 || player.version !== 0)
44
+ return unavailable('unsupported-account-layout');
45
+ if (!hasQualifiedMarketFees(guards))
46
+ return unavailable('unsupported-fee-policy');
47
+ const fees = guards.find((g) => g.kind === 'governance-fees');
48
+ const cache = fees.intent.currencyCache;
49
+ if (cache.version !== 0)
50
+ return unavailable('unsupported-account-layout');
51
+ if (!player.cargo.amounts.some((row) => row.cargoId === intent.cargoId))
52
+ return unavailable('missing-cargo-row');
53
+ const cacheRaw = accounts.get(cache.address);
54
+ const profileRaw = accounts.get(intent.profile);
55
+ const rentRaw = accounts.get(RENT_ADDRESS);
56
+ if (!profileRaw ||
57
+ !rentRaw ||
58
+ !cacheRaw ||
59
+ cacheRaw.address !== cache.address ||
60
+ cacheRaw.executable ||
61
+ profileRaw.address !== intent.profile ||
62
+ rentRaw.address !== RENT_ADDRESS ||
63
+ profileRaw.executable ||
64
+ characterRaw.executable ||
65
+ marketRaw.executable ||
66
+ playerRaw.executable)
67
+ return unavailable('funding-state-unavailable');
68
+ validateProfileAccountShape(profileRaw);
69
+ if (cacheRaw.data.length !== getCurrencyConfigCacheDecoder().fixedSize ||
70
+ cacheRaw.owner !== SAGE_PROGRAM_ADDRESS ||
71
+ !CURRENCY_CONFIG_CACHE_DISCRIMINATOR.every((v, n) => cacheRaw.data[n] === v))
72
+ return unavailable('funding-state-unavailable');
73
+ const cacheData = getCurrencyConfigCacheDecoder().decode(cacheRaw.data);
74
+ if (cacheData.version !== 0 || cacheData.gameId !== intent.game)
75
+ return unavailable('unsupported-account-layout');
76
+ const rent = readRent(rentRaw);
77
+ if (cacheRaw.lamports < rent(cacheRaw.data.length) ||
78
+ characterRaw.lamports < rent(characterRaw.data.length) ||
79
+ marketRaw.lamports < rent(marketRaw.data.length) ||
80
+ playerRaw.lamports < rent(playerRaw.data.length))
81
+ return unavailable('accounts-below-rent-reserve');
82
+ // Existing surplus may be another maker's refundable rent. Never credit it.
83
+ const maximumProfileDebit = rent(marketRaw.data.length + LOCAL_MARKET_MAXIMUM_GROWTH_BYTES) -
84
+ rent(marketRaw.data.length);
85
+ if (profileRaw.lamports <
86
+ rent(profileRaw.data.length) +
87
+ (approvedProfileCeiling ?? maximumProfileDebit)) {
88
+ if (approvedProfileCeiling === undefined)
89
+ return unavailable('profile-below-storage-ceiling');
90
+ fail(intent.profile, 'The Profile cannot fund the conservative Local Market storage ceiling while preserving its own rent reserve. Fund the Profile explicitly and recreate the Plan; transaction fees are separate.');
91
+ }
92
+ return {
93
+ status: 'available',
94
+ maximumCargoDebitRaw: intent.side === 'ask' ? intent.quantity : 0n,
95
+ maximumAtlasDebitRaw: intent.side === 'bid' ? intent.priceRaw * intent.quantity : 0n,
96
+ maximumGovernanceFeeRaw: 0n,
97
+ maximumProfileDebit,
98
+ };
99
+ }
100
+ export async function resolveMarketOrderAmounts(ctx, intent, marketRaw, playerRaw, characterRaw, guards) {
101
+ const accounts = new Map([
102
+ [marketRaw.address, marketRaw],
103
+ [playerRaw.address, playerRaw],
104
+ [characterRaw.address, characterRaw],
105
+ ]);
106
+ const initial = calculateMarketOrderAmounts(intent, accounts, guards);
107
+ if (initial.status !== 'unavailable' ||
108
+ initial.reason !== 'funding-state-unavailable')
109
+ return initial;
110
+ const addresses = marketOrderFundingAddresses(intent.profile, guards);
111
+ const rows = await readContextRawAccounts(ctx, addresses);
112
+ addresses.forEach((address, index) => accounts.set(address, rows[index]));
113
+ return calculateMarketOrderAmounts(intent, accounts, guards);
114
+ }
115
+ export function revalidateMarketOrder(guard, accounts, guards) {
116
+ if (guard.status === 'unavailable')
117
+ return;
118
+ const current = calculateMarketOrderAmounts(guard, accounts, guards, guard.maximumProfileDebit);
119
+ if (current.status !== 'available' ||
120
+ current.maximumProfileDebit > guard.maximumProfileDebit ||
121
+ current.maximumAtlasDebitRaw > guard.maximumAtlasDebitRaw ||
122
+ current.maximumCargoDebitRaw > guard.maximumCargoDebitRaw ||
123
+ current.maximumGovernanceFeeRaw > guard.maximumGovernanceFeeRaw)
124
+ fail(guard.profile, 'The Local Market order no longer has qualified debits within its approved ceilings. Refresh the Market, fee policy and Rent, then recreate and inspect the Plan before signing.');
125
+ }
126
+ //# sourceMappingURL=local-market-order-funding.js.map