@aephia/atlas-kit 0.6.0-next.7 → 0.6.0-next.70

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 (493) 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 +22 -10
  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 +87 -37
  19. package/dist/claim-stakes/actions/index.js.map +1 -1
  20. package/dist/client/contracts.d.ts +16 -6
  21. package/dist/client/contracts.d.ts.map +1 -1
  22. package/dist/client/errors.d.ts +4 -0
  23. package/dist/client/errors.d.ts.map +1 -1
  24. package/dist/client/errors.js +31 -1
  25. package/dist/client/errors.js.map +1 -1
  26. package/dist/client/index.d.ts +1 -0
  27. package/dist/client/index.d.ts.map +1 -1
  28. package/dist/client/index.js +1 -0
  29. package/dist/client/index.js.map +1 -1
  30. package/dist/client/rpc-subscription-provider.d.ts +35 -0
  31. package/dist/client/rpc-subscription-provider.d.ts.map +1 -0
  32. package/dist/client/rpc-subscription-provider.js +190 -0
  33. package/dist/client/rpc-subscription-provider.js.map +1 -0
  34. package/dist/combat/actions/index.d.ts.map +1 -1
  35. package/dist/combat/actions/index.js +98 -50
  36. package/dist/combat/actions/index.js.map +1 -1
  37. package/dist/crafting/actions/index.d.ts.map +1 -1
  38. package/dist/crafting/actions/index.js +49 -29
  39. package/dist/crafting/actions/index.js.map +1 -1
  40. package/dist/crafting/index.d.ts +24 -2
  41. package/dist/crafting/index.d.ts.map +1 -1
  42. package/dist/crafting/index.js +31 -2
  43. package/dist/crafting/index.js.map +1 -1
  44. package/dist/factions/actions/index.d.ts +1 -0
  45. package/dist/factions/actions/index.d.ts.map +1 -1
  46. package/dist/factions/actions/index.js.map +1 -1
  47. package/dist/factions/index.d.ts +1 -1
  48. package/dist/factions/index.d.ts.map +1 -1
  49. package/dist/factions/index.js +1 -1
  50. package/dist/factions/index.js.map +1 -1
  51. package/dist/factions/profile-faction.d.ts +20 -8
  52. package/dist/factions/profile-faction.d.ts.map +1 -1
  53. package/dist/factions/profile-faction.js +20 -8
  54. package/dist/factions/profile-faction.js.map +1 -1
  55. package/dist/fleets/actions/add-ship.d.ts +35 -0
  56. package/dist/fleets/actions/add-ship.d.ts.map +1 -0
  57. package/dist/fleets/actions/add-ship.js +149 -0
  58. package/dist/fleets/actions/add-ship.js.map +1 -0
  59. package/dist/fleets/actions/create-fleet.d.ts +36 -0
  60. package/dist/fleets/actions/create-fleet.d.ts.map +1 -0
  61. package/dist/fleets/actions/create-fleet.js +138 -0
  62. package/dist/fleets/actions/create-fleet.js.map +1 -0
  63. package/dist/fleets/actions/crew-transfer.d.ts +41 -0
  64. package/dist/fleets/actions/crew-transfer.d.ts.map +1 -0
  65. package/dist/fleets/actions/crew-transfer.js +114 -0
  66. package/dist/fleets/actions/crew-transfer.js.map +1 -0
  67. package/dist/fleets/actions/index.d.ts +34 -15
  68. package/dist/fleets/actions/index.d.ts.map +1 -1
  69. package/dist/fleets/actions/index.js +168 -109
  70. package/dist/fleets/actions/index.js.map +1 -1
  71. package/dist/fleets/actions/respawn.d.ts +38 -0
  72. package/dist/fleets/actions/respawn.d.ts.map +1 -0
  73. package/dist/fleets/actions/respawn.js +122 -0
  74. package/dist/fleets/actions/respawn.js.map +1 -0
  75. package/dist/fleets/actions/ship-import.d.ts +48 -0
  76. package/dist/fleets/actions/ship-import.d.ts.map +1 -0
  77. package/dist/fleets/actions/ship-import.js +330 -0
  78. package/dist/fleets/actions/ship-import.js.map +1 -0
  79. package/dist/fleets/cooldown.d.ts +44 -0
  80. package/dist/fleets/cooldown.d.ts.map +1 -0
  81. package/dist/fleets/cooldown.js +43 -0
  82. package/dist/fleets/cooldown.js.map +1 -0
  83. package/dist/fleets/coordinate-warp-estimate.d.ts +70 -0
  84. package/dist/fleets/coordinate-warp-estimate.d.ts.map +1 -0
  85. package/dist/fleets/coordinate-warp-estimate.js +46 -0
  86. package/dist/fleets/coordinate-warp-estimate.js.map +1 -0
  87. package/dist/fleets/index.d.ts +3 -0
  88. package/dist/fleets/index.d.ts.map +1 -1
  89. package/dist/fleets/index.js +3 -0
  90. package/dist/fleets/index.js.map +1 -1
  91. package/dist/fleets/movement-arithmetic.d.ts +21 -0
  92. package/dist/fleets/movement-arithmetic.d.ts.map +1 -0
  93. package/dist/fleets/movement-arithmetic.js +41 -0
  94. package/dist/fleets/movement-arithmetic.js.map +1 -0
  95. package/dist/fleets/subwarp-estimate.d.ts +70 -0
  96. package/dist/fleets/subwarp-estimate.d.ts.map +1 -0
  97. package/dist/fleets/subwarp-estimate.js +38 -0
  98. package/dist/fleets/subwarp-estimate.js.map +1 -0
  99. package/dist/identity/actions/create-profile.d.ts +56 -0
  100. package/dist/identity/actions/create-profile.d.ts.map +1 -0
  101. package/dist/identity/actions/create-profile.js +139 -0
  102. package/dist/identity/actions/create-profile.js.map +1 -0
  103. package/dist/identity/actions/index.d.ts +4 -3
  104. package/dist/identity/actions/index.d.ts.map +1 -1
  105. package/dist/identity/actions/index.js +49 -27
  106. package/dist/identity/actions/index.js.map +1 -1
  107. package/dist/identity/index.d.ts +15 -0
  108. package/dist/identity/index.d.ts.map +1 -1
  109. package/dist/identity/index.js +15 -0
  110. package/dist/identity/index.js.map +1 -1
  111. package/dist/identity/permissions.d.ts +124 -0
  112. package/dist/identity/permissions.d.ts.map +1 -0
  113. package/dist/identity/permissions.js +171 -0
  114. package/dist/identity/permissions.js.map +1 -0
  115. package/dist/index.d.ts +23 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +18 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/internal/c4/cargo-bytes-config.d.ts +7 -0
  120. package/dist/internal/c4/cargo-bytes-config.d.ts.map +1 -0
  121. package/dist/internal/c4/cargo-bytes-config.js +19 -0
  122. package/dist/internal/c4/cargo-bytes-config.js.map +1 -0
  123. package/dist/internal/c4/character-registration.d.ts +2 -0
  124. package/dist/internal/c4/character-registration.d.ts.map +1 -1
  125. package/dist/internal/c4/character-registration.js +2 -0
  126. package/dist/internal/c4/character-registration.js.map +1 -1
  127. package/dist/internal/c4/claim-stake.d.ts +0 -27
  128. package/dist/internal/c4/claim-stake.d.ts.map +1 -1
  129. package/dist/internal/c4/claim-stake.js +0 -33
  130. package/dist/internal/c4/claim-stake.js.map +1 -1
  131. package/dist/internal/c4/combat.d.ts +0 -27
  132. package/dist/internal/c4/combat.d.ts.map +1 -1
  133. package/dist/internal/c4/combat.js +0 -33
  134. package/dist/internal/c4/combat.js.map +1 -1
  135. package/dist/internal/c4/crafting-process-codec.d.ts +13 -0
  136. package/dist/internal/c4/crafting-process-codec.d.ts.map +1 -0
  137. package/dist/internal/c4/crafting-process-codec.js +34 -0
  138. package/dist/internal/c4/crafting-process-codec.js.map +1 -0
  139. package/dist/internal/c4/crafting.d.ts +11 -31
  140. package/dist/internal/c4/crafting.d.ts.map +1 -1
  141. package/dist/internal/c4/crafting.js +26 -43
  142. package/dist/internal/c4/crafting.js.map +1 -1
  143. package/dist/internal/c4/faction-adapter.d.ts +12 -0
  144. package/dist/internal/c4/faction-adapter.d.ts.map +1 -0
  145. package/dist/internal/c4/faction-adapter.js +52 -0
  146. package/dist/internal/c4/faction-adapter.js.map +1 -0
  147. package/dist/internal/c4/faction-epoch-meter.d.ts +10 -0
  148. package/dist/internal/c4/faction-epoch-meter.d.ts.map +1 -0
  149. package/dist/internal/c4/faction-epoch-meter.js +31 -0
  150. package/dist/internal/c4/faction-epoch-meter.js.map +1 -0
  151. package/dist/internal/c4/faction-treasury.d.ts +23 -0
  152. package/dist/internal/c4/faction-treasury.d.ts.map +1 -0
  153. package/dist/internal/c4/faction-treasury.js +48 -0
  154. package/dist/internal/c4/faction-treasury.js.map +1 -0
  155. package/dist/internal/c4/factions.d.ts +9 -57
  156. package/dist/internal/c4/factions.d.ts.map +1 -1
  157. package/dist/internal/c4/factions.js +21 -139
  158. package/dist/internal/c4/factions.js.map +1 -1
  159. package/dist/internal/c4/fleet-arrival.d.ts +28 -0
  160. package/dist/internal/c4/fleet-arrival.d.ts.map +1 -0
  161. package/dist/internal/c4/fleet-arrival.js +42 -0
  162. package/dist/internal/c4/fleet-arrival.js.map +1 -0
  163. package/dist/internal/c4/fleet-creation.d.ts +7 -0
  164. package/dist/internal/c4/fleet-creation.d.ts.map +1 -0
  165. package/dist/internal/c4/fleet-creation.js +180 -0
  166. package/dist/internal/c4/fleet-creation.js.map +1 -0
  167. package/dist/internal/c4/fleet-crew-binding.d.ts +9 -0
  168. package/dist/internal/c4/fleet-crew-binding.d.ts.map +1 -1
  169. package/dist/internal/c4/fleet-crew-binding.js +15 -0
  170. package/dist/internal/c4/fleet-crew-binding.js.map +1 -1
  171. package/dist/internal/c4/fleet-respawn.d.ts +19 -0
  172. package/dist/internal/c4/fleet-respawn.d.ts.map +1 -0
  173. package/dist/internal/c4/fleet-respawn.js +91 -0
  174. package/dist/internal/c4/fleet-respawn.js.map +1 -0
  175. package/dist/internal/c4/fleet-ship-assembly.d.ts +11 -0
  176. package/dist/internal/c4/fleet-ship-assembly.d.ts.map +1 -0
  177. package/dist/internal/c4/fleet-ship-assembly.js +44 -0
  178. package/dist/internal/c4/fleet-ship-assembly.js.map +1 -0
  179. package/dist/internal/c4/fleet.d.ts +43 -19
  180. package/dist/internal/c4/fleet.d.ts.map +1 -1
  181. package/dist/internal/c4/fleet.js +1 -0
  182. package/dist/internal/c4/fleet.js.map +1 -1
  183. package/dist/internal/c4/game.d.ts +31 -8
  184. package/dist/internal/c4/game.d.ts.map +1 -1
  185. package/dist/internal/c4/game.js +88 -12
  186. package/dist/internal/c4/game.js.map +1 -1
  187. package/dist/internal/c4/identity.d.ts +2 -7
  188. package/dist/internal/c4/identity.d.ts.map +1 -1
  189. package/dist/internal/c4/identity.js +2 -23
  190. package/dist/internal/c4/identity.js.map +1 -1
  191. package/dist/internal/c4/loyalty.d.ts +0 -27
  192. package/dist/internal/c4/loyalty.d.ts.map +1 -1
  193. package/dist/internal/c4/loyalty.js +0 -33
  194. package/dist/internal/c4/loyalty.js.map +1 -1
  195. package/dist/internal/c4/market.d.ts +1 -37
  196. package/dist/internal/c4/market.d.ts.map +1 -1
  197. package/dist/internal/c4/market.js +11 -49
  198. package/dist/internal/c4/market.js.map +1 -1
  199. package/dist/internal/c4/mining-instructions.d.ts +2 -0
  200. package/dist/internal/c4/mining-instructions.d.ts.map +1 -0
  201. package/dist/internal/c4/mining-instructions.js +3 -0
  202. package/dist/internal/c4/mining-instructions.js.map +1 -0
  203. package/dist/internal/c4/open-signal.d.ts +8 -0
  204. package/dist/internal/c4/open-signal.d.ts.map +1 -0
  205. package/dist/internal/c4/open-signal.js +37 -0
  206. package/dist/internal/c4/open-signal.js.map +1 -0
  207. package/dist/internal/c4/profile-creation.d.ts +17 -0
  208. package/dist/internal/c4/profile-creation.d.ts.map +1 -0
  209. package/dist/internal/c4/profile-creation.js +36 -0
  210. package/dist/internal/c4/profile-creation.js.map +1 -0
  211. package/dist/internal/c4/profile-permissions.d.ts +14 -0
  212. package/dist/internal/c4/profile-permissions.d.ts.map +1 -0
  213. package/dist/internal/c4/profile-permissions.js +81 -0
  214. package/dist/internal/c4/profile-permissions.js.map +1 -0
  215. package/dist/internal/c4/region-geometry.d.ts +8 -0
  216. package/dist/internal/c4/region-geometry.d.ts.map +1 -0
  217. package/dist/internal/c4/region-geometry.js +43 -0
  218. package/dist/internal/c4/region-geometry.js.map +1 -0
  219. package/dist/internal/c4/rewards.d.ts +0 -27
  220. package/dist/internal/c4/rewards.d.ts.map +1 -1
  221. package/dist/internal/c4/rewards.js +0 -33
  222. package/dist/internal/c4/rewards.js.map +1 -1
  223. package/dist/internal/c4/runtime-bindings.d.ts +3 -0
  224. package/dist/internal/c4/runtime-bindings.d.ts.map +1 -0
  225. package/dist/internal/c4/runtime-bindings.js +4 -0
  226. package/dist/internal/c4/runtime-bindings.js.map +1 -0
  227. package/dist/internal/c4/scan-detection-codecs.d.ts +3 -0
  228. package/dist/internal/c4/scan-detection-codecs.d.ts.map +1 -0
  229. package/dist/internal/c4/scan-detection-codecs.js +3 -0
  230. package/dist/internal/c4/scan-detection-codecs.js.map +1 -0
  231. package/dist/internal/c4/scan-lifecycle.d.ts +306 -0
  232. package/dist/internal/c4/scan-lifecycle.d.ts.map +1 -0
  233. package/dist/internal/c4/scan-lifecycle.js +258 -0
  234. package/dist/internal/c4/scan-lifecycle.js.map +1 -0
  235. package/dist/internal/c4/scanning.d.ts +1 -28
  236. package/dist/internal/c4/scanning.d.ts.map +1 -1
  237. package/dist/internal/c4/scanning.js +2 -33
  238. package/dist/internal/c4/scanning.js.map +1 -1
  239. package/dist/internal/c4/ship-import.d.ts +4 -0
  240. package/dist/internal/c4/ship-import.d.ts.map +1 -0
  241. package/dist/internal/c4/ship-import.js +13 -0
  242. package/dist/internal/c4/ship-import.js.map +1 -0
  243. package/dist/internal/c4/ship-stats.d.ts.map +1 -1
  244. package/dist/internal/c4/ship-stats.js +25 -21
  245. package/dist/internal/c4/ship-stats.js.map +1 -1
  246. package/dist/internal/c4/starbase.d.ts +0 -32
  247. package/dist/internal/c4/starbase.d.ts.map +1 -1
  248. package/dist/internal/c4/starbase.js +3 -41
  249. package/dist/internal/c4/starbase.js.map +1 -1
  250. package/dist/internal/c4/world.d.ts +12 -2
  251. package/dist/internal/c4/world.d.ts.map +1 -1
  252. package/dist/internal/c4/world.js +28 -6
  253. package/dist/internal/c4/world.js.map +1 -1
  254. package/dist/internal/cargo.d.ts +2 -0
  255. package/dist/internal/cargo.d.ts.map +1 -1
  256. package/dist/internal/cargo.js +8 -0
  257. package/dist/internal/cargo.js.map +1 -1
  258. package/dist/internal/fleet.d.ts +1 -0
  259. package/dist/internal/fleet.d.ts.map +1 -1
  260. package/dist/internal/fleet.js +3 -1
  261. package/dist/internal/fleet.js.map +1 -1
  262. package/dist/internal/loyalty-atlas-bank-state.d.ts +16 -0
  263. package/dist/internal/loyalty-atlas-bank-state.d.ts.map +1 -0
  264. package/dist/internal/loyalty-atlas-bank-state.js +10 -0
  265. package/dist/internal/loyalty-atlas-bank-state.js.map +1 -0
  266. package/dist/internal/planning/action-runtime.d.ts +38 -0
  267. package/dist/internal/planning/action-runtime.d.ts.map +1 -0
  268. package/dist/internal/planning/action-runtime.js +63 -0
  269. package/dist/internal/planning/action-runtime.js.map +1 -0
  270. package/dist/internal/planning/arrival-guards.d.ts +20 -0
  271. package/dist/internal/planning/arrival-guards.d.ts.map +1 -0
  272. package/dist/internal/planning/arrival-guards.js +187 -0
  273. package/dist/internal/planning/arrival-guards.js.map +1 -0
  274. package/dist/internal/planning/authorization-adapter.d.ts +19 -6
  275. package/dist/internal/planning/authorization-adapter.d.ts.map +1 -1
  276. package/dist/internal/planning/authorization-adapter.js +102 -16
  277. package/dist/internal/planning/authorization-adapter.js.map +1 -1
  278. package/dist/internal/planning/character-registration-guard.d.ts +4 -0
  279. package/dist/internal/planning/character-registration-guard.d.ts.map +1 -0
  280. package/dist/internal/planning/character-registration-guard.js +58 -0
  281. package/dist/internal/planning/character-registration-guard.js.map +1 -0
  282. package/dist/internal/planning/character-registration.d.ts +23 -0
  283. package/dist/internal/planning/character-registration.d.ts.map +1 -0
  284. package/dist/internal/planning/character-registration.js +86 -0
  285. package/dist/internal/planning/character-registration.js.map +1 -0
  286. package/dist/internal/planning/democracy-history.d.ts +50 -0
  287. package/dist/internal/planning/democracy-history.d.ts.map +1 -0
  288. package/dist/internal/planning/democracy-history.js +198 -0
  289. package/dist/internal/planning/democracy-history.js.map +1 -0
  290. package/dist/internal/planning/faction-enrollment.js +2 -2
  291. package/dist/internal/planning/faction-enrollment.js.map +1 -1
  292. package/dist/internal/planning/faction-trade-guards.d.ts +30 -0
  293. package/dist/internal/planning/faction-trade-guards.d.ts.map +1 -0
  294. package/dist/internal/planning/faction-trade-guards.js +15 -0
  295. package/dist/internal/planning/faction-trade-guards.js.map +1 -0
  296. package/dist/internal/planning/faction-trade-state.d.ts +16 -0
  297. package/dist/internal/planning/faction-trade-state.d.ts.map +1 -0
  298. package/dist/internal/planning/faction-trade-state.js +43 -0
  299. package/dist/internal/planning/faction-trade-state.js.map +1 -0
  300. package/dist/internal/planning/fleet-arrival.d.ts +40 -0
  301. package/dist/internal/planning/fleet-arrival.d.ts.map +1 -0
  302. package/dist/internal/planning/fleet-arrival.js +106 -0
  303. package/dist/internal/planning/fleet-arrival.js.map +1 -0
  304. package/dist/internal/planning/fleet-attack-xp.d.ts +20 -0
  305. package/dist/internal/planning/fleet-attack-xp.d.ts.map +1 -0
  306. package/dist/internal/planning/fleet-attack-xp.js +110 -0
  307. package/dist/internal/planning/fleet-attack-xp.js.map +1 -0
  308. package/dist/internal/planning/fleet-creation.d.ts +30 -0
  309. package/dist/internal/planning/fleet-creation.d.ts.map +1 -0
  310. package/dist/internal/planning/fleet-creation.js +107 -0
  311. package/dist/internal/planning/fleet-creation.js.map +1 -0
  312. package/dist/internal/planning/fleet-crew-guard.d.ts +28 -0
  313. package/dist/internal/planning/fleet-crew-guard.d.ts.map +1 -0
  314. package/dist/internal/planning/fleet-crew-guard.js +47 -0
  315. package/dist/internal/planning/fleet-crew-guard.js.map +1 -0
  316. package/dist/internal/planning/fleet-crew-transfer.d.ts +7 -0
  317. package/dist/internal/planning/fleet-crew-transfer.d.ts.map +1 -0
  318. package/dist/internal/planning/fleet-crew-transfer.js +131 -0
  319. package/dist/internal/planning/fleet-crew-transfer.js.map +1 -0
  320. package/dist/internal/planning/fleet-respawn.d.ts +28 -0
  321. package/dist/internal/planning/fleet-respawn.d.ts.map +1 -0
  322. package/dist/internal/planning/fleet-respawn.js +164 -0
  323. package/dist/internal/planning/fleet-respawn.js.map +1 -0
  324. package/dist/internal/planning/fleet-ship-assembly.d.ts +36 -0
  325. package/dist/internal/planning/fleet-ship-assembly.d.ts.map +1 -0
  326. package/dist/internal/planning/fleet-ship-assembly.js +136 -0
  327. package/dist/internal/planning/fleet-ship-assembly.js.map +1 -0
  328. package/dist/internal/planning/governance-fees.d.ts +64 -0
  329. package/dist/internal/planning/governance-fees.d.ts.map +1 -0
  330. package/dist/internal/planning/governance-fees.js +239 -0
  331. package/dist/internal/planning/governance-fees.js.map +1 -0
  332. package/dist/internal/planning/mining-stop.d.ts +14 -0
  333. package/dist/internal/planning/mining-stop.d.ts.map +1 -0
  334. package/dist/internal/planning/mining-stop.js +41 -0
  335. package/dist/internal/planning/mining-stop.js.map +1 -0
  336. package/dist/internal/planning/movement-character.d.ts +7 -0
  337. package/dist/internal/planning/movement-character.d.ts.map +1 -0
  338. package/dist/internal/planning/movement-character.js +41 -0
  339. package/dist/internal/planning/movement-character.js.map +1 -0
  340. package/dist/internal/planning/movement-xp-guard.d.ts +4 -0
  341. package/dist/internal/planning/movement-xp-guard.d.ts.map +1 -0
  342. package/dist/internal/planning/movement-xp-guard.js +103 -0
  343. package/dist/internal/planning/movement-xp-guard.js.map +1 -0
  344. package/dist/internal/planning/open-signal-guard.d.ts +3 -0
  345. package/dist/internal/planning/open-signal-guard.d.ts.map +1 -0
  346. package/dist/internal/planning/open-signal-guard.js +31 -0
  347. package/dist/internal/planning/open-signal-guard.js.map +1 -0
  348. package/dist/internal/planning/open-signal.d.ts +31 -0
  349. package/dist/internal/planning/open-signal.d.ts.map +1 -0
  350. package/dist/internal/planning/open-signal.js +84 -0
  351. package/dist/internal/planning/open-signal.js.map +1 -0
  352. package/dist/internal/planning/respawn-guards.d.ts +3 -0
  353. package/dist/internal/planning/respawn-guards.d.ts.map +1 -0
  354. package/dist/internal/planning/respawn-guards.js +41 -0
  355. package/dist/internal/planning/respawn-guards.js.map +1 -0
  356. package/dist/internal/planning/runtime-guards.d.ts +43 -0
  357. package/dist/internal/planning/runtime-guards.d.ts.map +1 -0
  358. package/dist/internal/planning/runtime-guards.js +636 -0
  359. package/dist/internal/planning/runtime-guards.js.map +1 -0
  360. package/dist/internal/planning/scan-completion-guard.d.ts +43 -0
  361. package/dist/internal/planning/scan-completion-guard.d.ts.map +1 -0
  362. package/dist/internal/planning/scan-completion-guard.js +94 -0
  363. package/dist/internal/planning/scan-completion-guard.js.map +1 -0
  364. package/dist/internal/planning/scan-completion.d.ts +20 -0
  365. package/dist/internal/planning/scan-completion.d.ts.map +1 -0
  366. package/dist/internal/planning/scan-completion.js +220 -0
  367. package/dist/internal/planning/scan-completion.js.map +1 -0
  368. package/dist/internal/planning/scan-detect-guard.d.ts +34 -0
  369. package/dist/internal/planning/scan-detect-guard.d.ts.map +1 -0
  370. package/dist/internal/planning/scan-detect-guard.js +77 -0
  371. package/dist/internal/planning/scan-detect-guard.js.map +1 -0
  372. package/dist/internal/planning/scan-detect.d.ts +24 -0
  373. package/dist/internal/planning/scan-detect.d.ts.map +1 -0
  374. package/dist/internal/planning/scan-detect.js +244 -0
  375. package/dist/internal/planning/scan-detect.js.map +1 -0
  376. package/dist/internal/planning/ship-import-funding.d.ts +22 -0
  377. package/dist/internal/planning/ship-import-funding.d.ts.map +1 -0
  378. package/dist/internal/planning/ship-import-funding.js +52 -0
  379. package/dist/internal/planning/ship-import-funding.js.map +1 -0
  380. package/dist/internal/planning/ship-token.d.ts +10 -0
  381. package/dist/internal/planning/ship-token.d.ts.map +1 -0
  382. package/dist/internal/planning/ship-token.js +47 -0
  383. package/dist/internal/planning/ship-token.js.map +1 -0
  384. package/dist/internal/planning/starbase-system-guard.d.ts +6 -0
  385. package/dist/internal/planning/starbase-system-guard.d.ts.map +1 -0
  386. package/dist/internal/planning/starbase-system-guard.js +93 -0
  387. package/dist/internal/planning/starbase-system-guard.js.map +1 -0
  388. package/dist/internal/planning/starbase-system.d.ts +12 -0
  389. package/dist/internal/planning/starbase-system.d.ts.map +1 -0
  390. package/dist/internal/planning/starbase-system.js +22 -0
  391. package/dist/internal/planning/starbase-system.js.map +1 -0
  392. package/dist/internal/planning/token-mint.d.ts +4 -0
  393. package/dist/internal/planning/token-mint.d.ts.map +1 -0
  394. package/dist/internal/planning/token-mint.js +15 -0
  395. package/dist/internal/planning/token-mint.js.map +1 -0
  396. package/dist/internal/planning/trade-faction-market.d.ts +20 -0
  397. package/dist/internal/planning/trade-faction-market.d.ts.map +1 -0
  398. package/dist/internal/planning/trade-faction-market.js +56 -0
  399. package/dist/internal/planning/trade-faction-market.js.map +1 -0
  400. package/dist/internal/planning/xp-runtime.d.ts +36 -0
  401. package/dist/internal/planning/xp-runtime.d.ts.map +1 -0
  402. package/dist/internal/planning/xp-runtime.js +126 -0
  403. package/dist/internal/planning/xp-runtime.js.map +1 -0
  404. package/dist/loyalty/actions/index.d.ts.map +1 -1
  405. package/dist/loyalty/actions/index.js +4 -3
  406. package/dist/loyalty/actions/index.js.map +1 -1
  407. package/dist/loyalty/index.d.ts.map +1 -1
  408. package/dist/loyalty/index.js +2 -6
  409. package/dist/loyalty/index.js.map +1 -1
  410. package/dist/markets/actions/index.d.ts +1 -0
  411. package/dist/markets/actions/index.d.ts.map +1 -1
  412. package/dist/markets/actions/index.js +40 -16
  413. package/dist/markets/actions/index.js.map +1 -1
  414. package/dist/markets/actions/trade-faction-market.d.ts +43 -0
  415. package/dist/markets/actions/trade-faction-market.d.ts.map +1 -0
  416. package/dist/markets/actions/trade-faction-market.js +291 -0
  417. package/dist/markets/actions/trade-faction-market.js.map +1 -0
  418. package/dist/mining/actions/index.d.ts +84 -0
  419. package/dist/mining/actions/index.d.ts.map +1 -0
  420. package/dist/mining/actions/index.js +328 -0
  421. package/dist/mining/actions/index.js.map +1 -0
  422. package/dist/mining/estimate.d.ts +114 -0
  423. package/dist/mining/estimate.d.ts.map +1 -0
  424. package/dist/mining/estimate.js +127 -0
  425. package/dist/mining/estimate.js.map +1 -0
  426. package/dist/mining/index.d.ts +8 -2
  427. package/dist/mining/index.d.ts.map +1 -1
  428. package/dist/mining/index.js +6 -2
  429. package/dist/mining/index.js.map +1 -1
  430. package/dist/planning/assembly.d.ts.map +1 -1
  431. package/dist/planning/assembly.js +18 -0
  432. package/dist/planning/assembly.js.map +1 -1
  433. package/dist/planning/execution.d.ts.map +1 -1
  434. package/dist/planning/execution.js +378 -12
  435. package/dist/planning/execution.js.map +1 -1
  436. package/dist/planning/index.d.ts +180 -132
  437. package/dist/planning/index.d.ts.map +1 -1
  438. package/dist/planning/index.js +845 -104
  439. package/dist/planning/index.js.map +1 -1
  440. package/dist/planning/simulation.d.ts +25 -1
  441. package/dist/planning/simulation.d.ts.map +1 -1
  442. package/dist/planning/simulation.js +111 -11
  443. package/dist/planning/simulation.js.map +1 -1
  444. package/dist/registry/cargo.d.ts +6 -11
  445. package/dist/registry/cargo.d.ts.map +1 -1
  446. package/dist/registry/cargo.js +19 -19
  447. package/dist/registry/cargo.js.map +1 -1
  448. package/dist/registry/index.d.ts +4 -0
  449. package/dist/registry/index.d.ts.map +1 -1
  450. package/dist/registry/index.js.map +1 -1
  451. package/dist/registry/onboarding.d.ts +8 -1
  452. package/dist/registry/onboarding.d.ts.map +1 -1
  453. package/dist/registry/onboarding.js +18 -5
  454. package/dist/registry/onboarding.js.map +1 -1
  455. package/dist/registry/scanning.d.ts +7 -0
  456. package/dist/registry/scanning.d.ts.map +1 -0
  457. package/dist/registry/scanning.js +13 -0
  458. package/dist/registry/scanning.js.map +1 -0
  459. package/dist/registry/ship-stats-snapshot.js +19 -19
  460. package/dist/registry/ship-stats-snapshot.js.map +1 -1
  461. package/dist/registry/ships.d.ts +30 -0
  462. package/dist/registry/ships.d.ts.map +1 -0
  463. package/dist/registry/ships.js +59 -0
  464. package/dist/registry/ships.js.map +1 -0
  465. package/dist/registry/xp-runtime.d.ts +4 -0
  466. package/dist/registry/xp-runtime.d.ts.map +1 -0
  467. package/dist/registry/xp-runtime.js +14 -0
  468. package/dist/registry/xp-runtime.js.map +1 -0
  469. package/dist/scanning/actions/index.d.ts +116 -0
  470. package/dist/scanning/actions/index.d.ts.map +1 -0
  471. package/dist/scanning/actions/index.js +209 -0
  472. package/dist/scanning/actions/index.js.map +1 -0
  473. package/dist/scanning/index.d.ts +4 -1
  474. package/dist/scanning/index.d.ts.map +1 -1
  475. package/dist/scanning/index.js +5 -2
  476. package/dist/scanning/index.js.map +1 -1
  477. package/dist/scanning/lifecycle.d.ts +77 -0
  478. package/dist/scanning/lifecycle.d.ts.map +1 -0
  479. package/dist/scanning/lifecycle.js +93 -0
  480. package/dist/scanning/lifecycle.js.map +1 -0
  481. package/dist/scanning/odds.d.ts +111 -0
  482. package/dist/scanning/odds.d.ts.map +1 -0
  483. package/dist/scanning/odds.js +294 -0
  484. package/dist/scanning/odds.js.map +1 -0
  485. package/dist/scanning/signals.d.ts +121 -0
  486. package/dist/scanning/signals.d.ts.map +1 -0
  487. package/dist/scanning/signals.js +171 -0
  488. package/dist/scanning/signals.js.map +1 -0
  489. package/dist/world/index.d.ts +64 -5
  490. package/dist/world/index.d.ts.map +1 -1
  491. package/dist/world/index.js +53 -4
  492. package/dist/world/index.js.map +1 -1
  493. package/package.json +10 -2
@@ -0,0 +1,131 @@
1
+ import { isOffCurveAddress, getProgramDerivedAddress, getAddressEncoder, getU16Encoder, } from '@solana/kit';
2
+ import { SAGE_PROGRAM_ADDRESS } from '../c4/runtime-bindings.js';
3
+ import { SageSdkError } from '../../client/errors.js';
4
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
5
+ import { requireGameAddress } from '../game-context.js';
6
+ import { readFreshGameShipDefinitionSequence } from '../../registry/ships.js';
7
+ import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
8
+ import { findCharacterPda, characterAccountDefinition, profileAccountDefinition, } from '../c4/identity.js';
9
+ import { deriveStarbasePlayerAddress, starbasePlayerAccountDefinition, } from '../c4/starbase.js';
10
+ import { deriveStarSystemAddress, starSystemAccountDefinition, } from '../c4/world.js';
11
+ import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, } from '../c4/fleet-crew-binding.js';
12
+ import { PROFILE_SCOPE } from '../c4/profile-permissions.js';
13
+ import { CLOCK_ADDRESS, readClock } from './faction-enrollment.js';
14
+ function fail(message) {
15
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${message} Refresh the owned Docked Fleet and Starbase crew, then recreate the crew transfer Plan.`);
16
+ }
17
+ /** Fresh count predicates and canonical relationships, shared by planning and execution. */
18
+ export async function resolveFleetCrewTransfer(ctx, intent, expected, commitment = 'confirmed') {
19
+ if (requireGameAddress(ctx) !== intent.game ||
20
+ isOffCurveAddress(intent.authority))
21
+ fail('Crew transfer requires this deployment and an on-curve direct Profile authority.');
22
+ const [fleetRaw] = await readContextRawAccounts(ctx, [intent.address], {
23
+ commitment,
24
+ });
25
+ if (!fleetRaw || fleetRaw.address !== intent.address || fleetRaw.executable)
26
+ fail('The selected Fleet is missing, executable or has a contradictory address.');
27
+ const fleet = fleetAccountDefinition.decode(fleetRaw);
28
+ if (fleet.game !== intent.game ||
29
+ fleet.ownerProfile !== intent.profile ||
30
+ (await deriveFleetAddress(fleet)) !== intent.address ||
31
+ fleet.npcFactionId !== 0 ||
32
+ fleet.subProfile !== '11111111111111111111111111111111')
33
+ fail('Crew transfer supports only a canonical directly owned player Fleet without a subprofile.');
34
+ if (fleet.state.kind !== 'docked')
35
+ fail('Crew can be transferred only while the Fleet is Docked.');
36
+ if (fleet.rentedCrew !== 0)
37
+ fail('Rented crew transfers are not supported by this ordinary-crew route. Manage the rental through a supported game client first.');
38
+ const systemAddress = fleet.state.system;
39
+ const [characterAddress, bindingAddress] = await Promise.all([
40
+ findCharacterPda(intent.profile, intent.game),
41
+ deriveFleetCrewBindingAddress(intent.address),
42
+ ]);
43
+ const [playerAddress, [rosterAddress]] = await Promise.all([
44
+ deriveStarbasePlayerAddress(systemAddress, characterAddress),
45
+ getProgramDerivedAddress({
46
+ programAddress: SAGE_PROGRAM_ADDRESS,
47
+ seeds: [
48
+ new TextEncoder().encode('CrewRoster'),
49
+ getAddressEncoder().encode(characterAddress),
50
+ getU16Encoder().encode(0),
51
+ ],
52
+ }),
53
+ ]);
54
+ const addresses = [
55
+ intent.profile,
56
+ characterAddress,
57
+ systemAddress,
58
+ playerAddress,
59
+ bindingAddress,
60
+ rosterAddress,
61
+ CLOCK_ADDRESS,
62
+ ];
63
+ const [rows, shipSequence] = await Promise.all([
64
+ readContextRawAccounts(ctx, addresses, { commitment }),
65
+ readFreshGameShipDefinitionSequence(ctx, { commitment }),
66
+ ]);
67
+ if (rows.length !== addresses.length ||
68
+ rows.some((raw, i) => raw && (raw.address !== addresses[i] || raw.executable)))
69
+ fail('Crew transfer reads contain missing positions, contradictory addresses or executable accounts.');
70
+ const accounts = new Map(addresses.map((a, i) => [a, rows[i]]));
71
+ const required = (a) => accounts.get(a) ?? fail(`Required crew transfer account ${a} is missing.`);
72
+ const profile = profileAccountDefinition.decode(required(intent.profile));
73
+ const character = characterAccountDefinition.decode(required(characterAddress));
74
+ const system = starSystemAccountDefinition.decode(required(systemAddress));
75
+ const player = starbasePlayerAccountDefinition.decode(required(playerAddress));
76
+ if (character.game !== intent.game ||
77
+ character.playerProfile !== intent.profile ||
78
+ system.game !== intent.game ||
79
+ (await deriveStarSystemAddress(system.game, system.systemId)) !==
80
+ systemAddress ||
81
+ !system.starbase ||
82
+ player.playerProfile !== intent.profile ||
83
+ player.character !== characterAddress ||
84
+ player.system !== systemAddress ||
85
+ player.faction !== fleet.faction)
86
+ fail('The Character, System or StarbasePlayer does not match the canonical Game and Profile relationships.');
87
+ if (fleet.state.systemSeqId !== system.sequenceId ||
88
+ player.sequenceId !== system.sequenceId ||
89
+ (expected &&
90
+ (expected.system !== systemAddress ||
91
+ expected.starbasePlayer !== playerAddress ||
92
+ expected.systemSequenceId !== system.sequenceId)))
93
+ fail('The docking System or Starbase generation changed. Reconcile docking through the game before transferring crew.');
94
+ if (fleet.shipDefinitionsSeqId !== shipSequence)
95
+ fail('Fleet stats use stale ship definitions. Refresh the Fleet through a supported game client before checking crew capacity.');
96
+ if (accounts.get(rosterAddress))
97
+ fail('This Character has an individual-crew roster. This planner supports only ordinary crew with no page-0 roster; use the supported game client for roster-aware transfers.');
98
+ const binding = accounts.get(bindingAddress);
99
+ if (binding && !fleetCrewBindingAccountDefinition.decode(binding).isNeutral)
100
+ fail('The Fleet has a populated or unsupported crew binding. Use roster-aware transfer through a supported game client.');
101
+ const now = readClock(required(CLOCK_ADDRESS));
102
+ const key = profile.keys[intent.keyIndex];
103
+ if (!key ||
104
+ key.address !== intent.authority ||
105
+ (key.expiresAtRaw >= 0n && key.expiresAtRaw < now) ||
106
+ key.scope !== PROFILE_SCOPE ||
107
+ (key.permissionsRaw & 1n) === 0n)
108
+ fail('Crew transfer requires a current direct Profile AUTH key. Select the correct key index; restricted or delegated crew permissions are not qualified.');
109
+ const capacity = fleet.stats.misc.requiredCrew + fleet.stats.misc.passengerCapacity;
110
+ if (player.busyCrew > player.totalCrew)
111
+ fail('Starbase busy crew exceeds its total crew; reconcile the Starbase state before transferring.');
112
+ if (intent.direction === 'load') {
113
+ if (player.totalCrew - player.busyCrew < intent.count)
114
+ fail('The Starbase has too few available crew; finish their current assignments or reduce the requested count.');
115
+ if (fleet.crewCount + intent.count > capacity ||
116
+ fleet.crewCount + intent.count > 65535)
117
+ fail('The requested crew exceed the Fleet required-crew plus passenger capacity; reduce the count.');
118
+ }
119
+ else {
120
+ if (fleet.crewCount < intent.count)
121
+ fail('The Fleet has fewer crew aboard than requested; reduce the unload count.');
122
+ if (player.totalCrew + intent.count > 4294967295)
123
+ fail('The Starbase total crew would exceed its stored limit; select a smaller count.');
124
+ }
125
+ return {
126
+ system: systemAddress,
127
+ starbasePlayer: playerAddress,
128
+ systemSequenceId: system.sequenceId,
129
+ };
130
+ }
131
+ //# sourceMappingURL=fleet-crew-transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-crew-transfer.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-crew-transfer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type Address, type Commitment } from '@solana/kit';
2
+ import type { SageContext } from '../../client/contracts.js';
3
+ export interface FleetRespawnIntent {
4
+ readonly phase: 'start' | 'complete';
5
+ readonly fleet: Address;
6
+ readonly game: Address;
7
+ readonly profile: Address;
8
+ readonly authority: Address;
9
+ readonly keyIndex: number;
10
+ readonly system: Address;
11
+ }
12
+ /** Fresh bounded eligibility and debit checks shared by planning and pre-sign validation. */
13
+ export declare function resolveFleetRespawn(ctx: SageContext, input: FleetRespawnIntent, expected?: {
14
+ readonly fleetHash: string;
15
+ readonly maximumRecoveryFee: bigint;
16
+ readonly maximumProfileDebit: bigint;
17
+ }, commitment?: Commitment): Promise<{
18
+ instruction: import("@solana/kit").Instruction<string, readonly (import("@solana/kit").AccountMeta<string> | import("@solana/kit").AccountLookupMeta<string, string>)[]>;
19
+ recoveryFee: bigint;
20
+ profileDebit: bigint;
21
+ fleetHash: string;
22
+ inventory: {
23
+ cargo: readonly import("../c4/fleet.js").FleetCargoAmountData[];
24
+ ammunition: import("../c4/fleet.js").FleetCargoAmountData;
25
+ fuel: import("../c4/fleet.js").FleetCargoAmountData;
26
+ };
27
+ }>;
28
+ //# sourceMappingURL=fleet-respawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-respawn.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-respawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,KAAK,EAAc,WAAW,EAAE,MAAM,2BAA2B,CAAC;AA2CzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAOD,6FAA6F;AAC7F,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,kBAAkB,EACzB,QAAQ,CAAC,EAAE;IACT,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,EACD,UAAU,GAAE,UAAwB;;;;;;;;;;GAqOrC"}
@@ -0,0 +1,164 @@
1
+ import { isOffCurveAddress } from '@solana/kit';
2
+ import { SageSdkError } from '../../client/errors.js';
3
+ import { readContextRawAccounts } from '../../client/reconciliation.js';
4
+ import { requireGameAddress } from '../game-context.js';
5
+ import { readFreshGameShipAssemblyCatalog } from '../../registry/ships.js';
6
+ import { readFreshGameRuntimeVersion } from '../../registry/xp-runtime.js';
7
+ import { fleetAccountDefinition, deriveFleetAddress } from '../c4/fleet.js';
8
+ import { characterAccountDefinition, profileAccountDefinition, findCharacterPda, } from '../c4/identity.js';
9
+ import { starSystemAccountDefinition, deriveStarSystemAddress, } from '../c4/world.js';
10
+ import { starbasePlayerAccountDefinition, deriveStarbasePlayerAddress, } from '../c4/starbase.js';
11
+ import { deriveRegionTrackerAddress, regionTrackerAccountDefinition, } from '../c4/factions.js';
12
+ import { deriveFleetCrewBindingAddress, fleetCrewBindingAccountDefinition, matchesFleetCrewBindingIdentity, } from '../c4/fleet-crew-binding.js';
13
+ import { PROFILE_SCOPE, SAGE_SCOPE } from '../c4/profile-permissions.js';
14
+ import { deriveRespawnCurrencyCache, validateRespawnCurrencyCache, fleetRespawnSize, fleetRespawnInstruction, } from '../c4/fleet-respawn.js';
15
+ import { CLOCK_ADDRESS, RENT_ADDRESS, readClock, readRent, } from './faction-enrollment.js';
16
+ import { hashAccountState } from './account-state.js';
17
+ function fail(message) {
18
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', `${message} Refresh the Fleet and required recovery accounts, then recreate and inspect the recovery Plan before signing.`);
19
+ }
20
+ /** Fresh bounded eligibility and debit checks shared by planning and pre-sign validation. */
21
+ export async function resolveFleetRespawn(ctx, input, expected, commitment = 'confirmed') {
22
+ const intent = { ...input };
23
+ if (requireGameAddress(ctx) !== intent.game ||
24
+ !['start', 'complete'].includes(intent.phase) ||
25
+ !Number.isInteger(intent.keyIndex) ||
26
+ intent.keyIndex < 0 ||
27
+ intent.keyIndex > 65535 ||
28
+ isOffCurveAddress(intent.authority))
29
+ fail('Recovery requires this deployment’s Game and an on-curve direct Profile key with a valid key index.');
30
+ const [character, regionTracker, crewBinding, [currencyCache, cacheBump]] = await Promise.all([
31
+ findCharacterPda(intent.profile, intent.game),
32
+ deriveRegionTrackerAddress(intent.game),
33
+ deriveFleetCrewBindingAddress(intent.fleet),
34
+ deriveRespawnCurrencyCache(intent.game),
35
+ ]);
36
+ const starbasePlayer = await deriveStarbasePlayerAddress(intent.system, character);
37
+ const addresses = [
38
+ intent.fleet,
39
+ intent.profile,
40
+ intent.system,
41
+ CLOCK_ADDRESS,
42
+ RENT_ADDRESS,
43
+ ...(intent.phase === 'start'
44
+ ? [character, regionTracker, crewBinding, currencyCache]
45
+ : [starbasePlayer]),
46
+ ];
47
+ const rows = await readContextRawAccounts(ctx, addresses, {
48
+ commitment,
49
+ });
50
+ if (rows.length !== addresses.length ||
51
+ rows.some((raw, i) => raw && (raw.address !== addresses[i] || raw.executable)))
52
+ fail('Recovery account reads are incomplete or contain mismatched addresses or executable accounts.');
53
+ const accounts = new Map(addresses.map((address, i) => [address, rows[i]]));
54
+ const required = (address) => accounts.get(address) ?? fail(`Recovery account ${address} is missing.`);
55
+ const fleetRaw = required(intent.fleet), profileRaw = required(intent.profile);
56
+ const fleet = fleetAccountDefinition.decode(fleetRaw), profile = profileAccountDefinition.decode(profileRaw), system = starSystemAccountDefinition.decode(required(intent.system));
57
+ if (fleet.game !== intent.game ||
58
+ fleet.ownerProfile !== intent.profile ||
59
+ fleet.npcFactionId !== 0 ||
60
+ fleet.faction === 'unaligned' ||
61
+ (await deriveFleetAddress(fleet)) !== intent.fleet ||
62
+ fleet.subProfile !== '11111111111111111111111111111111')
63
+ fail('Recovery requires a canonical owned player Fleet without a SubProfile route.');
64
+ if (system.game !== intent.game ||
65
+ (await deriveStarSystemAddress(intent.game, system.systemId)) !==
66
+ intent.system ||
67
+ system.starbase?.level !== 'css' ||
68
+ system.starbase.owner !== fleet.faction)
69
+ fail('Recovery destination must be the canonical same-Game CSS matching the Fleet faction.');
70
+ const now = readClock(required(CLOCK_ADDRESS)), rent = readRent(required(RENT_ADDRESS));
71
+ if (fleet.hp <= 0)
72
+ fail('This recovery route requires a Fleet with positive hull health; use a separately supported destroyed-Fleet recovery route.');
73
+ if (intent.phase === 'start'
74
+ ? fleet.state.kind !== 'idle'
75
+ : fleet.state.kind !== 'respawn' ||
76
+ now < fleet.state.recoversAtUnixSeconds)
77
+ fail(intent.phase === 'start'
78
+ ? 'Recovery start requires a non-destroyed Idle Fleet.'
79
+ : 'Timed recovery completion requires a Respawn Fleet whose timer has elapsed according to chain time.');
80
+ const fleetHash = await hashAccountState(fleetRaw.owner, fleetRaw.data);
81
+ if (expected && fleetHash !== expected.fleetHash)
82
+ fail('The Fleet changed after this recovery Plan was prepared; its assets or recovery state may differ.');
83
+ let recoveryFee = 0n;
84
+ let selectedCrew;
85
+ if (intent.phase === 'start') {
86
+ const owner = characterAccountDefinition.decode(required(character));
87
+ if (owner.playerProfile !== intent.profile || owner.game !== intent.game)
88
+ fail('Recovery Character does not belong to the selected Profile and Game.');
89
+ const tracker = regionTrackerAccountDefinition.decode(required(regionTracker));
90
+ if (tracker.game !== intent.game)
91
+ fail('Recovery RegionTracker belongs to a different Game.');
92
+ validateRespawnCurrencyCache(required(currencyCache), intent.game, cacheBump);
93
+ const binding = accounts.get(crewBinding);
94
+ if (binding) {
95
+ if (!matchesFleetCrewBindingIdentity(fleetCrewBindingAccountDefinition.decode(binding), intent.fleet, intent.profile))
96
+ fail('Recovery CrewBinding belongs to a different Fleet or Profile.');
97
+ selectedCrew = crewBinding;
98
+ }
99
+ const { catalog, rawAccount } = await readFreshGameShipAssemblyCatalog(ctx, { commitment });
100
+ if (rawAccount.address !== intent.game ||
101
+ rawAccount.executable ||
102
+ rawAccount.slot < fleetRaw.slot)
103
+ fail('Recovery ship definitions are older than the selected Fleet or belong to a different Game.');
104
+ if (rawAccount.data[8] !== 2)
105
+ fail('Recovery start requires the supported current Game runtime.');
106
+ for (const held of fleet.fleetShips) {
107
+ const ship = catalog.rows.find((row) => row.id === held.shipId);
108
+ if (!ship)
109
+ fail(`Recovery hull definition ${held.shipId} is missing from the current Game.`);
110
+ recoveryFee += ship.stats.miscStats.recoveryFee * held.quantity;
111
+ }
112
+ if (owner.atlasRaw < recoveryFee)
113
+ fail(`The Character ATLAS vault cannot cover the ${recoveryFee} Floyd recovery fee. Deposit sufficient ATLAS explicitly before preparing recovery.`);
114
+ }
115
+ else {
116
+ if ((await readFreshGameRuntimeVersion(ctx, intent.game, {
117
+ commitment,
118
+ })) !== 2)
119
+ fail('Recovery completion requires the supported current Game runtime.');
120
+ const player = starbasePlayerAccountDefinition.decode(required(starbasePlayer));
121
+ if (player.character !== character ||
122
+ player.playerProfile !== intent.profile ||
123
+ player.system !== intent.system ||
124
+ player.faction !== fleet.faction)
125
+ fail('Recovery CSS StarbasePlayer has a different Profile, Character, System or faction.');
126
+ }
127
+ const targetRent = rent(fleetRespawnSize(fleetRaw, intent.phase, intent.system));
128
+ const profileDebit = targetRent > fleetRaw.lamports ? targetRent - fleetRaw.lamports : 0n;
129
+ if (expected &&
130
+ (profileDebit > expected.maximumProfileDebit ||
131
+ recoveryFee > expected.maximumRecoveryFee))
132
+ fail('Recovery fees or Profile rent debit now exceed the amounts approved by this Plan.');
133
+ if (profileRaw.lamports < rent(profileRaw.data.length) + profileDebit)
134
+ fail('The Profile cannot fund Fleet storage growth while preserving its own rent reserve. Fund the Profile or Fleet explicitly.');
135
+ const key = profile.keys[intent.keyIndex];
136
+ if (!key ||
137
+ key.address !== intent.authority ||
138
+ (key.expiresAtRaw >= 0n && key.expiresAtRaw < now))
139
+ fail('Recovery authority is not the selected current unexpired direct Profile key.');
140
+ const auth = key.scope === PROFILE_SCOPE && (key.permissionsRaw & 1n) !== 0n;
141
+ if (!auth &&
142
+ !(key.scope === SAGE_SCOPE && (key.permissionsRaw & (1n << 21n)) !== 0n))
143
+ fail('Recovery requires a direct Profile AUTH key or SAGE respawn permission.');
144
+ if (profileDebit > 0n && !auth && (key.permissionsRaw & (1n << 63n)) === 0n)
145
+ fail('Recovery storage growth requires Profile vault funding authority. Explicitly prefund the Fleet or choose an authorized drainSolVault key.');
146
+ return {
147
+ instruction: fleetRespawnInstruction(intent, {
148
+ character,
149
+ regionTracker,
150
+ currencyCache,
151
+ starbasePlayer,
152
+ ...(selectedCrew ? { crewBinding: selectedCrew } : {}),
153
+ }),
154
+ recoveryFee,
155
+ profileDebit,
156
+ fleetHash,
157
+ inventory: {
158
+ cargo: fleet.cargoHold.amounts,
159
+ ammunition: fleet.ammoBank,
160
+ fuel: fleet.fuelTank,
161
+ },
162
+ };
163
+ }
164
+ //# sourceMappingURL=fleet-respawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-respawn.js","sourceRoot":"","sources":["../../../src/internal/planning/fleet-respawn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type ShipAssemblyCatalog } from '../../registry/ships.js';
2
+ import { type Address } from '@solana/kit';
3
+ import type { RawAccount } from '../../client/contracts.js';
4
+ export interface FleetShipAssemblyIntent {
5
+ readonly address: Address;
6
+ readonly game: Address;
7
+ readonly profile: Address;
8
+ readonly authority: Address;
9
+ readonly system: Address;
10
+ readonly keyIndex: number;
11
+ readonly shipId: number;
12
+ readonly amount: bigint;
13
+ }
14
+ export interface FleetShipAssemblyAccounts {
15
+ readonly game: Address;
16
+ readonly profile: Address;
17
+ readonly authority: Address;
18
+ readonly system: Address;
19
+ readonly character: Address;
20
+ readonly profileFaction: Address;
21
+ readonly starbasePlayer: Address;
22
+ readonly fleet: Address;
23
+ readonly rent: Address;
24
+ readonly clock: Address;
25
+ }
26
+ export declare function resolveFleetShipAssembly(input: FleetShipAssemblyIntent): Promise<FleetShipAssemblyAccounts>;
27
+ export declare function validateFleetShipAssembly(input: FleetShipAssemblyIntent, resolved: FleetShipAssemblyAccounts, accounts: ReadonlyMap<Address, RawAccount | undefined>, expected?: {
28
+ readonly configHash: string;
29
+ readonly maximumProfileDebit: bigint;
30
+ }, catalog?: ShipAssemblyCatalog): Promise<{
31
+ profileDebit: bigint;
32
+ profileReserve: bigint;
33
+ fleetRent: bigint;
34
+ configHash: string;
35
+ }>;
36
+ //# sourceMappingURL=fleet-ship-assembly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet-ship-assembly.d.ts","sourceRoot":"","sources":["../../../src/internal/planning/fleet-ship-assembly.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA2B5D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AACD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,yBAAyB,CAAC,CAkBpC;AAID,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,yBAAyB,EACnC,QAAQ,EAAE,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC,EACtD,QAAQ,CAAC,EAAE;IACT,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC,EACD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CA0MD"}
@@ -0,0 +1,136 @@
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, RENT_ADDRESS, readClock, readRent, } from './faction-enrollment.js';
12
+ export async function resolveFleetShipAssembly(input) {
13
+ const intent = { ...input };
14
+ const [character, profileFaction] = await Promise.all([
15
+ findCharacterPda(intent.profile, intent.game),
16
+ deriveProfileFactionAddress(intent.profile),
17
+ ]);
18
+ return {
19
+ game: intent.game,
20
+ profile: intent.profile,
21
+ authority: intent.authority,
22
+ system: intent.system,
23
+ character,
24
+ profileFaction,
25
+ fleet: intent.address,
26
+ starbasePlayer: await deriveStarbasePlayerAddress(intent.system, character),
27
+ rent: RENT_ADDRESS,
28
+ clock: CLOCK_ADDRESS,
29
+ };
30
+ }
31
+ function fail(address, message) {
32
+ throw new SageSdkError('ACTION_PRECONDITION_FAILED', message, { address });
33
+ }
34
+ export async function validateFleetShipAssembly(input, resolved, accounts, expected, catalog) {
35
+ const intent = { ...input };
36
+ if (isOffCurveAddress(intent.authority))
37
+ fail(intent.profile, 'Ship assembly requires an on-curve direct Profile authority. Select a current direct key and replan.');
38
+ const required = (address, name) => {
39
+ const raw = accounts.get(address);
40
+ if (!raw)
41
+ fail(address, `${name} ${address} is missing. Create or select the required account, then replan ship assembly.`);
42
+ if (raw.address !== address || raw.executable)
43
+ fail(address, `${name} ${address} has a contradictory address or is executable. Refresh valid account state before assembling ships.`);
44
+ return raw;
45
+ };
46
+ const profileRaw = required(resolved.profile, 'Profile');
47
+ const profile = profileAccountDefinition.decode(profileRaw);
48
+ const character = characterAccountDefinition.decode(required(resolved.character, 'Character'));
49
+ const faction = profileFactionAccountDefinition.decode(required(resolved.profileFaction, 'ProfileFaction'));
50
+ const system = starSystemAccountDefinition.decode(required(resolved.system, 'Star System'));
51
+ const player = starbasePlayerAccountDefinition.decode(required(resolved.starbasePlayer, 'StarbasePlayer'));
52
+ if (character.game !== intent.game ||
53
+ character.playerProfile !== intent.profile)
54
+ fail(resolved.character, 'The Character belongs to a different Game or Profile. Refresh the canonical Character and replan ship assembly.');
55
+ if (faction.profile !== intent.profile)
56
+ fail(resolved.profileFaction, 'The faction membership belongs to a different Profile. Refresh the canonical membership before assembling ships.');
57
+ if (system.game !== intent.game ||
58
+ (await deriveStarSystemAddress(system.game, system.systemId)) !==
59
+ intent.system ||
60
+ !system.starbase)
61
+ fail(resolved.system, 'The selected System is not canonical for this Game or has no Starbase. Choose a valid Starbase System and replan.');
62
+ if (player.playerProfile !== intent.profile ||
63
+ player.character !== resolved.character ||
64
+ player.system !== intent.system ||
65
+ player.faction !== faction.faction)
66
+ fail(resolved.starbasePlayer, 'The StarbasePlayer has a different Profile, Character, System or faction relationship. Refresh the canonical StarbasePlayer and replan.');
67
+ if (faction.faction === 'unaligned' ||
68
+ system.starbase.owner !== faction.faction)
69
+ 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.');
70
+ if (system.starbase.level !== 'css')
71
+ 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.');
72
+ const fleetRaw = required(resolved.fleet, 'Fleet');
73
+ const fleet = fleetAccountDefinition.decode(fleetRaw);
74
+ if ((await deriveFleetAddress(fleet)) !== intent.address ||
75
+ fleet.game !== intent.game ||
76
+ fleet.ownerProfile !== intent.profile ||
77
+ fleet.faction !== faction.faction ||
78
+ fleet.npcFactionId !== 0)
79
+ 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.');
80
+ if (fleet.state.kind !== 'docked' || fleet.state.system !== intent.system)
81
+ fail(resolved.fleet, 'Ship assembly requires the Fleet to remain Docked at the selected System. Dock at an own-faction CSS Starbase and replan.');
82
+ const gameRaw = required(resolved.game, 'Game');
83
+ const definitions = catalog ?? decodeGameShipAssemblyCatalog(gameRaw);
84
+ if (fleet.shipDefinitionsSeqId !== definitions.sequenceId)
85
+ 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.');
86
+ const selected = definitions.rows.find((row) => row.id === intent.shipId);
87
+ if (!isBasicFleetAssemblyShip(selected))
88
+ 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.');
89
+ // Every validated stored maxShipSize enum permits XXS, the smallest pinned size.
90
+ let quantity = 0n;
91
+ for (const entry of fleet.fleetShips) {
92
+ if (entry.quantity === 0n)
93
+ continue;
94
+ if (!isBasicFleetAssemblyShip(definitions.rows.find((row) => row.id === entry.shipId)))
95
+ 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.');
96
+ quantity += entry.quantity;
97
+ }
98
+ const current = fleet.fleetShips.find((entry) => entry.shipId === intent.shipId)
99
+ ?.quantity ?? 0n;
100
+ if (current + intent.amount > 18446744073709551615n)
101
+ fail(resolved.fleet, 'The resulting Fleet ship quantity exceeds the stored u64 limit. Select a smaller valid quantity and replan.');
102
+ if (quantity + intent.amount > BigInt(character.modifiers.values.fleetSize))
103
+ fail(resolved.character, 'The requested ships exceed the Character stored Fleet-size capacity. Reduce the amount or refresh changed Character modifiers, then replan.');
104
+ if (quantity + intent.amount > BigInt(definitions.maxFleetSize))
105
+ 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.');
106
+ const entitlement = player.shipsInEscrow.find((entry) => entry.shipId === intent.shipId)
107
+ ?.quantityRaw ?? 0n;
108
+ if (entitlement < intent.amount)
109
+ fail(resolved.starbasePlayer, 'The StarbasePlayer has insufficient entitlement for this exact ship configuration. Explicitly import that configuration or reduce the amount, then replan.');
110
+ const configHash = await hashShipAssemblyConfiguration(definitions, selected);
111
+ if (expected && expected.configHash !== configHash)
112
+ fail(resolved.game, 'The selected ship configuration has changed. Replan and inspect its current configuration before signing.');
113
+ const rent = readRent(required(resolved.rent, 'Rent sysvar'));
114
+ const now = readClock(required(resolved.clock, 'Clock sysvar'));
115
+ const fleetRent = rent(fleetShipAssemblySize(fleetRaw, intent.shipId, intent.amount));
116
+ const balance = fleetRaw.lamports;
117
+ const profileDebit = balance < fleetRent ? fleetRent - balance : 0n;
118
+ if (expected !== undefined && profileDebit > expected.maximumProfileDebit)
119
+ fail(resolved.profile, 'Ship assembly now requires a larger Profile debit than this Plan approved. Replan and inspect the updated rent shortfall before signing.');
120
+ const profileReserve = rent(profileRaw.data.length);
121
+ if (profileRaw.lamports < profileReserve + profileDebit)
122
+ 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.');
123
+ const key = profile.keys[intent.keyIndex];
124
+ if (!key || key.address !== intent.authority)
125
+ 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.');
126
+ if (key.expiresAtRaw >= 0n && key.expiresAtRaw < now)
127
+ fail(resolved.profile, 'The selected Profile key has expired. Renew it or select a current direct key and replan ship assembly.');
128
+ const auth = key.scope === PROFILE_SCOPE && (key.permissionsRaw & 1n) !== 0n;
129
+ const manages = key.scope === SAGE_SCOPE && (key.permissionsRaw & (1n << 18n)) !== 0n;
130
+ if (!auth && !manages)
131
+ fail(resolved.profile, 'The selected key cannot manage Fleets. Use a direct Profile AUTH key or a SAGE manageFleet key and replan.');
132
+ if (profileDebit > 0n && !auth && (key.permissionsRaw & (1n << 63n)) === 0n)
133
+ 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.');
134
+ return { profileDebit, profileReserve, fleetRent, configHash };
135
+ }
136
+ //# 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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"}