@mysten-incubation/devstack 0.0.0

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 (833) hide show
  1. package/LICENSE +189 -0
  2. package/README.md +94 -0
  3. package/dist/_virtual/_rolldown/runtime.mjs +13 -0
  4. package/dist/api/define-capabilities.d.mts +25 -0
  5. package/dist/api/define-capabilities.mjs +19 -0
  6. package/dist/api/define-capabilities.mjs.map +1 -0
  7. package/dist/api/define-devstack-with.d.mts +41 -0
  8. package/dist/api/define-devstack-with.mjs +24 -0
  9. package/dist/api/define-devstack-with.mjs.map +1 -0
  10. package/dist/api/define-devstack.d.mts +62 -0
  11. package/dist/api/define-devstack.mjs +108 -0
  12. package/dist/api/define-devstack.mjs.map +1 -0
  13. package/dist/api/define-plugin.d.mts +1 -0
  14. package/dist/api/inference-network.mjs +122 -0
  15. package/dist/api/inference-network.mjs.map +1 -0
  16. package/dist/api/mode-narrowed-factory.d.mts +26 -0
  17. package/dist/api/mode-narrowed-factory.mjs +8 -0
  18. package/dist/api/mode-narrowed-factory.mjs.map +1 -0
  19. package/dist/api/plugin-errors.mjs +10 -0
  20. package/dist/api/plugin-errors.mjs.map +1 -0
  21. package/dist/api/run-stack.d.mts +82 -0
  22. package/dist/api/run-stack.mjs +127 -0
  23. package/dist/api/run-stack.mjs.map +1 -0
  24. package/dist/build-integrations/playwright/config.d.mts +92 -0
  25. package/dist/build-integrations/playwright/config.mjs +71 -0
  26. package/dist/build-integrations/playwright/config.mjs.map +1 -0
  27. package/dist/build-integrations/playwright/errors.d.mts +82 -0
  28. package/dist/build-integrations/playwright/errors.mjs +43 -0
  29. package/dist/build-integrations/playwright/errors.mjs.map +1 -0
  30. package/dist/build-integrations/playwright/global-setup.d.mts +64 -0
  31. package/dist/build-integrations/playwright/global-setup.mjs +44 -0
  32. package/dist/build-integrations/playwright/global-setup.mjs.map +1 -0
  33. package/dist/build-integrations/playwright/index.d.mts +6 -0
  34. package/dist/build-integrations/playwright/index.mjs +6 -0
  35. package/dist/build-integrations/playwright/stack-context.d.mts +95 -0
  36. package/dist/build-integrations/playwright/stack-context.mjs +277 -0
  37. package/dist/build-integrations/playwright/stack-context.mjs.map +1 -0
  38. package/dist/build-integrations/playwright/wallet-context.d.mts +87 -0
  39. package/dist/build-integrations/playwright/wallet-context.mjs +148 -0
  40. package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -0
  41. package/dist/build-integrations/runtime/cold-start-url.d.mts +67 -0
  42. package/dist/build-integrations/runtime/cold-start-url.mjs +56 -0
  43. package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -0
  44. package/dist/build-integrations/runtime/dapp-kit-slot.mjs +10 -0
  45. package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -0
  46. package/dist/build-integrations/runtime/discover.d.mts +78 -0
  47. package/dist/build-integrations/runtime/discover.mjs +124 -0
  48. package/dist/build-integrations/runtime/discover.mjs.map +1 -0
  49. package/dist/build-integrations/runtime/endpoint-registry.d.mts +26 -0
  50. package/dist/build-integrations/runtime/endpoint-registry.mjs +41 -0
  51. package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -0
  52. package/dist/build-integrations/runtime/errors.d.mts +64 -0
  53. package/dist/build-integrations/runtime/errors.mjs +51 -0
  54. package/dist/build-integrations/runtime/errors.mjs.map +1 -0
  55. package/dist/build-integrations/runtime/index.d.mts +7 -0
  56. package/dist/build-integrations/runtime/index.mjs +6 -0
  57. package/dist/build-integrations/runtime/read-stack-context.d.mts +38 -0
  58. package/dist/build-integrations/runtime/read-stack-context.mjs +130 -0
  59. package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -0
  60. package/dist/build-integrations/runtime/stack-context.d.mts +53 -0
  61. package/dist/build-integrations/vitest/config.d.mts +62 -0
  62. package/dist/build-integrations/vitest/config.mjs +80 -0
  63. package/dist/build-integrations/vitest/config.mjs.map +1 -0
  64. package/dist/build-integrations/vitest/env.d.mts +48 -0
  65. package/dist/build-integrations/vitest/env.mjs +50 -0
  66. package/dist/build-integrations/vitest/env.mjs.map +1 -0
  67. package/dist/build-integrations/vitest/errors.d.mts +44 -0
  68. package/dist/build-integrations/vitest/errors.mjs +18 -0
  69. package/dist/build-integrations/vitest/errors.mjs.map +1 -0
  70. package/dist/build-integrations/vitest/index.d.mts +6 -0
  71. package/dist/build-integrations/vitest/index.mjs +6 -0
  72. package/dist/build-integrations/vitest/setup.d.mts +53 -0
  73. package/dist/build-integrations/vitest/setup.mjs +56 -0
  74. package/dist/build-integrations/vitest/setup.mjs.map +1 -0
  75. package/dist/build-integrations/vitest/stack-context.d.mts +58 -0
  76. package/dist/build-integrations/vitest/stack-context.mjs +67 -0
  77. package/dist/build-integrations/vitest/stack-context.mjs.map +1 -0
  78. package/dist/cli/main.d.mts +5 -0
  79. package/dist/cli/main.mjs +586 -0
  80. package/dist/cli/main.mjs.map +1 -0
  81. package/dist/cli/prune-direct.mjs +216 -0
  82. package/dist/cli/prune-direct.mjs.map +1 -0
  83. package/dist/cli/snapshot-reader.mjs +73 -0
  84. package/dist/cli/snapshot-reader.mjs.map +1 -0
  85. package/dist/cli/up-lifecycle.mjs +28 -0
  86. package/dist/cli/up-lifecycle.mjs.map +1 -0
  87. package/dist/contracts/capability-decl.d.mts +42 -0
  88. package/dist/contracts/chain-probe.d.mts +26 -0
  89. package/dist/contracts/chain-probe.mjs +8 -0
  90. package/dist/contracts/chain-probe.mjs.map +1 -0
  91. package/dist/contracts/codegenable.d.mts +43 -0
  92. package/dist/contracts/container-runtime.d.mts +245 -0
  93. package/dist/contracts/liveness-classifier.d.mts +19 -0
  94. package/dist/contracts/network-resolver.d.mts +15 -0
  95. package/dist/contracts/network-resolver.mjs +7 -0
  96. package/dist/contracts/network-resolver.mjs.map +1 -0
  97. package/dist/contracts/projection.d.mts +15 -0
  98. package/dist/contracts/routable.d.mts +53 -0
  99. package/dist/contracts/snapshotable.d.mts +39 -0
  100. package/dist/contracts/strategy-contributor.d.mts +26 -0
  101. package/dist/index.d.mts +89 -0
  102. package/dist/index.mjs +37 -0
  103. package/dist/orchestrators/codegen/bindings.d.mts +2 -0
  104. package/dist/orchestrators/codegen/bindings.mjs +340 -0
  105. package/dist/orchestrators/codegen/bindings.mjs.map +1 -0
  106. package/dist/orchestrators/codegen/emit.mjs +56 -0
  107. package/dist/orchestrators/codegen/emit.mjs.map +1 -0
  108. package/dist/orchestrators/codegen/errors.d.mts +1 -0
  109. package/dist/orchestrators/codegen/errors.mjs +66 -0
  110. package/dist/orchestrators/codegen/errors.mjs.map +1 -0
  111. package/dist/orchestrators/codegen/extras.mjs +16 -0
  112. package/dist/orchestrators/codegen/extras.mjs.map +1 -0
  113. package/dist/orchestrators/codegen/format.mjs +109 -0
  114. package/dist/orchestrators/codegen/format.mjs.map +1 -0
  115. package/dist/orchestrators/codegen/gitignore.mjs +67 -0
  116. package/dist/orchestrators/codegen/gitignore.mjs.map +1 -0
  117. package/dist/orchestrators/codegen/paths.d.mts +1 -0
  118. package/dist/orchestrators/codegen/paths.mjs +33 -0
  119. package/dist/orchestrators/codegen/paths.mjs.map +1 -0
  120. package/dist/orchestrators/codegen/permissions.mjs +6 -0
  121. package/dist/orchestrators/codegen/permissions.mjs.map +1 -0
  122. package/dist/orchestrators/codegen/service.d.mts +1 -0
  123. package/dist/orchestrators/codegen/service.mjs +276 -0
  124. package/dist/orchestrators/codegen/service.mjs.map +1 -0
  125. package/dist/orchestrators/router/cleanup.mjs +58 -0
  126. package/dist/orchestrators/router/cleanup.mjs.map +1 -0
  127. package/dist/orchestrators/router/cors.mjs +31 -0
  128. package/dist/orchestrators/router/cors.mjs.map +1 -0
  129. package/dist/orchestrators/router/entrypoints.d.mts +1 -0
  130. package/dist/orchestrators/router/entrypoints.mjs +80 -0
  131. package/dist/orchestrators/router/entrypoints.mjs.map +1 -0
  132. package/dist/orchestrators/router/errors.d.mts +1 -0
  133. package/dist/orchestrators/router/errors.mjs +103 -0
  134. package/dist/orchestrators/router/errors.mjs.map +1 -0
  135. package/dist/orchestrators/router/file-provider.d.mts +1 -0
  136. package/dist/orchestrators/router/file-provider.mjs +320 -0
  137. package/dist/orchestrators/router/file-provider.mjs.map +1 -0
  138. package/dist/orchestrators/router/hostname.d.mts +1 -0
  139. package/dist/orchestrators/router/hostname.mjs +107 -0
  140. package/dist/orchestrators/router/hostname.mjs.map +1 -0
  141. package/dist/orchestrators/router/index.d.mts +1 -0
  142. package/dist/orchestrators/router/profile.d.mts +1 -0
  143. package/dist/orchestrators/router/profile.mjs +109 -0
  144. package/dist/orchestrators/router/profile.mjs.map +1 -0
  145. package/dist/orchestrators/router/service.d.mts +3 -0
  146. package/dist/orchestrators/router/service.mjs +421 -0
  147. package/dist/orchestrators/router/service.mjs.map +1 -0
  148. package/dist/orchestrators/router/traefik-container.d.mts +1 -0
  149. package/dist/orchestrators/router/traefik-container.mjs +229 -0
  150. package/dist/orchestrators/router/traefik-container.mjs.map +1 -0
  151. package/dist/orchestrators/runtime-composition.d.mts +10 -0
  152. package/dist/orchestrators/runtime-composition.mjs +168 -0
  153. package/dist/orchestrators/runtime-composition.mjs.map +1 -0
  154. package/dist/orchestrators/snapshot/capture.d.mts +1 -0
  155. package/dist/orchestrators/snapshot/capture.mjs +350 -0
  156. package/dist/orchestrators/snapshot/capture.mjs.map +1 -0
  157. package/dist/orchestrators/snapshot/descriptor.d.mts +1 -0
  158. package/dist/orchestrators/snapshot/descriptor.mjs +109 -0
  159. package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -0
  160. package/dist/orchestrators/snapshot/identity-guard.d.mts +1 -0
  161. package/dist/orchestrators/snapshot/identity-guard.mjs +132 -0
  162. package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -0
  163. package/dist/orchestrators/snapshot/image-bundle-tags.mjs +207 -0
  164. package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -0
  165. package/dist/orchestrators/snapshot/index.d.mts +1 -0
  166. package/dist/orchestrators/snapshot/integrity.d.mts +1 -0
  167. package/dist/orchestrators/snapshot/integrity.mjs +74 -0
  168. package/dist/orchestrators/snapshot/integrity.mjs.map +1 -0
  169. package/dist/orchestrators/snapshot/prune.d.mts +1 -0
  170. package/dist/orchestrators/snapshot/prune.mjs +110 -0
  171. package/dist/orchestrators/snapshot/prune.mjs.map +1 -0
  172. package/dist/orchestrators/snapshot/restore.d.mts +1 -0
  173. package/dist/orchestrators/snapshot/restore.mjs +404 -0
  174. package/dist/orchestrators/snapshot/restore.mjs.map +1 -0
  175. package/dist/orchestrators/snapshot/service.d.mts +1 -0
  176. package/dist/orchestrators/snapshot/service.mjs +296 -0
  177. package/dist/orchestrators/snapshot/service.mjs.map +1 -0
  178. package/dist/orchestrators/snapshot/state-document.mjs +18 -0
  179. package/dist/orchestrators/snapshot/state-document.mjs.map +1 -0
  180. package/dist/orchestrators/snapshot/wipe.d.mts +1 -0
  181. package/dist/orchestrators/snapshot/wipe.mjs +59 -0
  182. package/dist/orchestrators/snapshot/wipe.mjs.map +1 -0
  183. package/dist/plugins/account/codegen.d.mts +12 -0
  184. package/dist/plugins/account/codegen.mjs +22 -0
  185. package/dist/plugins/account/codegen.mjs.map +1 -0
  186. package/dist/plugins/account/errors.d.mts +44 -0
  187. package/dist/plugins/account/errors.mjs +16 -0
  188. package/dist/plugins/account/errors.mjs.map +1 -0
  189. package/dist/plugins/account/funding.d.mts +94 -0
  190. package/dist/plugins/account/funding.mjs +199 -0
  191. package/dist/plugins/account/funding.mjs.map +1 -0
  192. package/dist/plugins/account/index.d.mts +54 -0
  193. package/dist/plugins/account/index.mjs +151 -0
  194. package/dist/plugins/account/index.mjs.map +1 -0
  195. package/dist/plugins/account/keypair.d.mts +32 -0
  196. package/dist/plugins/account/keypair.mjs +99 -0
  197. package/dist/plugins/account/keypair.mjs.map +1 -0
  198. package/dist/plugins/account/lease.mjs +21 -0
  199. package/dist/plugins/account/lease.mjs.map +1 -0
  200. package/dist/plugins/account/registry.d.mts +33 -0
  201. package/dist/plugins/account/registry.mjs +36 -0
  202. package/dist/plugins/account/registry.mjs.map +1 -0
  203. package/dist/plugins/account/service.d.mts +104 -0
  204. package/dist/plugins/account/service.mjs +405 -0
  205. package/dist/plugins/account/service.mjs.map +1 -0
  206. package/dist/plugins/account/snapshot.mjs +33 -0
  207. package/dist/plugins/account/snapshot.mjs.map +1 -0
  208. package/dist/plugins/account/variants/env.mjs +24 -0
  209. package/dist/plugins/account/variants/env.mjs.map +1 -0
  210. package/dist/plugins/account/variants/ephemeral.mjs +72 -0
  211. package/dist/plugins/account/variants/ephemeral.mjs.map +1 -0
  212. package/dist/plugins/account/variants/impersonate.d.mts +16 -0
  213. package/dist/plugins/account/variants/impersonate.mjs +48 -0
  214. package/dist/plugins/account/variants/impersonate.mjs.map +1 -0
  215. package/dist/plugins/account/variants/inline.mjs +13 -0
  216. package/dist/plugins/account/variants/inline.mjs.map +1 -0
  217. package/dist/plugins/account/variants/keystore.mjs +93 -0
  218. package/dist/plugins/account/variants/keystore.mjs.map +1 -0
  219. package/dist/plugins/account/variants/signer.mjs +31 -0
  220. package/dist/plugins/account/variants/signer.mjs.map +1 -0
  221. package/dist/plugins/action/build-context.d.mts +41 -0
  222. package/dist/plugins/action/discriminator.d.mts +20 -0
  223. package/dist/plugins/action/discriminator.mjs +13 -0
  224. package/dist/plugins/action/discriminator.mjs.map +1 -0
  225. package/dist/plugins/action/errors.d.mts +31 -0
  226. package/dist/plugins/action/errors.mjs +13 -0
  227. package/dist/plugins/action/errors.mjs.map +1 -0
  228. package/dist/plugins/action/execute.d.mts +2 -0
  229. package/dist/plugins/action/execute.mjs +145 -0
  230. package/dist/plugins/action/execute.mjs.map +1 -0
  231. package/dist/plugins/action/index.d.mts +56 -0
  232. package/dist/plugins/action/index.mjs +82 -0
  233. package/dist/plugins/action/index.mjs.map +1 -0
  234. package/dist/plugins/action/service.d.mts +26 -0
  235. package/dist/plugins/action/service.mjs +84 -0
  236. package/dist/plugins/action/service.mjs.map +1 -0
  237. package/dist/plugins/coin/address-resolution.d.mts +34 -0
  238. package/dist/plugins/coin/address-resolution.mjs +80 -0
  239. package/dist/plugins/coin/address-resolution.mjs.map +1 -0
  240. package/dist/plugins/coin/codegen.d.mts +16 -0
  241. package/dist/plugins/coin/codegen.mjs +21 -0
  242. package/dist/plugins/coin/codegen.mjs.map +1 -0
  243. package/dist/plugins/coin/discovery.d.mts +26 -0
  244. package/dist/plugins/coin/discovery.mjs +112 -0
  245. package/dist/plugins/coin/discovery.mjs.map +1 -0
  246. package/dist/plugins/coin/errors.d.mts +48 -0
  247. package/dist/plugins/coin/errors.mjs +13 -0
  248. package/dist/plugins/coin/errors.mjs.map +1 -0
  249. package/dist/plugins/coin/index.d.mts +95 -0
  250. package/dist/plugins/coin/index.mjs +172 -0
  251. package/dist/plugins/coin/index.mjs.map +1 -0
  252. package/dist/plugins/coin/metadata.d.mts +15 -0
  253. package/dist/plugins/coin/metadata.mjs +99 -0
  254. package/dist/plugins/coin/metadata.mjs.map +1 -0
  255. package/dist/plugins/coin/mint.d.mts +34 -0
  256. package/dist/plugins/coin/mint.mjs +164 -0
  257. package/dist/plugins/coin/mint.mjs.map +1 -0
  258. package/dist/plugins/coin/registry.d.mts +1 -0
  259. package/dist/plugins/coin/registry.mjs +37 -0
  260. package/dist/plugins/coin/registry.mjs.map +1 -0
  261. package/dist/plugins/coin/service.d.mts +47 -0
  262. package/dist/plugins/coin/service.mjs +51 -0
  263. package/dist/plugins/coin/service.mjs.map +1 -0
  264. package/dist/plugins/coin/snapshot.mjs +19 -0
  265. package/dist/plugins/coin/snapshot.mjs.map +1 -0
  266. package/dist/plugins/coin/type-strings.mjs +49 -0
  267. package/dist/plugins/coin/type-strings.mjs.map +1 -0
  268. package/dist/plugins/deepbook/codegen.d.mts +39 -0
  269. package/dist/plugins/deepbook/codegen.mjs +15 -0
  270. package/dist/plugins/deepbook/codegen.mjs.map +1 -0
  271. package/dist/plugins/deepbook/deploy.mjs +437 -0
  272. package/dist/plugins/deepbook/deploy.mjs.map +1 -0
  273. package/dist/plugins/deepbook/errors.d.mts +29 -0
  274. package/dist/plugins/deepbook/errors.mjs +26 -0
  275. package/dist/plugins/deepbook/errors.mjs.map +1 -0
  276. package/dist/plugins/deepbook/faucet-strategy.d.mts +8 -0
  277. package/dist/plugins/deepbook/faucet-strategy.mjs +81 -0
  278. package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -0
  279. package/dist/plugins/deepbook/index.d.mts +171 -0
  280. package/dist/plugins/deepbook/index.mjs +359 -0
  281. package/dist/plugins/deepbook/index.mjs.map +1 -0
  282. package/dist/plugins/deepbook/plugin-key.mjs +7 -0
  283. package/dist/plugins/deepbook/plugin-key.mjs.map +1 -0
  284. package/dist/plugins/deepbook/pyth/index.mjs +226 -0
  285. package/dist/plugins/deepbook/pyth/index.mjs.map +1 -0
  286. package/dist/plugins/deepbook/routable.mjs +21 -0
  287. package/dist/plugins/deepbook/routable.mjs.map +1 -0
  288. package/dist/plugins/deepbook/snapshot.mjs +49 -0
  289. package/dist/plugins/deepbook/snapshot.mjs.map +1 -0
  290. package/dist/plugins/deepbook/types.d.mts +125 -0
  291. package/dist/plugins/deepbook/types.mjs +12 -0
  292. package/dist/plugins/deepbook/types.mjs.map +1 -0
  293. package/dist/plugins/faucet/dispatcher.d.mts +9 -0
  294. package/dist/plugins/faucet/dispatcher.mjs +13 -0
  295. package/dist/plugins/faucet/dispatcher.mjs.map +1 -0
  296. package/dist/plugins/faucet/errors.d.mts +86 -0
  297. package/dist/plugins/faucet/errors.mjs +19 -0
  298. package/dist/plugins/faucet/errors.mjs.map +1 -0
  299. package/dist/plugins/faucet/http.mjs +127 -0
  300. package/dist/plugins/faucet/http.mjs.map +1 -0
  301. package/dist/plugins/faucet/index.d.mts +43 -0
  302. package/dist/plugins/faucet/index.mjs +42 -0
  303. package/dist/plugins/faucet/index.mjs.map +1 -0
  304. package/dist/plugins/faucet/service.d.mts +20 -0
  305. package/dist/plugins/faucet/strategies/sui-local.d.mts +23 -0
  306. package/dist/plugins/faucet/strategies/sui-local.mjs +29 -0
  307. package/dist/plugins/faucet/strategies/sui-local.mjs.map +1 -0
  308. package/dist/plugins/host-service/errors.d.mts +27 -0
  309. package/dist/plugins/host-service/errors.mjs +14 -0
  310. package/dist/plugins/host-service/errors.mjs.map +1 -0
  311. package/dist/plugins/host-service/index.d.mts +10 -0
  312. package/dist/plugins/host-service/index.mjs +48 -0
  313. package/dist/plugins/host-service/index.mjs.map +1 -0
  314. package/dist/plugins/host-service/routable.mjs +24 -0
  315. package/dist/plugins/host-service/routable.mjs.map +1 -0
  316. package/dist/plugins/host-service/service.d.mts +49 -0
  317. package/dist/plugins/host-service/service.mjs +375 -0
  318. package/dist/plugins/host-service/service.mjs.map +1 -0
  319. package/dist/plugins/package/build.d.mts +1 -0
  320. package/dist/plugins/package/build.mjs +24 -0
  321. package/dist/plugins/package/build.mjs.map +1 -0
  322. package/dist/plugins/package/codegen.d.mts +19 -0
  323. package/dist/plugins/package/codegen.mjs +41 -0
  324. package/dist/plugins/package/codegen.mjs.map +1 -0
  325. package/dist/plugins/package/dep-resolution.mjs +10 -0
  326. package/dist/plugins/package/dep-resolution.mjs.map +1 -0
  327. package/dist/plugins/package/errors.d.mts +34 -0
  328. package/dist/plugins/package/errors.mjs +13 -0
  329. package/dist/plugins/package/errors.mjs.map +1 -0
  330. package/dist/plugins/package/index.d.mts +109 -0
  331. package/dist/plugins/package/index.mjs +207 -0
  332. package/dist/plugins/package/index.mjs.map +1 -0
  333. package/dist/plugins/package/mode-known.mjs +41 -0
  334. package/dist/plugins/package/mode-known.mjs.map +1 -0
  335. package/dist/plugins/package/mode-local.d.mts +1 -0
  336. package/dist/plugins/package/mode-local.mjs +183 -0
  337. package/dist/plugins/package/mode-local.mjs.map +1 -0
  338. package/dist/plugins/package/publish-executor.mjs +202 -0
  339. package/dist/plugins/package/publish-executor.mjs.map +1 -0
  340. package/dist/plugins/package/publish-output.d.mts +28 -0
  341. package/dist/plugins/package/publish-output.mjs +45 -0
  342. package/dist/plugins/package/publish-output.mjs.map +1 -0
  343. package/dist/plugins/package/registry.d.mts +25 -0
  344. package/dist/plugins/package/registry.mjs +30 -0
  345. package/dist/plugins/package/registry.mjs.map +1 -0
  346. package/dist/plugins/package/service.mjs +20 -0
  347. package/dist/plugins/package/service.mjs.map +1 -0
  348. package/dist/plugins/package/snapshot.mjs +25 -0
  349. package/dist/plugins/package/snapshot.mjs.map +1 -0
  350. package/dist/plugins/postgres/codegen.mjs +42 -0
  351. package/dist/plugins/postgres/codegen.mjs.map +1 -0
  352. package/dist/plugins/postgres/connection.d.mts +33 -0
  353. package/dist/plugins/postgres/connection.mjs +19 -0
  354. package/dist/plugins/postgres/connection.mjs.map +1 -0
  355. package/dist/plugins/postgres/db-ensure.mjs +100 -0
  356. package/dist/plugins/postgres/db-ensure.mjs.map +1 -0
  357. package/dist/plugins/postgres/errors.d.mts +55 -0
  358. package/dist/plugins/postgres/errors.mjs +29 -0
  359. package/dist/plugins/postgres/errors.mjs.map +1 -0
  360. package/dist/plugins/postgres/index.d.mts +37 -0
  361. package/dist/plugins/postgres/index.mjs +75 -0
  362. package/dist/plugins/postgres/index.mjs.map +1 -0
  363. package/dist/plugins/postgres/routable.mjs +33 -0
  364. package/dist/plugins/postgres/routable.mjs.map +1 -0
  365. package/dist/plugins/postgres/service.d.mts +50 -0
  366. package/dist/plugins/postgres/service.mjs +145 -0
  367. package/dist/plugins/postgres/service.mjs.map +1 -0
  368. package/dist/plugins/postgres/snapshot.d.mts +1 -0
  369. package/dist/plugins/postgres/snapshot.mjs +32 -0
  370. package/dist/plugins/postgres/snapshot.mjs.map +1 -0
  371. package/dist/plugins/router-entrypoints.mjs +21 -0
  372. package/dist/plugins/router-entrypoints.mjs.map +1 -0
  373. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +59 -0
  374. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -0
  375. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +132 -0
  376. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -0
  377. package/dist/plugins/seal/codegen.d.mts +19 -0
  378. package/dist/plugins/seal/codegen.mjs +16 -0
  379. package/dist/plugins/seal/codegen.mjs.map +1 -0
  380. package/dist/plugins/seal/config-render.mjs +82 -0
  381. package/dist/plugins/seal/config-render.mjs.map +1 -0
  382. package/dist/plugins/seal/deploy.mjs +198 -0
  383. package/dist/plugins/seal/deploy.mjs.map +1 -0
  384. package/dist/plugins/seal/errors.d.mts +52 -0
  385. package/dist/plugins/seal/errors.mjs +19 -0
  386. package/dist/plugins/seal/errors.mjs.map +1 -0
  387. package/dist/plugins/seal/index.d.mts +161 -0
  388. package/dist/plugins/seal/index.mjs +235 -0
  389. package/dist/plugins/seal/index.mjs.map +1 -0
  390. package/dist/plugins/seal/key-manager.d.mts +22 -0
  391. package/dist/plugins/seal/key-manager.mjs +22 -0
  392. package/dist/plugins/seal/key-manager.mjs.map +1 -0
  393. package/dist/plugins/seal/key-server.mjs +175 -0
  394. package/dist/plugins/seal/key-server.mjs.map +1 -0
  395. package/dist/plugins/seal/keygen.mjs +96 -0
  396. package/dist/plugins/seal/keygen.mjs.map +1 -0
  397. package/dist/plugins/seal/mode/fork-known.d.mts +8 -0
  398. package/dist/plugins/seal/mode/fork-known.mjs +23 -0
  399. package/dist/plugins/seal/mode/fork-known.mjs.map +1 -0
  400. package/dist/plugins/seal/mode/live.d.mts +18 -0
  401. package/dist/plugins/seal/mode/live.mjs +64 -0
  402. package/dist/plugins/seal/mode/live.mjs.map +1 -0
  403. package/dist/plugins/seal/mode/local-keygen.mjs +180 -0
  404. package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -0
  405. package/dist/plugins/seal/plugin-key.mjs +7 -0
  406. package/dist/plugins/seal/plugin-key.mjs.map +1 -0
  407. package/dist/plugins/seal/registry-publish.d.mts +43 -0
  408. package/dist/plugins/seal/registry-publish.mjs +9 -0
  409. package/dist/plugins/seal/registry-publish.mjs.map +1 -0
  410. package/dist/plugins/seal/routable.mjs +57 -0
  411. package/dist/plugins/seal/routable.mjs.map +1 -0
  412. package/dist/plugins/seal/service.mjs +17 -0
  413. package/dist/plugins/seal/service.mjs.map +1 -0
  414. package/dist/plugins/seal/snapshot.mjs +51 -0
  415. package/dist/plugins/seal/snapshot.mjs.map +1 -0
  416. package/dist/plugins/sui/auto-tick.mjs +45 -0
  417. package/dist/plugins/sui/auto-tick.mjs.map +1 -0
  418. package/dist/plugins/sui/chain-build-container.d.mts +1 -0
  419. package/dist/plugins/sui/chain-probe.d.mts +85 -0
  420. package/dist/plugins/sui/chain-probe.mjs +104 -0
  421. package/dist/plugins/sui/chain-probe.mjs.map +1 -0
  422. package/dist/plugins/sui/codegen.d.mts +14 -0
  423. package/dist/plugins/sui/codegen.mjs +26 -0
  424. package/dist/plugins/sui/codegen.mjs.map +1 -0
  425. package/dist/plugins/sui/errors.d.mts +74 -0
  426. package/dist/plugins/sui/errors.mjs +28 -0
  427. package/dist/plugins/sui/errors.mjs.map +1 -0
  428. package/dist/plugins/sui/fork-orchestration.mjs +24 -0
  429. package/dist/plugins/sui/fork-orchestration.mjs.map +1 -0
  430. package/dist/plugins/sui/fork-transaction.mjs +96 -0
  431. package/dist/plugins/sui/fork-transaction.mjs.map +1 -0
  432. package/dist/plugins/sui/index.d.mts +318 -0
  433. package/dist/plugins/sui/index.mjs +182 -0
  434. package/dist/plugins/sui/index.mjs.map +1 -0
  435. package/dist/plugins/sui/mode/external.mjs +60 -0
  436. package/dist/plugins/sui/mode/external.mjs.map +1 -0
  437. package/dist/plugins/sui/mode/fork.mjs +283 -0
  438. package/dist/plugins/sui/mode/fork.mjs.map +1 -0
  439. package/dist/plugins/sui/mode/live.mjs +103 -0
  440. package/dist/plugins/sui/mode/live.mjs.map +1 -0
  441. package/dist/plugins/sui/mode/local.mjs +293 -0
  442. package/dist/plugins/sui/mode/local.mjs.map +1 -0
  443. package/dist/plugins/sui/mode/shared-boot.mjs +254 -0
  444. package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -0
  445. package/dist/plugins/sui/mode/shared.d.mts +103 -0
  446. package/dist/plugins/sui/mode/shared.mjs +12 -0
  447. package/dist/plugins/sui/mode/shared.mjs.map +1 -0
  448. package/dist/plugins/sui/mode/spec.d.mts +94 -0
  449. package/dist/plugins/sui/network-resolver.d.mts +23 -0
  450. package/dist/plugins/sui/routable.mjs +88 -0
  451. package/dist/plugins/sui/routable.mjs.map +1 -0
  452. package/dist/plugins/sui/seed-objects.d.mts +18 -0
  453. package/dist/plugins/sui/seed-objects.mjs +25 -0
  454. package/dist/plugins/sui/seed-objects.mjs.map +1 -0
  455. package/dist/plugins/sui/service.mjs +38 -0
  456. package/dist/plugins/sui/service.mjs.map +1 -0
  457. package/dist/plugins/sui/snapshot.mjs +53 -0
  458. package/dist/plugins/sui/snapshot.mjs.map +1 -0
  459. package/dist/plugins/wallet/codegen.d.mts +33 -0
  460. package/dist/plugins/wallet/codegen.mjs +34 -0
  461. package/dist/plugins/wallet/codegen.mjs.map +1 -0
  462. package/dist/plugins/wallet/errors.d.mts +66 -0
  463. package/dist/plugins/wallet/errors.mjs +16 -0
  464. package/dist/plugins/wallet/errors.mjs.map +1 -0
  465. package/dist/plugins/wallet/index.d.mts +63 -0
  466. package/dist/plugins/wallet/index.mjs +126 -0
  467. package/dist/plugins/wallet/index.mjs.map +1 -0
  468. package/dist/plugins/wallet/origin-policy.d.mts +1 -0
  469. package/dist/plugins/wallet/origin-policy.mjs +65 -0
  470. package/dist/plugins/wallet/origin-policy.mjs.map +1 -0
  471. package/dist/plugins/wallet/pairing.d.mts +11 -0
  472. package/dist/plugins/wallet/pairing.mjs +125 -0
  473. package/dist/plugins/wallet/pairing.mjs.map +1 -0
  474. package/dist/plugins/wallet/protocol.d.mts +1 -0
  475. package/dist/plugins/wallet/protocol.mjs +96 -0
  476. package/dist/plugins/wallet/protocol.mjs.map +1 -0
  477. package/dist/plugins/wallet/routable.mjs +32 -0
  478. package/dist/plugins/wallet/routable.mjs.map +1 -0
  479. package/dist/plugins/wallet/server.d.mts +12 -0
  480. package/dist/plugins/wallet/server.mjs +317 -0
  481. package/dist/plugins/wallet/server.mjs.map +1 -0
  482. package/dist/plugins/wallet/service.d.mts +68 -0
  483. package/dist/plugins/wallet/service.mjs +97 -0
  484. package/dist/plugins/wallet/service.mjs.map +1 -0
  485. package/dist/plugins/wallet/snapshot.d.mts +1 -0
  486. package/dist/plugins/wallet/snapshot.mjs +14 -0
  487. package/dist/plugins/wallet/snapshot.mjs.map +1 -0
  488. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +42 -0
  489. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -0
  490. package/dist/plugins/walrus/codegen.d.mts +38 -0
  491. package/dist/plugins/walrus/codegen.mjs +34 -0
  492. package/dist/plugins/walrus/codegen.mjs.map +1 -0
  493. package/dist/plugins/walrus/deploy-paths.mjs +14 -0
  494. package/dist/plugins/walrus/deploy-paths.mjs.map +1 -0
  495. package/dist/plugins/walrus/deploy.d.mts +1 -0
  496. package/dist/plugins/walrus/deploy.mjs +224 -0
  497. package/dist/plugins/walrus/deploy.mjs.map +1 -0
  498. package/dist/plugins/walrus/errors.d.mts +38 -0
  499. package/dist/plugins/walrus/errors.mjs +26 -0
  500. package/dist/plugins/walrus/errors.mjs.map +1 -0
  501. package/dist/plugins/walrus/faucet-strategy.d.mts +12 -0
  502. package/dist/plugins/walrus/faucet-strategy.mjs +62 -0
  503. package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -0
  504. package/dist/plugins/walrus/index.d.mts +177 -0
  505. package/dist/plugins/walrus/index.mjs +284 -0
  506. package/dist/plugins/walrus/index.mjs.map +1 -0
  507. package/dist/plugins/walrus/mode/known-deploy.d.mts +25 -0
  508. package/dist/plugins/walrus/mode/known-deploy.mjs +71 -0
  509. package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -0
  510. package/dist/plugins/walrus/mode/local-cluster.d.mts +34 -0
  511. package/dist/plugins/walrus/mode/local-cluster.mjs +153 -0
  512. package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -0
  513. package/dist/plugins/walrus/plugin-key.mjs +7 -0
  514. package/dist/plugins/walrus/plugin-key.mjs.map +1 -0
  515. package/dist/plugins/walrus/registry-publish.d.mts +24 -0
  516. package/dist/plugins/walrus/registry-publish.mjs +7 -0
  517. package/dist/plugins/walrus/registry-publish.mjs.map +1 -0
  518. package/dist/plugins/walrus/routable.mjs +99 -0
  519. package/dist/plugins/walrus/routable.mjs.map +1 -0
  520. package/dist/plugins/walrus/service.mjs +20 -0
  521. package/dist/plugins/walrus/service.mjs.map +1 -0
  522. package/dist/plugins/walrus/snapshot.mjs +53 -0
  523. package/dist/plugins/walrus/snapshot.mjs.map +1 -0
  524. package/dist/plugins/walrus/storage-nodes.d.mts +15 -0
  525. package/dist/plugins/walrus/storage-nodes.mjs +154 -0
  526. package/dist/plugins/walrus/storage-nodes.mjs.map +1 -0
  527. package/dist/plugins/walrus/wal-swap.d.mts +2 -0
  528. package/dist/plugins/walrus/wal-swap.mjs +58 -0
  529. package/dist/plugins/walrus/wal-swap.mjs.map +1 -0
  530. package/dist/primitives/artifact-publisher.d.mts +12 -0
  531. package/dist/primitives/cache.d.mts +1 -0
  532. package/dist/runtime/built-in-plugin-layers.mjs +49 -0
  533. package/dist/runtime/built-in-plugin-layers.mjs.map +1 -0
  534. package/dist/runtime/docker/client.d.mts +2 -0
  535. package/dist/runtime/docker/client.mjs +54 -0
  536. package/dist/runtime/docker/client.mjs.map +1 -0
  537. package/dist/runtime/docker/container.d.mts +1 -0
  538. package/dist/runtime/docker/container.mjs +562 -0
  539. package/dist/runtime/docker/container.mjs.map +1 -0
  540. package/dist/runtime/docker/errors.d.mts +1 -0
  541. package/dist/runtime/docker/errors.mjs +187 -0
  542. package/dist/runtime/docker/errors.mjs.map +1 -0
  543. package/dist/runtime/docker/exec.d.mts +1 -0
  544. package/dist/runtime/docker/exec.mjs +63 -0
  545. package/dist/runtime/docker/exec.mjs.map +1 -0
  546. package/dist/runtime/docker/image.d.mts +1 -0
  547. package/dist/runtime/docker/image.mjs +278 -0
  548. package/dist/runtime/docker/image.mjs.map +1 -0
  549. package/dist/runtime/docker/index.d.mts +1 -0
  550. package/dist/runtime/docker/inventory.d.mts +1 -0
  551. package/dist/runtime/docker/inventory.mjs +167 -0
  552. package/dist/runtime/docker/inventory.mjs.map +1 -0
  553. package/dist/runtime/docker/labels.d.mts +1 -0
  554. package/dist/runtime/docker/labels.mjs +97 -0
  555. package/dist/runtime/docker/labels.mjs.map +1 -0
  556. package/dist/runtime/docker/logs.d.mts +1 -0
  557. package/dist/runtime/docker/logs.mjs +34 -0
  558. package/dist/runtime/docker/logs.mjs.map +1 -0
  559. package/dist/runtime/docker/network.d.mts +1 -0
  560. package/dist/runtime/docker/network.mjs +168 -0
  561. package/dist/runtime/docker/network.mjs.map +1 -0
  562. package/dist/runtime/docker/service.d.mts +9 -0
  563. package/dist/runtime/docker/service.mjs +266 -0
  564. package/dist/runtime/docker/service.mjs.map +1 -0
  565. package/dist/runtime/docker/sweep.d.mts +1 -0
  566. package/dist/runtime/docker/sweep.mjs +220 -0
  567. package/dist/runtime/docker/sweep.mjs.map +1 -0
  568. package/dist/runtime/docker/volume.d.mts +1 -0
  569. package/dist/runtime/docker/volume.mjs +24 -0
  570. package/dist/runtime/docker/volume.mjs.map +1 -0
  571. package/dist/runtime/docker/wrap.d.mts +1 -0
  572. package/dist/runtime/docker/wrap.mjs +131 -0
  573. package/dist/runtime/docker/wrap.mjs.map +1 -0
  574. package/dist/substrate/brand.d.mts +24 -0
  575. package/dist/substrate/brand.mjs +14 -0
  576. package/dist/substrate/brand.mjs.map +1 -0
  577. package/dist/substrate/cross-process.d.mts +1 -0
  578. package/dist/substrate/cross-process.mjs +28 -0
  579. package/dist/substrate/cross-process.mjs.map +1 -0
  580. package/dist/substrate/events.d.mts +117 -0
  581. package/dist/substrate/identity.d.mts +13 -0
  582. package/dist/substrate/lifecycle.d.mts +12 -0
  583. package/dist/substrate/manifest.d.mts +39 -0
  584. package/dist/substrate/manifest.mjs +33 -0
  585. package/dist/substrate/manifest.mjs.map +1 -0
  586. package/dist/substrate/network.d.mts +34 -0
  587. package/dist/substrate/options.d.mts +23 -0
  588. package/dist/substrate/plugin.d.mts +101 -0
  589. package/dist/substrate/plugin.mjs +61 -0
  590. package/dist/substrate/plugin.mjs.map +1 -0
  591. package/dist/substrate/projection.d.mts +100 -0
  592. package/dist/substrate/runtime/artifact-publisher/index.mjs +76 -0
  593. package/dist/substrate/runtime/artifact-publisher/index.mjs.map +1 -0
  594. package/dist/substrate/runtime/atomic-write.mjs +106 -0
  595. package/dist/substrate/runtime/atomic-write.mjs.map +1 -0
  596. package/dist/substrate/runtime/cache/index.d.mts +1 -0
  597. package/dist/substrate/runtime/cache/schema.d.mts +1 -0
  598. package/dist/substrate/runtime/cache/schema.mjs +22 -0
  599. package/dist/substrate/runtime/cache/schema.mjs.map +1 -0
  600. package/dist/substrate/runtime/cache/service.d.mts +1 -0
  601. package/dist/substrate/runtime/cache/service.mjs +89 -0
  602. package/dist/substrate/runtime/cache/service.mjs.map +1 -0
  603. package/dist/substrate/runtime/capability-sinks/index.d.mts +1 -0
  604. package/dist/substrate/runtime/capability-sinks/layer.d.mts +1 -0
  605. package/dist/substrate/runtime/capability-sinks/layer.mjs +31 -0
  606. package/dist/substrate/runtime/capability-sinks/layer.mjs.map +1 -0
  607. package/dist/substrate/runtime/capability-sinks/service.d.mts +36 -0
  608. package/dist/substrate/runtime/capability-sinks/service.mjs +74 -0
  609. package/dist/substrate/runtime/capability-sinks/service.mjs.map +1 -0
  610. package/dist/substrate/runtime/config-validation.d.mts +38 -0
  611. package/dist/substrate/runtime/config-validation.mjs +137 -0
  612. package/dist/substrate/runtime/config-validation.mjs.map +1 -0
  613. package/dist/substrate/runtime/context-helpers.mjs +32 -0
  614. package/dist/substrate/runtime/context-helpers.mjs.map +1 -0
  615. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +128 -0
  616. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -0
  617. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs +136 -0
  618. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -0
  619. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs +49 -0
  620. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -0
  621. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs +9 -0
  622. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -0
  623. package/dist/substrate/runtime/cross-process/liveness.mjs +119 -0
  624. package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -0
  625. package/dist/substrate/runtime/cross-process/roster.mjs +275 -0
  626. package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -0
  627. package/dist/substrate/runtime/cross-process/snapshot-reservation.d.mts +1 -0
  628. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +117 -0
  629. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +1 -0
  630. package/dist/substrate/runtime/cross-process/stack-lock.d.mts +1 -0
  631. package/dist/substrate/runtime/cross-process/stack-lock.mjs +142 -0
  632. package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -0
  633. package/dist/substrate/runtime/current-plugin.mjs +15 -0
  634. package/dist/substrate/runtime/current-plugin.mjs.map +1 -0
  635. package/dist/substrate/runtime/errors.d.mts +1 -0
  636. package/dist/substrate/runtime/errors.mjs +76 -0
  637. package/dist/substrate/runtime/errors.mjs.map +1 -0
  638. package/dist/substrate/runtime/host-tree-tar/index.mjs +364 -0
  639. package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -0
  640. package/dist/substrate/runtime/http-probe.d.mts +35 -0
  641. package/dist/substrate/runtime/http-probe.mjs +65 -0
  642. package/dist/substrate/runtime/http-probe.mjs.map +1 -0
  643. package/dist/substrate/runtime/lease-broker/index.d.mts +1 -0
  644. package/dist/substrate/runtime/lease-broker/service.d.mts +64 -0
  645. package/dist/substrate/runtime/lease-broker/service.mjs +155 -0
  646. package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -0
  647. package/dist/substrate/runtime/lifecycle/dep-graph.d.mts +1 -0
  648. package/dist/substrate/runtime/lifecycle/dep-graph.mjs +138 -0
  649. package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -0
  650. package/dist/substrate/runtime/lifecycle/index.d.mts +1 -0
  651. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +31 -0
  652. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +1 -0
  653. package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -0
  654. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +133 -0
  655. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -0
  656. package/dist/substrate/runtime/lifecycle/ready-gate.d.mts +1 -0
  657. package/dist/substrate/runtime/lifecycle/ready-gate.mjs +34 -0
  658. package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -0
  659. package/dist/substrate/runtime/lifecycle/selective-restart.d.mts +1 -0
  660. package/dist/substrate/runtime/lifecycle/selective-restart.mjs +43 -0
  661. package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -0
  662. package/dist/substrate/runtime/lifecycle/signals.d.mts +1 -0
  663. package/dist/substrate/runtime/lifecycle/signals.mjs +64 -0
  664. package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -0
  665. package/dist/substrate/runtime/lifecycle/state-machine.d.mts +1 -0
  666. package/dist/substrate/runtime/lifecycle/state-machine.mjs +38 -0
  667. package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -0
  668. package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -0
  669. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +27 -0
  670. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -0
  671. package/dist/substrate/runtime/managed-container.d.mts +30 -0
  672. package/dist/substrate/runtime/managed-container.mjs +32 -0
  673. package/dist/substrate/runtime/managed-container.mjs.map +1 -0
  674. package/dist/substrate/runtime/manifest/manifest.mjs +73 -0
  675. package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -0
  676. package/dist/substrate/runtime/mode-errors.d.mts +36 -0
  677. package/dist/substrate/runtime/observability/cascade-formatter.d.mts +1 -0
  678. package/dist/substrate/runtime/observability/cascade-formatter.mjs +135 -0
  679. package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -0
  680. package/dist/substrate/runtime/observability/formatter-registry.d.mts +1 -0
  681. package/dist/substrate/runtime/observability/formatter-registry.mjs +65 -0
  682. package/dist/substrate/runtime/observability/formatter-registry.mjs.map +1 -0
  683. package/dist/substrate/runtime/observability/index.d.mts +3 -0
  684. package/dist/substrate/runtime/observability/logger.d.mts +58 -0
  685. package/dist/substrate/runtime/observability/logger.mjs +89 -0
  686. package/dist/substrate/runtime/observability/logger.mjs.map +1 -0
  687. package/dist/substrate/runtime/observability/pretty-error.d.mts +1 -0
  688. package/dist/substrate/runtime/observability/pretty-error.mjs +119 -0
  689. package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -0
  690. package/dist/substrate/runtime/observability/process-lines.d.mts +31 -0
  691. package/dist/substrate/runtime/observability/process-lines.mjs +40 -0
  692. package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -0
  693. package/dist/substrate/runtime/observability/redaction.d.mts +28 -0
  694. package/dist/substrate/runtime/observability/redaction.mjs +45 -0
  695. package/dist/substrate/runtime/observability/redaction.mjs.map +1 -0
  696. package/dist/substrate/runtime/observability/spans.d.mts +1 -0
  697. package/dist/substrate/runtime/observability/spans.mjs +87 -0
  698. package/dist/substrate/runtime/observability/spans.mjs.map +1 -0
  699. package/dist/substrate/runtime/observability/subprocess-capture.d.mts +2 -0
  700. package/dist/substrate/runtime/observability/subprocess-capture.mjs +82 -0
  701. package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -0
  702. package/dist/substrate/runtime/paths.d.mts +17 -0
  703. package/dist/substrate/runtime/paths.mjs +61 -0
  704. package/dist/substrate/runtime/paths.mjs.map +1 -0
  705. package/dist/substrate/runtime/port-broker/index.d.mts +1 -0
  706. package/dist/substrate/runtime/port-broker/service.d.mts +1 -0
  707. package/dist/substrate/runtime/port-broker/service.mjs +319 -0
  708. package/dist/substrate/runtime/port-broker/service.mjs.map +1 -0
  709. package/dist/substrate/runtime/post-acquire-tasks.d.mts +1 -0
  710. package/dist/substrate/runtime/post-acquire-tasks.mjs +34 -0
  711. package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -0
  712. package/dist/substrate/runtime/probes.d.mts +51 -0
  713. package/dist/substrate/runtime/probes.mjs +84 -0
  714. package/dist/substrate/runtime/probes.mjs.map +1 -0
  715. package/dist/substrate/runtime/process-supervisor.d.mts +57 -0
  716. package/dist/substrate/runtime/process-supervisor.mjs +73 -0
  717. package/dist/substrate/runtime/process-supervisor.mjs.map +1 -0
  718. package/dist/substrate/runtime/projection/operational-endpoints.mjs +44 -0
  719. package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -0
  720. package/dist/substrate/runtime/projection/persisted.mjs +195 -0
  721. package/dist/substrate/runtime/projection/persisted.mjs.map +1 -0
  722. package/dist/substrate/runtime/projection/state-ref.mjs +48 -0
  723. package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -0
  724. package/dist/substrate/runtime/projection/update.mjs +200 -0
  725. package/dist/substrate/runtime/projection/update.mjs.map +1 -0
  726. package/dist/substrate/runtime/retry-policy.d.mts +18 -0
  727. package/dist/substrate/runtime/retry-policy.mjs +16 -0
  728. package/dist/substrate/runtime/retry-policy.mjs.map +1 -0
  729. package/dist/substrate/runtime/run.mjs +86 -0
  730. package/dist/substrate/runtime/run.mjs.map +1 -0
  731. package/dist/substrate/runtime/runtime-decode.d.mts +32 -0
  732. package/dist/substrate/runtime/runtime-decode.mjs +53 -0
  733. package/dist/substrate/runtime/runtime-decode.mjs.map +1 -0
  734. package/dist/substrate/runtime/scoped-http-server.mjs +36 -0
  735. package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -0
  736. package/dist/substrate/runtime/scoped-ref-map/service.mjs +83 -0
  737. package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +1 -0
  738. package/dist/substrate/runtime/stage-and-swap/index.d.mts +1 -0
  739. package/dist/substrate/runtime/stage-and-swap/index.mjs +131 -0
  740. package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -0
  741. package/dist/substrate/runtime/state-store/schema.mjs +36 -0
  742. package/dist/substrate/runtime/state-store/schema.mjs.map +1 -0
  743. package/dist/substrate/runtime/strategy-registry/chain-probe-for.d.mts +1 -0
  744. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs +22 -0
  745. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -0
  746. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.d.mts +1 -0
  747. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs +30 -0
  748. package/dist/substrate/runtime/strategy-registry/faucet-capability-for.mjs.map +1 -0
  749. package/dist/substrate/runtime/strategy-registry/index.d.mts +1 -0
  750. package/dist/substrate/runtime/strategy-registry/service.d.mts +1 -0
  751. package/dist/substrate/runtime/strategy-registry/service.mjs +67 -0
  752. package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -0
  753. package/dist/substrate/runtime/sui-execute/index.d.mts +11 -0
  754. package/dist/substrate/runtime/sui-execute/index.mjs +144 -0
  755. package/dist/substrate/runtime/sui-execute/index.mjs.map +1 -0
  756. package/dist/substrate/runtime/sui-move-build/index.d.mts +1 -0
  757. package/dist/substrate/runtime/sui-move-build/index.mjs +283 -0
  758. package/dist/substrate/runtime/sui-move-build/index.mjs.map +1 -0
  759. package/dist/substrate/runtime/supervisor.d.mts +1 -0
  760. package/dist/substrate/runtime/supervisor.mjs +831 -0
  761. package/dist/substrate/runtime/supervisor.mjs.map +1 -0
  762. package/dist/surfaces/cli/command-tree.mjs +276 -0
  763. package/dist/surfaces/cli/command-tree.mjs.map +1 -0
  764. package/dist/surfaces/cli/commands/config.mjs +31 -0
  765. package/dist/surfaces/cli/commands/config.mjs.map +1 -0
  766. package/dist/surfaces/cli/commands/confirm-node.mjs +26 -0
  767. package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -0
  768. package/dist/surfaces/cli/commands/confirm.mjs +26 -0
  769. package/dist/surfaces/cli/commands/confirm.mjs.map +1 -0
  770. package/dist/surfaces/cli/commands/doctor-probes.mjs +452 -0
  771. package/dist/surfaces/cli/commands/doctor-probes.mjs.map +1 -0
  772. package/dist/surfaces/cli/commands/doctor.mjs +38 -0
  773. package/dist/surfaces/cli/commands/doctor.mjs.map +1 -0
  774. package/dist/surfaces/cli/commands/prune-picker.mjs +347 -0
  775. package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -0
  776. package/dist/surfaces/cli/commands/prune.mjs +178 -0
  777. package/dist/surfaces/cli/commands/prune.mjs.map +1 -0
  778. package/dist/surfaces/cli/commands/snapshot.mjs +141 -0
  779. package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -0
  780. package/dist/surfaces/cli/commands/status.mjs +95 -0
  781. package/dist/surfaces/cli/commands/status.mjs.map +1 -0
  782. package/dist/surfaces/cli/commands/supervisor-presence.mjs +33 -0
  783. package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -0
  784. package/dist/surfaces/cli/commands/wipe.mjs +28 -0
  785. package/dist/surfaces/cli/commands/wipe.mjs.map +1 -0
  786. package/dist/surfaces/cli/envelope.mjs +43 -0
  787. package/dist/surfaces/cli/envelope.mjs.map +1 -0
  788. package/dist/surfaces/cli/errors.mjs +110 -0
  789. package/dist/surfaces/cli/errors.mjs.map +1 -0
  790. package/dist/surfaces/cli/flags.mjs +56 -0
  791. package/dist/surfaces/cli/flags.mjs.map +1 -0
  792. package/dist/surfaces/cli/index.mjs +418 -0
  793. package/dist/surfaces/cli/index.mjs.map +1 -0
  794. package/dist/surfaces/cli/output.mjs +115 -0
  795. package/dist/surfaces/cli/output.mjs.map +1 -0
  796. package/dist/surfaces/cli/sysexits.mjs +139 -0
  797. package/dist/surfaces/cli/sysexits.mjs.map +1 -0
  798. package/dist/surfaces/tui/app.mjs +104 -0
  799. package/dist/surfaces/tui/app.mjs.map +1 -0
  800. package/dist/surfaces/tui/dashboard.mjs +261 -0
  801. package/dist/surfaces/tui/dashboard.mjs.map +1 -0
  802. package/dist/surfaces/tui/display-derivation.mjs +395 -0
  803. package/dist/surfaces/tui/display-derivation.mjs.map +1 -0
  804. package/dist/surfaces/tui/errors.mjs +11 -0
  805. package/dist/surfaces/tui/errors.mjs.map +1 -0
  806. package/dist/surfaces/tui/event-log.mjs +155 -0
  807. package/dist/surfaces/tui/event-log.mjs.map +1 -0
  808. package/dist/surfaces/tui/heartbeat.mjs +33 -0
  809. package/dist/surfaces/tui/heartbeat.mjs.map +1 -0
  810. package/dist/surfaces/tui/index.mjs +50 -0
  811. package/dist/surfaces/tui/index.mjs.map +1 -0
  812. package/dist/surfaces/tui/input.mjs +104 -0
  813. package/dist/surfaces/tui/input.mjs.map +1 -0
  814. package/dist/surfaces/tui/mode-detect.mjs +32 -0
  815. package/dist/surfaces/tui/mode-detect.mjs.map +1 -0
  816. package/dist/surfaces/tui/mount-ink.mjs +31 -0
  817. package/dist/surfaces/tui/mount-ink.mjs.map +1 -0
  818. package/dist/surfaces/tui/plain-renderer.mjs +170 -0
  819. package/dist/surfaces/tui/plain-renderer.mjs.map +1 -0
  820. package/dist/surfaces/tui/resource-table.mjs +507 -0
  821. package/dist/surfaces/tui/resource-table.mjs.map +1 -0
  822. package/images/_shared/signal-forward.sh +77 -0
  823. package/images/postgres/Dockerfile +32 -0
  824. package/images/seal/Dockerfile +68 -0
  825. package/images/seal/entrypoint.sh +65 -0
  826. package/images/sui/Dockerfile +73 -0
  827. package/images/sui/entrypoint.sh +244 -0
  828. package/images/sui-fork/Dockerfile +53 -0
  829. package/images/sui-fork/entrypoint.sh +51 -0
  830. package/images/walrus/Dockerfile +122 -0
  831. package/images/walrus/deploy-walrus.sh +305 -0
  832. package/images/walrus/run-walrus.sh +53 -0
  833. package/package.json +94 -0
@@ -0,0 +1,437 @@
1
+ import { chainId, contentHash } from "../../substrate/brand.mjs";
2
+ import { executeSuiTx } from "../../substrate/runtime/sui-execute/index.mjs";
3
+ import { deepbookPluginError } from "./errors.mjs";
4
+ import { Effect, Schema } from "effect";
5
+ import { createHash } from "node:crypto";
6
+ import { normalizeStructTag, normalizeSuiAddress } from "@mysten/sui/utils";
7
+ import { Transaction } from "@mysten/sui/transactions";
8
+ import { bcs } from "@mysten/sui/bcs";
9
+ //#region src/plugins/deepbook/deploy.ts
10
+ const CachedDeepbookPoolSchema = Schema.Struct({
11
+ name: Schema.String,
12
+ poolId: Schema.String,
13
+ base: Schema.String,
14
+ quote: Schema.String,
15
+ baseCoinType: Schema.String,
16
+ quoteCoinType: Schema.String,
17
+ tickSize: Schema.String,
18
+ lotSize: Schema.String,
19
+ minSize: Schema.String
20
+ });
21
+ const CachedDeepbookPoolsSchema = Schema.Struct({ pools: Schema.Array(CachedDeepbookPoolSchema) });
22
+ const CachedDeepbookSeedResultSchema = Schema.Struct({
23
+ poolName: Schema.String,
24
+ balanceManagerId: Schema.String,
25
+ digest: Schema.String
26
+ });
27
+ const stableContentHash = (input) => contentHash(createHash("sha256").update(input).digest("hex"));
28
+ const fromCachedPools = (cached) => ({ pools: cached.pools.map((pool) => ({
29
+ name: pool.name,
30
+ poolId: pool.poolId,
31
+ base: pool.base,
32
+ quote: pool.quote,
33
+ baseCoinType: pool.baseCoinType,
34
+ quoteCoinType: pool.quoteCoinType,
35
+ tickSize: BigInt(pool.tickSize),
36
+ lotSize: BigInt(pool.lotSize),
37
+ minSize: BigInt(pool.minSize)
38
+ })) });
39
+ const toCachedPool = (spec, poolId) => ({
40
+ name: spec.name,
41
+ poolId,
42
+ base: spec.base,
43
+ quote: spec.quote,
44
+ baseCoinType: normalizeStructTag(spec.baseCoinType),
45
+ quoteCoinType: normalizeStructTag(spec.quoteCoinType),
46
+ tickSize: spec.tickSize.toString(),
47
+ lotSize: spec.lotSize.toString(),
48
+ minSize: spec.minSize.toString()
49
+ });
50
+ const poolInputsHash = (pkg, signer, pools) => stableContentHash([
51
+ "v1",
52
+ pkg.packageId,
53
+ pkg.registryId,
54
+ pkg.adminCapId,
55
+ signer.address,
56
+ ...pools.map((pool) => [
57
+ pool.name,
58
+ normalizeStructTag(pool.baseCoinType),
59
+ normalizeStructTag(pool.quoteCoinType),
60
+ pool.tickSize.toString(),
61
+ pool.lotSize.toString(),
62
+ pool.minSize.toString(),
63
+ String(pool.whitelisted),
64
+ String(pool.stablePool)
65
+ ].join("|")).sort()
66
+ ].join("||"));
67
+ const seedInputsHash = (pkg, signer, spec, pool) => stableContentHash([
68
+ "v3",
69
+ pkg.packageId,
70
+ pkg.registryId,
71
+ signer.address,
72
+ spec.name,
73
+ pool.poolId,
74
+ normalizeStructTag(pool.baseCoinType),
75
+ normalizeStructTag(pool.quoteCoinType),
76
+ spec.seed?.baseAmount?.toString() ?? "0",
77
+ spec.seed?.quoteAmount?.toString() ?? "0",
78
+ ...(spec.seed?.orders ?? []).map((order, index) => [
79
+ index,
80
+ order.side,
81
+ order.price.toString(),
82
+ order.quantity.toString(),
83
+ order.clientOrderId?.toString() ?? "",
84
+ String(order.payWithDeep ?? false)
85
+ ].join("|"))
86
+ ].join("||"));
87
+ const buildVerifyProbe = (sdk, cached) => Effect.gen(function* () {
88
+ for (const pool of cached.pools) {
89
+ const raw = yield* Effect.tryPromise({
90
+ try: () => sdk.core.getObject({ objectId: pool.poolId }),
91
+ catch: () => null
92
+ }).pipe(Effect.catch(() => Effect.succeed(null)));
93
+ if (raw === null || raw === void 0) return null;
94
+ }
95
+ return cached;
96
+ });
97
+ const buildSeedVerifyProbe = (sdk, cached) => Effect.gen(function* () {
98
+ const raw = yield* Effect.tryPromise({
99
+ try: () => sdk.core.getObject({ objectId: cached.balanceManagerId }),
100
+ catch: () => null
101
+ }).pipe(Effect.catch(() => Effect.succeed(null)));
102
+ if (raw === null || raw === void 0) return null;
103
+ return cached;
104
+ });
105
+ const simulateClient = (sdk) => sdk.client;
106
+ const findExistingPoolId = (sdk, signer, pkg, spec) => Effect.tryPromise({
107
+ try: async () => {
108
+ const tx = new Transaction();
109
+ tx.setSender(signer.address);
110
+ tx.moveCall({
111
+ target: `${pkg.packageId}::pool::get_pool_id_by_asset`,
112
+ typeArguments: [spec.baseCoinType, spec.quoteCoinType],
113
+ arguments: [tx.object(pkg.registryId)]
114
+ });
115
+ const bytes = (await simulateClient(sdk).core.simulateTransaction({
116
+ transaction: tx,
117
+ include: {
118
+ commandResults: true,
119
+ effects: true
120
+ }
121
+ })).commandResults?.[0]?.returnValues?.[0]?.bcs;
122
+ if (bytes === void 0) return null;
123
+ return normalizeSuiAddress(bcs.Address.parse(bytes));
124
+ },
125
+ catch: () => null
126
+ }).pipe(Effect.catch(() => Effect.succeed(null)));
127
+ const findExistingPools = (sdk, signer, pkg, pools) => Effect.gen(function* () {
128
+ const found = /* @__PURE__ */ new Map();
129
+ for (const pool of pools) {
130
+ const poolId = yield* findExistingPoolId(sdk, signer, pkg, pool);
131
+ if (poolId !== null) found.set(pool.name, toCachedPool(pool, poolId));
132
+ }
133
+ return found;
134
+ });
135
+ const pickCreatedPool = (changes, spec) => {
136
+ const base = normalizeStructTag(spec.baseCoinType);
137
+ const quote = normalizeStructTag(spec.quoteCoinType);
138
+ for (const change of changes) {
139
+ const type = change.objectType;
140
+ if (change.idOperation !== "Created" || type === void 0) continue;
141
+ if (!type.includes("::pool::Pool<")) continue;
142
+ if (type.includes(base) && type.includes(quote)) return change.objectId;
143
+ }
144
+ return null;
145
+ };
146
+ const mapArtifactError = (phase, err) => deepbookPluginError(phase, err._tag === "ArtifactPublishError" ? err.detail : String(err));
147
+ const transactionBuildClient = (sdk) => sdk.client;
148
+ const ORDER_TYPE_POST_ONLY = 3;
149
+ const SELF_MATCHING_CANCEL_TAKER = 1;
150
+ const MAX_TIMESTAMP = 18446744073709551615n;
151
+ const SUI_TYPE = normalizeStructTag("0x2::sui::SUI");
152
+ const SEED_GAS_BUDGET = 500000000n;
153
+ const LOCALNET_REFERENCE_GAS_PRICE = 1000n;
154
+ const STALE_OBJECT_RETRY_DELAY_MS = 500;
155
+ const STALE_OBJECT_MAX_RETRIES = 20;
156
+ const decodeErrorMessage = (message) => {
157
+ try {
158
+ return decodeURIComponent(message);
159
+ } catch {
160
+ return message;
161
+ }
162
+ };
163
+ const isStaleObjectVersionError = (err) => {
164
+ const message = decodeErrorMessage(err.message);
165
+ return message.includes("needs to be rebuilt because object") && message.includes("current version");
166
+ };
167
+ const executeSuiTxWithStaleObjectRetry = (params, attempt = 0) => executeSuiTx(params).pipe(Effect.catch((err) => isStaleObjectVersionError(err) && attempt < STALE_OBJECT_MAX_RETRIES ? Effect.sleep(`${STALE_OBJECT_RETRY_DELAY_MS} millis`).pipe(Effect.andThen(executeSuiTxWithStaleObjectRetry(params, attempt + 1))) : Effect.fail(err)));
168
+ const createDeepbookPools = (publisher, sdk, chain, signer, pkg, pools) => Effect.gen(function* () {
169
+ if (pools.length === 0) return { pools: [] };
170
+ const produced = yield* publisher.publish({
171
+ namespace: "deepbook/pools",
172
+ chain: chainId(chain),
173
+ contentHash: poolInputsHash(pkg, signer, pools),
174
+ verifySchema: CachedDeepbookPoolsSchema,
175
+ verify: (cached) => buildVerifyProbe(sdk, cached),
176
+ produce: Effect.gen(function* () {
177
+ const existingPools = yield* findExistingPools(sdk, signer, pkg, pools);
178
+ const missingPools = pools.filter((pool) => !existingPools.has(pool.name));
179
+ const cachedPools = [];
180
+ if (missingPools.length > 0) {
181
+ const receipt = yield* executeSuiTx({
182
+ client: sdk.client,
183
+ signer,
184
+ build: async () => {
185
+ const tx = new Transaction();
186
+ tx.setSender(signer.address);
187
+ tx.setGasBudget(5e8);
188
+ tx.moveCall({
189
+ target: `${pkg.packageId}::registry::init_balance_manager_map`,
190
+ arguments: [tx.object(pkg.registryId), tx.object(pkg.adminCapId)]
191
+ });
192
+ for (const pool of missingPools) tx.moveCall({
193
+ target: `${pkg.packageId}::pool::create_pool_admin`,
194
+ typeArguments: [pool.baseCoinType, pool.quoteCoinType],
195
+ arguments: [
196
+ tx.object(pkg.registryId),
197
+ tx.pure.u64(pool.tickSize),
198
+ tx.pure.u64(pool.lotSize),
199
+ tx.pure.u64(pool.minSize),
200
+ tx.pure.bool(pool.whitelisted),
201
+ tx.pure.bool(pool.stablePool),
202
+ tx.object(pkg.adminCapId)
203
+ ]
204
+ });
205
+ return tx.build({ client: transactionBuildClient(sdk) });
206
+ }
207
+ }).pipe(Effect.mapError((err) => ({
208
+ _tag: "ArtifactPublishError",
209
+ reason: "produce-failed",
210
+ detail: `deepbook pool transaction failed: ${err.message}`
211
+ })));
212
+ for (const pool of missingPools) {
213
+ const poolId = pickCreatedPool(receipt.objectChanges, pool);
214
+ if (poolId === null) return yield* Effect.fail({
215
+ _tag: "ArtifactPublishError",
216
+ reason: "produce-failed",
217
+ detail: `deepbook pool '${pool.name}' not found in objectChanges (digest=${receipt.digest}).`
218
+ });
219
+ cachedPools.push(toCachedPool(pool, poolId));
220
+ }
221
+ }
222
+ return { pools: pools.map((pool) => existingPools.get(pool.name) ?? cachedPools.find((p) => p.name === pool.name)).filter((pool) => pool !== void 0) };
223
+ }),
224
+ register: () => Effect.void
225
+ }).pipe(Effect.mapError((err) => mapArtifactError("create-pools", err)));
226
+ const producedPools = new Map(produced.pools.map((pool) => [pool.name, pool]));
227
+ const resolvedPools = pools.map((pool) => producedPools.get(pool.name));
228
+ if (resolvedPools.some((pool) => pool === void 0)) return yield* Effect.fail(deepbookPluginError("create-pools", "deepbook pool creation did not return every pool."));
229
+ return fromCachedPools({ pools: resolvedPools.filter((pool) => pool !== void 0) });
230
+ }).pipe(Effect.withSpan("devstack.plugin.deepbook.createPools", { attributes: {
231
+ "deepbook.packageId": pkg.packageId,
232
+ "deepbook.pool.count": pools.length
233
+ } }));
234
+ const poolByName = (pools, name) => pools.find((pool) => pool.name === name);
235
+ const pickCreatedBalanceManager = (changes) => {
236
+ for (const change of changes) {
237
+ if (change.idOperation !== "Created") continue;
238
+ if (change.objectType?.includes("::balance_manager::BalanceManager")) return change.objectId;
239
+ }
240
+ return null;
241
+ };
242
+ const depositIntoBalanceManager = (tx, sdk, signer, pkg, balanceManager, coinType, amount) => {
243
+ if (amount === void 0 || amount === 0n) return;
244
+ return splitOwnedCoinForBalance(tx, sdk, signer, coinType, amount).then((coin) => {
245
+ tx.moveCall({
246
+ target: `${pkg.packageId}::balance_manager::deposit`,
247
+ typeArguments: [coinType],
248
+ arguments: [balanceManager, coin]
249
+ });
250
+ });
251
+ };
252
+ const errorDetail = (err) => {
253
+ if (err instanceof Error) return err.message;
254
+ if (typeof err === "object" && err !== null) {
255
+ if ("message" in err && typeof err.message === "string") return err.message;
256
+ if ("detail" in err && typeof err.detail === "string") return err.detail;
257
+ }
258
+ return String(err);
259
+ };
260
+ const requestSeedFunding = (strategy, signer, coinType, amount) => {
261
+ if (strategy === void 0 || amount === void 0 || amount === 0n) return Effect.void;
262
+ return strategy.request({
263
+ address: signer.address,
264
+ amount
265
+ }).pipe(Effect.mapError((err) => ({
266
+ _tag: "ArtifactPublishError",
267
+ reason: "produce-failed",
268
+ detail: `deepbook seed funding failed for ${coinType} to publisher '${signer.name}' amount=${amount}: ${errorDetail(err)}`
269
+ })));
270
+ };
271
+ const coinListClient = (sdk) => sdk.client;
272
+ const selectOwnedCoinsForBalance = async (sdk, signer, coinType, amount, purpose) => {
273
+ const selected = [];
274
+ let selectedBalance = 0n;
275
+ let cursor = null;
276
+ do {
277
+ const page = await coinListClient(sdk).core.listCoins({
278
+ owner: signer.address,
279
+ coinType,
280
+ cursor,
281
+ limit: 50
282
+ });
283
+ for (const coin of page.objects) {
284
+ selected.push(coin);
285
+ selectedBalance += BigInt(coin.balance);
286
+ if (selectedBalance >= amount) break;
287
+ }
288
+ cursor = page.cursor;
289
+ if (selectedBalance >= amount) break;
290
+ if (!page.hasNextPage) break;
291
+ } while (cursor !== null);
292
+ if (selectedBalance < amount || selected.length === 0) throw new Error(`publisher '${signer.name}' has insufficient ${coinType} for ${purpose}: required ${amount}, available ${selectedBalance}.`);
293
+ return {
294
+ selected,
295
+ selectedBalance
296
+ };
297
+ };
298
+ const ledgerObjectClient = (sdk) => sdk.client;
299
+ const currentLedgerObjectRef = async (sdk, objectId) => {
300
+ const object = (await ledgerObjectClient(sdk).ledgerService.getObject({
301
+ objectId,
302
+ readMask: { paths: [
303
+ "object_id",
304
+ "version",
305
+ "digest"
306
+ ] }
307
+ })).response?.object;
308
+ if (object === void 0 || object.objectId === void 0 || object.version === void 0 || object.digest === void 0) throw new Error(`object '${objectId}' was not found while resolving a DeepBook seed input.`);
309
+ return {
310
+ objectId: object.objectId,
311
+ version: object.version.toString(),
312
+ digest: object.digest
313
+ };
314
+ };
315
+ const setExplicitSeedGasPayment = async (tx, sdk, signer, suiDepositAmount) => {
316
+ const { selected } = await selectOwnedCoinsForBalance(sdk, signer, SUI_TYPE, SEED_GAS_BUDGET + suiDepositAmount, "DeepBook seed gas and SUI deposits");
317
+ const gasRefs = await Promise.all(selected.map((coin) => currentLedgerObjectRef(sdk, coin.objectId)));
318
+ tx.setGasBudget(SEED_GAS_BUDGET);
319
+ tx.setGasPrice(LOCALNET_REFERENCE_GAS_PRICE);
320
+ tx.setGasPayment(gasRefs);
321
+ };
322
+ const seedSuiDepositAmount = (pool, seed) => (normalizeStructTag(pool.baseCoinType) === SUI_TYPE ? seed.baseAmount ?? 0n : 0n) + (normalizeStructTag(pool.quoteCoinType) === SUI_TYPE ? seed.quoteAmount ?? 0n : 0n);
323
+ const sharedObject = async (tx, sdk, objectId, mutable) => {
324
+ const initialSharedVersion = (await sdk.core.getObject({ objectId })).object?.owner?.Shared?.initialSharedVersion;
325
+ if (initialSharedVersion === void 0) throw new Error(`DeepBook object '${objectId}' is not shared.`);
326
+ return tx.sharedObjectRef({
327
+ objectId,
328
+ initialSharedVersion,
329
+ mutable
330
+ });
331
+ };
332
+ const splitOwnedCoinForBalance = async (tx, sdk, signer, coinType, amount) => {
333
+ if (normalizeStructTag(coinType) === SUI_TYPE) {
334
+ const [coin] = tx.splitCoins(tx.gas, [tx.pure.u64(amount)]);
335
+ return coin;
336
+ }
337
+ const { selected, selectedBalance } = await selectOwnedCoinsForBalance(sdk, signer, coinType, amount, "DeepBook seed deposit");
338
+ const firstSelected = selected[0];
339
+ if (firstSelected === void 0) throw new Error(`publisher '${signer.name}' has no ${coinType} coins for DeepBook seed deposit.`);
340
+ const first = await currentLedgerObjectRef(sdk, firstSelected.objectId);
341
+ const rest = await Promise.all(selected.slice(1).map((coin) => currentLedgerObjectRef(sdk, coin.objectId)));
342
+ const baseCoin = tx.objectRef(first);
343
+ if (rest.length > 0) tx.mergeCoins(baseCoin, rest.map((coin) => tx.objectRef(coin)));
344
+ if (selectedBalance === amount) return baseCoin;
345
+ const [coin] = tx.splitCoins(baseCoin, [tx.pure.u64(amount)]);
346
+ return coin;
347
+ };
348
+ const seedDeepbookPools = (publisher, sdk, chain, signer, pkg, specs, pools) => Effect.gen(function* () {
349
+ const seeded = [];
350
+ for (const spec of specs) {
351
+ const seed = spec.seed;
352
+ if (seed === void 0 || seed.orders.length === 0) continue;
353
+ const pool = poolByName(pools, spec.name);
354
+ if (pool === void 0) return yield* Effect.fail(deepbookPluginError("create-pools", `deepbook seed pool '${spec.name}' was not created.`));
355
+ const result = yield* publisher.publish({
356
+ namespace: `deepbook/seed/${spec.name}`,
357
+ chain: chainId(chain),
358
+ contentHash: seedInputsHash(pkg, signer, spec, pool),
359
+ verifySchema: CachedDeepbookSeedResultSchema,
360
+ verify: (cached) => buildSeedVerifyProbe(sdk, cached),
361
+ produce: Effect.gen(function* () {
362
+ yield* requestSeedFunding(spec.baseFundingStrategy, signer, pool.baseCoinType, seed.baseAmount);
363
+ yield* requestSeedFunding(spec.quoteFundingStrategy, signer, pool.quoteCoinType, seed.quoteAmount);
364
+ const receipt = yield* executeSuiTxWithStaleObjectRetry({
365
+ client: sdk.client,
366
+ signer,
367
+ build: async () => {
368
+ const tx = new Transaction();
369
+ tx.setSender(signer.address);
370
+ await setExplicitSeedGasPayment(tx, sdk, signer, seedSuiDepositAmount(pool, seed));
371
+ const registry = await sharedObject(tx, sdk, pkg.registryId, true);
372
+ const poolObject = await sharedObject(tx, sdk, pool.poolId, true);
373
+ const balanceManager = tx.moveCall({
374
+ target: `${pkg.packageId}::balance_manager::new`,
375
+ arguments: []
376
+ });
377
+ tx.moveCall({
378
+ target: `${pkg.packageId}::balance_manager::register_balance_manager`,
379
+ arguments: [balanceManager, registry]
380
+ });
381
+ await depositIntoBalanceManager(tx, sdk, signer, pkg, balanceManager, pool.baseCoinType, seed.baseAmount);
382
+ await depositIntoBalanceManager(tx, sdk, signer, pkg, balanceManager, pool.quoteCoinType, seed.quoteAmount);
383
+ const tradeProof = tx.moveCall({
384
+ target: `${pkg.packageId}::balance_manager::generate_proof_as_owner`,
385
+ arguments: [balanceManager]
386
+ });
387
+ for (const [index, order] of seed.orders.entries()) tx.moveCall({
388
+ target: `${pkg.packageId}::pool::place_limit_order`,
389
+ typeArguments: [pool.baseCoinType, pool.quoteCoinType],
390
+ arguments: [
391
+ poolObject,
392
+ balanceManager,
393
+ tradeProof,
394
+ tx.pure.u64(order.clientOrderId ?? BigInt(index + 1)),
395
+ tx.pure.u8(ORDER_TYPE_POST_ONLY),
396
+ tx.pure.u8(SELF_MATCHING_CANCEL_TAKER),
397
+ tx.pure.u64(order.price),
398
+ tx.pure.u64(order.quantity),
399
+ tx.pure.bool(order.side === "bid"),
400
+ tx.pure.bool(order.payWithDeep ?? false),
401
+ tx.pure.u64(MAX_TIMESTAMP),
402
+ tx.object.clock()
403
+ ]
404
+ });
405
+ tx.transferObjects([balanceManager], signer.address);
406
+ return tx.build({ client: transactionBuildClient(sdk) });
407
+ }
408
+ }).pipe(Effect.mapError((err) => ({
409
+ _tag: "ArtifactPublishError",
410
+ reason: "produce-failed",
411
+ detail: `deepbook seed transaction failed for pool '${spec.name}': ${err.message}`
412
+ })));
413
+ const balanceManagerId = pickCreatedBalanceManager(receipt.objectChanges);
414
+ if (balanceManagerId === null) return yield* Effect.fail({
415
+ _tag: "ArtifactPublishError",
416
+ reason: "produce-failed",
417
+ detail: `deepbook seed BalanceManager not found in objectChanges (digest=${receipt.digest}).`
418
+ });
419
+ return {
420
+ poolName: spec.name,
421
+ balanceManagerId,
422
+ digest: receipt.digest
423
+ };
424
+ }),
425
+ register: () => Effect.void
426
+ }).pipe(Effect.mapError((err) => mapArtifactError("create-pools", err)));
427
+ seeded.push(result);
428
+ }
429
+ return seeded;
430
+ }).pipe(Effect.withSpan("devstack.plugin.deepbook.seedPools", { attributes: {
431
+ "deepbook.packageId": pkg.packageId,
432
+ "deepbook.pool.count": specs.filter((spec) => spec.seed !== void 0).length
433
+ } }));
434
+ //#endregion
435
+ export { createDeepbookPools, seedDeepbookPools };
436
+
437
+ //# sourceMappingURL=deploy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy.mjs","names":["brandContentHash","brandChainId"],"sources":["../../../src/plugins/deepbook/deploy.ts"],"sourcesContent":["// DeepBook local deployment helpers.\n//\n// The package itself is published by the generic `localPackage(...)` plugin.\n// This module owns the DeepBook-specific follow-up transaction: initialize the\n// registry's BalanceManager map and create the requested admin pools.\n\nimport { createHash } from 'node:crypto';\n\nimport { Effect, Schema, type Scope } from 'effect';\nimport { bcs } from '@mysten/sui/bcs';\nimport { Transaction } from '@mysten/sui/transactions';\nimport { normalizeStructTag, normalizeSuiAddress } from '@mysten/sui/utils';\n\nimport {\n\tchainId as brandChainId,\n\tcontentHash as brandContentHash,\n\ttype ContentHash,\n} from '../../substrate/brand.ts';\nimport type {\n\tArtifactPublishError,\n\tArtifactPublisher,\n} from '../../primitives/artifact-publisher.ts';\nimport type { SuiSdkShim } from '../sui/chain-probe.ts';\nimport type { CoinValue } from '../coin/index.ts';\nimport type {\n\tResolvedSigner,\n\tSuiExecuteError,\n\tSuiExecuteClient,\n} from '../../substrate/runtime/sui-execute/index.ts';\nimport { executeSuiTx } from '../../substrate/runtime/sui-execute/index.ts';\n\nimport { deepbookPluginError, type DeepbookPluginError } from './errors.ts';\nimport type { DeepbookPhase } from './errors.ts';\nimport type { DeepbookPool, DeepbookPoolSeedLiquidity } from './types.ts';\n\n// ---------------------------------------------------------------------------\n// Inputs / outputs\n// ---------------------------------------------------------------------------\n\nexport interface DeepbookDeployment {\n\treadonly packageId: string;\n\treadonly registryId: string;\n\treadonly adminCapId: string;\n\treadonly deepTreasuryId?: string | null;\n}\n\ntype CoinFundingStrategy = NonNullable<CoinValue['fundingStrategy']>;\n\nexport interface ResolvedDeepbookPoolSpec {\n\treadonly name: string;\n\treadonly base: string;\n\treadonly quote: string;\n\treadonly baseCoinType: string;\n\treadonly quoteCoinType: string;\n\treadonly baseFundingStrategy?: CoinFundingStrategy;\n\treadonly quoteFundingStrategy?: CoinFundingStrategy;\n\treadonly tickSize: bigint;\n\treadonly lotSize: bigint;\n\treadonly minSize: bigint;\n\treadonly whitelisted: boolean;\n\treadonly stablePool: boolean;\n\treadonly seed?: DeepbookPoolSeedLiquidity;\n}\n\nexport interface DeepbookPoolsResult {\n\treadonly pools: ReadonlyArray<DeepbookPool>;\n}\n\nexport interface DeepbookPoolSeedResult {\n\treadonly poolName: string;\n\treadonly balanceManagerId: string;\n\treadonly digest: string;\n}\n\ninterface CachedDeepbookPool {\n\treadonly name: string;\n\treadonly poolId: string;\n\treadonly base: string;\n\treadonly quote: string;\n\treadonly baseCoinType: string;\n\treadonly quoteCoinType: string;\n\treadonly tickSize: string;\n\treadonly lotSize: string;\n\treadonly minSize: string;\n}\n\ninterface CachedDeepbookPoolsResult {\n\treadonly pools: ReadonlyArray<CachedDeepbookPool>;\n}\n\ninterface CachedDeepbookSeedResult {\n\treadonly poolName: string;\n\treadonly balanceManagerId: string;\n\treadonly digest: string;\n}\n\ninterface SimulateResult {\n\treadonly commandResults?: ReadonlyArray<{\n\t\treadonly returnValues?: ReadonlyArray<{\n\t\t\treadonly bcs?: Uint8Array;\n\t\t}>;\n\t}>;\n}\n\nconst CachedDeepbookPoolSchema = Schema.Struct({\n\tname: Schema.String,\n\tpoolId: Schema.String,\n\tbase: Schema.String,\n\tquote: Schema.String,\n\tbaseCoinType: Schema.String,\n\tquoteCoinType: Schema.String,\n\ttickSize: Schema.String,\n\tlotSize: Schema.String,\n\tminSize: Schema.String,\n});\n\nconst CachedDeepbookPoolsSchema = Schema.Struct({\n\tpools: Schema.Array(CachedDeepbookPoolSchema),\n});\n\nconst CachedDeepbookSeedResultSchema = Schema.Struct({\n\tpoolName: Schema.String,\n\tbalanceManagerId: Schema.String,\n\tdigest: Schema.String,\n});\n\nconst stableContentHash = (input: string): ContentHash =>\n\tbrandContentHash(createHash('sha256').update(input).digest('hex'));\n\nconst fromCachedPools = (cached: CachedDeepbookPoolsResult): DeepbookPoolsResult => ({\n\tpools: cached.pools.map((pool) => ({\n\t\tname: pool.name,\n\t\tpoolId: pool.poolId,\n\t\tbase: pool.base,\n\t\tquote: pool.quote,\n\t\tbaseCoinType: pool.baseCoinType,\n\t\tquoteCoinType: pool.quoteCoinType,\n\t\ttickSize: BigInt(pool.tickSize),\n\t\tlotSize: BigInt(pool.lotSize),\n\t\tminSize: BigInt(pool.minSize),\n\t})),\n});\n\nconst toCachedPool = (spec: ResolvedDeepbookPoolSpec, poolId: string): CachedDeepbookPool => ({\n\tname: spec.name,\n\tpoolId,\n\tbase: spec.base,\n\tquote: spec.quote,\n\tbaseCoinType: normalizeStructTag(spec.baseCoinType),\n\tquoteCoinType: normalizeStructTag(spec.quoteCoinType),\n\ttickSize: spec.tickSize.toString(),\n\tlotSize: spec.lotSize.toString(),\n\tminSize: spec.minSize.toString(),\n});\n\nconst poolInputsHash = (\n\tpkg: DeepbookDeployment,\n\tsigner: ResolvedSigner,\n\tpools: ReadonlyArray<ResolvedDeepbookPoolSpec>,\n) =>\n\tstableContentHash(\n\t\t[\n\t\t\t'v1',\n\t\t\tpkg.packageId,\n\t\t\tpkg.registryId,\n\t\t\tpkg.adminCapId,\n\t\t\tsigner.address,\n\t\t\t...pools\n\t\t\t\t.map((pool) =>\n\t\t\t\t\t[\n\t\t\t\t\t\tpool.name,\n\t\t\t\t\t\tnormalizeStructTag(pool.baseCoinType),\n\t\t\t\t\t\tnormalizeStructTag(pool.quoteCoinType),\n\t\t\t\t\t\tpool.tickSize.toString(),\n\t\t\t\t\t\tpool.lotSize.toString(),\n\t\t\t\t\t\tpool.minSize.toString(),\n\t\t\t\t\t\tString(pool.whitelisted),\n\t\t\t\t\t\tString(pool.stablePool),\n\t\t\t\t\t].join('|'),\n\t\t\t\t)\n\t\t\t\t.sort(),\n\t\t].join('||'),\n\t);\n\nconst seedInputsHash = (\n\tpkg: DeepbookDeployment,\n\tsigner: ResolvedSigner,\n\tspec: ResolvedDeepbookPoolSpec,\n\tpool: DeepbookPool,\n) =>\n\tstableContentHash(\n\t\t[\n\t\t\t'v3',\n\t\t\tpkg.packageId,\n\t\t\tpkg.registryId,\n\t\t\tsigner.address,\n\t\t\tspec.name,\n\t\t\tpool.poolId,\n\t\t\tnormalizeStructTag(pool.baseCoinType),\n\t\t\tnormalizeStructTag(pool.quoteCoinType),\n\t\t\tspec.seed?.baseAmount?.toString() ?? '0',\n\t\t\tspec.seed?.quoteAmount?.toString() ?? '0',\n\t\t\t...(spec.seed?.orders ?? []).map((order, index) =>\n\t\t\t\t[\n\t\t\t\t\tindex,\n\t\t\t\t\torder.side,\n\t\t\t\t\torder.price.toString(),\n\t\t\t\t\torder.quantity.toString(),\n\t\t\t\t\torder.clientOrderId?.toString() ?? '',\n\t\t\t\t\tString(order.payWithDeep ?? false),\n\t\t\t\t].join('|'),\n\t\t\t),\n\t\t].join('||'),\n\t);\n\nconst buildVerifyProbe = (\n\tsdk: SuiSdkShim,\n\tcached: CachedDeepbookPoolsResult,\n): Effect.Effect<CachedDeepbookPoolsResult | null, never> =>\n\tEffect.gen(function* () {\n\t\tfor (const pool of cached.pools) {\n\t\t\tconst raw = yield* Effect.tryPromise({\n\t\t\t\ttry: () => sdk.core.getObject({ objectId: pool.poolId }),\n\t\t\t\tcatch: () => null,\n\t\t\t}).pipe(Effect.catch(() => Effect.succeed(null)));\n\t\t\tif (raw === null || raw === undefined) return null;\n\t\t}\n\t\treturn cached;\n\t});\n\nconst buildSeedVerifyProbe = (\n\tsdk: SuiSdkShim,\n\tcached: CachedDeepbookSeedResult,\n): Effect.Effect<CachedDeepbookSeedResult | null, never> =>\n\tEffect.gen(function* () {\n\t\tconst raw = yield* Effect.tryPromise({\n\t\t\ttry: () => sdk.core.getObject({ objectId: cached.balanceManagerId }),\n\t\t\tcatch: () => null,\n\t\t}).pipe(Effect.catch(() => Effect.succeed(null)));\n\t\tif (raw === null || raw === undefined) return null;\n\t\treturn cached;\n\t});\n\nconst simulateClient = (\n\tsdk: SuiSdkShim,\n): {\n\treadonly core: {\n\t\treadonly simulateTransaction: (args: {\n\t\t\treadonly transaction: Transaction;\n\t\t\treadonly include: { readonly commandResults: boolean; readonly effects: boolean };\n\t\t}) => Promise<SimulateResult>;\n\t};\n} =>\n\tsdk.client as {\n\t\treadonly core: {\n\t\t\treadonly simulateTransaction: (args: {\n\t\t\t\treadonly transaction: Transaction;\n\t\t\t\treadonly include: { readonly commandResults: boolean; readonly effects: boolean };\n\t\t\t}) => Promise<SimulateResult>;\n\t\t};\n\t};\n\nconst findExistingPoolId = (\n\tsdk: SuiSdkShim,\n\tsigner: ResolvedSigner,\n\tpkg: DeepbookDeployment,\n\tspec: ResolvedDeepbookPoolSpec,\n): Effect.Effect<string | null, never> =>\n\tEffect.tryPromise({\n\t\ttry: async () => {\n\t\t\tconst tx = new Transaction();\n\t\t\ttx.setSender(signer.address);\n\t\t\ttx.moveCall({\n\t\t\t\ttarget: `${pkg.packageId}::pool::get_pool_id_by_asset`,\n\t\t\t\ttypeArguments: [spec.baseCoinType, spec.quoteCoinType],\n\t\t\t\targuments: [tx.object(pkg.registryId)],\n\t\t\t});\n\t\t\tconst result = await simulateClient(sdk).core.simulateTransaction({\n\t\t\t\ttransaction: tx,\n\t\t\t\tinclude: { commandResults: true, effects: true },\n\t\t\t});\n\t\t\tconst bytes = result.commandResults?.[0]?.returnValues?.[0]?.bcs;\n\t\t\tif (bytes === undefined) return null;\n\t\t\treturn normalizeSuiAddress(bcs.Address.parse(bytes));\n\t\t},\n\t\tcatch: () => null,\n\t}).pipe(Effect.catch(() => Effect.succeed(null)));\n\nconst findExistingPools = (\n\tsdk: SuiSdkShim,\n\tsigner: ResolvedSigner,\n\tpkg: DeepbookDeployment,\n\tpools: ReadonlyArray<ResolvedDeepbookPoolSpec>,\n): Effect.Effect<ReadonlyMap<string, CachedDeepbookPool>, never> =>\n\tEffect.gen(function* () {\n\t\tconst found = new Map<string, CachedDeepbookPool>();\n\t\tfor (const pool of pools) {\n\t\t\tconst poolId = yield* findExistingPoolId(sdk, signer, pkg, pool);\n\t\t\tif (poolId !== null) {\n\t\t\t\tfound.set(pool.name, toCachedPool(pool, poolId));\n\t\t\t}\n\t\t}\n\t\treturn found;\n\t});\n\nconst pickCreatedPool = (\n\tchanges: ReadonlyArray<{\n\t\treadonly objectId: string;\n\t\treadonly objectType?: string;\n\t\treadonly idOperation?: string;\n\t}>,\n\tspec: ResolvedDeepbookPoolSpec,\n): string | null => {\n\tconst base = normalizeStructTag(spec.baseCoinType);\n\tconst quote = normalizeStructTag(spec.quoteCoinType);\n\tfor (const change of changes) {\n\t\tconst type = change.objectType;\n\t\tif (change.idOperation !== 'Created' || type === undefined) continue;\n\t\tif (!type.includes('::pool::Pool<')) continue;\n\t\tif (type.includes(base) && type.includes(quote)) {\n\t\t\treturn change.objectId;\n\t\t}\n\t}\n\treturn null;\n};\n\nconst mapArtifactError = (phase: DeepbookPhase, err: ArtifactPublishError): DeepbookPluginError =>\n\tdeepbookPluginError(phase, err._tag === 'ArtifactPublishError' ? err.detail : String(err));\n\ntype SuiTransactionBuildClient = Parameters<Transaction['build']>[0] extends\n\t| { readonly client?: infer C }\n\t| undefined\n\t? C\n\t: never;\n\nconst transactionBuildClient = (sdk: SuiSdkShim): SuiTransactionBuildClient =>\n\tsdk.client as SuiTransactionBuildClient;\n\nconst ORDER_TYPE_POST_ONLY = 3;\nconst SELF_MATCHING_CANCEL_TAKER = 1;\nconst MAX_TIMESTAMP = 18_446_744_073_709_551_615n;\nconst SUI_TYPE = normalizeStructTag('0x2::sui::SUI');\nconst SEED_GAS_BUDGET = 500_000_000n;\nconst LOCALNET_REFERENCE_GAS_PRICE = 1000n;\nconst STALE_OBJECT_RETRY_DELAY_MS = 500;\nconst STALE_OBJECT_MAX_RETRIES = 20;\n\nconst decodeErrorMessage = (message: string) => {\n\ttry {\n\t\treturn decodeURIComponent(message);\n\t} catch {\n\t\treturn message;\n\t}\n};\n\nconst isStaleObjectVersionError = (err: { readonly message: string }) => {\n\tconst message = decodeErrorMessage(err.message);\n\treturn (\n\t\tmessage.includes('needs to be rebuilt because object') && message.includes('current version')\n\t);\n};\n\nconst executeSuiTxWithStaleObjectRetry = (\n\tparams: Parameters<typeof executeSuiTx>[0],\n\tattempt = 0,\n): ReturnType<typeof executeSuiTx> =>\n\texecuteSuiTx(params).pipe(\n\t\tEffect.catch((err: SuiExecuteError) =>\n\t\t\tisStaleObjectVersionError(err) && attempt < STALE_OBJECT_MAX_RETRIES\n\t\t\t\t? Effect.sleep(`${STALE_OBJECT_RETRY_DELAY_MS} millis`).pipe(\n\t\t\t\t\t\tEffect.andThen(executeSuiTxWithStaleObjectRetry(params, attempt + 1)),\n\t\t\t\t\t)\n\t\t\t\t: Effect.fail(err),\n\t\t),\n\t);\n\n// ---------------------------------------------------------------------------\n// Create whitelisted pools\n// ---------------------------------------------------------------------------\n\nexport const createDeepbookPools = (\n\tpublisher: ArtifactPublisher,\n\tsdk: SuiSdkShim,\n\tchain: string,\n\tsigner: ResolvedSigner,\n\tpkg: DeepbookDeployment,\n\tpools: ReadonlyArray<ResolvedDeepbookPoolSpec>,\n): Effect.Effect<DeepbookPoolsResult, DeepbookPluginError, Scope.Scope> =>\n\tEffect.gen(function* () {\n\t\tif (pools.length === 0) return { pools: [] };\n\n\t\tconst produced = yield* publisher\n\t\t\t.publish<CachedDeepbookPoolsResult, CachedDeepbookPoolsResult>({\n\t\t\t\tnamespace: 'deepbook/pools',\n\t\t\t\tchain: brandChainId(chain),\n\t\t\t\tcontentHash: poolInputsHash(pkg, signer, pools),\n\t\t\t\tverifySchema: CachedDeepbookPoolsSchema,\n\t\t\t\tverify: (cached) => buildVerifyProbe(sdk, cached),\n\t\t\t\tproduce: Effect.gen(function* () {\n\t\t\t\t\tconst existingPools = yield* findExistingPools(sdk, signer, pkg, pools);\n\t\t\t\t\tconst missingPools = pools.filter((pool) => !existingPools.has(pool.name));\n\n\t\t\t\t\tconst cachedPools: CachedDeepbookPool[] = [];\n\t\t\t\t\tif (missingPools.length > 0) {\n\t\t\t\t\t\tconst receipt = yield* executeSuiTx({\n\t\t\t\t\t\t\tclient: sdk.client as SuiExecuteClient,\n\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\tbuild: async () => {\n\t\t\t\t\t\t\t\tconst tx = new Transaction();\n\t\t\t\t\t\t\t\ttx.setSender(signer.address);\n\t\t\t\t\t\t\t\ttx.setGasBudget(500_000_000);\n\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::registry::init_balance_manager_map`,\n\t\t\t\t\t\t\t\t\targuments: [tx.object(pkg.registryId), tx.object(pkg.adminCapId)],\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tfor (const pool of missingPools) {\n\t\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::pool::create_pool_admin`,\n\t\t\t\t\t\t\t\t\t\ttypeArguments: [pool.baseCoinType, pool.quoteCoinType],\n\t\t\t\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\t\t\t\ttx.object(pkg.registryId),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.tickSize),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.lotSize),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.minSize),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.bool(pool.whitelisted),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.bool(pool.stablePool),\n\t\t\t\t\t\t\t\t\t\t\ttx.object(pkg.adminCapId),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn tx.build({\n\t\t\t\t\t\t\t\t\tclient: transactionBuildClient(sdk),\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}).pipe(\n\t\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t\t(err): ArtifactPublishError => ({\n\t\t\t\t\t\t\t\t\t_tag: 'ArtifactPublishError',\n\t\t\t\t\t\t\t\t\treason: 'produce-failed',\n\t\t\t\t\t\t\t\t\tdetail: `deepbook pool transaction failed: ${err.message}`,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfor (const pool of missingPools) {\n\t\t\t\t\t\t\tconst poolId = pickCreatedPool(receipt.objectChanges, pool);\n\t\t\t\t\t\t\tif (poolId === null) {\n\t\t\t\t\t\t\t\treturn yield* Effect.fail({\n\t\t\t\t\t\t\t\t\t_tag: 'ArtifactPublishError' as const,\n\t\t\t\t\t\t\t\t\treason: 'produce-failed' as const,\n\t\t\t\t\t\t\t\t\tdetail:\n\t\t\t\t\t\t\t\t\t\t`deepbook pool '${pool.name}' not found in objectChanges ` +\n\t\t\t\t\t\t\t\t\t\t`(digest=${receipt.digest}).`,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcachedPools.push(toCachedPool(pool, poolId));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tpools: pools\n\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t(pool) =>\n\t\t\t\t\t\t\t\t\texistingPools.get(pool.name) ?? cachedPools.find((p) => p.name === pool.name),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.filter((pool): pool is CachedDeepbookPool => pool !== undefined),\n\t\t\t\t\t} satisfies CachedDeepbookPoolsResult;\n\t\t\t\t}),\n\t\t\t\tregister: () => Effect.void,\n\t\t\t})\n\t\t\t.pipe(Effect.mapError((err) => mapArtifactError('create-pools', err)));\n\n\t\tconst producedPools = new Map(produced.pools.map((pool) => [pool.name, pool]));\n\t\tconst resolvedPools = pools.map((pool) => producedPools.get(pool.name));\n\t\tif (resolvedPools.some((pool) => pool === undefined)) {\n\t\t\treturn yield* Effect.fail(\n\t\t\t\tdeepbookPluginError('create-pools', 'deepbook pool creation did not return every pool.'),\n\t\t\t);\n\t\t}\n\n\t\treturn fromCachedPools({\n\t\t\tpools: resolvedPools.filter((pool): pool is CachedDeepbookPool => pool !== undefined),\n\t\t});\n\t}).pipe(\n\t\tEffect.withSpan('devstack.plugin.deepbook.createPools', {\n\t\t\tattributes: {\n\t\t\t\t'deepbook.packageId': pkg.packageId,\n\t\t\t\t'deepbook.pool.count': pools.length,\n\t\t\t},\n\t\t}),\n\t);\n\n// ---------------------------------------------------------------------------\n// Seed local liquidity\n// ---------------------------------------------------------------------------\n\nconst poolByName = (pools: ReadonlyArray<DeepbookPool>, name: string): DeepbookPool | undefined =>\n\tpools.find((pool) => pool.name === name);\n\nconst pickCreatedBalanceManager = (\n\tchanges: ReadonlyArray<{\n\t\treadonly objectId: string;\n\t\treadonly objectType?: string;\n\t\treadonly idOperation?: string;\n\t}>,\n): string | null => {\n\tfor (const change of changes) {\n\t\tif (change.idOperation !== 'Created') continue;\n\t\tif (change.objectType?.includes('::balance_manager::BalanceManager')) {\n\t\t\treturn change.objectId;\n\t\t}\n\t}\n\treturn null;\n};\n\nconst depositIntoBalanceManager = (\n\ttx: Transaction,\n\tsdk: SuiSdkShim,\n\tsigner: ResolvedSigner,\n\tpkg: DeepbookDeployment,\n\tbalanceManager: ReturnType<Transaction['moveCall']>,\n\tcoinType: string,\n\tamount: bigint | undefined,\n) => {\n\tif (amount === undefined || amount === 0n) return;\n\treturn splitOwnedCoinForBalance(tx, sdk, signer, coinType, amount).then((coin) => {\n\t\ttx.moveCall({\n\t\t\ttarget: `${pkg.packageId}::balance_manager::deposit`,\n\t\t\ttypeArguments: [coinType],\n\t\t\targuments: [balanceManager, coin],\n\t\t});\n\t});\n};\n\nconst errorDetail = (err: unknown): string => {\n\tif (err instanceof Error) return err.message;\n\tif (typeof err === 'object' && err !== null) {\n\t\tif ('message' in err && typeof err.message === 'string') return err.message;\n\t\tif ('detail' in err && typeof err.detail === 'string') return err.detail;\n\t}\n\treturn String(err);\n};\n\nconst requestSeedFunding = (\n\tstrategy: CoinFundingStrategy | undefined,\n\tsigner: ResolvedSigner,\n\tcoinType: string,\n\tamount: bigint | undefined,\n): Effect.Effect<void, ArtifactPublishError> => {\n\tif (strategy === undefined || amount === undefined || amount === 0n) {\n\t\treturn Effect.void;\n\t}\n\treturn strategy.request({ address: signer.address, amount }).pipe(\n\t\tEffect.mapError(\n\t\t\t(err): ArtifactPublishError => ({\n\t\t\t\t_tag: 'ArtifactPublishError',\n\t\t\t\treason: 'produce-failed',\n\t\t\t\tdetail:\n\t\t\t\t\t`deepbook seed funding failed for ${coinType} ` +\n\t\t\t\t\t`to publisher '${signer.name}' amount=${amount}: ${errorDetail(err)}`,\n\t\t\t}),\n\t\t),\n\t);\n};\n\nconst coinListClient = (\n\tsdk: SuiSdkShim,\n): {\n\treadonly core: {\n\t\treadonly listCoins: (args: {\n\t\t\treadonly owner: string;\n\t\t\treadonly coinType: string;\n\t\t\treadonly cursor?: string | null;\n\t\t\treadonly limit?: number;\n\t\t}) => Promise<{\n\t\t\treadonly objects: ReadonlyArray<{\n\t\t\t\treadonly objectId: string;\n\t\t\t\treadonly version: string | number;\n\t\t\t\treadonly digest: string;\n\t\t\t\treadonly balance: string | number | bigint;\n\t\t\t}>;\n\t\t\treadonly hasNextPage: boolean;\n\t\t\treadonly cursor: string | null;\n\t\t}>;\n\t};\n} =>\n\tsdk.client as {\n\t\treadonly core: {\n\t\t\treadonly listCoins: (args: {\n\t\t\t\treadonly owner: string;\n\t\t\t\treadonly coinType: string;\n\t\t\t\treadonly cursor?: string | null;\n\t\t\t\treadonly limit?: number;\n\t\t\t}) => Promise<{\n\t\t\t\treadonly objects: ReadonlyArray<{\n\t\t\t\t\treadonly objectId: string;\n\t\t\t\t\treadonly version: string | number;\n\t\t\t\t\treadonly digest: string;\n\t\t\t\t\treadonly balance: string | number | bigint;\n\t\t\t\t}>;\n\t\t\t\treadonly hasNextPage: boolean;\n\t\t\t\treadonly cursor: string | null;\n\t\t\t}>;\n\t\t};\n\t};\n\ninterface OwnedCoin {\n\treadonly objectId: string;\n\treadonly version: string | number;\n\treadonly digest: string;\n\treadonly balance: string | number | bigint;\n}\n\nexport const selectOwnedCoinsForBalance = async (\n\tsdk: SuiSdkShim,\n\tsigner: ResolvedSigner,\n\tcoinType: string,\n\tamount: bigint,\n\tpurpose: string,\n): Promise<{\n\treadonly selected: ReadonlyArray<OwnedCoin>;\n\treadonly selectedBalance: bigint;\n}> => {\n\tconst selected: OwnedCoin[] = [];\n\tlet selectedBalance = 0n;\n\tlet cursor: string | null = null;\n\tdo {\n\t\tconst page = await coinListClient(sdk).core.listCoins({\n\t\t\towner: signer.address,\n\t\t\tcoinType,\n\t\t\tcursor,\n\t\t\tlimit: 50,\n\t\t});\n\t\tfor (const coin of page.objects) {\n\t\t\tselected.push(coin);\n\t\t\tselectedBalance += BigInt(coin.balance);\n\t\t\tif (selectedBalance >= amount) break;\n\t\t}\n\t\tcursor = page.cursor;\n\t\tif (selectedBalance >= amount) break;\n\t\tif (!page.hasNextPage) break;\n\t} while (cursor !== null);\n\n\tif (selectedBalance < amount || selected.length === 0) {\n\t\tthrow new Error(\n\t\t\t`publisher '${signer.name}' has insufficient ${coinType} for ${purpose}: ` +\n\t\t\t\t`required ${amount}, available ${selectedBalance}.`,\n\t\t);\n\t}\n\n\treturn { selected, selectedBalance };\n};\n\nconst ledgerObjectClient = (\n\tsdk: SuiSdkShim,\n): {\n\treadonly ledgerService: {\n\t\treadonly getObject: (args: {\n\t\t\treadonly objectId: string;\n\t\t\treadonly readMask?: { readonly paths: ReadonlyArray<string> };\n\t\t}) => Promise<{\n\t\t\treadonly response?: {\n\t\t\t\treadonly object?: {\n\t\t\t\t\treadonly objectId?: string;\n\t\t\t\t\treadonly version?: string | number | bigint;\n\t\t\t\t\treadonly digest?: string;\n\t\t\t\t};\n\t\t\t};\n\t\t}>;\n\t};\n} =>\n\tsdk.client as {\n\t\treadonly ledgerService: {\n\t\t\treadonly getObject: (args: {\n\t\t\t\treadonly objectId: string;\n\t\t\t\treadonly readMask?: { readonly paths: ReadonlyArray<string> };\n\t\t\t}) => Promise<{\n\t\t\t\treadonly response?: {\n\t\t\t\t\treadonly object?: {\n\t\t\t\t\t\treadonly objectId?: string;\n\t\t\t\t\t\treadonly version?: string | number | bigint;\n\t\t\t\t\t\treadonly digest?: string;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}>;\n\t\t};\n\t};\n\nconst currentLedgerObjectRef = async (\n\tsdk: SuiSdkShim,\n\tobjectId: string,\n): Promise<{\n\treadonly objectId: string;\n\treadonly version: string | number;\n\treadonly digest: string;\n}> => {\n\tconst raw = await ledgerObjectClient(sdk).ledgerService.getObject({\n\t\tobjectId,\n\t\treadMask: { paths: ['object_id', 'version', 'digest'] },\n\t});\n\tconst object = raw.response?.object;\n\tif (\n\t\tobject === undefined ||\n\t\tobject.objectId === undefined ||\n\t\tobject.version === undefined ||\n\t\tobject.digest === undefined\n\t) {\n\t\tthrow new Error(`object '${objectId}' was not found while resolving a DeepBook seed input.`);\n\t}\n\treturn {\n\t\tobjectId: object.objectId,\n\t\tversion: object.version.toString(),\n\t\tdigest: object.digest,\n\t};\n};\n\nexport const setExplicitSeedGasPayment = async (\n\ttx: Transaction,\n\tsdk: SuiSdkShim,\n\tsigner: ResolvedSigner,\n\tsuiDepositAmount: bigint,\n) => {\n\tconst requiredBalance = SEED_GAS_BUDGET + suiDepositAmount;\n\tconst { selected } = await selectOwnedCoinsForBalance(\n\t\tsdk,\n\t\tsigner,\n\t\tSUI_TYPE,\n\t\trequiredBalance,\n\t\t'DeepBook seed gas and SUI deposits',\n\t);\n\tconst gasRefs = await Promise.all(\n\t\tselected.map((coin) => currentLedgerObjectRef(sdk, coin.objectId)),\n\t);\n\ttx.setGasBudget(SEED_GAS_BUDGET);\n\ttx.setGasPrice(LOCALNET_REFERENCE_GAS_PRICE);\n\ttx.setGasPayment(gasRefs);\n};\n\nconst seedSuiDepositAmount = (\n\tpool: Pick<DeepbookPool, 'baseCoinType' | 'quoteCoinType'>,\n\tseed: DeepbookPoolSeedLiquidity,\n): bigint =>\n\t(normalizeStructTag(pool.baseCoinType) === SUI_TYPE ? (seed.baseAmount ?? 0n) : 0n) +\n\t(normalizeStructTag(pool.quoteCoinType) === SUI_TYPE ? (seed.quoteAmount ?? 0n) : 0n);\n\nconst sharedObject = async (\n\ttx: Transaction,\n\tsdk: SuiSdkShim,\n\tobjectId: string,\n\tmutable: boolean,\n) => {\n\tconst raw = (await sdk.core.getObject({ objectId })) as {\n\t\treadonly object?: {\n\t\t\treadonly owner?: {\n\t\t\t\treadonly Shared?: {\n\t\t\t\t\treadonly initialSharedVersion?: string | number;\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n\tconst initialSharedVersion = raw.object?.owner?.Shared?.initialSharedVersion;\n\tif (initialSharedVersion === undefined) {\n\t\tthrow new Error(`DeepBook object '${objectId}' is not shared.`);\n\t}\n\treturn tx.sharedObjectRef({\n\t\tobjectId,\n\t\tinitialSharedVersion,\n\t\tmutable,\n\t});\n};\n\nconst splitOwnedCoinForBalance = async (\n\ttx: Transaction,\n\tsdk: SuiSdkShim,\n\tsigner: ResolvedSigner,\n\tcoinType: string,\n\tamount: bigint,\n) => {\n\tif (normalizeStructTag(coinType) === SUI_TYPE) {\n\t\tconst [coin] = tx.splitCoins(tx.gas, [tx.pure.u64(amount)]);\n\t\treturn coin;\n\t}\n\n\tconst { selected, selectedBalance } = await selectOwnedCoinsForBalance(\n\t\tsdk,\n\t\tsigner,\n\t\tcoinType,\n\t\tamount,\n\t\t'DeepBook seed deposit',\n\t);\n\n\tconst firstSelected = selected[0];\n\tif (firstSelected === undefined) {\n\t\tthrow new Error(\n\t\t\t`publisher '${signer.name}' has no ${coinType} coins for DeepBook seed deposit.`,\n\t\t);\n\t}\n\tconst first = await currentLedgerObjectRef(sdk, firstSelected.objectId);\n\tconst rest = await Promise.all(\n\t\tselected.slice(1).map((coin) => currentLedgerObjectRef(sdk, coin.objectId)),\n\t);\n\tconst baseCoin = tx.objectRef(first);\n\tif (rest.length > 0) {\n\t\ttx.mergeCoins(\n\t\t\tbaseCoin,\n\t\t\trest.map((coin) => tx.objectRef(coin)),\n\t\t);\n\t}\n\tif (selectedBalance === amount) return baseCoin;\n\tconst [coin] = tx.splitCoins(baseCoin, [tx.pure.u64(amount)]);\n\treturn coin;\n};\n\nexport const seedDeepbookPools = (\n\tpublisher: ArtifactPublisher,\n\tsdk: SuiSdkShim,\n\tchain: string,\n\tsigner: ResolvedSigner,\n\tpkg: DeepbookDeployment,\n\tspecs: ReadonlyArray<ResolvedDeepbookPoolSpec>,\n\tpools: ReadonlyArray<DeepbookPool>,\n): Effect.Effect<ReadonlyArray<DeepbookPoolSeedResult>, DeepbookPluginError, Scope.Scope> =>\n\tEffect.gen(function* () {\n\t\tconst seeded: DeepbookPoolSeedResult[] = [];\n\t\tfor (const spec of specs) {\n\t\t\tconst seed = spec.seed;\n\t\t\tif (seed === undefined || seed.orders.length === 0) continue;\n\t\t\tconst pool = poolByName(pools, spec.name);\n\t\t\tif (pool === undefined) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError('create-pools', `deepbook seed pool '${spec.name}' was not created.`),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst result = yield* publisher\n\t\t\t\t.publish<CachedDeepbookSeedResult, CachedDeepbookSeedResult>({\n\t\t\t\t\tnamespace: `deepbook/seed/${spec.name}`,\n\t\t\t\t\tchain: brandChainId(chain),\n\t\t\t\t\tcontentHash: seedInputsHash(pkg, signer, spec, pool),\n\t\t\t\t\tverifySchema: CachedDeepbookSeedResultSchema,\n\t\t\t\t\tverify: (cached) => buildSeedVerifyProbe(sdk, cached),\n\t\t\t\t\tproduce: Effect.gen(function* () {\n\t\t\t\t\t\tyield* requestSeedFunding(\n\t\t\t\t\t\t\tspec.baseFundingStrategy,\n\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\tpool.baseCoinType,\n\t\t\t\t\t\t\tseed.baseAmount,\n\t\t\t\t\t\t);\n\t\t\t\t\t\tyield* requestSeedFunding(\n\t\t\t\t\t\t\tspec.quoteFundingStrategy,\n\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\tpool.quoteCoinType,\n\t\t\t\t\t\t\tseed.quoteAmount,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst receipt = yield* executeSuiTxWithStaleObjectRetry({\n\t\t\t\t\t\t\tclient: sdk.client as SuiExecuteClient,\n\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\tbuild: async () => {\n\t\t\t\t\t\t\t\tconst tx = new Transaction();\n\t\t\t\t\t\t\t\ttx.setSender(signer.address);\n\t\t\t\t\t\t\t\tawait setExplicitSeedGasPayment(tx, sdk, signer, seedSuiDepositAmount(pool, seed));\n\t\t\t\t\t\t\t\tconst registry = await sharedObject(tx, sdk, pkg.registryId, true);\n\t\t\t\t\t\t\t\tconst poolObject = await sharedObject(tx, sdk, pool.poolId, true);\n\t\t\t\t\t\t\t\tconst balanceManager = tx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::balance_manager::new`,\n\t\t\t\t\t\t\t\t\targuments: [],\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::balance_manager::register_balance_manager`,\n\t\t\t\t\t\t\t\t\targuments: [balanceManager, registry],\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tawait depositIntoBalanceManager(\n\t\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\t\tsdk,\n\t\t\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\t\t\tpkg,\n\t\t\t\t\t\t\t\t\tbalanceManager,\n\t\t\t\t\t\t\t\t\tpool.baseCoinType,\n\t\t\t\t\t\t\t\t\tseed.baseAmount,\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\tawait depositIntoBalanceManager(\n\t\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\t\tsdk,\n\t\t\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\t\t\tpkg,\n\t\t\t\t\t\t\t\t\tbalanceManager,\n\t\t\t\t\t\t\t\t\tpool.quoteCoinType,\n\t\t\t\t\t\t\t\t\tseed.quoteAmount,\n\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\tconst tradeProof = tx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::balance_manager::generate_proof_as_owner`,\n\t\t\t\t\t\t\t\t\targuments: [balanceManager],\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tfor (const [index, order] of seed.orders.entries()) {\n\t\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::pool::place_limit_order`,\n\t\t\t\t\t\t\t\t\t\ttypeArguments: [pool.baseCoinType, pool.quoteCoinType],\n\t\t\t\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\t\t\t\tpoolObject,\n\t\t\t\t\t\t\t\t\t\t\tbalanceManager,\n\t\t\t\t\t\t\t\t\t\t\ttradeProof,\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(order.clientOrderId ?? BigInt(index + 1)),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u8(ORDER_TYPE_POST_ONLY),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u8(SELF_MATCHING_CANCEL_TAKER),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(order.price),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(order.quantity),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.bool(order.side === 'bid'),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.bool(order.payWithDeep ?? false),\n\t\t\t\t\t\t\t\t\t\t\ttx.pure.u64(MAX_TIMESTAMP),\n\t\t\t\t\t\t\t\t\t\t\ttx.object.clock(),\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttx.transferObjects([balanceManager], signer.address);\n\t\t\t\t\t\t\t\treturn tx.build({ client: transactionBuildClient(sdk) });\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}).pipe(\n\t\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t\t(err): ArtifactPublishError => ({\n\t\t\t\t\t\t\t\t\t_tag: 'ArtifactPublishError',\n\t\t\t\t\t\t\t\t\treason: 'produce-failed',\n\t\t\t\t\t\t\t\t\tdetail: `deepbook seed transaction failed for pool '${spec.name}': ${err.message}`,\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst balanceManagerId = pickCreatedBalanceManager(receipt.objectChanges);\n\t\t\t\t\t\tif (balanceManagerId === null) {\n\t\t\t\t\t\t\treturn yield* Effect.fail({\n\t\t\t\t\t\t\t\t_tag: 'ArtifactPublishError' as const,\n\t\t\t\t\t\t\t\treason: 'produce-failed' as const,\n\t\t\t\t\t\t\t\tdetail:\n\t\t\t\t\t\t\t\t\t`deepbook seed BalanceManager not found in objectChanges ` +\n\t\t\t\t\t\t\t\t\t`(digest=${receipt.digest}).`,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn { poolName: spec.name, balanceManagerId, digest: receipt.digest };\n\t\t\t\t\t}),\n\t\t\t\t\tregister: () => Effect.void,\n\t\t\t\t})\n\t\t\t\t.pipe(Effect.mapError((err) => mapArtifactError('create-pools', err)));\n\n\t\t\tseeded.push(result);\n\t\t}\n\t\treturn seeded;\n\t}).pipe(\n\t\tEffect.withSpan('devstack.plugin.deepbook.seedPools', {\n\t\t\tattributes: {\n\t\t\t\t'deepbook.packageId': pkg.packageId,\n\t\t\t\t'deepbook.pool.count': specs.filter((spec) => spec.seed !== undefined).length,\n\t\t\t},\n\t\t}),\n\t);\n"],"mappings":";;;;;;;;;AAwGA,MAAM,2BAA2B,OAAO,OAAO;CAC9C,MAAM,OAAO;CACb,QAAQ,OAAO;CACf,MAAM,OAAO;CACb,OAAO,OAAO;CACd,cAAc,OAAO;CACrB,eAAe,OAAO;CACtB,UAAU,OAAO;CACjB,SAAS,OAAO;CAChB,SAAS,OAAO;CAChB,CAAC;AAEF,MAAM,4BAA4B,OAAO,OAAO,EAC/C,OAAO,OAAO,MAAM,yBAAyB,EAC7C,CAAC;AAEF,MAAM,iCAAiC,OAAO,OAAO;CACpD,UAAU,OAAO;CACjB,kBAAkB,OAAO;CACzB,QAAQ,OAAO;CACf,CAAC;AAEF,MAAM,qBAAqB,UAC1BA,YAAiB,WAAW,SAAS,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC;AAEnE,MAAM,mBAAmB,YAA4D,EACpF,OAAO,OAAO,MAAM,KAAK,UAAU;CAClC,MAAM,KAAK;CACX,QAAQ,KAAK;CACb,MAAM,KAAK;CACX,OAAO,KAAK;CACZ,cAAc,KAAK;CACnB,eAAe,KAAK;CACpB,UAAU,OAAO,KAAK,SAAS;CAC/B,SAAS,OAAO,KAAK,QAAQ;CAC7B,SAAS,OAAO,KAAK,QAAQ;CAC7B,EAAE,EACH;AAED,MAAM,gBAAgB,MAAgC,YAAwC;CAC7F,MAAM,KAAK;CACX;CACA,MAAM,KAAK;CACX,OAAO,KAAK;CACZ,cAAc,mBAAmB,KAAK,aAAa;CACnD,eAAe,mBAAmB,KAAK,cAAc;CACrD,UAAU,KAAK,SAAS,UAAU;CAClC,SAAS,KAAK,QAAQ,UAAU;CAChC,SAAS,KAAK,QAAQ,UAAU;CAChC;AAED,MAAM,kBACL,KACA,QACA,UAEA,kBACC;CACC;CACA,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,GAAG,MACD,KAAK,SACL;EACC,KAAK;EACL,mBAAmB,KAAK,aAAa;EACrC,mBAAmB,KAAK,cAAc;EACtC,KAAK,SAAS,UAAU;EACxB,KAAK,QAAQ,UAAU;EACvB,KAAK,QAAQ,UAAU;EACvB,OAAO,KAAK,YAAY;EACxB,OAAO,KAAK,WAAW;EACvB,CAAC,KAAK,IAAI,CACX,CACA,MAAM;CACR,CAAC,KAAK,KAAK,CACZ;AAEF,MAAM,kBACL,KACA,QACA,MACA,SAEA,kBACC;CACC;CACA,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,KAAK;CACL,KAAK;CACL,mBAAmB,KAAK,aAAa;CACrC,mBAAmB,KAAK,cAAc;CACtC,KAAK,MAAM,YAAY,UAAU,IAAI;CACrC,KAAK,MAAM,aAAa,UAAU,IAAI;CACtC,IAAI,KAAK,MAAM,UAAU,EAAE,EAAE,KAAK,OAAO,UACxC;EACC;EACA,MAAM;EACN,MAAM,MAAM,UAAU;EACtB,MAAM,SAAS,UAAU;EACzB,MAAM,eAAe,UAAU,IAAI;EACnC,OAAO,MAAM,eAAe,MAAM;EAClC,CAAC,KAAK,IAAI,CACX;CACD,CAAC,KAAK,KAAK,CACZ;AAEF,MAAM,oBACL,KACA,WAEA,OAAO,IAAI,aAAa;AACvB,MAAK,MAAM,QAAQ,OAAO,OAAO;EAChC,MAAM,MAAM,OAAO,OAAO,WAAW;GACpC,WAAW,IAAI,KAAK,UAAU,EAAE,UAAU,KAAK,QAAQ,CAAC;GACxD,aAAa;GACb,CAAC,CAAC,KAAK,OAAO,YAAY,OAAO,QAAQ,KAAK,CAAC,CAAC;AACjD,MAAI,QAAQ,QAAQ,QAAQ,KAAA,EAAW,QAAO;;AAE/C,QAAO;EACN;AAEH,MAAM,wBACL,KACA,WAEA,OAAO,IAAI,aAAa;CACvB,MAAM,MAAM,OAAO,OAAO,WAAW;EACpC,WAAW,IAAI,KAAK,UAAU,EAAE,UAAU,OAAO,kBAAkB,CAAC;EACpE,aAAa;EACb,CAAC,CAAC,KAAK,OAAO,YAAY,OAAO,QAAQ,KAAK,CAAC,CAAC;AACjD,KAAI,QAAQ,QAAQ,QAAQ,KAAA,EAAW,QAAO;AAC9C,QAAO;EACN;AAEH,MAAM,kBACL,QASA,IAAI;AASL,MAAM,sBACL,KACA,QACA,KACA,SAEA,OAAO,WAAW;CACjB,KAAK,YAAY;EAChB,MAAM,KAAK,IAAI,aAAa;AAC5B,KAAG,UAAU,OAAO,QAAQ;AAC5B,KAAG,SAAS;GACX,QAAQ,GAAG,IAAI,UAAU;GACzB,eAAe,CAAC,KAAK,cAAc,KAAK,cAAc;GACtD,WAAW,CAAC,GAAG,OAAO,IAAI,WAAW,CAAC;GACtC,CAAC;EAKF,MAAM,SAAQ,MAJO,eAAe,IAAI,CAAC,KAAK,oBAAoB;GACjE,aAAa;GACb,SAAS;IAAE,gBAAgB;IAAM,SAAS;IAAM;GAChD,CAAC,EACmB,iBAAiB,IAAI,eAAe,IAAI;AAC7D,MAAI,UAAU,KAAA,EAAW,QAAO;AAChC,SAAO,oBAAoB,IAAI,QAAQ,MAAM,MAAM,CAAC;;CAErD,aAAa;CACb,CAAC,CAAC,KAAK,OAAO,YAAY,OAAO,QAAQ,KAAK,CAAC,CAAC;AAElD,MAAM,qBACL,KACA,QACA,KACA,UAEA,OAAO,IAAI,aAAa;CACvB,MAAM,wBAAQ,IAAI,KAAiC;AACnD,MAAK,MAAM,QAAQ,OAAO;EACzB,MAAM,SAAS,OAAO,mBAAmB,KAAK,QAAQ,KAAK,KAAK;AAChE,MAAI,WAAW,KACd,OAAM,IAAI,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;;AAGlD,QAAO;EACN;AAEH,MAAM,mBACL,SAKA,SACmB;CACnB,MAAM,OAAO,mBAAmB,KAAK,aAAa;CAClD,MAAM,QAAQ,mBAAmB,KAAK,cAAc;AACpD,MAAK,MAAM,UAAU,SAAS;EAC7B,MAAM,OAAO,OAAO;AACpB,MAAI,OAAO,gBAAgB,aAAa,SAAS,KAAA,EAAW;AAC5D,MAAI,CAAC,KAAK,SAAS,gBAAgB,CAAE;AACrC,MAAI,KAAK,SAAS,KAAK,IAAI,KAAK,SAAS,MAAM,CAC9C,QAAO,OAAO;;AAGhB,QAAO;;AAGR,MAAM,oBAAoB,OAAsB,QAC/C,oBAAoB,OAAO,IAAI,SAAS,yBAAyB,IAAI,SAAS,OAAO,IAAI,CAAC;AAQ3F,MAAM,0BAA0B,QAC/B,IAAI;AAEL,MAAM,uBAAuB;AAC7B,MAAM,6BAA6B;AACnC,MAAM,gBAAgB;AACtB,MAAM,WAAW,mBAAmB,gBAAgB;AACpD,MAAM,kBAAkB;AACxB,MAAM,+BAA+B;AACrC,MAAM,8BAA8B;AACpC,MAAM,2BAA2B;AAEjC,MAAM,sBAAsB,YAAoB;AAC/C,KAAI;AACH,SAAO,mBAAmB,QAAQ;SAC3B;AACP,SAAO;;;AAIT,MAAM,6BAA6B,QAAsC;CACxE,MAAM,UAAU,mBAAmB,IAAI,QAAQ;AAC/C,QACC,QAAQ,SAAS,qCAAqC,IAAI,QAAQ,SAAS,kBAAkB;;AAI/F,MAAM,oCACL,QACA,UAAU,MAEV,aAAa,OAAO,CAAC,KACpB,OAAO,OAAO,QACb,0BAA0B,IAAI,IAAI,UAAU,2BACzC,OAAO,MAAM,GAAG,4BAA4B,SAAS,CAAC,KACtD,OAAO,QAAQ,iCAAiC,QAAQ,UAAU,EAAE,CAAC,CACrE,GACA,OAAO,KAAK,IAAI,CACnB,CACD;AAMF,MAAa,uBACZ,WACA,KACA,OACA,QACA,KACA,UAEA,OAAO,IAAI,aAAa;AACvB,KAAI,MAAM,WAAW,EAAG,QAAO,EAAE,OAAO,EAAE,EAAE;CAE5C,MAAM,WAAW,OAAO,UACtB,QAA8D;EAC9D,WAAW;EACX,OAAOC,QAAa,MAAM;EAC1B,aAAa,eAAe,KAAK,QAAQ,MAAM;EAC/C,cAAc;EACd,SAAS,WAAW,iBAAiB,KAAK,OAAO;EACjD,SAAS,OAAO,IAAI,aAAa;GAChC,MAAM,gBAAgB,OAAO,kBAAkB,KAAK,QAAQ,KAAK,MAAM;GACvE,MAAM,eAAe,MAAM,QAAQ,SAAS,CAAC,cAAc,IAAI,KAAK,KAAK,CAAC;GAE1E,MAAM,cAAoC,EAAE;AAC5C,OAAI,aAAa,SAAS,GAAG;IAC5B,MAAM,UAAU,OAAO,aAAa;KACnC,QAAQ,IAAI;KACZ;KACA,OAAO,YAAY;MAClB,MAAM,KAAK,IAAI,aAAa;AAC5B,SAAG,UAAU,OAAO,QAAQ;AAC5B,SAAG,aAAa,IAAY;AAC5B,SAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC,GAAG,OAAO,IAAI,WAAW,EAAE,GAAG,OAAO,IAAI,WAAW,CAAC;OACjE,CAAC;AACF,WAAK,MAAM,QAAQ,aAClB,IAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,eAAe,CAAC,KAAK,cAAc,KAAK,cAAc;OACtD,WAAW;QACV,GAAG,OAAO,IAAI,WAAW;QACzB,GAAG,KAAK,IAAI,KAAK,SAAS;QAC1B,GAAG,KAAK,IAAI,KAAK,QAAQ;QACzB,GAAG,KAAK,IAAI,KAAK,QAAQ;QACzB,GAAG,KAAK,KAAK,KAAK,YAAY;QAC9B,GAAG,KAAK,KAAK,KAAK,WAAW;QAC7B,GAAG,OAAO,IAAI,WAAW;QACzB;OACD,CAAC;AAEH,aAAO,GAAG,MAAM,EACf,QAAQ,uBAAuB,IAAI,EACnC,CAAC;;KAEH,CAAC,CAAC,KACF,OAAO,UACL,SAA+B;KAC/B,MAAM;KACN,QAAQ;KACR,QAAQ,qCAAqC,IAAI;KACjD,EACD,CACD;AAED,SAAK,MAAM,QAAQ,cAAc;KAChC,MAAM,SAAS,gBAAgB,QAAQ,eAAe,KAAK;AAC3D,SAAI,WAAW,KACd,QAAO,OAAO,OAAO,KAAK;MACzB,MAAM;MACN,QAAQ;MACR,QACC,kBAAkB,KAAK,KAAK,uCACjB,QAAQ,OAAO;MAC3B,CAAC;AAEH,iBAAY,KAAK,aAAa,MAAM,OAAO,CAAC;;;AAI9C,UAAO,EACN,OAAO,MACL,KACC,SACA,cAAc,IAAI,KAAK,KAAK,IAAI,YAAY,MAAM,MAAM,EAAE,SAAS,KAAK,KAAK,CAC9E,CACA,QAAQ,SAAqC,SAAS,KAAA,EAAU,EAClE;IACA;EACF,gBAAgB,OAAO;EACvB,CAAC,CACD,KAAK,OAAO,UAAU,QAAQ,iBAAiB,gBAAgB,IAAI,CAAC,CAAC;CAEvE,MAAM,gBAAgB,IAAI,IAAI,SAAS,MAAM,KAAK,SAAS,CAAC,KAAK,MAAM,KAAK,CAAC,CAAC;CAC9E,MAAM,gBAAgB,MAAM,KAAK,SAAS,cAAc,IAAI,KAAK,KAAK,CAAC;AACvE,KAAI,cAAc,MAAM,SAAS,SAAS,KAAA,EAAU,CACnD,QAAO,OAAO,OAAO,KACpB,oBAAoB,gBAAgB,oDAAoD,CACxF;AAGF,QAAO,gBAAgB,EACtB,OAAO,cAAc,QAAQ,SAAqC,SAAS,KAAA,EAAU,EACrF,CAAC;EACD,CAAC,KACF,OAAO,SAAS,wCAAwC,EACvD,YAAY;CACX,sBAAsB,IAAI;CAC1B,uBAAuB,MAAM;CAC7B,EACD,CAAC,CACF;AAMF,MAAM,cAAc,OAAoC,SACvD,MAAM,MAAM,SAAS,KAAK,SAAS,KAAK;AAEzC,MAAM,6BACL,YAKmB;AACnB,MAAK,MAAM,UAAU,SAAS;AAC7B,MAAI,OAAO,gBAAgB,UAAW;AACtC,MAAI,OAAO,YAAY,SAAS,oCAAoC,CACnE,QAAO,OAAO;;AAGhB,QAAO;;AAGR,MAAM,6BACL,IACA,KACA,QACA,KACA,gBACA,UACA,WACI;AACJ,KAAI,WAAW,KAAA,KAAa,WAAW,GAAI;AAC3C,QAAO,yBAAyB,IAAI,KAAK,QAAQ,UAAU,OAAO,CAAC,MAAM,SAAS;AACjF,KAAG,SAAS;GACX,QAAQ,GAAG,IAAI,UAAU;GACzB,eAAe,CAAC,SAAS;GACzB,WAAW,CAAC,gBAAgB,KAAK;GACjC,CAAC;GACD;;AAGH,MAAM,eAAe,QAAyB;AAC7C,KAAI,eAAe,MAAO,QAAO,IAAI;AACrC,KAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;AAC5C,MAAI,aAAa,OAAO,OAAO,IAAI,YAAY,SAAU,QAAO,IAAI;AACpE,MAAI,YAAY,OAAO,OAAO,IAAI,WAAW,SAAU,QAAO,IAAI;;AAEnE,QAAO,OAAO,IAAI;;AAGnB,MAAM,sBACL,UACA,QACA,UACA,WAC+C;AAC/C,KAAI,aAAa,KAAA,KAAa,WAAW,KAAA,KAAa,WAAW,GAChE,QAAO,OAAO;AAEf,QAAO,SAAS,QAAQ;EAAE,SAAS,OAAO;EAAS;EAAQ,CAAC,CAAC,KAC5D,OAAO,UACL,SAA+B;EAC/B,MAAM;EACN,QAAQ;EACR,QACC,oCAAoC,SAAS,iBAC5B,OAAO,KAAK,WAAW,OAAO,IAAI,YAAY,IAAI;EACpE,EACD,CACD;;AAGF,MAAM,kBACL,QAoBA,IAAI;AA2BL,MAAa,6BAA6B,OACzC,KACA,QACA,UACA,QACA,YAIK;CACL,MAAM,WAAwB,EAAE;CAChC,IAAI,kBAAkB;CACtB,IAAI,SAAwB;AAC5B,IAAG;EACF,MAAM,OAAO,MAAM,eAAe,IAAI,CAAC,KAAK,UAAU;GACrD,OAAO,OAAO;GACd;GACA;GACA,OAAO;GACP,CAAC;AACF,OAAK,MAAM,QAAQ,KAAK,SAAS;AAChC,YAAS,KAAK,KAAK;AACnB,sBAAmB,OAAO,KAAK,QAAQ;AACvC,OAAI,mBAAmB,OAAQ;;AAEhC,WAAS,KAAK;AACd,MAAI,mBAAmB,OAAQ;AAC/B,MAAI,CAAC,KAAK,YAAa;UACf,WAAW;AAEpB,KAAI,kBAAkB,UAAU,SAAS,WAAW,EACnD,OAAM,IAAI,MACT,cAAc,OAAO,KAAK,qBAAqB,SAAS,OAAO,QAAQ,aAC1D,OAAO,cAAc,gBAAgB,GAClD;AAGF,QAAO;EAAE;EAAU;EAAiB;;AAGrC,MAAM,sBACL,QAiBA,IAAI;AAiBL,MAAM,yBAAyB,OAC9B,KACA,aAKK;CAKL,MAAM,UAAS,MAJG,mBAAmB,IAAI,CAAC,cAAc,UAAU;EACjE;EACA,UAAU,EAAE,OAAO;GAAC;GAAa;GAAW;GAAS,EAAE;EACvD,CAAC,EACiB,UAAU;AAC7B,KACC,WAAW,KAAA,KACX,OAAO,aAAa,KAAA,KACpB,OAAO,YAAY,KAAA,KACnB,OAAO,WAAW,KAAA,EAElB,OAAM,IAAI,MAAM,WAAW,SAAS,wDAAwD;AAE7F,QAAO;EACN,UAAU,OAAO;EACjB,SAAS,OAAO,QAAQ,UAAU;EAClC,QAAQ,OAAO;EACf;;AAGF,MAAa,4BAA4B,OACxC,IACA,KACA,QACA,qBACI;CAEJ,MAAM,EAAE,aAAa,MAAM,2BAC1B,KACA,QACA,UAJuB,kBAAkB,kBAMzC,qCACA;CACD,MAAM,UAAU,MAAM,QAAQ,IAC7B,SAAS,KAAK,SAAS,uBAAuB,KAAK,KAAK,SAAS,CAAC,CAClE;AACD,IAAG,aAAa,gBAAgB;AAChC,IAAG,YAAY,6BAA6B;AAC5C,IAAG,cAAc,QAAQ;;AAG1B,MAAM,wBACL,MACA,UAEC,mBAAmB,KAAK,aAAa,KAAK,WAAY,KAAK,cAAc,KAAM,OAC/E,mBAAmB,KAAK,cAAc,KAAK,WAAY,KAAK,eAAe,KAAM;AAEnF,MAAM,eAAe,OACpB,IACA,KACA,UACA,YACI;CAUJ,MAAM,wBAAuB,MATV,IAAI,KAAK,UAAU,EAAE,UAAU,CAAC,EASlB,QAAQ,OAAO,QAAQ;AACxD,KAAI,yBAAyB,KAAA,EAC5B,OAAM,IAAI,MAAM,oBAAoB,SAAS,kBAAkB;AAEhE,QAAO,GAAG,gBAAgB;EACzB;EACA;EACA;EACA,CAAC;;AAGH,MAAM,2BAA2B,OAChC,IACA,KACA,QACA,UACA,WACI;AACJ,KAAI,mBAAmB,SAAS,KAAK,UAAU;EAC9C,MAAM,CAAC,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC;AAC3D,SAAO;;CAGR,MAAM,EAAE,UAAU,oBAAoB,MAAM,2BAC3C,KACA,QACA,UACA,QACA,wBACA;CAED,MAAM,gBAAgB,SAAS;AAC/B,KAAI,kBAAkB,KAAA,EACrB,OAAM,IAAI,MACT,cAAc,OAAO,KAAK,WAAW,SAAS,mCAC9C;CAEF,MAAM,QAAQ,MAAM,uBAAuB,KAAK,cAAc,SAAS;CACvE,MAAM,OAAO,MAAM,QAAQ,IAC1B,SAAS,MAAM,EAAE,CAAC,KAAK,SAAS,uBAAuB,KAAK,KAAK,SAAS,CAAC,CAC3E;CACD,MAAM,WAAW,GAAG,UAAU,MAAM;AACpC,KAAI,KAAK,SAAS,EACjB,IAAG,WACF,UACA,KAAK,KAAK,SAAS,GAAG,UAAU,KAAK,CAAC,CACtC;AAEF,KAAI,oBAAoB,OAAQ,QAAO;CACvC,MAAM,CAAC,QAAQ,GAAG,WAAW,UAAU,CAAC,GAAG,KAAK,IAAI,OAAO,CAAC,CAAC;AAC7D,QAAO;;AAGR,MAAa,qBACZ,WACA,KACA,OACA,QACA,KACA,OACA,UAEA,OAAO,IAAI,aAAa;CACvB,MAAM,SAAmC,EAAE;AAC3C,MAAK,MAAM,QAAQ,OAAO;EACzB,MAAM,OAAO,KAAK;AAClB,MAAI,SAAS,KAAA,KAAa,KAAK,OAAO,WAAW,EAAG;EACpD,MAAM,OAAO,WAAW,OAAO,KAAK,KAAK;AACzC,MAAI,SAAS,KAAA,EACZ,QAAO,OAAO,OAAO,KACpB,oBAAoB,gBAAgB,uBAAuB,KAAK,KAAK,oBAAoB,CACzF;EAGF,MAAM,SAAS,OAAO,UACpB,QAA4D;GAC5D,WAAW,iBAAiB,KAAK;GACjC,OAAOA,QAAa,MAAM;GAC1B,aAAa,eAAe,KAAK,QAAQ,MAAM,KAAK;GACpD,cAAc;GACd,SAAS,WAAW,qBAAqB,KAAK,OAAO;GACrD,SAAS,OAAO,IAAI,aAAa;AAChC,WAAO,mBACN,KAAK,qBACL,QACA,KAAK,cACL,KAAK,WACL;AACD,WAAO,mBACN,KAAK,sBACL,QACA,KAAK,eACL,KAAK,YACL;IAED,MAAM,UAAU,OAAO,iCAAiC;KACvD,QAAQ,IAAI;KACZ;KACA,OAAO,YAAY;MAClB,MAAM,KAAK,IAAI,aAAa;AAC5B,SAAG,UAAU,OAAO,QAAQ;AAC5B,YAAM,0BAA0B,IAAI,KAAK,QAAQ,qBAAqB,MAAM,KAAK,CAAC;MAClF,MAAM,WAAW,MAAM,aAAa,IAAI,KAAK,IAAI,YAAY,KAAK;MAClE,MAAM,aAAa,MAAM,aAAa,IAAI,KAAK,KAAK,QAAQ,KAAK;MACjE,MAAM,iBAAiB,GAAG,SAAS;OAClC,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,EAAE;OACb,CAAC;AACF,SAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC,gBAAgB,SAAS;OACrC,CAAC;AACF,YAAM,0BACL,IACA,KACA,QACA,KACA,gBACA,KAAK,cACL,KAAK,WACL;AACD,YAAM,0BACL,IACA,KACA,QACA,KACA,gBACA,KAAK,eACL,KAAK,YACL;MAED,MAAM,aAAa,GAAG,SAAS;OAC9B,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC,eAAe;OAC3B,CAAC;AACF,WAAK,MAAM,CAAC,OAAO,UAAU,KAAK,OAAO,SAAS,CACjD,IAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,eAAe,CAAC,KAAK,cAAc,KAAK,cAAc;OACtD,WAAW;QACV;QACA;QACA;QACA,GAAG,KAAK,IAAI,MAAM,iBAAiB,OAAO,QAAQ,EAAE,CAAC;QACrD,GAAG,KAAK,GAAG,qBAAqB;QAChC,GAAG,KAAK,GAAG,2BAA2B;QACtC,GAAG,KAAK,IAAI,MAAM,MAAM;QACxB,GAAG,KAAK,IAAI,MAAM,SAAS;QAC3B,GAAG,KAAK,KAAK,MAAM,SAAS,MAAM;QAClC,GAAG,KAAK,KAAK,MAAM,eAAe,MAAM;QACxC,GAAG,KAAK,IAAI,cAAc;QAC1B,GAAG,OAAO,OAAO;QACjB;OACD,CAAC;AAEH,SAAG,gBAAgB,CAAC,eAAe,EAAE,OAAO,QAAQ;AACpD,aAAO,GAAG,MAAM,EAAE,QAAQ,uBAAuB,IAAI,EAAE,CAAC;;KAEzD,CAAC,CAAC,KACF,OAAO,UACL,SAA+B;KAC/B,MAAM;KACN,QAAQ;KACR,QAAQ,8CAA8C,KAAK,KAAK,KAAK,IAAI;KACzE,EACD,CACD;IAED,MAAM,mBAAmB,0BAA0B,QAAQ,cAAc;AACzE,QAAI,qBAAqB,KACxB,QAAO,OAAO,OAAO,KAAK;KACzB,MAAM;KACN,QAAQ;KACR,QACC,mEACW,QAAQ,OAAO;KAC3B,CAAC;AAEH,WAAO;KAAE,UAAU,KAAK;KAAM;KAAkB,QAAQ,QAAQ;KAAQ;KACvE;GACF,gBAAgB,OAAO;GACvB,CAAC,CACD,KAAK,OAAO,UAAU,QAAQ,iBAAiB,gBAAgB,IAAI,CAAC,CAAC;AAEvE,SAAO,KAAK,OAAO;;AAEpB,QAAO;EACN,CAAC,KACF,OAAO,SAAS,sCAAsC,EACrD,YAAY;CACX,sBAAsB,IAAI;CAC1B,uBAAuB,MAAM,QAAQ,SAAS,KAAK,SAAS,KAAA,EAAU,CAAC;CACvE,EACD,CAAC,CACF"}
@@ -0,0 +1,29 @@
1
+ import { ConfigIssue } from "../../substrate/runtime/config-validation.mjs";
2
+ import { ForkIncompatibleError } from "../../substrate/runtime/mode-errors.mjs";
3
+
4
+ //#region src/plugins/deepbook/errors.d.ts
5
+ /** Phases for `DeepbookPluginError`. Closed sum — keeps the
6
+ * cause-walker's display table small. */
7
+ type DeepbookPhase = 'image-pull' | 'network' | 'publish' | 'create-pools' | 'pyth-publish' | 'pyth-feed' | 'pyth-pusher' | 'indexer' | 'server' | 'market-maker' | 'fund-deep' | 'margin-publish' | 'margin-seed' | 'mint-deep' | 'mint-usdc';
8
+ /** Generic Deepbook plugin error. Raised by the plugin's acquire
9
+ * body, sugar factories, and per-phase helpers. */
10
+ interface DeepbookPluginError {
11
+ readonly _tag: 'DeepbookPluginError';
12
+ readonly phase: DeepbookPhase;
13
+ readonly message: string;
14
+ readonly cause?: unknown;
15
+ /** Optional subprocess capture envelope. */
16
+ readonly stderr?: string;
17
+ readonly stdout?: string;
18
+ readonly exitCode?: number;
19
+ }
20
+ /** Configuration error — synchronous factory-time guards (missing
21
+ * required fields, conflicting pool ids, ambiguous publisher). */
22
+ interface DeepbookConfigError extends ConfigIssue {
23
+ readonly _tag: 'DeepbookConfigError';
24
+ }
25
+ /** Union of every error a deepbook-plugin caller may encounter. */
26
+ type DeepbookError = DeepbookPluginError | ForkIncompatibleError | DeepbookConfigError;
27
+ //#endregion
28
+ export { DeepbookConfigError, DeepbookError, DeepbookPhase, DeepbookPluginError };
29
+ //# sourceMappingURL=errors.d.mts.map
@@ -0,0 +1,26 @@
1
+ import { defineConfigError } from "../../substrate/runtime/config-validation.mjs";
2
+ //#region src/plugins/deepbook/errors.ts
3
+ const deepbookPluginError = (phase, message, parts = {}) => ({
4
+ _tag: "DeepbookPluginError",
5
+ phase,
6
+ message,
7
+ ...parts
8
+ });
9
+ const makeDeepbookConfigError = defineConfigError("DeepbookConfigError");
10
+ const deepbookConfigError = (field, message, hint, cause) => makeDeepbookConfigError({
11
+ field,
12
+ message,
13
+ hint,
14
+ cause
15
+ });
16
+ /** Error tags this plugin contributes — surfaced to the cause walker
17
+ * via `PluginErrorContribution`. */
18
+ const DEEPBOOK_ERROR_TAGS = [
19
+ "DeepbookPluginError",
20
+ "ForkIncompatibleError",
21
+ "DeepbookConfigError"
22
+ ];
23
+ //#endregion
24
+ export { DEEPBOOK_ERROR_TAGS, deepbookConfigError, deepbookPluginError };
25
+
26
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","names":[],"sources":["../../../src/plugins/deepbook/errors.ts"],"sourcesContent":["// Deepbook plugin — typed errors.\n//\n// Errors raised and consumed inside the DeepBook plugin live here.\n// Cross-service errors that deepbook *consumes* but the substrate\n// raises (e.g. `ArtifactPublishError`, `SuiExecuteError`,\n// `ContainerRuntimeError`) come from the substrate's primitives — we\n// don't redeclare those.\n//\n// `ForkIncompatibleError` is a cross-cutting mode-refusal shape\n// owned by `substrate/runtime/mode-errors.ts`; deepbook contributes\n// the `deepbookLocal` variant via the factory in `index.ts`.\n//\n// Effect v4: plain interfaces with `_tag` discriminator (per\n// surrounding L2 subsystem style — STYLE_GUIDE §2). `Effect.catchTag`\n// matches on `_tag`.\n\n// `ForkIncompatibleError` is the canonical substrate shape — import for\n// local use; do NOT re-export from this barrel. Consumers reach the\n// canonical type via `substrate/runtime/mode-errors.ts` (or the\n// root barrel once wired). Re-exporting per-plugin would collide with\n// the walrus / seal barrels under a single root-barrel re-export.\nimport { ForkIncompatibleError } from '../../substrate/runtime/mode-errors.ts';\nimport { defineConfigError, type ConfigIssue } from '../../substrate/runtime/config-validation.ts';\n\n/** Phases for `DeepbookPluginError`. Closed sum — keeps the\n * cause-walker's display table small. */\nexport type DeepbookPhase =\n\t| 'image-pull'\n\t| 'network'\n\t| 'publish'\n\t| 'create-pools'\n\t| 'pyth-publish'\n\t| 'pyth-feed'\n\t| 'pyth-pusher'\n\t| 'indexer'\n\t| 'server'\n\t| 'market-maker'\n\t| 'fund-deep'\n\t| 'margin-publish'\n\t| 'margin-seed'\n\t| 'mint-deep'\n\t| 'mint-usdc';\n\n/** Generic Deepbook plugin error. Raised by the plugin's acquire\n * body, sugar factories, and per-phase helpers. */\nexport interface DeepbookPluginError {\n\treadonly _tag: 'DeepbookPluginError';\n\treadonly phase: DeepbookPhase;\n\treadonly message: string;\n\treadonly cause?: unknown;\n\t/** Optional subprocess capture envelope. */\n\treadonly stderr?: string;\n\treadonly stdout?: string;\n\treadonly exitCode?: number;\n}\n\nexport const deepbookPluginError = (\n\tphase: DeepbookPhase,\n\tmessage: string,\n\tparts: Omit<DeepbookPluginError, '_tag' | 'phase' | 'message'> = {},\n): DeepbookPluginError => ({ _tag: 'DeepbookPluginError', phase, message, ...parts });\n\n/**\n * Synchronous factory-time refusal when the user explicitly composes\n * the local deepbook deploy against a fork network.\n *\n * Deepbook's publish path requires the Move SDK JSON-RPC against a\n * read-write chain; sui-fork is read-only over gRPC `simulate`. We\n * refuse synchronously at factory time with an actionable hint\n * pointing at `deepbook.live(...)` (when implemented) or the known\n * canonical deployment branch.\n *\n * Primary refusal is TYPE-LEVEL via the `deepbookFor(network).<mode>`\n * mode-narrowed namespace — fork networks expose no `local` branch.\n * This runtime shape is defense-in-depth for callers that bypass\n * the typed namespace (e.g. via dynamic dispatch).\n */\nexport const forkIncompatibleError = (network: string): ForkIncompatibleError =>\n\tnew ForkIncompatibleError({\n\t\tvariant: 'deepbookLocal',\n\t\tnetwork,\n\t\tmessage: 'deepbook local deploy does not support fork networks.',\n\t\thint:\n\t\t\t'deepbook local publish requires JSON-RPC + signing rights; sui-fork only exposes gRPC simulate. ' +\n\t\t\t'Use deepbookFor(network).known({...}) to wrap an already-deployed deepbook instance.',\n\t});\n\n/** Configuration error — synchronous factory-time guards (missing\n * required fields, conflicting pool ids, ambiguous publisher). */\nexport interface DeepbookConfigError extends ConfigIssue {\n\treadonly _tag: 'DeepbookConfigError';\n}\n\nconst makeDeepbookConfigError = defineConfigError('DeepbookConfigError');\n\nexport const deepbookConfigError = (\n\tfield: string,\n\tmessage: string,\n\thint?: string,\n\tcause?: unknown,\n): DeepbookConfigError => makeDeepbookConfigError({ field, message, hint, cause });\n\n/** Union of every error a deepbook-plugin caller may encounter. */\nexport type DeepbookError = DeepbookPluginError | ForkIncompatibleError | DeepbookConfigError;\n\n/** Error tags this plugin contributes — surfaced to the cause walker\n * via `PluginErrorContribution`. */\nexport const DEEPBOOK_ERROR_TAGS: ReadonlyArray<DeepbookError['_tag']> = [\n\t'DeepbookPluginError',\n\t'ForkIncompatibleError',\n\t'DeepbookConfigError',\n] as const;\n"],"mappings":";;AAwDA,MAAa,uBACZ,OACA,SACA,QAAiE,EAAE,MACzC;CAAE,MAAM;CAAuB;CAAO;CAAS,GAAG;CAAO;AAiCpF,MAAM,0BAA0B,kBAAkB,sBAAsB;AAExE,MAAa,uBACZ,OACA,SACA,MACA,UACyB,wBAAwB;CAAE;CAAO;CAAS;CAAM;CAAO,CAAC;;;AAOlF,MAAa,sBAA4D;CACxE;CACA;CACA;CACA"}
@@ -0,0 +1,8 @@
1
+ import { AccountFundingStrategy } from "../account/funding.mjs";
2
+ import { DeepbookPluginError } from "./errors.mjs";
3
+
4
+ //#region src/plugins/deepbook/faucet-strategy.d.ts
5
+ type DeepbookDeepFundingStrategy = AccountFundingStrategy<DeepbookPluginError>;
6
+ //#endregion
7
+ export { DeepbookDeepFundingStrategy };
8
+ //# sourceMappingURL=faucet-strategy.d.mts.map