@aephia/atlas-kit 0.6.0-next.9 → 0.6.0-next.91

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 (585) hide show
  1. package/README.md +3 -1
  2. package/dist/cargo/actions/deposit.d.ts +1 -1
  3. package/dist/cargo/actions/deposit.d.ts.map +1 -1
  4. package/dist/cargo/actions/deposit.js +25 -12
  5. package/dist/cargo/actions/deposit.js.map +1 -1
  6. package/dist/cargo/actions/index.d.ts.map +1 -1
  7. package/dist/cargo/actions/index.js +3 -2
  8. package/dist/cargo/actions/index.js.map +1 -1
  9. package/dist/cargo/actions/wallet-token.d.ts +1 -1
  10. package/dist/cargo/actions/wallet-token.d.ts.map +1 -1
  11. package/dist/cargo/actions/wallet-token.js +1 -9
  12. package/dist/cargo/actions/wallet-token.js.map +1 -1
  13. package/dist/cargo/actions/withdrawal.d.ts.map +1 -1
  14. package/dist/cargo/actions/withdrawal.js +28 -27
  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 +95 -44
  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 +98 -50
  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 +73 -36
  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 +34 -15
  81. package/dist/fleets/actions/index.d.ts.map +1 -1
  82. package/dist/fleets/actions/index.js +227 -118
  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 +34 -0
  100. package/dist/fleets/index.d.ts.map +1 -1
  101. package/dist/fleets/index.js +51 -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/warp-lane-estimate.d.ts +59 -0
  112. package/dist/fleets/warp-lane-estimate.d.ts.map +1 -0
  113. package/dist/fleets/warp-lane-estimate.js +36 -0
  114. package/dist/fleets/warp-lane-estimate.js.map +1 -0
  115. package/dist/fleets/warp-lane-policy.d.ts +68 -0
  116. package/dist/fleets/warp-lane-policy.d.ts.map +1 -0
  117. package/dist/fleets/warp-lane-policy.js +91 -0
  118. package/dist/fleets/warp-lane-policy.js.map +1 -0
  119. package/dist/fleets/warp-lane-toll.d.ts +55 -0
  120. package/dist/fleets/warp-lane-toll.d.ts.map +1 -0
  121. package/dist/fleets/warp-lane-toll.js +79 -0
  122. package/dist/fleets/warp-lane-toll.js.map +1 -0
  123. package/dist/identity/actions/create-profile.d.ts +2 -0
  124. package/dist/identity/actions/create-profile.d.ts.map +1 -1
  125. package/dist/identity/actions/create-profile.js +14 -9
  126. package/dist/identity/actions/create-profile.js.map +1 -1
  127. package/dist/identity/actions/index.d.ts +3 -3
  128. package/dist/identity/actions/index.d.ts.map +1 -1
  129. package/dist/identity/actions/index.js +48 -27
  130. package/dist/identity/actions/index.js.map +1 -1
  131. package/dist/identity/index.d.ts +15 -0
  132. package/dist/identity/index.d.ts.map +1 -1
  133. package/dist/identity/index.js +15 -0
  134. package/dist/identity/index.js.map +1 -1
  135. package/dist/identity/permissions.d.ts +124 -0
  136. package/dist/identity/permissions.d.ts.map +1 -0
  137. package/dist/identity/permissions.js +171 -0
  138. package/dist/identity/permissions.js.map +1 -0
  139. package/dist/index.d.ts +24 -0
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +20 -3
  142. package/dist/index.js.map +1 -1
  143. package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
  144. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  145. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  146. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  147. package/dist/internal/c4/character-registration.d.ts +2 -0
  148. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  149. package/dist/internal/c4/character-registration.js +2 -0
  150. package/dist/internal/c4/character-registration.js.map +1 -1
  151. package/dist/internal/c4/claim-stake-definitions.d.ts +4 -4
  152. package/dist/internal/c4/claim-stake-definitions.d.ts.map +1 -1
  153. package/dist/internal/c4/claim-stake-definitions.js.map +1 -1
  154. package/dist/internal/c4/claim-stake.d.ts +4 -27
  155. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  156. package/dist/internal/c4/claim-stake.js +25 -38
  157. package/dist/internal/c4/claim-stake.js.map +1 -1
  158. package/dist/internal/c4/combat.d.ts +0 -27
  159. package/dist/internal/c4/combat.d.ts.map +1 -1
  160. package/dist/internal/c4/combat.js +0 -33
  161. package/dist/internal/c4/combat.js.map +1 -1
  162. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  163. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  164. package/dist/internal/c4/crafting-process-codec.js +34 -0
  165. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  166. package/dist/internal/c4/crafting.d.ts +12 -32
  167. package/dist/internal/c4/crafting.d.ts.map +1 -1
  168. package/dist/internal/c4/crafting.js +31 -44
  169. package/dist/internal/c4/crafting.js.map +1 -1
  170. package/dist/internal/c4/docking-funding.d.ts +4 -0
  171. package/dist/internal/c4/docking-funding.d.ts.map +1 -0
  172. package/dist/internal/c4/docking-funding.js +11 -0
  173. package/dist/internal/c4/docking-funding.js.map +1 -0
  174. package/dist/internal/c4/faction-adapter.d.ts +12 -0
  175. package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
  176. package/dist/internal/c4/faction-adapter.js +52 -0
  177. package/dist/internal/c4/faction-adapter.js.map +1 -0
  178. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  179. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  180. package/dist/internal/c4/faction-epoch-meter.js +31 -0
  181. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  182. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  183. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  184. package/dist/internal/c4/faction-treasury.js +48 -0
  185. package/dist/internal/c4/faction-treasury.js.map +1 -0
  186. package/dist/internal/c4/factions.d.ts +9 -57
  187. package/dist/internal/c4/factions.d.ts.map +1 -1
  188. package/dist/internal/c4/factions.js +21 -139
  189. package/dist/internal/c4/factions.js.map +1 -1
  190. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  191. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  192. package/dist/internal/c4/fleet-arrival.js +42 -0
  193. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  194. package/dist/internal/c4/fleet-creation.d.ts +7 -0
  195. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  196. package/dist/internal/c4/fleet-creation.js +180 -0
  197. package/dist/internal/c4/fleet-creation.js.map +1 -0
  198. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  199. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  200. package/dist/internal/c4/fleet-crew-binding.js +15 -0
  201. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  202. package/dist/internal/c4/fleet-respawn.d.ts +19 -0
  203. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  204. package/dist/internal/c4/fleet-respawn.js +91 -0
  205. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  206. package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
  207. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  208. package/dist/internal/c4/fleet-ship-assembly.js +44 -0
  209. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  210. package/dist/internal/c4/fleet.d.ts +45 -19
  211. package/dist/internal/c4/fleet.d.ts.map +1 -1
  212. package/dist/internal/c4/fleet.js +26 -7
  213. package/dist/internal/c4/fleet.js.map +1 -1
  214. package/dist/internal/c4/game-definition-layout.d.ts +2 -0
  215. package/dist/internal/c4/game-definition-layout.d.ts.map +1 -1
  216. package/dist/internal/c4/game-definition-layout.js +4 -0
  217. package/dist/internal/c4/game-definition-layout.js.map +1 -1
  218. package/dist/internal/c4/game.d.ts +46 -11
  219. package/dist/internal/c4/game.d.ts.map +1 -1
  220. package/dist/internal/c4/game.js +108 -20
  221. package/dist/internal/c4/game.js.map +1 -1
  222. package/dist/internal/c4/identity.d.ts +4 -8
  223. package/dist/internal/c4/identity.d.ts.map +1 -1
  224. package/dist/internal/c4/identity.js +3 -24
  225. package/dist/internal/c4/identity.js.map +1 -1
  226. package/dist/internal/c4/local-market-order.d.ts +31 -0
  227. package/dist/internal/c4/local-market-order.d.ts.map +1 -0
  228. package/dist/internal/c4/local-market-order.js +47 -0
  229. package/dist/internal/c4/local-market-order.js.map +1 -0
  230. package/dist/internal/c4/loyalty.d.ts +0 -27
  231. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  232. package/dist/internal/c4/loyalty.js +0 -33
  233. package/dist/internal/c4/loyalty.js.map +1 -1
  234. package/dist/internal/c4/market.d.ts +2 -38
  235. package/dist/internal/c4/market.d.ts.map +1 -1
  236. package/dist/internal/c4/market.js +13 -51
  237. package/dist/internal/c4/market.js.map +1 -1
  238. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  239. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  240. package/dist/internal/c4/mining-instructions.js +3 -0
  241. package/dist/internal/c4/mining-instructions.js.map +1 -0
  242. package/dist/internal/c4/open-signal.d.ts +8 -0
  243. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  244. package/dist/internal/c4/open-signal.js +37 -0
  245. package/dist/internal/c4/open-signal.js.map +1 -0
  246. package/dist/internal/c4/profile-permissions.d.ts +14 -0
  247. package/dist/internal/c4/profile-permissions.d.ts.map +1 -0
  248. package/dist/internal/c4/profile-permissions.js +81 -0
  249. package/dist/internal/c4/profile-permissions.js.map +1 -0
  250. package/dist/internal/c4/region-geometry.d.ts +8 -0
  251. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  252. package/dist/internal/c4/region-geometry.js +43 -0
  253. package/dist/internal/c4/region-geometry.js.map +1 -0
  254. package/dist/internal/c4/rewards.d.ts +0 -27
  255. package/dist/internal/c4/rewards.d.ts.map +1 -1
  256. package/dist/internal/c4/rewards.js +0 -33
  257. package/dist/internal/c4/rewards.js.map +1 -1
  258. package/dist/internal/c4/runtime-bindings.d.ts +3 -0
  259. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  260. package/dist/internal/c4/runtime-bindings.js +4 -0
  261. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  262. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  263. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  264. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  265. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  266. package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
  267. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  268. package/dist/internal/c4/scan-lifecycle.js +258 -0
  269. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  270. package/dist/internal/c4/scanning.d.ts +1 -28
  271. package/dist/internal/c4/scanning.d.ts.map +1 -1
  272. package/dist/internal/c4/scanning.js +2 -33
  273. package/dist/internal/c4/scanning.js.map +1 -1
  274. package/dist/internal/c4/ship-import.d.ts +4 -0
  275. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  276. package/dist/internal/c4/ship-import.js +13 -0
  277. package/dist/internal/c4/ship-import.js.map +1 -0
  278. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  279. package/dist/internal/c4/ship-stats.js +25 -21
  280. package/dist/internal/c4/ship-stats.js.map +1 -1
  281. package/dist/internal/c4/starbase.d.ts +0 -32
  282. package/dist/internal/c4/starbase.d.ts.map +1 -1
  283. package/dist/internal/c4/starbase.js +3 -41
  284. package/dist/internal/c4/starbase.js.map +1 -1
  285. package/dist/internal/c4/world.d.ts +36 -7
  286. package/dist/internal/c4/world.d.ts.map +1 -1
  287. package/dist/internal/c4/world.js +58 -25
  288. package/dist/internal/c4/world.js.map +1 -1
  289. package/dist/internal/cargo.d.ts +2 -0
  290. package/dist/internal/cargo.d.ts.map +1 -1
  291. package/dist/internal/cargo.js +8 -0
  292. package/dist/internal/cargo.js.map +1 -1
  293. package/dist/internal/fleet.d.ts +1 -0
  294. package/dist/internal/fleet.d.ts.map +1 -1
  295. package/dist/internal/fleet.js +3 -1
  296. package/dist/internal/fleet.js.map +1 -1
  297. package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
  298. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  299. package/dist/internal/loyalty-atlas-bank-state.js +10 -0
  300. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  301. package/dist/internal/planning/action-runtime.d.ts +38 -0
  302. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  303. package/dist/internal/planning/action-runtime.js +63 -0
  304. package/dist/internal/planning/action-runtime.js.map +1 -0
  305. package/dist/internal/planning/arrival-guards.d.ts +20 -0
  306. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  307. package/dist/internal/planning/arrival-guards.js +187 -0
  308. package/dist/internal/planning/arrival-guards.js.map +1 -0
  309. package/dist/internal/planning/authorization-adapter.d.ts +10 -7
  310. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  311. package/dist/internal/planning/authorization-adapter.js +87 -16
  312. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  313. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  314. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  315. package/dist/internal/planning/character-registration-guard.js +58 -0
  316. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  317. package/dist/internal/planning/character-registration.d.ts +23 -0
  318. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  319. package/dist/internal/planning/character-registration.js +86 -0
  320. package/dist/internal/planning/character-registration.js.map +1 -0
  321. package/dist/internal/planning/democracy-history.d.ts +50 -0
  322. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  323. package/dist/internal/planning/democracy-history.js +198 -0
  324. package/dist/internal/planning/democracy-history.js.map +1 -0
  325. package/dist/internal/planning/faction-enrollment.d.ts +0 -2
  326. package/dist/internal/planning/faction-enrollment.d.ts.map +1 -1
  327. package/dist/internal/planning/faction-enrollment.js +1 -22
  328. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  329. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  330. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  331. package/dist/internal/planning/faction-trade-guards.js +15 -0
  332. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  333. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  334. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  335. package/dist/internal/planning/faction-trade-state.js +43 -0
  336. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  337. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  338. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  339. package/dist/internal/planning/fleet-arrival.js +105 -0
  340. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  341. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  342. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  343. package/dist/internal/planning/fleet-attack-xp.js +110 -0
  344. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  345. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  346. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  347. package/dist/internal/planning/fleet-creation.js +108 -0
  348. package/dist/internal/planning/fleet-creation.js.map +1 -0
  349. package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
  350. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  351. package/dist/internal/planning/fleet-crew-guard.js +47 -0
  352. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  353. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  354. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  355. package/dist/internal/planning/fleet-crew-transfer.js +131 -0
  356. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  357. package/dist/internal/planning/fleet-dock-funding-guard.d.ts +42 -0
  358. package/dist/internal/planning/fleet-dock-funding-guard.d.ts.map +1 -0
  359. package/dist/internal/planning/fleet-dock-funding-guard.js +225 -0
  360. package/dist/internal/planning/fleet-dock-funding-guard.js.map +1 -0
  361. package/dist/internal/planning/fleet-dock-funding.d.ts +9 -0
  362. package/dist/internal/planning/fleet-dock-funding.d.ts.map +1 -0
  363. package/dist/internal/planning/fleet-dock-funding.js +154 -0
  364. package/dist/internal/planning/fleet-dock-funding.js.map +1 -0
  365. package/dist/internal/planning/fleet-docking-guard.d.ts +4 -0
  366. package/dist/internal/planning/fleet-docking-guard.d.ts.map +1 -0
  367. package/dist/internal/planning/fleet-docking-guard.js +42 -0
  368. package/dist/internal/planning/fleet-docking-guard.js.map +1 -0
  369. package/dist/internal/planning/fleet-docking.d.ts +10 -0
  370. package/dist/internal/planning/fleet-docking.d.ts.map +1 -0
  371. package/dist/internal/planning/fleet-docking.js +85 -0
  372. package/dist/internal/planning/fleet-docking.js.map +1 -0
  373. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  374. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  375. package/dist/internal/planning/fleet-respawn.js +165 -0
  376. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  377. package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
  378. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  379. package/dist/internal/planning/fleet-ship-assembly.js +137 -0
  380. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  381. package/dist/internal/planning/governance-fees.d.ts +64 -0
  382. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  383. package/dist/internal/planning/governance-fees.js +239 -0
  384. package/dist/internal/planning/governance-fees.js.map +1 -0
  385. package/dist/internal/planning/local-market-order-funding.d.ts +8 -0
  386. package/dist/internal/planning/local-market-order-funding.d.ts.map +1 -0
  387. package/dist/internal/planning/local-market-order-funding.js +126 -0
  388. package/dist/internal/planning/local-market-order-funding.js.map +1 -0
  389. package/dist/internal/planning/local-market-order.d.ts +40 -0
  390. package/dist/internal/planning/local-market-order.d.ts.map +1 -0
  391. package/dist/internal/planning/local-market-order.js +166 -0
  392. package/dist/internal/planning/local-market-order.js.map +1 -0
  393. package/dist/internal/planning/mining-stop.d.ts +14 -0
  394. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  395. package/dist/internal/planning/mining-stop.js +41 -0
  396. package/dist/internal/planning/mining-stop.js.map +1 -0
  397. package/dist/internal/planning/movement-character.d.ts +7 -0
  398. package/dist/internal/planning/movement-character.d.ts.map +1 -0
  399. package/dist/internal/planning/movement-character.js +41 -0
  400. package/dist/internal/planning/movement-character.js.map +1 -0
  401. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  402. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  403. package/dist/internal/planning/movement-xp-guard.js +103 -0
  404. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  405. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  406. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  407. package/dist/internal/planning/open-signal-guard.js +31 -0
  408. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  409. package/dist/internal/planning/open-signal.d.ts +31 -0
  410. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  411. package/dist/internal/planning/open-signal.js +85 -0
  412. package/dist/internal/planning/open-signal.js.map +1 -0
  413. package/dist/internal/planning/rent.d.ts +19 -0
  414. package/dist/internal/planning/rent.d.ts.map +1 -0
  415. package/dist/internal/planning/rent.js +35 -0
  416. package/dist/internal/planning/rent.js.map +1 -0
  417. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  418. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  419. package/dist/internal/planning/respawn-guards.js +41 -0
  420. package/dist/internal/planning/respawn-guards.js.map +1 -0
  421. package/dist/internal/planning/runtime-guards.d.ts +43 -0
  422. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  423. package/dist/internal/planning/runtime-guards.js +636 -0
  424. package/dist/internal/planning/runtime-guards.js.map +1 -0
  425. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  426. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  427. package/dist/internal/planning/scan-completion-guard.js +94 -0
  428. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  429. package/dist/internal/planning/scan-completion.d.ts +20 -0
  430. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  431. package/dist/internal/planning/scan-completion.js +196 -0
  432. package/dist/internal/planning/scan-completion.js.map +1 -0
  433. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  434. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  435. package/dist/internal/planning/scan-detect-guard.js +77 -0
  436. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  437. package/dist/internal/planning/scan-detect.d.ts +24 -0
  438. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  439. package/dist/internal/planning/scan-detect.js +244 -0
  440. package/dist/internal/planning/scan-detect.js.map +1 -0
  441. package/dist/internal/planning/scan-input.d.ts +9 -0
  442. package/dist/internal/planning/scan-input.d.ts.map +1 -0
  443. package/dist/internal/planning/scan-input.js +58 -0
  444. package/dist/internal/planning/scan-input.js.map +1 -0
  445. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  446. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  447. package/dist/internal/planning/ship-import-funding.js +52 -0
  448. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  449. package/dist/internal/planning/ship-token.d.ts +0 -1
  450. package/dist/internal/planning/ship-token.d.ts.map +1 -1
  451. package/dist/internal/planning/ship-token.js +2 -5
  452. package/dist/internal/planning/ship-token.js.map +1 -1
  453. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  454. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  455. package/dist/internal/planning/starbase-system-guard.js +93 -0
  456. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  457. package/dist/internal/planning/starbase-system.d.ts +12 -0
  458. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  459. package/dist/internal/planning/starbase-system.js +22 -0
  460. package/dist/internal/planning/starbase-system.js.map +1 -0
  461. package/dist/internal/planning/token-mint.d.ts +4 -0
  462. package/dist/internal/planning/token-mint.d.ts.map +1 -0
  463. package/dist/internal/planning/token-mint.js +15 -0
  464. package/dist/internal/planning/token-mint.js.map +1 -0
  465. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  466. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  467. package/dist/internal/planning/trade-faction-market.js +56 -0
  468. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  469. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  470. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  471. package/dist/internal/planning/xp-runtime.js +126 -0
  472. package/dist/internal/planning/xp-runtime.js.map +1 -0
  473. package/dist/internal/system-program.d.ts +4 -0
  474. package/dist/internal/system-program.d.ts.map +1 -0
  475. package/dist/internal/system-program.js +3 -0
  476. package/dist/internal/system-program.js.map +1 -0
  477. package/dist/loyalty/actions/index.d.ts.map +1 -1
  478. package/dist/loyalty/actions/index.js +4 -3
  479. package/dist/loyalty/actions/index.js.map +1 -1
  480. package/dist/loyalty/index.d.ts.map +1 -1
  481. package/dist/loyalty/index.js +2 -6
  482. package/dist/loyalty/index.js.map +1 -1
  483. package/dist/markets/actions/index.d.ts +61 -3
  484. package/dist/markets/actions/index.d.ts.map +1 -1
  485. package/dist/markets/actions/index.js +137 -25
  486. package/dist/markets/actions/index.js.map +1 -1
  487. package/dist/markets/actions/trade-faction-market.d.ts +43 -0
  488. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  489. package/dist/markets/actions/trade-faction-market.js +291 -0
  490. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  491. package/dist/markets/index.d.ts +38 -7
  492. package/dist/markets/index.d.ts.map +1 -1
  493. package/dist/markets/index.js +57 -10
  494. package/dist/markets/index.js.map +1 -1
  495. package/dist/mining/actions/index.d.ts +84 -0
  496. package/dist/mining/actions/index.d.ts.map +1 -0
  497. package/dist/mining/actions/index.js +328 -0
  498. package/dist/mining/actions/index.js.map +1 -0
  499. package/dist/mining/estimate.d.ts +114 -0
  500. package/dist/mining/estimate.d.ts.map +1 -0
  501. package/dist/mining/estimate.js +127 -0
  502. package/dist/mining/estimate.js.map +1 -0
  503. package/dist/mining/index.d.ts +8 -2
  504. package/dist/mining/index.d.ts.map +1 -1
  505. package/dist/mining/index.js +6 -2
  506. package/dist/mining/index.js.map +1 -1
  507. package/dist/planning/assembly.d.ts.map +1 -1
  508. package/dist/planning/assembly.js +24 -0
  509. package/dist/planning/assembly.js.map +1 -1
  510. package/dist/planning/execution.d.ts.map +1 -1
  511. package/dist/planning/execution.js +460 -17
  512. package/dist/planning/execution.js.map +1 -1
  513. package/dist/planning/index.d.ts +181 -149
  514. package/dist/planning/index.d.ts.map +1 -1
  515. package/dist/planning/index.js +869 -121
  516. package/dist/planning/index.js.map +1 -1
  517. package/dist/planning/plan-sequence.d.ts.map +1 -1
  518. package/dist/planning/plan-sequence.js +8 -1
  519. package/dist/planning/plan-sequence.js.map +1 -1
  520. package/dist/planning/simulation.d.ts +25 -1
  521. package/dist/planning/simulation.d.ts.map +1 -1
  522. package/dist/planning/simulation.js +111 -11
  523. package/dist/planning/simulation.js.map +1 -1
  524. package/dist/registry/cargo.d.ts +7 -12
  525. package/dist/registry/cargo.d.ts.map +1 -1
  526. package/dist/registry/cargo.js +19 -19
  527. package/dist/registry/cargo.js.map +1 -1
  528. package/dist/registry/docking.d.ts +10 -0
  529. package/dist/registry/docking.d.ts.map +1 -0
  530. package/dist/registry/docking.js +12 -0
  531. package/dist/registry/docking.js.map +1 -0
  532. package/dist/registry/index.d.ts +4 -0
  533. package/dist/registry/index.d.ts.map +1 -1
  534. package/dist/registry/index.js.map +1 -1
  535. package/dist/registry/onboarding.d.ts +10 -2
  536. package/dist/registry/onboarding.d.ts.map +1 -1
  537. package/dist/registry/onboarding.js +20 -7
  538. package/dist/registry/onboarding.js.map +1 -1
  539. package/dist/registry/scanning.d.ts +7 -0
  540. package/dist/registry/scanning.d.ts.map +1 -0
  541. package/dist/registry/scanning.js +13 -0
  542. package/dist/registry/scanning.js.map +1 -0
  543. package/dist/registry/ship-stats-snapshot.js +19 -19
  544. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  545. package/dist/registry/ships.d.ts +22 -2
  546. package/dist/registry/ships.d.ts.map +1 -1
  547. package/dist/registry/ships.js +31 -4
  548. package/dist/registry/ships.js.map +1 -1
  549. package/dist/registry/xp-runtime.d.ts +4 -0
  550. package/dist/registry/xp-runtime.d.ts.map +1 -0
  551. package/dist/registry/xp-runtime.js +14 -0
  552. package/dist/registry/xp-runtime.js.map +1 -0
  553. package/dist/scanning/actions/index.d.ts +116 -0
  554. package/dist/scanning/actions/index.d.ts.map +1 -0
  555. package/dist/scanning/actions/index.js +185 -0
  556. package/dist/scanning/actions/index.js.map +1 -0
  557. package/dist/scanning/index.d.ts +4 -1
  558. package/dist/scanning/index.d.ts.map +1 -1
  559. package/dist/scanning/index.js +12 -8
  560. package/dist/scanning/index.js.map +1 -1
  561. package/dist/scanning/lifecycle.d.ts +77 -0
  562. package/dist/scanning/lifecycle.d.ts.map +1 -0
  563. package/dist/scanning/lifecycle.js +93 -0
  564. package/dist/scanning/lifecycle.js.map +1 -0
  565. package/dist/scanning/odds.d.ts +111 -0
  566. package/dist/scanning/odds.d.ts.map +1 -0
  567. package/dist/scanning/odds.js +294 -0
  568. package/dist/scanning/odds.js.map +1 -0
  569. package/dist/scanning/signals.d.ts +121 -0
  570. package/dist/scanning/signals.d.ts.map +1 -0
  571. package/dist/scanning/signals.js +171 -0
  572. package/dist/scanning/signals.js.map +1 -0
  573. package/dist/world/index.d.ts +110 -5
  574. package/dist/world/index.d.ts.map +1 -1
  575. package/dist/world/index.js +109 -4
  576. package/dist/world/index.js.map +1 -1
  577. package/dist/world/planet-claim-stake-plots.d.ts +130 -0
  578. package/dist/world/planet-claim-stake-plots.d.ts.map +1 -0
  579. package/dist/world/planet-claim-stake-plots.js +110 -0
  580. package/dist/world/planet-claim-stake-plots.js.map +1 -0
  581. package/dist/world/starbase-status.d.ts +176 -0
  582. package/dist/world/starbase-status.d.ts.map +1 -0
  583. package/dist/world/starbase-status.js +153 -0
  584. package/dist/world/starbase-status.js.map +1 -0
  585. package/package.json +10 -2
@@ -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-market-order-funding.js","sourceRoot":"","sources":["../../../src/internal/planning/local-market-order-funding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { type Address } from '@solana/kit';
2
+ import type { PlanPrecondition, PlanStep } from '../../planning/index.js';
3
+ import type { RuntimeWire } from './runtime-guards.js';
4
+ export type MarketBoundsUnavailableReason = 'unsupported-market-layout' | 'unsupported-account-layout' | 'unsupported-fee-policy' | 'missing-cargo-row' | 'funding-state-unavailable' | 'accounts-below-rent-reserve' | 'profile-below-storage-ceiling';
5
+ export type MarketOrderAmounts = {
6
+ readonly status: 'unavailable';
7
+ readonly reason: MarketBoundsUnavailableReason;
8
+ } | {
9
+ readonly status: 'available';
10
+ readonly maximumCargoDebitRaw: bigint;
11
+ readonly maximumAtlasDebitRaw: bigint;
12
+ readonly maximumGovernanceFeeRaw: bigint;
13
+ readonly maximumProfileDebit: bigint;
14
+ };
15
+ export interface MarketOrderIntent {
16
+ readonly address: Address;
17
+ readonly game: Address;
18
+ readonly system: Address;
19
+ readonly profile: Address;
20
+ readonly authority: Address;
21
+ readonly certificate?: Address;
22
+ readonly keyIndex: number;
23
+ readonly character: Address;
24
+ readonly starbasePlayer: Address;
25
+ readonly starbaseSequenceId: bigint;
26
+ readonly cargoId: number;
27
+ readonly side: 'bid' | 'ask';
28
+ readonly priceRaw: bigint;
29
+ readonly quantity: bigint;
30
+ }
31
+ export type LocalMarketOrderGuard = MarketOrderIntent & MarketOrderAmounts & {
32
+ readonly kind: 'local-market-order';
33
+ readonly describes: string;
34
+ readonly dataHash?: never;
35
+ };
36
+ export declare function hasQualifiedMarketFees(guards: readonly PlanPrecondition[]): boolean;
37
+ export declare function validateLocalMarketOrderInstructions(steps: readonly PlanStep[], guards: readonly PlanPrecondition[]): void;
38
+ export declare function normalizeLocalMarketOrderGuard(value: Record<string, unknown>, wire?: boolean): LocalMarketOrderGuard;
39
+ export declare function localMarketOrderGuardToJSON(guard: LocalMarketOrderGuard): RuntimeWire<LocalMarketOrderGuard>;
40
+ //# sourceMappingURL=local-market-order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-market-order.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/local-market-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAOtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,MAAM,MAAM,6BAA6B,GACrC,2BAA2B,GAC3B,4BAA4B,GAC5B,wBAAwB,GACxB,mBAAmB,GACnB,2BAA2B,GAC3B,6BAA6B,GAC7B,+BAA+B,CAAC;AACpC,MAAM,MAAM,kBAAkB,GAC1B;IACE,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,6BAA6B,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,CAAC;AACN,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AACD,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GACnD,kBAAkB,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;CAC3B,CAAC;AAEJ,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,OAAO,CAWT;AACD,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,MAAM,EAAE,SAAS,gBAAgB,EAAE,GAClC,IAAI,CA6DN;AAcD,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,IAAI,UAAQ,GACX,qBAAqB,CAqGvB;AACD,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,qBAAqB,GAC3B,WAAW,CAAC,qBAAqB,CAAC,CAOpC"}
@@ -0,0 +1,166 @@
1
+ import { isAddress } from '@solana/kit';
2
+ import { SAGE_PROGRAM_ADDRESS, PLACE_LOCAL_MARKET_ORDER_DISCRIMINATOR, matchesLocalMarketPlacement, } from '../c4/local-market-order.js';
3
+ import { InvalidActionInputError, SageSdkError } from '../../client/errors.js';
4
+ const MAX_U64 = (1n << 64n) - 1n;
5
+ export function hasQualifiedMarketFees(guards) {
6
+ // Callers have resolved or normalized the mandatory market runtime guards.
7
+ const fees = guards.find((g) => g.kind === 'governance-fees');
8
+ const history = guards.find((g) => g.kind === 'democracy-history');
9
+ return (fees.intent.quote.source === 'default' &&
10
+ fees.intent.quote.params?.localMarketFeeBps === 0 &&
11
+ fees.intent.governance?.state === 'absent' &&
12
+ fees.intent.treasury?.state === 'absent' &&
13
+ history.intent.state === 'absent');
14
+ }
15
+ export function validateLocalMarketOrderInstructions(steps, guards) {
16
+ const selected = guards.filter((g) => g.kind === 'local-market-order');
17
+ const placements = steps.filter(({ instruction: i }) => i.programAddress === SAGE_PROGRAM_ADDRESS &&
18
+ PLACE_LOCAL_MARKET_ORDER_DISCRIMINATOR.every((v, n) => i.data?.[n] === v));
19
+ if (!selected.length && !placements.length)
20
+ return;
21
+ const bad = () => {
22
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', 'A Local Market order requires one standalone placement with its exact debit safeguard and unchanged account-state guards. Recreate the Plan with planPlaceLocalMarketOrder; do not combine it with other actions or edit its saved intent.');
23
+ };
24
+ if (steps.length !== 1 || placements.length !== 1 || selected.length !== 1)
25
+ bad();
26
+ const guard = selected[0];
27
+ const step = placements[0];
28
+ const fees = guards.find((g) => g.kind === 'governance-fees');
29
+ const history = guards.find((g) => g.kind === 'democracy-history');
30
+ if (!fees ||
31
+ fees.kind !== 'governance-fees' ||
32
+ !history ||
33
+ history.kind !== 'democracy-history')
34
+ return bad();
35
+ if (history.intent.game !== guard.game ||
36
+ history.intent.system !== guard.system ||
37
+ fees.intent.request.mode !== 'market' ||
38
+ fees.intent.request.game !== guard.game ||
39
+ fees.intent.request.system !== guard.system ||
40
+ fees.intent.request.starbaseSeqId !== guard.starbaseSequenceId)
41
+ bad();
42
+ if (guard.status === 'available' &&
43
+ (!hasQualifiedMarketFees(guards) ||
44
+ fees.intent.currencyCache?.version !== 0))
45
+ bad();
46
+ if (step.signers.length !== 1 ||
47
+ step.signers[0] !== guard.authority ||
48
+ !matchesLocalMarketPlacement(step.instruction, {
49
+ ...guard,
50
+ ...history.accounts,
51
+ ...fees.accounts,
52
+ starbaseGovernance: fees.accounts.starbaseGovernance,
53
+ currencyCache: fees.accounts.currencyCache,
54
+ }))
55
+ bad();
56
+ for (const address of [guard.character, guard.starbasePlayer, guard.address])
57
+ if (!guards.some((g) => g.kind === 'account-state' && g.address === address))
58
+ bad();
59
+ }
60
+ const AMOUNT_KEYS = [
61
+ 'maximumCargoDebitRaw',
62
+ 'maximumAtlasDebitRaw',
63
+ 'maximumGovernanceFeeRaw',
64
+ 'maximumProfileDebit',
65
+ ];
66
+ const BIGINT_KEYS = [
67
+ 'starbaseSequenceId',
68
+ 'priceRaw',
69
+ 'quantity',
70
+ ...AMOUNT_KEYS,
71
+ ];
72
+ export function normalizeLocalMarketOrderGuard(value, wire = false) {
73
+ const bad = () => {
74
+ throw new InvalidActionInputError('local-market-order', value, 'the exact current Local Market intent and debit safeguard', 'Recreate the order Plan; do not alter its saved intent, qualification or debit fields.');
75
+ };
76
+ const row = { ...value };
77
+ const required = [
78
+ 'kind',
79
+ 'address',
80
+ 'game',
81
+ 'system',
82
+ 'profile',
83
+ 'authority',
84
+ 'keyIndex',
85
+ 'character',
86
+ 'starbasePlayer',
87
+ 'starbaseSequenceId',
88
+ 'cargoId',
89
+ 'side',
90
+ 'priceRaw',
91
+ 'quantity',
92
+ 'status',
93
+ 'describes',
94
+ ...(row.status === 'available' ? AMOUNT_KEYS : ['reason']),
95
+ ];
96
+ if (required.some((k) => !Object.hasOwn(row, k)) ||
97
+ Object.keys(row).some((k) => !required.includes(k) && k !== 'certificate'))
98
+ bad();
99
+ for (const key of [
100
+ 'address',
101
+ 'game',
102
+ 'system',
103
+ 'profile',
104
+ 'authority',
105
+ 'character',
106
+ 'starbasePlayer',
107
+ ...(row.certificate === undefined ? [] : ['certificate']),
108
+ ])
109
+ if (typeof row[key] !== 'string' || !isAddress(row[key]))
110
+ bad();
111
+ for (const key of BIGINT_KEYS) {
112
+ if (!(key in row))
113
+ continue;
114
+ if (wire) {
115
+ if (typeof row[key] !== 'string' || !/^(0|[1-9][0-9]*)$/.test(row[key]))
116
+ bad();
117
+ row[key] = BigInt(row[key]);
118
+ }
119
+ if (typeof row[key] !== 'bigint' || row[key] < 0n || row[key] > MAX_U64)
120
+ bad();
121
+ }
122
+ for (const key of ['keyIndex', 'cargoId'])
123
+ if (typeof row[key] !== 'number' ||
124
+ !Number.isInteger(row[key]) ||
125
+ row[key] < 0 ||
126
+ row[key] > 65535)
127
+ bad();
128
+ if (row.kind !== 'local-market-order' ||
129
+ (row.side !== 'bid' && row.side !== 'ask') ||
130
+ row.priceRaw === 0n ||
131
+ row.quantity === 0n ||
132
+ typeof row.describes !== 'string' ||
133
+ !row.describes.trim())
134
+ bad();
135
+ if (row.side === 'bid' &&
136
+ row.priceRaw * row.quantity > MAX_U64)
137
+ bad();
138
+ if (row.status === 'available') {
139
+ if (row.maximumGovernanceFeeRaw !== 0n ||
140
+ row.maximumCargoDebitRaw !== (row.side === 'ask' ? row.quantity : 0n) ||
141
+ row.maximumAtlasDebitRaw !==
142
+ (row.side === 'bid'
143
+ ? row.priceRaw * row.quantity
144
+ : 0n))
145
+ bad();
146
+ }
147
+ else if (row.status !== 'unavailable' ||
148
+ ![
149
+ 'unsupported-market-layout',
150
+ 'unsupported-account-layout',
151
+ 'unsupported-fee-policy',
152
+ 'missing-cargo-row',
153
+ 'funding-state-unavailable',
154
+ 'accounts-below-rent-reserve',
155
+ 'profile-below-storage-ceiling',
156
+ ].includes(row.reason))
157
+ bad();
158
+ return Object.freeze(row);
159
+ }
160
+ export function localMarketOrderGuardToJSON(guard) {
161
+ return Object.fromEntries(Object.entries(guard).map(([key, value]) => [
162
+ key,
163
+ typeof value === 'bigint' ? String(value) : value,
164
+ ]));
165
+ }
166
+ //# sourceMappingURL=local-market-order.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-market-order.js","sourceRoot":"","sources":["../../../src/internal/planning/local-market-order.ts"],"names":[],"mappings":"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"}