@mysten-incubation/devstack 0.1.1 → 0.3.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 (861) hide show
  1. package/README.md +6 -3
  2. package/dashboard-ui/assets/grpc-Clz0oOtc.js +3 -0
  3. package/dashboard-ui/assets/index-B82Bh84P.css +1 -0
  4. package/dashboard-ui/assets/index-Cmqv9kiU.js +1283 -0
  5. package/dashboard-ui/index.html +2 -2
  6. package/dist/api/define-capabilities.d.mts +1 -20
  7. package/dist/api/define-capabilities.mjs +15 -22
  8. package/dist/api/define-capabilities.mjs.map +1 -1
  9. package/dist/api/define-devstack-with.d.mts +7 -1
  10. package/dist/api/define-devstack-with.mjs.map +1 -1
  11. package/dist/api/define-devstack.mjs.map +1 -1
  12. package/dist/api/define-plugin.d.mts +2 -1
  13. package/dist/api/inference-network.d.mts +31 -17
  14. package/dist/api/inference-network.mjs +40 -43
  15. package/dist/api/inference-network.mjs.map +1 -1
  16. package/dist/api/load-config.mjs +88 -0
  17. package/dist/api/load-config.mjs.map +1 -0
  18. package/dist/api/mode-narrowed-factory.d.mts +1 -1
  19. package/dist/api/mode-narrowed-factory.mjs.map +1 -1
  20. package/dist/api/run-stack-internal.mjs +203 -0
  21. package/dist/api/run-stack-internal.mjs.map +1 -0
  22. package/dist/api/run-stack.d.mts +82 -31
  23. package/dist/api/run-stack.mjs +22 -141
  24. package/dist/api/run-stack.mjs.map +1 -1
  25. package/dist/build-integrations/dapp-kit/index.d.mts +61 -0
  26. package/dist/build-integrations/dapp-kit/index.mjs +58 -0
  27. package/dist/build-integrations/dapp-kit/index.mjs.map +1 -0
  28. package/dist/build-integrations/playwright/config.d.mts +3 -31
  29. package/dist/build-integrations/playwright/config.mjs +2 -28
  30. package/dist/build-integrations/playwright/config.mjs.map +1 -1
  31. package/dist/build-integrations/playwright/errors.d.mts +4 -7
  32. package/dist/build-integrations/playwright/errors.mjs.map +1 -1
  33. package/dist/build-integrations/playwright/global-setup.d.mts +42 -71
  34. package/dist/build-integrations/playwright/global-setup.mjs +142 -218
  35. package/dist/build-integrations/playwright/global-setup.mjs.map +1 -1
  36. package/dist/build-integrations/playwright/index.d.mts +2 -2
  37. package/dist/build-integrations/playwright/index.mjs +2 -2
  38. package/dist/build-integrations/playwright/stack-context.d.mts +3 -1
  39. package/dist/build-integrations/playwright/stack-context.mjs +4 -2
  40. package/dist/build-integrations/playwright/stack-context.mjs.map +1 -1
  41. package/dist/build-integrations/playwright/wallet-context.mjs +44 -19
  42. package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -1
  43. package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -1
  44. package/dist/build-integrations/runtime/conventional-routes.mjs.map +1 -1
  45. package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -1
  46. package/dist/build-integrations/runtime/discover.d.mts +6 -4
  47. package/dist/build-integrations/runtime/discover.mjs +15 -4
  48. package/dist/build-integrations/runtime/discover.mjs.map +1 -1
  49. package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -1
  50. package/dist/build-integrations/runtime/errors.mjs.map +1 -1
  51. package/dist/build-integrations/runtime/read-stack-context.mjs +3 -3
  52. package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -1
  53. package/dist/build-integrations/runtime/resolve-discovery-env.d.mts +23 -7
  54. package/dist/build-integrations/runtime/resolve-discovery-env.mjs +25 -12
  55. package/dist/build-integrations/runtime/resolve-discovery-env.mjs.map +1 -1
  56. package/dist/build-integrations/runtime/stack-context.d.mts +2 -2
  57. package/dist/build-integrations/vite/index.d.mts +114 -19
  58. package/dist/build-integrations/vite/index.mjs +239 -28
  59. package/dist/build-integrations/vite/index.mjs.map +1 -1
  60. package/dist/build-integrations/vitest/config.d.mts +20 -2
  61. package/dist/build-integrations/vitest/config.mjs +15 -4
  62. package/dist/build-integrations/vitest/config.mjs.map +1 -1
  63. package/dist/build-integrations/vitest/env.d.mts +18 -10
  64. package/dist/build-integrations/vitest/env.mjs +11 -10
  65. package/dist/build-integrations/vitest/env.mjs.map +1 -1
  66. package/dist/build-integrations/vitest/errors.d.mts +7 -11
  67. package/dist/build-integrations/vitest/errors.mjs +3 -4
  68. package/dist/build-integrations/vitest/errors.mjs.map +1 -1
  69. package/dist/build-integrations/vitest/global-setup.d.mts +35 -0
  70. package/dist/build-integrations/vitest/global-setup.mjs +156 -0
  71. package/dist/build-integrations/vitest/global-setup.mjs.map +1 -0
  72. package/dist/build-integrations/vitest/index.d.mts +3 -2
  73. package/dist/build-integrations/vitest/index.mjs +3 -2
  74. package/dist/build-integrations/vitest/setup.mjs +2 -2
  75. package/dist/build-integrations/vitest/setup.mjs.map +1 -1
  76. package/dist/build-integrations/vitest/stack-context.d.mts +5 -3
  77. package/dist/build-integrations/vitest/stack-context.mjs +3 -2
  78. package/dist/build-integrations/vitest/stack-context.mjs.map +1 -1
  79. package/dist/cli/bail.mjs.map +1 -1
  80. package/dist/cli/doctor-probes.mjs +8 -5
  81. package/dist/cli/doctor-probes.mjs.map +1 -1
  82. package/dist/cli/main.d.mts +23 -1
  83. package/dist/cli/main.mjs +63 -8
  84. package/dist/cli/main.mjs.map +1 -1
  85. package/dist/cli/prune-direct.mjs.map +1 -1
  86. package/dist/cli/snapshot-reader.mjs.map +1 -1
  87. package/dist/cli/up-lifecycle.mjs.map +1 -1
  88. package/dist/cli/wirings/apply.mjs +28 -21
  89. package/dist/cli/wirings/apply.mjs.map +1 -1
  90. package/dist/cli/wirings/codegen.mjs +108 -0
  91. package/dist/cli/wirings/codegen.mjs.map +1 -0
  92. package/dist/cli/wirings/config-loader.mjs +12 -62
  93. package/dist/cli/wirings/config-loader.mjs.map +1 -1
  94. package/dist/cli/wirings/dump-ids.mjs +86 -0
  95. package/dist/cli/wirings/dump-ids.mjs.map +1 -0
  96. package/dist/cli/wirings/engine-command.mjs +1 -1
  97. package/dist/cli/wirings/engine-command.mjs.map +1 -1
  98. package/dist/cli/wirings/identity.mjs +2 -2
  99. package/dist/cli/wirings/identity.mjs.map +1 -1
  100. package/dist/cli/wirings/provide-file-system.mjs.map +1 -1
  101. package/dist/cli/wirings/read-devstack-version.mjs +17 -0
  102. package/dist/cli/wirings/read-devstack-version.mjs.map +1 -0
  103. package/dist/cli/wirings/snapshot.mjs +27 -34
  104. package/dist/cli/wirings/snapshot.mjs.map +1 -1
  105. package/dist/cli/wirings/up-ipc.mjs +147 -0
  106. package/dist/cli/wirings/up-ipc.mjs.map +1 -0
  107. package/dist/cli/wirings/up.mjs +225 -198
  108. package/dist/cli/wirings/up.mjs.map +1 -1
  109. package/dist/cli/wirings/wipe.mjs +1 -1
  110. package/dist/cli/wirings/wipe.mjs.map +1 -1
  111. package/dist/contracts/chain-probe.d.mts +1 -1
  112. package/dist/contracts/chain-probe.mjs +1 -1
  113. package/dist/contracts/chain-probe.mjs.map +1 -1
  114. package/dist/contracts/codegenable.d.mts +60 -6
  115. package/dist/contracts/codegenable.mjs +28 -0
  116. package/dist/contracts/codegenable.mjs.map +1 -0
  117. package/dist/contracts/config-bindings.mjs +162 -0
  118. package/dist/contracts/config-bindings.mjs.map +1 -0
  119. package/dist/contracts/container-runtime.d.mts +23 -17
  120. package/dist/contracts/plugin-expander.mjs.map +1 -1
  121. package/dist/contracts/snapshotable.d.mts +5 -7
  122. package/dist/contracts/wallet-protocol.d.mts +2 -5
  123. package/dist/contracts/wallet-protocol.mjs +2 -5
  124. package/dist/contracts/wallet-protocol.mjs.map +1 -1
  125. package/dist/index.d.mts +21 -26
  126. package/dist/index.mjs +8 -9
  127. package/dist/orchestrators/boot.d.mts +28 -0
  128. package/dist/orchestrators/boot.mjs +450 -0
  129. package/dist/orchestrators/boot.mjs.map +1 -0
  130. package/dist/orchestrators/codegen/bindings.d.mts +13 -1
  131. package/dist/orchestrators/codegen/bindings.mjs +23 -9
  132. package/dist/orchestrators/codegen/bindings.mjs.map +1 -1
  133. package/dist/orchestrators/codegen/config-runtime.mjs +208 -0
  134. package/dist/orchestrators/codegen/config-runtime.mjs.map +1 -0
  135. package/dist/orchestrators/codegen/emit.mjs +1 -1
  136. package/dist/orchestrators/codegen/emit.mjs.map +1 -1
  137. package/dist/orchestrators/codegen/errors.mjs +21 -1
  138. package/dist/orchestrators/codegen/errors.mjs.map +1 -1
  139. package/dist/orchestrators/codegen/format.mjs +2 -0
  140. package/dist/orchestrators/codegen/format.mjs.map +1 -1
  141. package/dist/orchestrators/codegen/gitignore.mjs +30 -11
  142. package/dist/orchestrators/codegen/gitignore.mjs.map +1 -1
  143. package/dist/orchestrators/codegen/id-config.mjs +107 -0
  144. package/dist/orchestrators/codegen/id-config.mjs.map +1 -0
  145. package/dist/orchestrators/codegen/output-location.mjs +23 -32
  146. package/dist/orchestrators/codegen/output-location.mjs.map +1 -1
  147. package/dist/orchestrators/codegen/paths.mjs +8 -1
  148. package/dist/orchestrators/codegen/paths.mjs.map +1 -1
  149. package/dist/orchestrators/codegen/permissions.mjs.map +1 -1
  150. package/dist/orchestrators/codegen/service.mjs +303 -60
  151. package/dist/orchestrators/codegen/service.mjs.map +1 -1
  152. package/dist/orchestrators/layers.mjs +31 -0
  153. package/dist/orchestrators/layers.mjs.map +1 -0
  154. package/dist/orchestrators/lifecycle-prune/errors.mjs.map +1 -1
  155. package/dist/orchestrators/lifecycle-prune/index.mjs +8 -10
  156. package/dist/orchestrators/lifecycle-prune/index.mjs.map +1 -1
  157. package/dist/orchestrators/network-options.d.mts +52 -0
  158. package/dist/orchestrators/network-options.mjs +43 -0
  159. package/dist/orchestrators/network-options.mjs.map +1 -0
  160. package/dist/orchestrators/router/cleanup.mjs.map +1 -1
  161. package/dist/orchestrators/router/cors.mjs.map +1 -1
  162. package/dist/orchestrators/router/entrypoints.mjs.map +1 -1
  163. package/dist/orchestrators/router/errors.mjs.map +1 -1
  164. package/dist/orchestrators/router/file-provider.mjs.map +1 -1
  165. package/dist/orchestrators/router/hostname.mjs.map +1 -1
  166. package/dist/orchestrators/router/profile.mjs +1 -1
  167. package/dist/orchestrators/router/profile.mjs.map +1 -1
  168. package/dist/orchestrators/router/service.d.mts +2 -2
  169. package/dist/orchestrators/router/service.mjs +12 -27
  170. package/dist/orchestrators/router/service.mjs.map +1 -1
  171. package/dist/orchestrators/router/traefik-container.mjs +1 -1
  172. package/dist/orchestrators/router/traefik-container.mjs.map +1 -1
  173. package/dist/orchestrators/snapshot/capture.mjs +171 -195
  174. package/dist/orchestrators/snapshot/capture.mjs.map +1 -1
  175. package/dist/orchestrators/snapshot/descriptor.d.mts +1 -1
  176. package/dist/orchestrators/snapshot/descriptor.mjs +53 -11
  177. package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -1
  178. package/dist/orchestrators/snapshot/identity-guard.mjs +3 -5
  179. package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -1
  180. package/dist/orchestrators/snapshot/image-bundle-tags.mjs +32 -101
  181. package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -1
  182. package/dist/orchestrators/snapshot/index.mjs +1 -4
  183. package/dist/orchestrators/snapshot/integrity.mjs.map +1 -1
  184. package/dist/orchestrators/snapshot/interrupted-restore.mjs +116 -0
  185. package/dist/orchestrators/snapshot/interrupted-restore.mjs.map +1 -0
  186. package/dist/orchestrators/snapshot/phase-error.mjs.map +1 -1
  187. package/dist/orchestrators/snapshot/prune.mjs +40 -31
  188. package/dist/orchestrators/snapshot/prune.mjs.map +1 -1
  189. package/dist/orchestrators/snapshot/restore.mjs +221 -196
  190. package/dist/orchestrators/snapshot/restore.mjs.map +1 -1
  191. package/dist/orchestrators/snapshot/service.mjs +72 -62
  192. package/dist/orchestrators/snapshot/service.mjs.map +1 -1
  193. package/dist/orchestrators/snapshot/wipe.mjs +67 -56
  194. package/dist/orchestrators/snapshot/wipe.mjs.map +1 -1
  195. package/dist/plugins/account/codegen.mjs +3 -0
  196. package/dist/plugins/account/codegen.mjs.map +1 -1
  197. package/dist/plugins/account/errors.d.mts +2 -2
  198. package/dist/plugins/account/errors.mjs +1 -4
  199. package/dist/plugins/account/errors.mjs.map +1 -1
  200. package/dist/plugins/account/funding.mjs +3 -27
  201. package/dist/plugins/account/funding.mjs.map +1 -1
  202. package/dist/plugins/account/index.d.mts +3 -8
  203. package/dist/plugins/account/index.mjs +71 -35
  204. package/dist/plugins/account/index.mjs.map +1 -1
  205. package/dist/plugins/account/keypair.d.mts +8 -7
  206. package/dist/plugins/account/keypair.mjs +5 -18
  207. package/dist/plugins/account/keypair.mjs.map +1 -1
  208. package/dist/plugins/account/lease.mjs.map +1 -1
  209. package/dist/plugins/account/registry.d.mts +1 -46
  210. package/dist/plugins/account/registry.mjs.map +1 -1
  211. package/dist/plugins/account/service.d.mts +43 -34
  212. package/dist/plugins/account/service.mjs +9 -54
  213. package/dist/plugins/account/service.mjs.map +1 -1
  214. package/dist/plugins/account/snapshot.mjs.map +1 -1
  215. package/dist/plugins/account/variants/ephemeral.mjs.map +1 -1
  216. package/dist/plugins/account/variants/impersonate.mjs.map +1 -1
  217. package/dist/plugins/account/variants/signer.mjs.map +1 -1
  218. package/dist/plugins/action/discriminator.mjs.map +1 -1
  219. package/dist/plugins/action/errors.mjs +1 -4
  220. package/dist/plugins/action/errors.mjs.map +1 -1
  221. package/dist/plugins/action/execute.mjs +3 -4
  222. package/dist/plugins/action/execute.mjs.map +1 -1
  223. package/dist/plugins/action/index.d.mts +2 -2
  224. package/dist/plugins/action/index.mjs +7 -11
  225. package/dist/plugins/action/index.mjs.map +1 -1
  226. package/dist/plugins/action/service.d.mts +5 -7
  227. package/dist/plugins/action/service.mjs +2 -16
  228. package/dist/plugins/action/service.mjs.map +1 -1
  229. package/dist/plugins/coin/address-resolution.mjs.map +1 -1
  230. package/dist/plugins/coin/codegen.mjs +97 -16
  231. package/dist/plugins/coin/codegen.mjs.map +1 -1
  232. package/dist/plugins/coin/discovery.mjs.map +1 -1
  233. package/dist/plugins/coin/errors.mjs +1 -4
  234. package/dist/plugins/coin/errors.mjs.map +1 -1
  235. package/dist/plugins/coin/index.d.mts +4 -34
  236. package/dist/plugins/coin/index.mjs +47 -28
  237. package/dist/plugins/coin/index.mjs.map +1 -1
  238. package/dist/plugins/coin/metadata.d.mts +1 -0
  239. package/dist/plugins/coin/metadata.mjs +8 -9
  240. package/dist/plugins/coin/metadata.mjs.map +1 -1
  241. package/dist/plugins/coin/mint.mjs +7 -21
  242. package/dist/plugins/coin/mint.mjs.map +1 -1
  243. package/dist/plugins/coin/registry.mjs +33 -20
  244. package/dist/plugins/coin/registry.mjs.map +1 -1
  245. package/dist/plugins/coin/service.d.mts +1 -1
  246. package/dist/plugins/coin/service.mjs +1 -8
  247. package/dist/plugins/coin/service.mjs.map +1 -1
  248. package/dist/plugins/coin/snapshot.mjs.map +1 -1
  249. package/dist/plugins/coin/type-strings.mjs.map +1 -1
  250. package/dist/plugins/dashboard/domain.mjs +124 -168
  251. package/dist/plugins/dashboard/domain.mjs.map +1 -1
  252. package/dist/plugins/dashboard/index.mjs +13 -13
  253. package/dist/plugins/dashboard/index.mjs.map +1 -1
  254. package/dist/plugins/dashboard/origin-policy.mjs +3 -3
  255. package/dist/plugins/dashboard/origin-policy.mjs.map +1 -1
  256. package/dist/plugins/dashboard/routable.mjs.map +1 -1
  257. package/dist/plugins/dashboard/schema/builder.mjs.map +1 -1
  258. package/dist/plugins/dashboard/schema/enums.mjs.map +1 -1
  259. package/dist/plugins/dashboard/schema/root.mjs +25 -46
  260. package/dist/plugins/dashboard/schema/root.mjs.map +1 -1
  261. package/dist/plugins/dashboard/schema/types.mjs +52 -93
  262. package/dist/plugins/dashboard/schema/types.mjs.map +1 -1
  263. package/dist/plugins/dashboard/schema.mjs.map +1 -1
  264. package/dist/plugins/dashboard/server.mjs.map +1 -1
  265. package/dist/plugins/deepbook/codegen.d.mts +12 -11
  266. package/dist/plugins/deepbook/codegen.mjs +108 -11
  267. package/dist/plugins/deepbook/codegen.mjs.map +1 -1
  268. package/dist/plugins/deepbook/deploy.mjs +7 -14
  269. package/dist/plugins/deepbook/deploy.mjs.map +1 -1
  270. package/dist/plugins/deepbook/errors.mjs +4 -2
  271. package/dist/plugins/deepbook/errors.mjs.map +1 -1
  272. package/dist/plugins/deepbook/faucet-strategy.mjs +4 -10
  273. package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -1
  274. package/dist/plugins/deepbook/hash.mjs.map +1 -1
  275. package/dist/plugins/deepbook/index.d.mts +45 -37
  276. package/dist/plugins/deepbook/index.mjs +136 -67
  277. package/dist/plugins/deepbook/index.mjs.map +1 -1
  278. package/dist/plugins/deepbook/plugin-key.mjs.map +1 -1
  279. package/dist/plugins/deepbook/pyth/index.mjs +4 -8
  280. package/dist/plugins/deepbook/pyth/index.mjs.map +1 -1
  281. package/dist/plugins/deepbook/snapshot.mjs +0 -1
  282. package/dist/plugins/deepbook/snapshot.mjs.map +1 -1
  283. package/dist/plugins/deepbook/type-strings.mjs.map +1 -1
  284. package/dist/plugins/deepbook/types.d.mts +2 -1
  285. package/dist/plugins/deepbook/types.mjs.map +1 -1
  286. package/dist/plugins/faucet/dispatcher.d.mts +3 -3
  287. package/dist/plugins/faucet/dispatcher.mjs.map +1 -1
  288. package/dist/plugins/faucet/errors.mjs.map +1 -1
  289. package/dist/plugins/faucet/http.mjs +2 -10
  290. package/dist/plugins/faucet/http.mjs.map +1 -1
  291. package/dist/plugins/faucet/index.mjs +0 -1
  292. package/dist/plugins/faucet/index.mjs.map +1 -1
  293. package/dist/plugins/host-service/errors.d.mts +1 -3
  294. package/dist/plugins/host-service/errors.mjs +1 -2
  295. package/dist/plugins/host-service/errors.mjs.map +1 -1
  296. package/dist/plugins/host-service/index.d.mts +1 -2
  297. package/dist/plugins/host-service/index.mjs +11 -11
  298. package/dist/plugins/host-service/index.mjs.map +1 -1
  299. package/dist/plugins/host-service/routable.mjs.map +1 -1
  300. package/dist/plugins/host-service/service.mjs +13 -13
  301. package/dist/plugins/host-service/service.mjs.map +1 -1
  302. package/dist/plugins/internal/acquire-on-chain-artifact.mjs.map +1 -1
  303. package/dist/plugins/internal/codegen-helpers.mjs +2 -0
  304. package/dist/plugins/internal/codegen-helpers.mjs.map +1 -1
  305. package/dist/plugins/internal/funding-failure-error.mjs.map +1 -1
  306. package/dist/plugins/{postgres → internal/postgres-sidecar}/connection.mjs +1 -1
  307. package/dist/plugins/internal/postgres-sidecar/connection.mjs.map +1 -0
  308. package/dist/plugins/{postgres → internal/postgres-sidecar}/db-ensure.mjs +30 -16
  309. package/dist/plugins/internal/postgres-sidecar/db-ensure.mjs.map +1 -0
  310. package/dist/plugins/internal/postgres-sidecar/errors.mjs +21 -0
  311. package/dist/plugins/internal/postgres-sidecar/errors.mjs.map +1 -0
  312. package/dist/{substrate/runtime/scoped-multimap → plugins/internal/postgres-sidecar}/index.mjs +1 -0
  313. package/dist/plugins/internal/postgres-sidecar/service.mjs +121 -0
  314. package/dist/plugins/internal/postgres-sidecar/service.mjs.map +1 -0
  315. package/dist/plugins/package/build.mjs +2 -2
  316. package/dist/plugins/package/build.mjs.map +1 -1
  317. package/dist/plugins/package/codegen.d.mts +7 -14
  318. package/dist/plugins/package/codegen.mjs +187 -59
  319. package/dist/plugins/package/codegen.mjs.map +1 -1
  320. package/dist/plugins/package/dep-resolution.mjs +51 -3
  321. package/dist/plugins/package/dep-resolution.mjs.map +1 -1
  322. package/dist/plugins/package/errors.mjs +1 -4
  323. package/dist/plugins/package/errors.mjs.map +1 -1
  324. package/dist/plugins/package/git-source.d.mts +18 -0
  325. package/dist/plugins/package/git-source.mjs +119 -0
  326. package/dist/plugins/package/git-source.mjs.map +1 -0
  327. package/dist/plugins/package/index.d.mts +28 -19
  328. package/dist/plugins/package/index.mjs +107 -32
  329. package/dist/plugins/package/index.mjs.map +1 -1
  330. package/dist/plugins/package/mode-known.mjs +2 -2
  331. package/dist/plugins/package/mode-known.mjs.map +1 -1
  332. package/dist/plugins/package/mode-local.mjs +18 -35
  333. package/dist/plugins/package/mode-local.mjs.map +1 -1
  334. package/dist/plugins/package/publish-executor.mjs +13 -8
  335. package/dist/plugins/package/publish-executor.mjs.map +1 -1
  336. package/dist/plugins/package/publish-output.d.mts +1 -11
  337. package/dist/plugins/package/publish-output.mjs +1 -9
  338. package/dist/plugins/package/publish-output.mjs.map +1 -1
  339. package/dist/plugins/package/registry.d.mts +1 -1
  340. package/dist/plugins/package/registry.mjs +26 -14
  341. package/dist/plugins/package/registry.mjs.map +1 -1
  342. package/dist/plugins/package/service.mjs.map +1 -1
  343. package/dist/plugins/package/snapshot.mjs.map +1 -1
  344. package/dist/plugins/router-entrypoints.mjs +1 -3
  345. package/dist/plugins/router-entrypoints.mjs.map +1 -1
  346. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +1 -2
  347. package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -1
  348. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +1 -6
  349. package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -1
  350. package/dist/plugins/seal/codegen.d.mts +1 -5
  351. package/dist/plugins/seal/codegen.mjs +83 -12
  352. package/dist/plugins/seal/codegen.mjs.map +1 -1
  353. package/dist/plugins/seal/config-render.mjs +2 -6
  354. package/dist/plugins/seal/config-render.mjs.map +1 -1
  355. package/dist/plugins/seal/deploy.mjs +18 -29
  356. package/dist/plugins/seal/deploy.mjs.map +1 -1
  357. package/dist/plugins/seal/errors.d.mts +4 -5
  358. package/dist/plugins/seal/errors.mjs +1 -8
  359. package/dist/plugins/seal/errors.mjs.map +1 -1
  360. package/dist/plugins/seal/index.d.mts +7 -28
  361. package/dist/plugins/seal/index.mjs +69 -47
  362. package/dist/plugins/seal/index.mjs.map +1 -1
  363. package/dist/plugins/seal/key-manager.mjs.map +1 -1
  364. package/dist/plugins/seal/key-server.mjs +1 -6
  365. package/dist/plugins/seal/key-server.mjs.map +1 -1
  366. package/dist/plugins/seal/keygen.mjs +2 -3
  367. package/dist/plugins/seal/keygen.mjs.map +1 -1
  368. package/dist/plugins/seal/mode/fork-known.mjs.map +1 -1
  369. package/dist/plugins/seal/mode/live.mjs +1 -1
  370. package/dist/plugins/seal/mode/live.mjs.map +1 -1
  371. package/dist/plugins/seal/mode/local-keygen.mjs +4 -10
  372. package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -1
  373. package/dist/plugins/seal/plugin-key.mjs.map +1 -1
  374. package/dist/plugins/seal/registry-publish.mjs.map +1 -1
  375. package/dist/plugins/seal/routable.mjs.map +1 -1
  376. package/dist/plugins/seal/service.mjs.map +1 -1
  377. package/dist/plugins/seal/snapshot.mjs +1 -2
  378. package/dist/plugins/seal/snapshot.mjs.map +1 -1
  379. package/dist/plugins/sui/auto-tick.mjs +5 -5
  380. package/dist/plugins/sui/auto-tick.mjs.map +1 -1
  381. package/dist/plugins/sui/chain-build-container.mjs +2 -2
  382. package/dist/plugins/sui/chain-build-container.mjs.map +1 -1
  383. package/dist/plugins/sui/chain-probe.mjs +4 -4
  384. package/dist/plugins/sui/chain-probe.mjs.map +1 -1
  385. package/dist/plugins/sui/codegen.d.mts +9 -7
  386. package/dist/plugins/sui/codegen.mjs +49 -46
  387. package/dist/plugins/sui/codegen.mjs.map +1 -1
  388. package/dist/plugins/sui/errors.d.mts +1 -1
  389. package/dist/plugins/sui/errors.mjs +1 -9
  390. package/dist/plugins/sui/errors.mjs.map +1 -1
  391. package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.d.mts +1 -1
  392. package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.mjs +3 -7
  393. package/dist/plugins/sui/exec/index.mjs.map +1 -0
  394. package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.mjs +1 -1
  395. package/dist/plugins/sui/exec/sign-and-dispatch.mjs.map +1 -0
  396. package/dist/plugins/sui/fork-faucet-strategy.mjs +2 -6
  397. package/dist/plugins/sui/fork-faucet-strategy.mjs.map +1 -1
  398. package/dist/plugins/sui/fork-orchestration.mjs +13 -23
  399. package/dist/plugins/sui/fork-orchestration.mjs.map +1 -1
  400. package/dist/plugins/sui/fork-transaction.mjs.map +1 -1
  401. package/dist/plugins/sui/index.d.mts +44 -93
  402. package/dist/plugins/sui/index.mjs +200 -68
  403. package/dist/plugins/sui/index.mjs.map +1 -1
  404. package/dist/{substrate/runtime/sui-ledger → plugins/sui/ledger}/object-ref.mjs +1 -1
  405. package/dist/plugins/sui/ledger/object-ref.mjs.map +1 -0
  406. package/dist/plugins/sui/local-faucet-strategy.mjs +1 -5
  407. package/dist/plugins/sui/local-faucet-strategy.mjs.map +1 -1
  408. package/dist/plugins/sui/log-attrs.mjs +11 -0
  409. package/dist/plugins/sui/log-attrs.mjs.map +1 -0
  410. package/dist/plugins/sui/mode/external.mjs +4 -12
  411. package/dist/plugins/sui/mode/external.mjs.map +1 -1
  412. package/dist/plugins/sui/mode/fork.mjs +19 -16
  413. package/dist/plugins/sui/mode/fork.mjs.map +1 -1
  414. package/dist/plugins/sui/mode/live.mjs +4 -17
  415. package/dist/plugins/sui/mode/live.mjs.map +1 -1
  416. package/dist/plugins/sui/mode/local.d.mts +1 -0
  417. package/dist/plugins/sui/mode/local.mjs +203 -61
  418. package/dist/plugins/sui/mode/local.mjs.map +1 -1
  419. package/dist/plugins/sui/mode/shared-boot.mjs +18 -23
  420. package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -1
  421. package/dist/plugins/sui/mode/shared.d.mts +6 -7
  422. package/dist/plugins/sui/mode/shared.mjs.map +1 -1
  423. package/dist/plugins/sui/mode/spec.d.mts +23 -6
  424. package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.mjs +28 -30
  425. package/dist/plugins/sui/move/index.mjs.map +1 -0
  426. package/dist/plugins/sui/move-summary-runner.mjs +37 -6
  427. package/dist/plugins/sui/move-summary-runner.mjs.map +1 -1
  428. package/dist/{substrate/network.d.mts → plugins/sui/network-config.d.mts} +11 -10
  429. package/dist/plugins/sui/network-resolver.d.mts +6 -6
  430. package/dist/plugins/sui/routable.mjs.map +1 -1
  431. package/dist/plugins/sui/service.mjs +10 -6
  432. package/dist/plugins/sui/service.mjs.map +1 -1
  433. package/dist/plugins/sui/snapshot.mjs +10 -5
  434. package/dist/plugins/sui/snapshot.mjs.map +1 -1
  435. package/dist/plugins/wallet/codegen.d.mts +8 -6
  436. package/dist/plugins/wallet/codegen.mjs +4 -10
  437. package/dist/plugins/wallet/codegen.mjs.map +1 -1
  438. package/dist/plugins/wallet/errors.mjs +1 -4
  439. package/dist/plugins/wallet/errors.mjs.map +1 -1
  440. package/dist/plugins/wallet/index.d.mts +3 -6
  441. package/dist/plugins/wallet/index.mjs +16 -21
  442. package/dist/plugins/wallet/index.mjs.map +1 -1
  443. package/dist/plugins/wallet/origin-policy.mjs +3 -3
  444. package/dist/plugins/wallet/origin-policy.mjs.map +1 -1
  445. package/dist/plugins/wallet/pairing.mjs +6 -24
  446. package/dist/plugins/wallet/pairing.mjs.map +1 -1
  447. package/dist/plugins/wallet/protocol.mjs.map +1 -1
  448. package/dist/plugins/wallet/routable.mjs.map +1 -1
  449. package/dist/plugins/wallet/server.mjs +17 -24
  450. package/dist/plugins/wallet/server.mjs.map +1 -1
  451. package/dist/plugins/wallet/service.d.mts +2 -2
  452. package/dist/plugins/wallet/service.mjs +4 -15
  453. package/dist/plugins/wallet/service.mjs.map +1 -1
  454. package/dist/plugins/wallet/snapshot.mjs.map +1 -1
  455. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +1 -5
  456. package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -1
  457. package/dist/plugins/walrus/codegen.d.mts +2 -13
  458. package/dist/plugins/walrus/codegen.mjs +93 -28
  459. package/dist/plugins/walrus/codegen.mjs.map +1 -1
  460. package/dist/plugins/walrus/deploy-paths.mjs +2 -3
  461. package/dist/plugins/walrus/deploy-paths.mjs.map +1 -1
  462. package/dist/plugins/walrus/deploy.mjs +26 -19
  463. package/dist/plugins/walrus/deploy.mjs.map +1 -1
  464. package/dist/plugins/walrus/errors.mjs +1 -8
  465. package/dist/plugins/walrus/errors.mjs.map +1 -1
  466. package/dist/plugins/walrus/faucet-strategy.mjs +15 -1
  467. package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -1
  468. package/dist/plugins/walrus/index.d.mts +13 -44
  469. package/dist/plugins/walrus/index.mjs +119 -122
  470. package/dist/plugins/walrus/index.mjs.map +1 -1
  471. package/dist/plugins/walrus/mode/known-deploy.mjs +6 -6
  472. package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -1
  473. package/dist/plugins/walrus/mode/local-cluster.d.mts +2 -2
  474. package/dist/plugins/walrus/mode/local-cluster.mjs +2 -10
  475. package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -1
  476. package/dist/plugins/walrus/plugin-key.mjs.map +1 -1
  477. package/dist/plugins/walrus/registry-publish.mjs.map +1 -1
  478. package/dist/plugins/walrus/routable.mjs.map +1 -1
  479. package/dist/plugins/walrus/service.mjs.map +1 -1
  480. package/dist/plugins/walrus/snapshot.mjs +3 -3
  481. package/dist/plugins/walrus/snapshot.mjs.map +1 -1
  482. package/dist/plugins/walrus/storage-nodes.mjs +53 -14
  483. package/dist/plugins/walrus/storage-nodes.mjs.map +1 -1
  484. package/dist/plugins/walrus/wal-swap.mjs +4 -8
  485. package/dist/plugins/walrus/wal-swap.mjs.map +1 -1
  486. package/dist/primitives/artifact-publisher.mjs.map +1 -1
  487. package/dist/primitives/cache.d.mts +1 -1
  488. package/dist/runtime/docker/client.mjs +47 -3
  489. package/dist/runtime/docker/client.mjs.map +1 -1
  490. package/dist/runtime/docker/container.mjs +37 -57
  491. package/dist/runtime/docker/container.mjs.map +1 -1
  492. package/dist/runtime/docker/errors.mjs.map +1 -1
  493. package/dist/runtime/docker/exec.mjs +2 -2
  494. package/dist/runtime/docker/exec.mjs.map +1 -1
  495. package/dist/runtime/docker/image.mjs +10 -11
  496. package/dist/runtime/docker/image.mjs.map +1 -1
  497. package/dist/runtime/docker/index.mjs +0 -1
  498. package/dist/runtime/docker/inspect-and-decode.mjs.map +1 -1
  499. package/dist/runtime/docker/inventory.mjs +9 -9
  500. package/dist/runtime/docker/inventory.mjs.map +1 -1
  501. package/dist/runtime/docker/labels.mjs +12 -1
  502. package/dist/runtime/docker/labels.mjs.map +1 -1
  503. package/dist/runtime/docker/network.mjs +6 -6
  504. package/dist/runtime/docker/network.mjs.map +1 -1
  505. package/dist/runtime/docker/render-run-args.mjs.map +1 -1
  506. package/dist/runtime/docker/service.mjs +31 -45
  507. package/dist/runtime/docker/service.mjs.map +1 -1
  508. package/dist/runtime/docker/sweep.mjs +14 -64
  509. package/dist/runtime/docker/sweep.mjs.map +1 -1
  510. package/dist/runtime/docker/volume.mjs +1 -1
  511. package/dist/runtime/docker/volume.mjs.map +1 -1
  512. package/dist/runtime/docker/wrap.mjs +14 -2
  513. package/dist/runtime/docker/wrap.mjs.map +1 -1
  514. package/dist/substrate/brand.d.mts +2 -5
  515. package/dist/substrate/brand.mjs +3 -2
  516. package/dist/substrate/brand.mjs.map +1 -1
  517. package/dist/substrate/cross-process.mjs +2 -16
  518. package/dist/substrate/cross-process.mjs.map +1 -1
  519. package/dist/substrate/event-time.mjs +0 -2
  520. package/dist/substrate/event-time.mjs.map +1 -1
  521. package/dist/substrate/events.d.mts +46 -16
  522. package/dist/substrate/identity.d.mts +11 -5
  523. package/dist/substrate/manifest.d.mts +33 -26
  524. package/dist/substrate/manifest.mjs +8 -3
  525. package/dist/substrate/manifest.mjs.map +1 -1
  526. package/dist/substrate/options.d.mts +33 -4
  527. package/dist/substrate/plugin-ctx.d.mts +70 -0
  528. package/dist/substrate/plugin-ctx.mjs +66 -0
  529. package/dist/substrate/plugin-ctx.mjs.map +1 -0
  530. package/dist/substrate/plugin.d.mts +46 -38
  531. package/dist/substrate/plugin.mjs +13 -9
  532. package/dist/substrate/plugin.mjs.map +1 -1
  533. package/dist/substrate/projection.d.mts +1 -1
  534. package/dist/substrate/runtime/atomic-write.mjs +3 -4
  535. package/dist/substrate/runtime/atomic-write.mjs.map +1 -1
  536. package/dist/substrate/runtime/cache/schema.mjs.map +1 -1
  537. package/dist/substrate/runtime/cache/service.mjs +50 -20
  538. package/dist/substrate/runtime/cache/service.mjs.map +1 -1
  539. package/dist/substrate/runtime/config-validation.mjs.map +1 -1
  540. package/dist/substrate/runtime/control-plane/domain.mjs +34 -12
  541. package/dist/substrate/runtime/control-plane/domain.mjs.map +1 -1
  542. package/dist/substrate/runtime/control-plane/service.mjs.map +1 -1
  543. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +14 -17
  544. package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -1
  545. package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -1
  546. package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -1
  547. package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -1
  548. package/dist/substrate/runtime/cross-process/index.mjs +0 -2
  549. package/dist/substrate/runtime/cross-process/live-clock.mjs +1 -1
  550. package/dist/substrate/runtime/cross-process/live-clock.mjs.map +1 -1
  551. package/dist/substrate/runtime/cross-process/liveness.mjs +11 -18
  552. package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -1
  553. package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs +2 -2
  554. package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs.map +1 -1
  555. package/dist/substrate/runtime/cross-process/roster.mjs +17 -127
  556. package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -1
  557. package/dist/substrate/runtime/cross-process/self-pid.mjs.map +1 -1
  558. package/dist/substrate/runtime/cross-process/stack-lock.mjs +29 -28
  559. package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -1
  560. package/dist/substrate/runtime/current-plugin.mjs.map +1 -1
  561. package/dist/substrate/runtime/errors.mjs +1 -13
  562. package/dist/substrate/runtime/errors.mjs.map +1 -1
  563. package/dist/substrate/runtime/format-unknown-error.mjs.map +1 -1
  564. package/dist/substrate/runtime/host-bind-mount-owner.mjs.map +1 -1
  565. package/dist/substrate/runtime/host-gateway.mjs.map +1 -1
  566. package/dist/substrate/runtime/host-tree-tar/index.mjs +15 -163
  567. package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -1
  568. package/dist/substrate/runtime/http-probe.d.mts +1 -3
  569. package/dist/substrate/runtime/http-probe.mjs.map +1 -1
  570. package/dist/substrate/runtime/index.mjs +2 -6
  571. package/dist/substrate/runtime/lease-broker/service.mjs +5 -23
  572. package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -1
  573. package/dist/substrate/runtime/lifecycle/dep-graph.mjs +3 -3
  574. package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -1
  575. package/dist/substrate/runtime/lifecycle/file-watcher.mjs +54 -0
  576. package/dist/substrate/runtime/lifecycle/file-watcher.mjs.map +1 -0
  577. package/dist/substrate/runtime/lifecycle/graph-input-id.d.mts +1 -0
  578. package/dist/substrate/runtime/lifecycle/graph-input-id.mjs +133 -0
  579. package/dist/substrate/runtime/lifecycle/graph-input-id.mjs.map +1 -0
  580. package/dist/substrate/runtime/lifecycle/index.mjs +3 -2
  581. package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -1
  582. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +22 -1
  583. package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -1
  584. package/dist/substrate/runtime/lifecycle/ready-gate.mjs +2 -15
  585. package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -1
  586. package/dist/substrate/runtime/lifecycle/selective-restart.mjs +29 -25
  587. package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -1
  588. package/dist/substrate/runtime/lifecycle/signals.mjs +1 -1
  589. package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -1
  590. package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -1
  591. package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -1
  592. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +76 -7
  593. package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -1
  594. package/dist/substrate/runtime/managed-container.d.mts +5 -1
  595. package/dist/substrate/runtime/managed-container.mjs +8 -10
  596. package/dist/substrate/runtime/managed-container.mjs.map +1 -1
  597. package/dist/substrate/runtime/manifest/manifest.mjs +8 -30
  598. package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -1
  599. package/dist/substrate/runtime/mode-errors.d.mts +1 -2
  600. package/dist/substrate/runtime/mode-errors.mjs.map +1 -1
  601. package/dist/substrate/runtime/observability/cascade-formatter.mjs +1 -11
  602. package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -1
  603. package/dist/substrate/runtime/observability/ignore-with-log.mjs.map +1 -1
  604. package/dist/substrate/runtime/observability/index.d.mts +1 -1
  605. package/dist/substrate/runtime/observability/index.mjs +4 -6
  606. package/dist/substrate/runtime/observability/log-attrs.mjs +46 -0
  607. package/dist/substrate/runtime/observability/log-attrs.mjs.map +1 -0
  608. package/dist/substrate/runtime/observability/log-store.mjs.map +1 -1
  609. package/dist/substrate/runtime/observability/logger.mjs +3 -3
  610. package/dist/substrate/runtime/observability/logger.mjs.map +1 -1
  611. package/dist/substrate/runtime/observability/output-truncate.mjs.map +1 -1
  612. package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -1
  613. package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -1
  614. package/dist/substrate/runtime/observability/redaction.mjs.map +1 -1
  615. package/dist/substrate/runtime/observability/subprocess-capture.mjs +2 -2
  616. package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -1
  617. package/dist/substrate/runtime/passthrough-or-wrap.mjs.map +1 -1
  618. package/dist/substrate/runtime/paths.mjs +27 -9
  619. package/dist/substrate/runtime/paths.mjs.map +1 -1
  620. package/dist/substrate/runtime/phase-preserving-produce.mjs.map +1 -1
  621. package/dist/substrate/runtime/port-broker/service.mjs +10 -27
  622. package/dist/substrate/runtime/port-broker/service.mjs.map +1 -1
  623. package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -1
  624. package/dist/substrate/runtime/probes.d.mts +2 -3
  625. package/dist/substrate/runtime/probes.mjs.map +1 -1
  626. package/dist/substrate/runtime/process-supervisor.mjs.map +1 -1
  627. package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -1
  628. package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -1
  629. package/dist/substrate/runtime/projection/update.mjs +87 -11
  630. package/dist/substrate/runtime/projection/update.mjs.map +1 -1
  631. package/dist/substrate/runtime/random-suffix.mjs.map +1 -1
  632. package/dist/substrate/runtime/reconcile/fs-plan.mjs +146 -0
  633. package/dist/substrate/runtime/reconcile/fs-plan.mjs.map +1 -0
  634. package/dist/substrate/runtime/reconcile/graph.mjs +19 -0
  635. package/dist/substrate/runtime/reconcile/graph.mjs.map +1 -0
  636. package/dist/substrate/runtime/reconcile/index.mjs +5 -0
  637. package/dist/substrate/runtime/reconcile/label.mjs +41 -0
  638. package/dist/substrate/runtime/reconcile/label.mjs.map +1 -0
  639. package/dist/substrate/runtime/reconcile/spec.mjs +15 -0
  640. package/dist/substrate/runtime/reconcile/spec.mjs.map +1 -0
  641. package/dist/substrate/runtime/retry-policy.d.mts +2 -3
  642. package/dist/substrate/runtime/retry-policy.mjs.map +1 -1
  643. package/dist/substrate/runtime/routed-url.mjs.map +1 -1
  644. package/dist/substrate/runtime/runtime-decode.mjs.map +1 -1
  645. package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -1
  646. package/dist/substrate/runtime/stage-and-swap/index.mjs +49 -12
  647. package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -1
  648. package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.mjs.map +1 -1
  649. package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -1
  650. package/dist/substrate/runtime/strategy-registry/service.mjs +29 -17
  651. package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -1
  652. package/dist/substrate/runtime/subnet-broker.mjs.map +1 -1
  653. package/dist/substrate/runtime/supervisor/acquire-node.mjs +188 -56
  654. package/dist/substrate/runtime/supervisor/acquire-node.mjs.map +1 -1
  655. package/dist/substrate/runtime/supervisor/background-tasks.mjs +79 -65
  656. package/dist/substrate/runtime/supervisor/background-tasks.mjs.map +1 -1
  657. package/dist/substrate/runtime/supervisor/command-loop.mjs +82 -23
  658. package/dist/substrate/runtime/supervisor/command-loop.mjs.map +1 -1
  659. package/dist/substrate/runtime/supervisor/contribution-dispatcher.d.mts +1 -0
  660. package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs +16 -0
  661. package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs.map +1 -0
  662. package/dist/substrate/runtime/supervisor/errors.mjs +11 -2
  663. package/dist/substrate/runtime/supervisor/errors.mjs.map +1 -1
  664. package/dist/substrate/runtime/supervisor/index.mjs +2 -0
  665. package/dist/substrate/runtime/supervisor/shutdown.mjs +6 -6
  666. package/dist/substrate/runtime/supervisor/shutdown.mjs.map +1 -1
  667. package/dist/substrate/runtime/supervisor/start-supervisor.mjs +61 -75
  668. package/dist/substrate/runtime/supervisor/start-supervisor.mjs.map +1 -1
  669. package/dist/substrate/runtime/supervisor/state.d.mts +1 -1
  670. package/dist/substrate/runtime/supervisor/state.mjs +1 -1
  671. package/dist/substrate/runtime/supervisor/state.mjs.map +1 -1
  672. package/dist/substrate/runtime/supervisor/teardown.mjs +10 -9
  673. package/dist/substrate/runtime/supervisor/teardown.mjs.map +1 -1
  674. package/dist/substrate/runtime/supervisor/wiring.mjs +6 -20
  675. package/dist/substrate/runtime/supervisor/wiring.mjs.map +1 -1
  676. package/dist/substrate/runtime/tar/reader.mjs +216 -0
  677. package/dist/substrate/runtime/tar/reader.mjs.map +1 -0
  678. package/dist/substrate/runtime/typed-env.mjs.map +1 -1
  679. package/dist/substrate/versioned-doc-schema.mjs.map +1 -1
  680. package/dist/substrate/versioned-doc-sync.mjs +5 -5
  681. package/dist/substrate/versioned-doc-sync.mjs.map +1 -1
  682. package/dist/surfaces/cli/command-tree.mjs +49 -7
  683. package/dist/surfaces/cli/command-tree.mjs.map +1 -1
  684. package/dist/surfaces/cli/commands/config.mjs +1 -1
  685. package/dist/surfaces/cli/commands/config.mjs.map +1 -1
  686. package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -1
  687. package/dist/surfaces/cli/commands/confirm.mjs.map +1 -1
  688. package/dist/surfaces/cli/commands/doctor.mjs +1 -1
  689. package/dist/surfaces/cli/commands/doctor.mjs.map +1 -1
  690. package/dist/surfaces/cli/commands/prune-picker-entry.mjs.map +1 -1
  691. package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -1
  692. package/dist/surfaces/cli/commands/prune.mjs +1 -1
  693. package/dist/surfaces/cli/commands/prune.mjs.map +1 -1
  694. package/dist/surfaces/cli/commands/snapshot.mjs +1 -1
  695. package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -1
  696. package/dist/surfaces/cli/commands/status.mjs +1 -1
  697. package/dist/surfaces/cli/commands/status.mjs.map +1 -1
  698. package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -1
  699. package/dist/surfaces/cli/commands/wipe.mjs +3 -4
  700. package/dist/surfaces/cli/commands/wipe.mjs.map +1 -1
  701. package/dist/surfaces/cli/envelope.mjs.map +1 -1
  702. package/dist/surfaces/cli/errors.mjs.map +1 -1
  703. package/dist/surfaces/cli/flags.mjs.map +1 -1
  704. package/dist/surfaces/cli/index.mjs +45 -14
  705. package/dist/surfaces/cli/index.mjs.map +1 -1
  706. package/dist/surfaces/cli/output.mjs.map +1 -1
  707. package/dist/surfaces/cli/sysexits.mjs.map +1 -1
  708. package/dist/surfaces/tui/app.mjs +0 -21
  709. package/dist/surfaces/tui/app.mjs.map +1 -1
  710. package/dist/surfaces/tui/dashboard.mjs +0 -48
  711. package/dist/surfaces/tui/dashboard.mjs.map +1 -1
  712. package/dist/surfaces/tui/display-derivation.mjs +80 -16
  713. package/dist/surfaces/tui/display-derivation.mjs.map +1 -1
  714. package/dist/surfaces/tui/errors.mjs.map +1 -1
  715. package/dist/surfaces/tui/event-log.mjs +0 -9
  716. package/dist/surfaces/tui/event-log.mjs.map +1 -1
  717. package/dist/surfaces/tui/heartbeat.mjs.map +1 -1
  718. package/dist/surfaces/tui/index.mjs +2 -2
  719. package/dist/surfaces/tui/index.mjs.map +1 -1
  720. package/dist/surfaces/tui/input.mjs.map +1 -1
  721. package/dist/surfaces/tui/mode-detect.mjs.map +1 -1
  722. package/dist/surfaces/tui/mount-ink.mjs.map +1 -1
  723. package/dist/surfaces/tui/plain-renderer.mjs +26 -19
  724. package/dist/surfaces/tui/plain-renderer.mjs.map +1 -1
  725. package/dist/surfaces/tui/resource-table.mjs +8 -10
  726. package/dist/surfaces/tui/resource-table.mjs.map +1 -1
  727. package/images/postgres/Dockerfile +0 -1
  728. package/images/sui/Dockerfile +27 -54
  729. package/images/sui/entrypoint.sh +17 -179
  730. package/package.json +23 -15
  731. package/dashboard-ui/assets/index-Bmi1UtAg.js +0 -1356
  732. package/dashboard-ui/assets/index-D5EShVt4.js +0 -3
  733. package/dashboard-ui/assets/index-Deml9drg.css +0 -1
  734. package/dist/api/plugin-errors.d.mts +0 -7
  735. package/dist/api/plugin-errors.mjs +0 -10
  736. package/dist/api/plugin-errors.mjs.map +0 -1
  737. package/dist/cli/wirings/build-verb-layers.mjs +0 -42
  738. package/dist/cli/wirings/build-verb-layers.mjs.map +0 -1
  739. package/dist/contracts/capability-decl.d.mts +0 -40
  740. package/dist/orchestrators/built-in-plugin-layers.mjs +0 -54
  741. package/dist/orchestrators/built-in-plugin-layers.mjs.map +0 -1
  742. package/dist/orchestrators/run.mjs +0 -91
  743. package/dist/orchestrators/run.mjs.map +0 -1
  744. package/dist/orchestrators/runtime-composition.d.mts +0 -10
  745. package/dist/orchestrators/runtime-composition.mjs +0 -252
  746. package/dist/orchestrators/runtime-composition.mjs.map +0 -1
  747. package/dist/orchestrators/snapshot/capture-command.d.mts +0 -1
  748. package/dist/orchestrators/snapshot/capture-command.mjs +0 -25
  749. package/dist/orchestrators/snapshot/capture-command.mjs.map +0 -1
  750. package/dist/orchestrators/snapshot/pending-marker.mjs +0 -99
  751. package/dist/orchestrators/snapshot/pending-marker.mjs.map +0 -1
  752. package/dist/orchestrators/snapshot/recover-pending.mjs +0 -223
  753. package/dist/orchestrators/snapshot/recover-pending.mjs.map +0 -1
  754. package/dist/orchestrators/snapshot/state-document.d.mts +0 -1
  755. package/dist/orchestrators/snapshot/state-document.mjs +0 -58
  756. package/dist/orchestrators/snapshot/state-document.mjs.map +0 -1
  757. package/dist/plugins/account/spans.mjs +0 -16
  758. package/dist/plugins/account/spans.mjs.map +0 -1
  759. package/dist/plugins/account/variants/env.mjs +0 -24
  760. package/dist/plugins/account/variants/env.mjs.map +0 -1
  761. package/dist/plugins/account/variants/inline.mjs +0 -13
  762. package/dist/plugins/account/variants/inline.mjs.map +0 -1
  763. package/dist/plugins/account/variants/keystore.mjs +0 -91
  764. package/dist/plugins/account/variants/keystore.mjs.map +0 -1
  765. package/dist/plugins/action/spans.mjs +0 -11
  766. package/dist/plugins/action/spans.mjs.map +0 -1
  767. package/dist/plugins/coin/spans.mjs +0 -20
  768. package/dist/plugins/coin/spans.mjs.map +0 -1
  769. package/dist/plugins/deepbook/spans.mjs +0 -18
  770. package/dist/plugins/deepbook/spans.mjs.map +0 -1
  771. package/dist/plugins/faucet/spans.mjs +0 -12
  772. package/dist/plugins/faucet/spans.mjs.map +0 -1
  773. package/dist/plugins/package/spans.mjs +0 -14
  774. package/dist/plugins/package/spans.mjs.map +0 -1
  775. package/dist/plugins/postgres/codegen.mjs +0 -42
  776. package/dist/plugins/postgres/codegen.mjs.map +0 -1
  777. package/dist/plugins/postgres/connection.d.mts +0 -33
  778. package/dist/plugins/postgres/connection.mjs.map +0 -1
  779. package/dist/plugins/postgres/db-ensure.mjs.map +0 -1
  780. package/dist/plugins/postgres/errors.d.mts +0 -60
  781. package/dist/plugins/postgres/errors.mjs +0 -29
  782. package/dist/plugins/postgres/errors.mjs.map +0 -1
  783. package/dist/plugins/postgres/index.d.mts +0 -37
  784. package/dist/plugins/postgres/index.mjs +0 -68
  785. package/dist/plugins/postgres/index.mjs.map +0 -1
  786. package/dist/plugins/postgres/routable.mjs +0 -33
  787. package/dist/plugins/postgres/routable.mjs.map +0 -1
  788. package/dist/plugins/postgres/service.d.mts +0 -50
  789. package/dist/plugins/postgres/service.mjs +0 -179
  790. package/dist/plugins/postgres/service.mjs.map +0 -1
  791. package/dist/plugins/postgres/snapshot.mjs +0 -32
  792. package/dist/plugins/postgres/snapshot.mjs.map +0 -1
  793. package/dist/plugins/postgres/spans.mjs +0 -11
  794. package/dist/plugins/postgres/spans.mjs.map +0 -1
  795. package/dist/plugins/seal/spans.mjs +0 -18
  796. package/dist/plugins/seal/spans.mjs.map +0 -1
  797. package/dist/plugins/sui/spans.mjs +0 -17
  798. package/dist/plugins/sui/spans.mjs.map +0 -1
  799. package/dist/plugins/wallet/spans.mjs +0 -22
  800. package/dist/plugins/wallet/spans.mjs.map +0 -1
  801. package/dist/plugins/walrus/registry-publish.d.mts +0 -24
  802. package/dist/plugins/walrus/spans.mjs +0 -18
  803. package/dist/plugins/walrus/spans.mjs.map +0 -1
  804. package/dist/runtime/docker/logs.d.mts +0 -1
  805. package/dist/runtime/docker/logs.mjs +0 -34
  806. package/dist/runtime/docker/logs.mjs.map +0 -1
  807. package/dist/substrate/runtime/artifact-publisher/index.mjs +0 -86
  808. package/dist/substrate/runtime/artifact-publisher/index.mjs.map +0 -1
  809. package/dist/substrate/runtime/capability-sinks/index.d.mts +0 -1
  810. package/dist/substrate/runtime/capability-sinks/index.mjs +0 -3
  811. package/dist/substrate/runtime/capability-sinks/layer.d.mts +0 -1
  812. package/dist/substrate/runtime/capability-sinks/layer.mjs +0 -31
  813. package/dist/substrate/runtime/capability-sinks/layer.mjs.map +0 -1
  814. package/dist/substrate/runtime/capability-sinks/service.d.mts +0 -95
  815. package/dist/substrate/runtime/capability-sinks/service.mjs +0 -69
  816. package/dist/substrate/runtime/capability-sinks/service.mjs.map +0 -1
  817. package/dist/substrate/runtime/cross-process/lock.d.mts +0 -1
  818. package/dist/substrate/runtime/cross-process/lock.mjs +0 -23
  819. package/dist/substrate/runtime/cross-process/lock.mjs.map +0 -1
  820. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +0 -113
  821. package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +0 -1
  822. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +0 -31
  823. package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +0 -1
  824. package/dist/substrate/runtime/observability/formatter-registry.d.mts +0 -1
  825. package/dist/substrate/runtime/observability/formatter-registry.mjs +0 -48
  826. package/dist/substrate/runtime/observability/formatter-registry.mjs.map +0 -1
  827. package/dist/substrate/runtime/observability/span-store.d.mts +0 -1
  828. package/dist/substrate/runtime/observability/span-store.mjs +0 -110
  829. package/dist/substrate/runtime/observability/span-store.mjs.map +0 -1
  830. package/dist/substrate/runtime/observability/spans.d.mts +0 -1
  831. package/dist/substrate/runtime/observability/spans.mjs +0 -87
  832. package/dist/substrate/runtime/observability/spans.mjs.map +0 -1
  833. package/dist/substrate/runtime/projection/index.mjs +0 -4
  834. package/dist/substrate/runtime/projection/persisted.mjs +0 -213
  835. package/dist/substrate/runtime/projection/persisted.mjs.map +0 -1
  836. package/dist/substrate/runtime/scoped-multimap/service.mjs +0 -52
  837. package/dist/substrate/runtime/scoped-multimap/service.mjs.map +0 -1
  838. package/dist/substrate/runtime/scoped-ref-map/index.mjs +0 -2
  839. package/dist/substrate/runtime/scoped-ref-map/service.mjs +0 -83
  840. package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +0 -1
  841. package/dist/substrate/runtime/state-store/index.mjs +0 -3
  842. package/dist/substrate/runtime/state-store/schema.d.mts +0 -1
  843. package/dist/substrate/runtime/state-store/schema.mjs +0 -41
  844. package/dist/substrate/runtime/state-store/schema.mjs.map +0 -1
  845. package/dist/substrate/runtime/state-store/service.d.mts +0 -1
  846. package/dist/substrate/runtime/state-store/service.mjs +0 -145
  847. package/dist/substrate/runtime/state-store/service.mjs.map +0 -1
  848. package/dist/substrate/runtime/sui-execute/index.mjs.map +0 -1
  849. package/dist/substrate/runtime/sui-execute/sign-and-dispatch.mjs.map +0 -1
  850. package/dist/substrate/runtime/sui-ledger/object-ref.mjs.map +0 -1
  851. package/dist/substrate/runtime/sui-move-build/index.mjs.map +0 -1
  852. package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs +0 -151
  853. package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs.map +0 -1
  854. package/dist/substrate/state-store.d.mts +0 -1
  855. /package/dist/orchestrators/{snapshot/pending-marker.d.mts → codegen/id-config.d.mts} +0 -0
  856. /package/dist/orchestrators/snapshot/{recover-pending.d.mts → interrupted-restore.d.mts} +0 -0
  857. /package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.d.mts +0 -0
  858. /package/dist/plugins/{postgres/snapshot.d.mts → sui/ledger/object-ref.d.mts} +0 -0
  859. /package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.d.mts +0 -0
  860. /package/dist/substrate/runtime/{cross-process/snapshot-reservation.d.mts → lifecycle/file-watcher.d.mts} +0 -0
  861. /package/dist/substrate/runtime/{state-store/index.d.mts → reconcile/graph.d.mts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.mjs","names":["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 { Effect, 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 { chainId as brandChainId } from '../../substrate/brand.ts';\nimport {\n\tartifactPublishError,\n\ttype ArtifactPublishError,\n\ttype ArtifactPublisher,\n} from '../../primitives/artifact-publisher.ts';\nimport { acquireOnChainArtifact } from '../internal/acquire-on-chain-artifact.ts';\nimport type { SuiSdkShim } from '../sui/index.ts';\nimport type { CoinValue } from '../coin/index.ts';\nimport type { ResolvedSigner } from '../../substrate/runtime/sui-execute/index.ts';\nimport {\n\texecuteSuiTx,\n\tformatExecutedFailure,\n\tisSuiStaleObjectVersionError,\n} from '../../substrate/runtime/sui-execute/index.ts';\nimport { currentLedgerObjectRef } from '../../substrate/runtime/sui-ledger/object-ref.ts';\nimport { probeManyLenient } from '../../substrate/runtime/probes.ts';\nimport {\n\tmakeSpacedRetrySchedule,\n\tSTALE_OBJECT_VERSION_RETRY_PROFILE,\n} from '../../substrate/runtime/retry-policy.ts';\n\nimport { deepbookPluginError, type DeepbookPluginError } from './errors.ts';\nimport type { DeepbookPhase } from './errors.ts';\nimport { stableContentHash } from './hash.ts';\nimport { DeepbookSpans } from './spans.ts';\nimport { isPoolForPair } from './type-strings.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\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 sdkGetObjectLenient = (\n\tsdk: SuiSdkShim,\n\tobjectId: string,\n): Effect.Effect<unknown | null, never> =>\n\tEffect.tryPromise({\n\t\ttry: () => sdk.core.getObject({ objectId }),\n\t\tcatch: () => null,\n\t}).pipe(Effect.catch(() => Effect.succeed(null)));\n\nconst buildVerifyProbe = (\n\tsdk: SuiSdkShim,\n\tcached: CachedDeepbookPoolsResult,\n): Effect.Effect<CachedDeepbookPoolsResult | null, never> =>\n\tEffect.gen(function* () {\n\t\tconst results = yield* probeManyLenient(\n\t\t\tcached.pools.map((pool) => sdkGetObjectLenient(sdk, pool.poolId)),\n\t\t);\n\t\tif (results.some((raw) => raw === null || raw === undefined)) return null;\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* sdkGetObjectLenient(sdk, cached.balanceManagerId);\n\t\tif (raw === null || raw === undefined) return null;\n\t\treturn cached;\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 sdk.client.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\tconst normalized = normalizeSuiAddress(bcs.Address.parse(bytes));\n\t\t\t// DeepBook's `get_pool_id_by_asset` returns the all-zeros\n\t\t\t// address when no pool exists for the asset pair (rather\n\t\t\t// than raising). Treat the sentinel as \"not found\" so the\n\t\t\t// outer create-or-find loop creates the pool instead of\n\t\t\t// adopting `0x0` as a live pool id.\n\t\t\tif (normalized === normalizeSuiAddress('0x0')) return null;\n\t\t\treturn normalized;\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\n// All `missingPools` are created in ONE batched transaction, so the\n// receipt's `objectChanges` carries every created `Pool<…>` together.\n// Match each spec by parsing the pool's `Pool<Base, Quote>` generic\n// arguments and comparing them POSITIONALLY against the spec — a plain\n// `type.includes(base) && type.includes(quote)` cross-matches a reversed\n// pair (`DEEP/SUI` + `SUI/DEEP`) or a coin type that is a substring of\n// another, collapsing two specs onto one objectId and dropping a pool.\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\tfor (const change of changes) {\n\t\tconst type = change.objectType;\n\t\tif (change.idOperation !== 'Created' || type === undefined) continue;\n\t\tif (isPoolForPair(type, spec.baseCoinType, spec.quoteCoinType)) {\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\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;\n/** Retry `executeSuiTx` when the SDK reports a stale object version\n * (concurrent re-versioning of a shared registry / pool object). The\n * build closure rebuilds the transaction with fresh refs each attempt;\n * caps at `STALE_OBJECT_VERSION_RETRY_PROFILE.attempts` so a true\n * failure surfaces instead of looping forever. */\nconst executeSuiTxWithStaleObjectRetry = (\n\tparams: Parameters<typeof executeSuiTx>[0],\n): ReturnType<typeof executeSuiTx> =>\n\texecuteSuiTx(params).pipe(\n\t\tEffect.retry({\n\t\t\tschedule: makeSpacedRetrySchedule(\n\t\t\t\tSTALE_OBJECT_VERSION_RETRY_PROFILE.delayMs,\n\t\t\t\tSTALE_OBJECT_VERSION_RETRY_PROFILE.attempts,\n\t\t\t),\n\t\t\twhile: isSuiStaleObjectVersionError,\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* acquireOnChainArtifact<\n\t\t\tCachedDeepbookPoolsResult,\n\t\t\tCachedDeepbookPoolsResult\n\t\t>(publisher, {\n\t\t\tnamespace: 'deepbook/pools',\n\t\t\tchain: brandChainId(chain),\n\t\t\tcontentHash: poolInputsHash(pkg, signer, pools),\n\t\t\tverify: (cached) => buildVerifyProbe(sdk, cached),\n\t\t\tproduce: Effect.gen(function* () {\n\t\t\t\tconst existingPools = yield* findExistingPools(sdk, signer, pkg, pools);\n\t\t\t\tconst missingPools = pools.filter((pool) => !existingPools.has(pool.name));\n\n\t\t\t\tconst cachedPools: CachedDeepbookPool[] = [];\n\t\t\t\tif (missingPools.length > 0) {\n\t\t\t\t\tconst result = yield* executeSuiTx({\n\t\t\t\t\t\tclient: sdk.client,\n\t\t\t\t\t\tsigner,\n\t\t\t\t\t\tbuild: async () => {\n\t\t\t\t\t\t\tconst tx = new Transaction();\n\t\t\t\t\t\t\ttx.setSender(signer.address);\n\t\t\t\t\t\t\ttx.setGasBudget(500_000_000);\n\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::registry::init_balance_manager_map`,\n\t\t\t\t\t\t\t\targuments: [tx.object(pkg.registryId), tx.object(pkg.adminCapId)],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const pool of missingPools) {\n\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::pool::create_pool_admin`,\n\t\t\t\t\t\t\t\t\ttypeArguments: [pool.baseCoinType, pool.quoteCoinType],\n\t\t\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\t\t\ttx.object(pkg.registryId),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.tickSize),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.lotSize),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.minSize),\n\t\t\t\t\t\t\t\t\t\ttx.pure.bool(pool.whitelisted),\n\t\t\t\t\t\t\t\t\t\ttx.pure.bool(pool.stablePool),\n\t\t\t\t\t\t\t\t\t\ttx.object(pkg.adminCapId),\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}\n\t\t\t\t\t\t\treturn tx.build({\n\t\t\t\t\t\t\t\tclient: sdk.client,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t}).pipe(\n\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t(err): ArtifactPublishError =>\n\t\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t\t`deepbook pool transaction failed: ${err.message}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tif (result.$kind === 'FailedTransaction') {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t`deepbook pool transaction on-chain execution failed ` +\n\t\t\t\t\t\t\t\t\tformatExecutedFailure(result.FailedTransaction),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst receipt = result.Transaction;\n\n\t\t\t\t\tfor (const pool of missingPools) {\n\t\t\t\t\t\tconst poolId = pickCreatedPool(receipt.objectChanges, pool);\n\t\t\t\t\t\tif (poolId === null) {\n\t\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\n\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}\n\t\t\t\t\t\tcachedPools.push(toCachedPool(pool, poolId));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tpools: pools\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(pool) =>\n\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)\n\t\t\t\t\t\t.filter((pool): pool is CachedDeepbookPool => pool !== undefined),\n\t\t\t\t} satisfies CachedDeepbookPoolsResult;\n\t\t\t}),\n\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[DeepbookSpans.packageId]: pkg.packageId,\n\t\t\t\t[DeepbookSpans.poolCount]: 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\n\t\t.request({ address: signer.address, amount })\n\t\t.pipe(\n\t\t\tEffect.mapError(\n\t\t\t\t(err): ArtifactPublishError =>\n\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t`deepbook seed funding failed for ${coinType} ` +\n\t\t\t\t\t\t\t`to publisher '${signer.name}' amount=${amount}: ${errorDetail(err)}`,\n\t\t\t\t\t),\n\t\t\t),\n\t\t);\n};\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 sdk.client.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\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* acquireOnChainArtifact<\n\t\t\t\tCachedDeepbookSeedResult,\n\t\t\t\tCachedDeepbookSeedResult\n\t\t\t>(publisher, {\n\t\t\t\tnamespace: `deepbook/seed/${spec.name}`,\n\t\t\t\tchain: brandChainId(chain),\n\t\t\t\tcontentHash: seedInputsHash(pkg, signer, spec, pool),\n\t\t\t\tverify: (cached) => buildSeedVerifyProbe(sdk, cached),\n\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 result = yield* executeSuiTxWithStaleObjectRetry({\n\t\t\t\t\t\t\tclient: sdk.client,\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: sdk.client });\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\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t\t\t`deepbook seed transaction failed for pool '${spec.name}': ${err.message}`,\n\t\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (result.$kind === 'FailedTransaction') {\n\t\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t\t`deepbook seed transaction on-chain execution failed for pool '${spec.name}' ` +\n\t\t\t\t\t\t\t\t\t\tformatExecutedFailure(result.FailedTransaction),\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\t\t\t\t\t\tconst receipt = result.Transaction;\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\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\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\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}\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}).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[DeepbookSpans.packageId]: pkg.packageId,\n\t\t\t\t[DeepbookSpans.poolCount]: specs.filter((spec) => spec.seed !== undefined).length,\n\t\t\t},\n\t\t}),\n\t);\n"],"mappings":"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"}
1
+ {"version":3,"file":"deploy.mjs","names":[],"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 { Effect, 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\tartifactPublishError,\n\ttype ArtifactPublishError,\n\ttype ArtifactPublisher,\n} from '../../primitives/artifact-publisher.ts';\nimport { acquireOnChainArtifact } from '../internal/acquire-on-chain-artifact.ts';\nimport type { CoinValue } from '../coin/index.ts';\nimport {\n\tcurrentLedgerObjectRef,\n\texecuteSuiTx,\n\tformatExecutedFailure,\n\tisSuiStaleObjectVersionError,\n\ttype ResolvedSigner,\n\ttype SuiSdkShim,\n} from '../sui/index.ts';\nimport { probeManyLenient } from '../../substrate/runtime/probes.ts';\nimport {\n\tmakeSpacedRetrySchedule,\n\tSTALE_OBJECT_VERSION_RETRY_PROFILE,\n} from '../../substrate/runtime/retry-policy.ts';\n\nimport { deepbookPluginError, type DeepbookPluginError } from './errors.ts';\nimport type { DeepbookPhase } from './errors.ts';\nimport { stableContentHash } from './hash.ts';\nimport { isPoolForPair } from './type-strings.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\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 sdkGetObjectLenient = (\n\tsdk: SuiSdkShim,\n\tobjectId: string,\n): Effect.Effect<unknown | null, never> =>\n\tEffect.tryPromise({\n\t\ttry: () => sdk.core.getObject({ objectId }),\n\t\tcatch: () => null,\n\t}).pipe(Effect.catch(() => Effect.succeed(null)));\n\nconst buildVerifyProbe = (\n\tsdk: SuiSdkShim,\n\tcached: CachedDeepbookPoolsResult,\n): Effect.Effect<CachedDeepbookPoolsResult | null, never> =>\n\tEffect.gen(function* () {\n\t\tconst results = yield* probeManyLenient(\n\t\t\tcached.pools.map((pool) => sdkGetObjectLenient(sdk, pool.poolId)),\n\t\t);\n\t\tif (results.some((raw) => raw === null || raw === undefined)) return null;\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* sdkGetObjectLenient(sdk, cached.balanceManagerId);\n\t\tif (raw === null || raw === undefined) return null;\n\t\treturn cached;\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 sdk.client.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\tconst normalized = normalizeSuiAddress(bcs.Address.parse(bytes));\n\t\t\t// DeepBook's `get_pool_id_by_asset` returns the all-zeros\n\t\t\t// address when no pool exists for the asset pair (rather\n\t\t\t// than raising). Treat the sentinel as \"not found\" so the\n\t\t\t// outer create-or-find loop creates the pool instead of\n\t\t\t// adopting `0x0` as a live pool id.\n\t\t\tif (normalized === normalizeSuiAddress('0x0')) return null;\n\t\t\treturn normalized;\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\n// All `missingPools` are created in ONE batched transaction, so the\n// receipt's `objectChanges` carries every created `Pool<…>` together.\n// Match each spec by parsing the pool's `Pool<Base, Quote>` generic\n// arguments and comparing them POSITIONALLY against the spec — a plain\n// `type.includes(base) && type.includes(quote)` cross-matches a reversed\n// pair (`DEEP/SUI` + `SUI/DEEP`) or a coin type that is a substring of\n// another, collapsing two specs onto one objectId and dropping a pool.\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\tfor (const change of changes) {\n\t\tconst type = change.objectType;\n\t\tif (change.idOperation !== 'Created' || type === undefined) continue;\n\t\tif (isPoolForPair(type, spec.baseCoinType, spec.quoteCoinType)) {\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\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;\n/** Retry `executeSuiTx` when the SDK reports a stale object version\n * (concurrent re-versioning of a shared registry / pool object). The\n * build closure rebuilds the transaction with fresh refs each attempt;\n * caps at `STALE_OBJECT_VERSION_RETRY_PROFILE.attempts` so a true\n * failure surfaces instead of looping forever. */\nconst executeSuiTxWithStaleObjectRetry = (\n\tparams: Parameters<typeof executeSuiTx>[0],\n): ReturnType<typeof executeSuiTx> =>\n\texecuteSuiTx(params).pipe(\n\t\tEffect.retry({\n\t\t\tschedule: makeSpacedRetrySchedule(\n\t\t\t\tSTALE_OBJECT_VERSION_RETRY_PROFILE.delayMs,\n\t\t\t\tSTALE_OBJECT_VERSION_RETRY_PROFILE.attempts,\n\t\t\t),\n\t\t\twhile: isSuiStaleObjectVersionError,\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* acquireOnChainArtifact<\n\t\t\tCachedDeepbookPoolsResult,\n\t\t\tCachedDeepbookPoolsResult\n\t\t>(publisher, {\n\t\t\tnamespace: 'deepbook/pools',\n\t\t\tchain,\n\t\t\tcontentHash: poolInputsHash(pkg, signer, pools),\n\t\t\tverify: (cached) => buildVerifyProbe(sdk, cached),\n\t\t\tproduce: Effect.gen(function* () {\n\t\t\t\tconst existingPools = yield* findExistingPools(sdk, signer, pkg, pools);\n\t\t\t\tconst missingPools = pools.filter((pool) => !existingPools.has(pool.name));\n\n\t\t\t\tconst cachedPools: CachedDeepbookPool[] = [];\n\t\t\t\tif (missingPools.length > 0) {\n\t\t\t\t\tconst result = yield* executeSuiTx({\n\t\t\t\t\t\tclient: sdk.client,\n\t\t\t\t\t\tsigner,\n\t\t\t\t\t\tbuild: async () => {\n\t\t\t\t\t\t\tconst tx = new Transaction();\n\t\t\t\t\t\t\ttx.setSender(signer.address);\n\t\t\t\t\t\t\ttx.setGasBudget(500_000_000);\n\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::registry::init_balance_manager_map`,\n\t\t\t\t\t\t\t\targuments: [tx.object(pkg.registryId), tx.object(pkg.adminCapId)],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const pool of missingPools) {\n\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::pool::create_pool_admin`,\n\t\t\t\t\t\t\t\t\ttypeArguments: [pool.baseCoinType, pool.quoteCoinType],\n\t\t\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\t\t\ttx.object(pkg.registryId),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.tickSize),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.lotSize),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(pool.minSize),\n\t\t\t\t\t\t\t\t\t\ttx.pure.bool(pool.whitelisted),\n\t\t\t\t\t\t\t\t\t\ttx.pure.bool(pool.stablePool),\n\t\t\t\t\t\t\t\t\t\ttx.object(pkg.adminCapId),\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}\n\t\t\t\t\t\t\treturn tx.build({\n\t\t\t\t\t\t\t\tclient: sdk.client,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t},\n\t\t\t\t\t}).pipe(\n\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t(err): ArtifactPublishError =>\n\t\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t\t`deepbook pool transaction failed: ${err.message}`,\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tif (result.$kind === 'FailedTransaction') {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t`deepbook pool transaction on-chain execution failed ` +\n\t\t\t\t\t\t\t\t\tformatExecutedFailure(result.FailedTransaction),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst receipt = result.Transaction;\n\n\t\t\t\t\tfor (const pool of missingPools) {\n\t\t\t\t\t\tconst poolId = pickCreatedPool(receipt.objectChanges, pool);\n\t\t\t\t\t\tif (poolId === null) {\n\t\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\n\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}\n\t\t\t\t\t\tcachedPools.push(toCachedPool(pool, poolId));\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tpools: pools\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(pool) =>\n\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)\n\t\t\t\t\t\t.filter((pool): pool is CachedDeepbookPool => pool !== undefined),\n\t\t\t\t} satisfies CachedDeepbookPoolsResult;\n\t\t\t}),\n\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});\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\n\t\t.request({ address: signer.address, amount })\n\t\t.pipe(\n\t\t\tEffect.mapError(\n\t\t\t\t(err): ArtifactPublishError =>\n\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t`deepbook seed funding failed for ${coinType} ` +\n\t\t\t\t\t\t\t`to publisher '${signer.name}' amount=${amount}: ${errorDetail(err)}`,\n\t\t\t\t\t),\n\t\t\t),\n\t\t);\n};\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 sdk.client.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\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* acquireOnChainArtifact<\n\t\t\t\tCachedDeepbookSeedResult,\n\t\t\t\tCachedDeepbookSeedResult\n\t\t\t>(publisher, {\n\t\t\t\tnamespace: `deepbook/seed/${spec.name}`,\n\t\t\t\tchain,\n\t\t\t\tcontentHash: seedInputsHash(pkg, signer, spec, pool),\n\t\t\t\tverify: (cached) => buildSeedVerifyProbe(sdk, cached),\n\t\t\t\tproduce: Effect.gen(function* () {\n\t\t\t\t\tyield* requestSeedFunding(\n\t\t\t\t\t\tspec.baseFundingStrategy,\n\t\t\t\t\t\tsigner,\n\t\t\t\t\t\tpool.baseCoinType,\n\t\t\t\t\t\tseed.baseAmount,\n\t\t\t\t\t);\n\t\t\t\t\tyield* requestSeedFunding(\n\t\t\t\t\t\tspec.quoteFundingStrategy,\n\t\t\t\t\t\tsigner,\n\t\t\t\t\t\tpool.quoteCoinType,\n\t\t\t\t\t\tseed.quoteAmount,\n\t\t\t\t\t);\n\n\t\t\t\t\tconst result = yield* executeSuiTxWithStaleObjectRetry({\n\t\t\t\t\t\tclient: sdk.client,\n\t\t\t\t\t\tsigner,\n\t\t\t\t\t\tbuild: async () => {\n\t\t\t\t\t\t\tconst tx = new Transaction();\n\t\t\t\t\t\t\ttx.setSender(signer.address);\n\t\t\t\t\t\t\tawait setExplicitSeedGasPayment(tx, sdk, signer, seedSuiDepositAmount(pool, seed));\n\t\t\t\t\t\t\tconst registry = await sharedObject(tx, sdk, pkg.registryId, true);\n\t\t\t\t\t\t\tconst poolObject = await sharedObject(tx, sdk, pool.poolId, true);\n\t\t\t\t\t\t\tconst balanceManager = tx.moveCall({\n\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::balance_manager::new`,\n\t\t\t\t\t\t\t\targuments: [],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::balance_manager::register_balance_manager`,\n\t\t\t\t\t\t\t\targuments: [balanceManager, registry],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tawait depositIntoBalanceManager(\n\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\tsdk,\n\t\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\t\tpkg,\n\t\t\t\t\t\t\t\tbalanceManager,\n\t\t\t\t\t\t\t\tpool.baseCoinType,\n\t\t\t\t\t\t\t\tseed.baseAmount,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tawait depositIntoBalanceManager(\n\t\t\t\t\t\t\t\ttx,\n\t\t\t\t\t\t\t\tsdk,\n\t\t\t\t\t\t\t\tsigner,\n\t\t\t\t\t\t\t\tpkg,\n\t\t\t\t\t\t\t\tbalanceManager,\n\t\t\t\t\t\t\t\tpool.quoteCoinType,\n\t\t\t\t\t\t\t\tseed.quoteAmount,\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tconst tradeProof = tx.moveCall({\n\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::balance_manager::generate_proof_as_owner`,\n\t\t\t\t\t\t\t\targuments: [balanceManager],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tfor (const [index, order] of seed.orders.entries()) {\n\t\t\t\t\t\t\t\ttx.moveCall({\n\t\t\t\t\t\t\t\t\ttarget: `${pkg.packageId}::pool::place_limit_order`,\n\t\t\t\t\t\t\t\t\ttypeArguments: [pool.baseCoinType, pool.quoteCoinType],\n\t\t\t\t\t\t\t\t\targuments: [\n\t\t\t\t\t\t\t\t\t\tpoolObject,\n\t\t\t\t\t\t\t\t\t\tbalanceManager,\n\t\t\t\t\t\t\t\t\t\ttradeProof,\n\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\ttx.pure.u8(ORDER_TYPE_POST_ONLY),\n\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\ttx.pure.u64(order.price),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(order.quantity),\n\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\ttx.pure.bool(order.payWithDeep ?? false),\n\t\t\t\t\t\t\t\t\t\ttx.pure.u64(MAX_TIMESTAMP),\n\t\t\t\t\t\t\t\t\t\ttx.object.clock(),\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}\n\t\t\t\t\t\t\ttx.transferObjects([balanceManager], signer.address);\n\t\t\t\t\t\t\treturn tx.build({ client: sdk.client });\n\t\t\t\t\t\t},\n\t\t\t\t\t}).pipe(\n\t\t\t\t\t\tEffect.mapError(\n\t\t\t\t\t\t\t(err): ArtifactPublishError =>\n\t\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t\t`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),\n\t\t\t\t\t);\n\t\t\t\t\tif (result.$kind === 'FailedTransaction') {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t'produce-failed',\n\t\t\t\t\t\t\t\t`deepbook seed transaction on-chain execution failed for pool '${spec.name}' ` +\n\t\t\t\t\t\t\t\t\tformatExecutedFailure(result.FailedTransaction),\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tconst receipt = result.Transaction;\n\n\t\t\t\t\tconst balanceManagerId = pickCreatedBalanceManager(receipt.objectChanges);\n\t\t\t\t\tif (balanceManagerId === null) {\n\t\t\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\t\t\tartifactPublishError(\n\t\t\t\t\t\t\t\t'produce-failed',\n\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}\n\t\t\t\t\treturn { poolName: spec.name, balanceManagerId, digest: receipt.digest };\n\t\t\t\t}),\n\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});\n"],"mappings":"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"}
@@ -14,8 +14,10 @@ const deepbookConfigError = (field, message, hint, cause) => makeDeepbookConfigE
14
14
  hint,
15
15
  cause
16
16
  });
17
- /** Error tags this plugin contributes surfaced to the cause walker
18
- * via `PluginErrorContribution`. */
17
+ /** The catchable error tags this plugin exposes. Consumed by the
18
+ * acquire-body `passthroughOrWrap` (to let typed deepbook failures
19
+ * through unwrapped) and pinned against the user-facing error catalog
20
+ * by the error-catalog-parity test. */
19
21
  const DEEPBOOK_ERROR_TAGS = [
20
22
  "DeepbookPluginError",
21
23
  "ForkIncompatibleError",
@@ -1 +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 owned by\n// `substrate/runtime/mode-errors.ts`. Deepbook does NOT raise it itself\n// (there is no deepbook-side factory) and the local/known/override modes\n// never refuse on it directly; it stays in this plugin's error union +\n// `DEEPBOOK_ERROR_TAGS` as defense-in-depth so the cause walker still\n// attributes a mode-refusal surfaced through a deepbook dependency to the\n// deepbook plugin rather than wrapping it as an opaque `'publish'` error.\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/** 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":";;;AA4DA,MAAa,uBACZ,OACA,SACA,QAAiE,EAAE,MACzC;CAAE,MAAM;CAAuB;CAAO;CAAS,GAAG;CAAO;AAQpF,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"}
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 owned by\n// `substrate/runtime/mode-errors.ts`. Deepbook does NOT raise it itself\n// (there is no deepbook-side factory) and the local/known/override modes\n// never refuse on it directly; it stays in this plugin's error union +\n// `DEEPBOOK_ERROR_TAGS` as defense-in-depth so the cause walker still\n// attributes a mode-refusal surfaced through a deepbook dependency to the\n// deepbook plugin rather than wrapping it as an opaque `'publish'` error.\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/** 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/** The catchable error tags this plugin exposes. Consumed by the\n * acquire-body `passthroughOrWrap` (to let typed deepbook failures\n * through unwrapped) and pinned against the user-facing error catalog\n * by the error-catalog-parity test. */\nexport const DEEPBOOK_ERROR_TAGS: ReadonlyArray<DeepbookError['_tag']> = [\n\t'DeepbookPluginError',\n\t'ForkIncompatibleError',\n\t'DeepbookConfigError',\n] as const;\n"],"mappings":";;;AA4DA,MAAa,uBACZ,OACA,SACA,QAAiE,CAAC,OACxC;CAAE,MAAM;CAAuB;CAAO;CAAS,GAAG;AAAM;AAQnF,MAAM,0BAA0B,kBAAkB,qBAAqB;AAEvE,MAAa,uBACZ,OACA,SACA,MACA,UACyB,wBAAwB;CAAE;CAAO;CAAS;CAAM;AAAM,CAAC;;;;;AASjF,MAAa,sBAA4D;CACxE;CACA;CACA;AACD"}
@@ -1,8 +1,7 @@
1
- import { signAndDispatch } from "../../substrate/runtime/sui-execute/sign-and-dispatch.mjs";
2
- import { formatExecutedFailure } from "../../substrate/runtime/sui-execute/index.mjs";
3
- import { AccountSpans } from "../account/spans.mjs";
1
+ import { formatExecutedFailure } from "../sui/exec/index.mjs";
2
+ import { signAndDispatch } from "../sui/exec/sign-and-dispatch.mjs";
3
+ import "../sui/index.mjs";
4
4
  import "../account/index.mjs";
5
- import { DeepbookSpans } from "./spans.mjs";
6
5
  import { deepbookPluginError } from "./errors.mjs";
7
6
  import { Effect } from "effect";
8
7
  import { Transaction } from "@mysten/sui/transactions";
@@ -75,12 +74,7 @@ const makeDeepbookDeepFundingStrategy = (opts) => ({
75
74
  onFailed: (failure) => Effect.fail(deepbookPluginError("fund-deep", `DeepBook DEEP funding transaction failed on-chain for account '${account.name}' (address=${account.address}) ` + formatExecutedFailure(failure))),
76
75
  onSuccess: () => Effect.void
77
76
  });
78
- }).pipe(Effect.withSpan("devstack.plugin.deepbook.fundDeep", { attributes: {
79
- [AccountSpans.name]: req.account?.name ?? "(unresolved)",
80
- [AccountSpans.address]: req.account?.address ?? req.address,
81
- [DeepbookSpans.fundCoin]: DEEPBOOK_TESTNET_DEEP_COIN_TYPE,
82
- [DeepbookSpans.fundAmount]: req.amount.toString()
83
- } }))
77
+ })
84
78
  });
85
79
  const makeDeepbookDeepFundingContribution = (strategy) => ({
86
80
  kind: "strategy-contributor",
@@ -1 +1 @@
1
- {"version":3,"file":"faucet-strategy.mjs","names":[],"sources":["../../../src/plugins/deepbook/faucet-strategy.ts"],"sourcesContent":["// DeepBook DEEP funding strategy.\n//\n// Testnet DEEP has no public mint faucet. The usable funding path is a\n// real DeepBook swap from the requesting account's SUI balance into\n// DEEP. This strategy is contributed by the known testnet DeepBook\n// plugin under the standard `coinType:<fullCoinType>` key, so accounts\n// can request DEEP through the same cross-cutting funding pipeline as\n// SUI and WAL.\n\nimport { Effect } from 'effect';\n\nimport { DeepBookClient, type DeepBookCompatibleClient } from '@mysten/deepbook-v3';\nimport { Transaction } from '@mysten/sui/transactions';\n\nimport type { StrategyContributorDecl } from '../../contracts/strategy-contributor.ts';\nimport {\n\tAccountSpans,\n\ttype AccountFundingRequest,\n\ttype AccountFundingStrategy,\n} from '../account/index.ts';\nimport type { SuiSdkShim } from '../sui/index.ts';\nimport { formatExecutedFailure } from '../../substrate/runtime/sui-execute/index.ts';\nimport { signAndDispatch } from '../../substrate/runtime/sui-execute/sign-and-dispatch.ts';\n\nimport { deepbookPluginError, type DeepbookPluginError } from './errors.ts';\nimport { DeepbookSpans } from './spans.ts';\n\nexport const DEEPBOOK_TESTNET_DEEP_COIN_TYPE =\n\t'0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP' as const;\nexport const DEEPBOOK_DEEP_FAUCET_STRATEGY_KEY =\n\t`coinType:${DEEPBOOK_TESTNET_DEEP_COIN_TYPE}` as const;\n\nconst DEEPBOOK_DEEP_POOL_KEY = 'DEEP_SUI';\nconst DEEP_SCALAR = 1_000_000n;\nconst SUI_SCALAR = 1_000_000_000n;\nconst DEFAULT_INPUT_BUFFER_BPS = 500n;\n\nexport interface DeepbookDeepFundingStrategyOptions {\n\treadonly suiSdk: SuiSdkShim;\n\t/** Extra SUI input above the quote. 500 bps means 5%. */\n\treadonly inputBufferBps?: bigint;\n}\n\nexport type DeepbookDeepFundingStrategy = AccountFundingStrategy<DeepbookPluginError>;\n\nconst decimalToRaw = (\n\tvalue: number,\n\tscalar: bigint,\n\tround: 'ceil' | 'floor',\n): Effect.Effect<bigint, DeepbookPluginError> => {\n\tconst scaled = value * Number(scalar);\n\tif (!Number.isFinite(scaled) || scaled < 0) {\n\t\treturn Effect.fail(\n\t\t\tdeepbookPluginError(\n\t\t\t\t'fund-deep',\n\t\t\t\t`DeepBook quote returned an invalid decimal amount: ${value}.`,\n\t\t\t),\n\t\t);\n\t}\n\treturn Effect.succeed(BigInt(round === 'ceil' ? Math.ceil(scaled) : Math.floor(scaled)));\n};\n\nconst applyInputBuffer = (raw: bigint, bufferBps: bigint): bigint =>\n\t(raw * (10_000n + bufferBps) + 9_999n) / 10_000n;\n\nconst buildDeepbookClient = (\n\taccount: NonNullable<AccountFundingRequest['account']>,\n\tsuiSdk: SuiSdkShim,\n): DeepBookClient =>\n\tnew DeepBookClient({\n\t\taddress: account.address,\n\t\tclient: suiSdk.client as DeepBookCompatibleClient,\n\t\tnetwork: 'testnet',\n\t});\n\nexport const makeDeepbookDeepFundingStrategy = (\n\topts: DeepbookDeepFundingStrategyOptions,\n): DeepbookDeepFundingStrategy => ({\n\tusesAccountSigner: true,\n\t// The swap buys DEEP with the recipient account's own SUI, so the recipient\n\t// must be a resolved account with a signer — funding an arbitrary 0x address\n\t// is rejected by the dispatcher/dashboard on this flag.\n\trequiresRecipientAccount: true,\n\trequest: (req) =>\n\t\tEffect.gen(function* () {\n\t\t\tif (req.amount <= 0n) return;\n\n\t\t\tconst account = req.account;\n\t\t\tif (account === undefined) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t'DeepBook DEEP funding spends the recipient account’s own SUI, so it requires a resolved account signer.',\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst deepBook = buildDeepbookClient(account, opts.suiSdk);\n\t\t\tconst quote = yield* Effect.tryPromise({\n\t\t\t\ttry: () => deepBook.getQuoteQuantityIn(DEEPBOOK_DEEP_POOL_KEY, req.amount, false),\n\t\t\t\tcatch: (cause): DeepbookPluginError =>\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding quote failed for ${req.amount} base units.`,\n\t\t\t\t\t\t{ cause },\n\t\t\t\t\t),\n\t\t\t});\n\n\t\t\tconst baseOutRaw = yield* decimalToRaw(quote.baseOut, DEEP_SCALAR, 'floor');\n\t\t\tif (baseOutRaw < req.amount) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding quote cannot satisfy ${req.amount} base units; quoted ${baseOutRaw}.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst quoteInRaw = yield* decimalToRaw(quote.quoteIn, SUI_SCALAR, 'ceil');\n\t\t\tif (quoteInRaw <= 0n) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding quote returned zero SUI input for ${req.amount} base units.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst quoteAmountRaw = applyInputBuffer(\n\t\t\t\tquoteInRaw,\n\t\t\t\topts.inputBufferBps ?? DEFAULT_INPUT_BUFFER_BPS,\n\t\t\t);\n\t\t\tconst deepAmountRaw = yield* decimalToRaw(quote.deepRequired, DEEP_SCALAR, 'ceil');\n\n\t\t\tyield* signAndDispatch({\n\t\t\t\tsignerSource: account,\n\t\t\t\tbuildTxBytes: () =>\n\t\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\t\tconst tx = yield* Effect.try({\n\t\t\t\t\t\t\ttry: () => {\n\t\t\t\t\t\t\t\tconst transaction = new Transaction();\n\t\t\t\t\t\t\t\ttransaction.setSender(account.address);\n\t\t\t\t\t\t\t\tconst [baseCoin, quoteCoin, deepCoin] = transaction.add(\n\t\t\t\t\t\t\t\t\tdeepBook.deepBook.swapExactQuantity({\n\t\t\t\t\t\t\t\t\t\tpoolKey: DEEPBOOK_DEEP_POOL_KEY,\n\t\t\t\t\t\t\t\t\t\tamount: quoteAmountRaw,\n\t\t\t\t\t\t\t\t\t\tdeepAmount: deepAmountRaw,\n\t\t\t\t\t\t\t\t\t\tminOut: req.amount,\n\t\t\t\t\t\t\t\t\t\tisBaseToCoin: false,\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\ttransaction.transferObjects([baseCoin, quoteCoin, deepCoin], req.address);\n\t\t\t\t\t\t\t\treturn transaction;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcatch: (cause): DeepbookPluginError =>\n\t\t\t\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t\t\t\t'DeepBook DEEP funding transaction build failed.',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcause,\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});\n\n\t\t\t\t\t\treturn yield* Effect.tryPromise({\n\t\t\t\t\t\t\ttry: () => tx.build({ client: opts.suiSdk.client }),\n\t\t\t\t\t\t\tcatch: (cause): DeepbookPluginError =>\n\t\t\t\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t\t\t\t`DeepBook DEEP funding transaction serialization failed: ${\n\t\t\t\t\t\t\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t\t\t\t\t\t\t}.`,\n\t\t\t\t\t\t\t\t\t{ cause },\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\tmapSignError: (cause): DeepbookPluginError =>\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding transaction failed for account '${account.name}'.`,\n\t\t\t\t\t\t{ cause },\n\t\t\t\t\t),\n\t\t\t\tonFailed: (failure) =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t\t`DeepBook DEEP funding transaction failed on-chain ` +\n\t\t\t\t\t\t\t\t`for account '${account.name}' (address=${account.address}) ` +\n\t\t\t\t\t\t\t\tformatExecutedFailure(failure),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\tonSuccess: () => Effect.void,\n\t\t\t});\n\t\t}).pipe(\n\t\t\tEffect.withSpan('devstack.plugin.deepbook.fundDeep', {\n\t\t\t\tattributes: {\n\t\t\t\t\t[AccountSpans.name]: req.account?.name ?? '(unresolved)',\n\t\t\t\t\t[AccountSpans.address]: req.account?.address ?? req.address,\n\t\t\t\t\t[DeepbookSpans.fundCoin]: DEEPBOOK_TESTNET_DEEP_COIN_TYPE,\n\t\t\t\t\t[DeepbookSpans.fundAmount]: req.amount.toString(),\n\t\t\t\t},\n\t\t\t}),\n\t\t),\n});\n\nexport const makeDeepbookDeepFundingContribution = (\n\tstrategy: DeepbookDeepFundingStrategy,\n): StrategyContributorDecl<\n\ttypeof DEEPBOOK_DEEP_FAUCET_STRATEGY_KEY,\n\tDeepbookDeepFundingStrategy\n> => ({\n\tkind: 'strategy-contributor',\n\tcapabilityKey: DEEPBOOK_DEEP_FAUCET_STRATEGY_KEY,\n\tstrategy,\n\tautoMounted: true,\n});\n"],"mappings":";;;;;;;;;;AA2BA,MAAa,kCACZ;AACD,MAAa,oCACZ,YAAY;AAEb,MAAM,yBAAyB;AAC/B,MAAM,cAAc;AACpB,MAAM,aAAa;AACnB,MAAM,2BAA2B;AAUjC,MAAM,gBACL,OACA,QACA,UACgD;CAChD,MAAM,SAAS,QAAQ,OAAO,OAAO;AACrC,KAAI,CAAC,OAAO,SAAS,OAAO,IAAI,SAAS,EACxC,QAAO,OAAO,KACb,oBACC,aACA,sDAAsD,MAAM,GAC5D,CACD;AAEF,QAAO,OAAO,QAAQ,OAAO,UAAU,SAAS,KAAK,KAAK,OAAO,GAAG,KAAK,MAAM,OAAO,CAAC,CAAC;;AAGzF,MAAM,oBAAoB,KAAa,eACrC,OAAO,SAAU,aAAa,SAAU;AAE1C,MAAM,uBACL,SACA,WAEA,IAAI,eAAe;CAClB,SAAS,QAAQ;CACjB,QAAQ,OAAO;CACf,SAAS;CACT,CAAC;AAEH,MAAa,mCACZ,UACkC;CAClC,mBAAmB;CAInB,0BAA0B;CAC1B,UAAU,QACT,OAAO,IAAI,aAAa;AACvB,MAAI,IAAI,UAAU,GAAI;EAEtB,MAAM,UAAU,IAAI;AACpB,MAAI,YAAY,KAAA,EACf,QAAO,OAAO,OAAO,KACpB,oBACC,aACA,0GACA,CACD;EAGF,MAAM,WAAW,oBAAoB,SAAS,KAAK,OAAO;EAC1D,MAAM,QAAQ,OAAO,OAAO,WAAW;GACtC,WAAW,SAAS,mBAAmB,wBAAwB,IAAI,QAAQ,MAAM;GACjF,QAAQ,UACP,oBACC,aACA,0CAA0C,IAAI,OAAO,eACrD,EAAE,OAAO,CACT;GACF,CAAC;EAEF,MAAM,aAAa,OAAO,aAAa,MAAM,SAAS,aAAa,QAAQ;AAC3E,MAAI,aAAa,IAAI,OACpB,QAAO,OAAO,OAAO,KACpB,oBACC,aACA,8CAA8C,IAAI,OAAO,sBAAsB,WAAW,GAC1F,CACD;EAGF,MAAM,aAAa,OAAO,aAAa,MAAM,SAAS,YAAY,OAAO;AACzE,MAAI,cAAc,GACjB,QAAO,OAAO,OAAO,KACpB,oBACC,aACA,2DAA2D,IAAI,OAAO,cACtE,CACD;EAEF,MAAM,iBAAiB,iBACtB,YACA,KAAK,kBAAkB,yBACvB;EACD,MAAM,gBAAgB,OAAO,aAAa,MAAM,cAAc,aAAa,OAAO;AAElF,SAAO,gBAAgB;GACtB,cAAc;GACd,oBACC,OAAO,IAAI,aAAa;IACvB,MAAM,KAAK,OAAO,OAAO,IAAI;KAC5B,WAAW;MACV,MAAM,cAAc,IAAI,aAAa;AACrC,kBAAY,UAAU,QAAQ,QAAQ;MACtC,MAAM,CAAC,UAAU,WAAW,YAAY,YAAY,IACnD,SAAS,SAAS,kBAAkB;OACnC,SAAS;OACT,QAAQ;OACR,YAAY;OACZ,QAAQ,IAAI;OACZ,cAAc;OACd,CAAC,CACF;AACD,kBAAY,gBAAgB;OAAC;OAAU;OAAW;OAAS,EAAE,IAAI,QAAQ;AACzE,aAAO;;KAER,QAAQ,UACP,oBACC,aACA,mDACA,EACC,OACA,CACD;KACF,CAAC;AAEF,WAAO,OAAO,OAAO,WAAW;KAC/B,WAAW,GAAG,MAAM,EAAE,QAAQ,KAAK,OAAO,QAAQ,CAAC;KACnD,QAAQ,UACP,oBACC,aACA,2DACC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,CACtD,IACD,EAAE,OAAO,CACT;KACF,CAAC;KACD;GACH,eAAe,UACd,oBACC,aACA,yDAAyD,QAAQ,KAAK,KACtE,EAAE,OAAO,CACT;GACF,WAAW,YACV,OAAO,KACN,oBACC,aACA,kEACiB,QAAQ,KAAK,aAAa,QAAQ,QAAQ,MAC1D,sBAAsB,QAAQ,CAC/B,CACD;GACF,iBAAiB,OAAO;GACxB,CAAC;GACD,CAAC,KACF,OAAO,SAAS,qCAAqC,EACpD,YAAY;GACV,aAAa,OAAO,IAAI,SAAS,QAAQ;GACzC,aAAa,UAAU,IAAI,SAAS,WAAW,IAAI;GACnD,cAAc,WAAW;GACzB,cAAc,aAAa,IAAI,OAAO,UAAU;EACjD,EACD,CAAC,CACF;CACF;AAED,MAAa,uCACZ,cAIK;CACL,MAAM;CACN,eAAe;CACf;CACA,aAAa;CACb"}
1
+ {"version":3,"file":"faucet-strategy.mjs","names":[],"sources":["../../../src/plugins/deepbook/faucet-strategy.ts"],"sourcesContent":["// DeepBook DEEP funding strategy.\n//\n// Testnet DEEP has no public mint faucet. The usable funding path is a\n// real DeepBook swap from the requesting account's SUI balance into\n// DEEP. This strategy is contributed by the known testnet DeepBook\n// plugin under the standard `coinType:<fullCoinType>` key, so accounts\n// can request DEEP through the same cross-cutting funding pipeline as\n// SUI and WAL.\n\nimport { Effect } from 'effect';\n\nimport { DeepBookClient, type DeepBookCompatibleClient } from '@mysten/deepbook-v3';\nimport { Transaction } from '@mysten/sui/transactions';\n\nimport type { StrategyContributorDecl } from '../../contracts/strategy-contributor.ts';\nimport { type AccountFundingRequest, type AccountFundingStrategy } from '../account/index.ts';\nimport { formatExecutedFailure, signAndDispatch, type SuiSdkShim } from '../sui/index.ts';\n\nimport { deepbookPluginError, type DeepbookPluginError } from './errors.ts';\n\nexport const DEEPBOOK_TESTNET_DEEP_COIN_TYPE =\n\t'0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP' as const;\nexport const DEEPBOOK_DEEP_FAUCET_STRATEGY_KEY =\n\t`coinType:${DEEPBOOK_TESTNET_DEEP_COIN_TYPE}` as const;\n\nconst DEEPBOOK_DEEP_POOL_KEY = 'DEEP_SUI';\nconst DEEP_SCALAR = 1_000_000n;\nconst SUI_SCALAR = 1_000_000_000n;\nconst DEFAULT_INPUT_BUFFER_BPS = 500n;\n\nexport interface DeepbookDeepFundingStrategyOptions {\n\treadonly suiSdk: SuiSdkShim;\n\t/** Extra SUI input above the quote. 500 bps means 5%. */\n\treadonly inputBufferBps?: bigint;\n}\n\nexport type DeepbookDeepFundingStrategy = AccountFundingStrategy<DeepbookPluginError>;\n\nconst decimalToRaw = (\n\tvalue: number,\n\tscalar: bigint,\n\tround: 'ceil' | 'floor',\n): Effect.Effect<bigint, DeepbookPluginError> => {\n\tconst scaled = value * Number(scalar);\n\tif (!Number.isFinite(scaled) || scaled < 0) {\n\t\treturn Effect.fail(\n\t\t\tdeepbookPluginError(\n\t\t\t\t'fund-deep',\n\t\t\t\t`DeepBook quote returned an invalid decimal amount: ${value}.`,\n\t\t\t),\n\t\t);\n\t}\n\treturn Effect.succeed(BigInt(round === 'ceil' ? Math.ceil(scaled) : Math.floor(scaled)));\n};\n\nconst applyInputBuffer = (raw: bigint, bufferBps: bigint): bigint =>\n\t(raw * (10_000n + bufferBps) + 9_999n) / 10_000n;\n\nconst buildDeepbookClient = (\n\taccount: NonNullable<AccountFundingRequest['account']>,\n\tsuiSdk: SuiSdkShim,\n): DeepBookClient =>\n\tnew DeepBookClient({\n\t\taddress: account.address,\n\t\tclient: suiSdk.client as DeepBookCompatibleClient,\n\t\tnetwork: 'testnet',\n\t});\n\nexport const makeDeepbookDeepFundingStrategy = (\n\topts: DeepbookDeepFundingStrategyOptions,\n): DeepbookDeepFundingStrategy => ({\n\tusesAccountSigner: true,\n\t// The swap buys DEEP with the recipient account's own SUI, so the recipient\n\t// must be a resolved account with a signer — funding an arbitrary 0x address\n\t// is rejected by the dispatcher/dashboard on this flag.\n\trequiresRecipientAccount: true,\n\trequest: (req) =>\n\t\tEffect.gen(function* () {\n\t\t\tif (req.amount <= 0n) return;\n\n\t\t\tconst account = req.account;\n\t\t\tif (account === undefined) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t'DeepBook DEEP funding spends the recipient account’s own SUI, so it requires a resolved account signer.',\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst deepBook = buildDeepbookClient(account, opts.suiSdk);\n\t\t\tconst quote = yield* Effect.tryPromise({\n\t\t\t\ttry: () => deepBook.getQuoteQuantityIn(DEEPBOOK_DEEP_POOL_KEY, req.amount, false),\n\t\t\t\tcatch: (cause): DeepbookPluginError =>\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding quote failed for ${req.amount} base units.`,\n\t\t\t\t\t\t{ cause },\n\t\t\t\t\t),\n\t\t\t});\n\n\t\t\tconst baseOutRaw = yield* decimalToRaw(quote.baseOut, DEEP_SCALAR, 'floor');\n\t\t\tif (baseOutRaw < req.amount) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding quote cannot satisfy ${req.amount} base units; quoted ${baseOutRaw}.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst quoteInRaw = yield* decimalToRaw(quote.quoteIn, SUI_SCALAR, 'ceil');\n\t\t\tif (quoteInRaw <= 0n) {\n\t\t\t\treturn yield* Effect.fail(\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding quote returned zero SUI input for ${req.amount} base units.`,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst quoteAmountRaw = applyInputBuffer(\n\t\t\t\tquoteInRaw,\n\t\t\t\topts.inputBufferBps ?? DEFAULT_INPUT_BUFFER_BPS,\n\t\t\t);\n\t\t\tconst deepAmountRaw = yield* decimalToRaw(quote.deepRequired, DEEP_SCALAR, 'ceil');\n\n\t\t\tyield* signAndDispatch({\n\t\t\t\tsignerSource: account,\n\t\t\t\tbuildTxBytes: () =>\n\t\t\t\t\tEffect.gen(function* () {\n\t\t\t\t\t\tconst tx = yield* Effect.try({\n\t\t\t\t\t\t\ttry: () => {\n\t\t\t\t\t\t\t\tconst transaction = new Transaction();\n\t\t\t\t\t\t\t\ttransaction.setSender(account.address);\n\t\t\t\t\t\t\t\tconst [baseCoin, quoteCoin, deepCoin] = transaction.add(\n\t\t\t\t\t\t\t\t\tdeepBook.deepBook.swapExactQuantity({\n\t\t\t\t\t\t\t\t\t\tpoolKey: DEEPBOOK_DEEP_POOL_KEY,\n\t\t\t\t\t\t\t\t\t\tamount: quoteAmountRaw,\n\t\t\t\t\t\t\t\t\t\tdeepAmount: deepAmountRaw,\n\t\t\t\t\t\t\t\t\t\tminOut: req.amount,\n\t\t\t\t\t\t\t\t\t\tisBaseToCoin: false,\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\ttransaction.transferObjects([baseCoin, quoteCoin, deepCoin], req.address);\n\t\t\t\t\t\t\t\treturn transaction;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcatch: (cause): DeepbookPluginError =>\n\t\t\t\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t\t\t\t'DeepBook DEEP funding transaction build failed.',\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcause,\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});\n\n\t\t\t\t\t\treturn yield* Effect.tryPromise({\n\t\t\t\t\t\t\ttry: () => tx.build({ client: opts.suiSdk.client }),\n\t\t\t\t\t\t\tcatch: (cause): DeepbookPluginError =>\n\t\t\t\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t\t\t\t`DeepBook DEEP funding transaction serialization failed: ${\n\t\t\t\t\t\t\t\t\t\tcause instanceof Error ? cause.message : String(cause)\n\t\t\t\t\t\t\t\t\t}.`,\n\t\t\t\t\t\t\t\t\t{ cause },\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t});\n\t\t\t\t\t}),\n\t\t\t\tmapSignError: (cause): DeepbookPluginError =>\n\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t`DeepBook DEEP funding transaction failed for account '${account.name}'.`,\n\t\t\t\t\t\t{ cause },\n\t\t\t\t\t),\n\t\t\t\tonFailed: (failure) =>\n\t\t\t\t\tEffect.fail(\n\t\t\t\t\t\tdeepbookPluginError(\n\t\t\t\t\t\t\t'fund-deep',\n\t\t\t\t\t\t\t`DeepBook DEEP funding transaction failed on-chain ` +\n\t\t\t\t\t\t\t\t`for account '${account.name}' (address=${account.address}) ` +\n\t\t\t\t\t\t\t\tformatExecutedFailure(failure),\n\t\t\t\t\t\t),\n\t\t\t\t\t),\n\t\t\t\tonSuccess: () => Effect.void,\n\t\t\t});\n\t\t}),\n});\n\nexport const makeDeepbookDeepFundingContribution = (\n\tstrategy: DeepbookDeepFundingStrategy,\n): StrategyContributorDecl<\n\ttypeof DEEPBOOK_DEEP_FAUCET_STRATEGY_KEY,\n\tDeepbookDeepFundingStrategy\n> => ({\n\tkind: 'strategy-contributor',\n\tcapabilityKey: DEEPBOOK_DEEP_FAUCET_STRATEGY_KEY,\n\tstrategy,\n\tautoMounted: true,\n});\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hash.mjs","names":["brandContentHash"],"sources":["../../../src/plugins/deepbook/hash.ts"],"sourcesContent":["// Shared stable content-hash helper for the DeepBook plugin family.\n//\n// `deploy.ts` (pools + seed cache keys) and `pyth/index.ts` (feed cache\n// key) both derive an `ArtifactPublisher` content hash from a canonical\n// `||`-joined input string. Both used the identical sha256 → branded\n// `ContentHash` derivation; this module is the single definition both\n// import so the brand stays consistent across the DeepBook artifacts.\n\nimport { createHash } from 'node:crypto';\n\nimport { contentHash as brandContentHash, type ContentHash } from '../../substrate/brand.ts';\n\n/** sha256 the canonical input string and brand it as a `ContentHash`. */\nexport const stableContentHash = (input: string): ContentHash =>\n\tbrandContentHash(createHash('sha256').update(input).digest('hex'));\n"],"mappings":";;;;AAaA,MAAa,qBAAqB,UACjCA,YAAiB,WAAW,SAAS,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM,CAAC"}
1
+ {"version":3,"file":"hash.mjs","names":["brandContentHash"],"sources":["../../../src/plugins/deepbook/hash.ts"],"sourcesContent":["// Shared stable content-hash helper for the DeepBook plugin family.\n//\n// `deploy.ts` (pools + seed cache keys) and `pyth/index.ts` (feed cache\n// key) both derive an `ArtifactPublisher` content hash from a canonical\n// `||`-joined input string. Both used the identical sha256 → branded\n// `ContentHash` derivation; this module is the single definition both\n// import so the brand stays consistent across the DeepBook artifacts.\n\nimport { createHash } from 'node:crypto';\n\nimport { contentHash as brandContentHash, type ContentHash } from '../../substrate/brand.ts';\n\n/** sha256 the canonical input string and brand it as a `ContentHash`. */\nexport const stableContentHash = (input: string): ContentHash =>\n\tbrandContentHash(createHash('sha256').update(input).digest('hex'));\n"],"mappings":";;;;AAaA,MAAa,qBAAqB,UACjCA,YAAiB,WAAW,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC"}
@@ -1,23 +1,22 @@
1
- import { CodegenableDecl } from "../../contracts/codegenable.mjs";
2
- import { SnapshotableDecl } from "../../contracts/snapshotable.mjs";
3
- import { StrategyContributorDecl } from "../../contracts/strategy-contributor.mjs";
4
1
  import { Plugin, ResourceRef } from "../../substrate/plugin.mjs";
5
2
  import { ModeNamespace } from "../../api/mode-narrowed-factory.mjs";
6
- import { SuiClient } from "../sui/mode/shared.mjs";
7
3
  import { SuiOptions } from "../sui/mode/spec.mjs";
4
+ import { SuiClient } from "../sui/mode/shared.mjs";
8
5
  import { DeepbookConfigError, DeepbookError, DeepbookPhase, DeepbookPluginError } from "./errors.mjs";
9
6
  import { DeepbookDeepFundingStrategy } from "./faucet-strategy.mjs";
10
7
  import { AccountMemberAlias, CoinMemberAlias, DEEP_PRICE_FEED_ID, DeepbookPackageMember, DeepbookPool, DeepbookPoolCoin, DeepbookPoolSeedLiquidity, DeepbookPoolSeedOrder, DeepbookPoolSpec, PythHandle, PythOptions, SUI_PRICE_FEED_ID, USDC_PRICE_FEED_ID, pythPriceFeedId } from "./types.mjs";
11
- import { DeepbookBindings, DeepbookPoolBinding } from "./codegen.mjs";
8
+ import { DeepbookBindings } from "./codegen.mjs";
12
9
  //#region src/plugins/deepbook/index.d.ts
13
10
  /** The deepbook resolved value. Mode-asymmetric:
14
11
  *
15
12
  * - `adminCapId` is `null` for known-deployment mode.
16
- * - `margin` / `serverUrl` / `indexerUrl` / `marketMakerRunning`
17
- * are `null` when the corresponding sub-feature is not enabled. */
13
+ * - `margin` / `serverUrl` / `indexerUrl` are `null` when the
14
+ * corresponding sub-feature is not enabled.
15
+ * - `hasSeedLiquidity` is `true` when one or more pools placed seed
16
+ * orders at boot (it is NOT a market-maker process state). */
18
17
  interface DeepbookResolved {
19
18
  readonly mode: 'local' | 'override' | 'known';
20
- readonly chain: string;
19
+ readonly network: string;
21
20
  readonly packageId: string;
22
21
  readonly registryId: string;
23
22
  readonly adminCapId: string | null;
@@ -30,7 +29,9 @@ interface DeepbookResolved {
30
29
  } | null;
31
30
  readonly serverUrl: string | null;
32
31
  readonly indexerUrl: string | null;
33
- readonly marketMakerRunning: boolean;
32
+ /** `true` when one or more pools placed seed orders at boot. This reflects
33
+ * "a pool was seeded with liquidity", NOT a running market-maker process. */
34
+ readonly hasSeedLiquidity: boolean;
34
35
  readonly deepFundingStrategy: DeepbookDeepFundingStrategy | null;
35
36
  }
36
37
  interface DeepbookCommonOptions {
@@ -42,16 +43,26 @@ interface DeepbookOverrideOptions extends DeepbookCommonOptions {
42
43
  readonly packageId: string;
43
44
  readonly registryId: string;
44
45
  readonly adminCapId: string;
45
- readonly chain?: string;
46
+ readonly network?: string;
46
47
  }
47
- /** Local mode wraps an explicitly supplied local DeepBook package. */
48
+ /** Local mode wraps an explicitly supplied local DeepBook package.
49
+ *
50
+ * Explicit-config discipline: `publisher`, `package`, and `pools` are all
51
+ * REQUIRED — the caller publishes the DeepBook Move tree, funds a publisher,
52
+ * and declares the pools. There is no zero-arg auto-synthesis; an
53
+ * under-specified `deepbook({ mode: 'local' })` fails fast with a tagged
54
+ * config error (see the guard in `resolveLocalOptions`). `pyth` stays
55
+ * optional — pass it to seed local mock price feeds, omit it for a
56
+ * feed-less DeX. */
48
57
  interface DeepbookLocalOptions<Publisher extends AccountMemberAlias = AccountMemberAlias, Package extends DeepbookPackageMember = DeepbookPackageMember, Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], Pyth extends PythOptions | undefined = undefined> extends DeepbookCommonOptions {
49
- /** Publisher account — Direct Member Ref (locked API decision). */
58
+ /** Publisher account — Direct Member Ref (locked API decision). Required. */
50
59
  readonly publisher: Publisher;
51
60
  /** Published DeepBook package member. The package must capture the
52
- * `registry::Registry` and `registry::DeepbookAdminCap` object ids. */
61
+ * `registry::Registry` and `registry::DeepbookAdminCap` object ids.
62
+ * Required. */
53
63
  readonly package: Package;
54
- /** Optional local mock-Pyth package + feed setup. */
64
+ /** Optional local mock-Pyth package + feed setup. Omit for a feed-less
65
+ * local DeX. */
55
66
  readonly pyth?: Pyth;
56
67
  /** Capture key for the package-created `registry::Registry`. */
57
68
  readonly registryIdKey?: string;
@@ -59,14 +70,18 @@ interface DeepbookLocalOptions<Publisher extends AccountMemberAlias = AccountMem
59
70
  readonly adminCapIdKey?: string;
60
71
  /** Optional capture key for a DEEP treasury object used by SDK bindings. */
61
72
  readonly deepTreasuryIdKey?: string;
62
- /** Pools to create after the DeepBook package publishes. Pass `[]`
63
- * only for composition tests or known-empty deployments. */
64
- readonly pools: Pools;
73
+ /** Pools to create after the DeepBook package publishes. OPTIONAL: when
74
+ * omitted, a single unseeded (empty-book) `DEEP/SUI` pool is synthesized
75
+ * (the DEEP coin comes from `package`, SUI is built-in — no extra package
76
+ * needed), so a minimal `deepbook({ mode:'local', publisher, package })`
77
+ * boots a usable DeX. Pass `[]` explicitly for a known-empty deployment, or your own
78
+ * pools for full control. */
79
+ readonly pools?: Pools;
65
80
  }
66
81
  type DeepbookKnownNetwork = 'mainnet' | 'testnet';
67
82
  interface DeepbookKnownCommonOptions extends DeepbookCommonOptions {
68
- /** Optional chain id pin (defaults to the configured network). */
69
- readonly chain?: string;
83
+ /** Optional network override (defaults to the configured network). */
84
+ readonly network?: string;
70
85
  }
71
86
  interface DeepbookKnownNetworkOptions extends DeepbookKnownCommonOptions {
72
87
  readonly network: DeepbookKnownNetwork;
@@ -86,29 +101,23 @@ type DeepbookOptions<Publisher extends AccountMemberAlias = AccountMemberAlias,
86
101
  } & DeepbookOverrideOptions) | ({
87
102
  readonly mode: 'known';
88
103
  } & DeepbookKnownOptions);
89
- type DeepbookLocalEmptyPoolOptions<Publisher extends AccountMemberAlias, Package extends DeepbookPackageMember, Pyth extends PythOptions | undefined = undefined> = Omit<DeepbookLocalOptions<Publisher, Package, readonly [], Pyth>, 'pools'> & {
90
- readonly pools: readonly [];
91
- };
92
104
  type PoolCoinRefs<Pools extends ReadonlyArray<DeepbookPoolSpec>> = Pools[number] extends DeepbookPoolSpec<infer Base, infer Quote> ? Base | Quote : never;
93
105
  type PoolCoinRefTuple<Pools extends ReadonlyArray<DeepbookPoolSpec>> = Pools extends readonly [] ? readonly [] : readonly PoolCoinRefs<Pools>[];
94
106
  type PythRefs<Pyth extends PythOptions | undefined> = Pyth extends PythOptions<infer Package, infer Pusher> ? readonly [Pusher, Package] : readonly [];
95
107
  declare const buildOverridePlugin: (opts: DeepbookOverrideOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
96
108
  readonly mode: SuiOptions["mode"];
97
- }>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">]>;
98
- declare const buildLocalPlugin: <const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], const Pyth extends PythOptions | undefined = undefined>(opts: DeepbookLocalOptions<Publisher, Package, Pools, Pyth>) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
109
+ }>]>;
110
+ declare const buildLocalPlugin: <const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], const Pyth extends PythOptions | undefined = undefined>(rawOpts: DeepbookLocalOptions<Publisher, Package, Pools, Pyth>) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
99
111
  readonly mode: SuiOptions["mode"];
100
- }>, Publisher, Package, ...PythRefs<Pyth>, ...PoolCoinRefTuple<Pools>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">]>;
112
+ }>, Publisher, Package, ...PythRefs<Pyth>, ...PoolCoinRefTuple<Pools>]>;
101
113
  declare const buildKnownPlugin: (opts: DeepbookKnownOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
102
114
  readonly mode: SuiOptions["mode"];
103
- }>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">, ...StrategyContributorDecl<"coinType:0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP", DeepbookDeepFundingStrategy>[]]>;
115
+ }>]>;
104
116
  /** Env-driven factory. Defaults to local mode on localnet when passed local
105
117
  * options. Explicit `override` and `known` modes bypass env inference. */
106
118
  type DeepbookLocalMember<Publisher extends AccountMemberAlias, Package extends DeepbookPackageMember, Pools extends ReadonlyArray<DeepbookPoolSpec>, Pyth extends PythOptions | undefined = undefined> = ReturnType<typeof buildLocalPlugin<Publisher, Package, Pools, Pyth>>;
107
119
  type DeepbookOverrideMember = ReturnType<typeof buildOverridePlugin>;
108
120
  type DeepbookKnownMember = ReturnType<typeof buildKnownPlugin>;
109
- declare function deepbookCore<const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pyth extends PythOptions | undefined = undefined>(opts: {
110
- readonly mode: 'local';
111
- } & DeepbookLocalEmptyPoolOptions<Publisher, Package, Pyth>): DeepbookLocalMember<Publisher, Package, readonly [], Pyth>;
112
121
  declare function deepbookCore<const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], const Pyth extends PythOptions | undefined = undefined>(opts: {
113
122
  readonly mode: 'local';
114
123
  } & DeepbookLocalOptions<Publisher, Package, Pools, Pyth>): DeepbookLocalMember<Publisher, Package, Pools, Pyth>;
@@ -118,17 +127,16 @@ declare function deepbookCore(opts: {
118
127
  declare function deepbookCore(opts: {
119
128
  readonly mode: 'known';
120
129
  } & DeepbookKnownOptions): DeepbookKnownMember;
121
- declare function deepbookCore<const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pyth extends PythOptions | undefined = undefined>(opts: DeepbookLocalEmptyPoolOptions<Publisher, Package, Pyth>): DeepbookLocalMember<Publisher, Package, readonly [], Pyth>;
122
130
  declare function deepbookCore<const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], const Pyth extends PythOptions | undefined = undefined>(opts: DeepbookLocalOptions<Publisher, Package, Pools, Pyth>): DeepbookLocalMember<Publisher, Package, Pools, Pyth>;
123
131
  /** Mode-narrowed factory namespace.
124
132
  *
125
133
  * Usage:
126
- * const local = { mode: 'local', chain: 'sui:localnet' } as const;
134
+ * const local = { mode: 'local', network: 'localnet' } as const;
127
135
  * deepbookFor(local).local({publisher, package, pools}) // OK
128
136
  * deepbookFor(local).override({packageId, registryId, adminCapId}) // OK
129
137
  * deepbookFor(local).known({...}) // OK
130
138
  *
131
- * const fork = { mode: 'fork', chain: 'sui:mainnet-fork', upstream: 'mainnet' } as const;
139
+ * const fork = { mode: 'fork', network: 'mainnet-fork', upstream: 'mainnet' } as const;
132
140
  * deepbookFor(fork).local({...}) // COMPILE ERROR
133
141
  * deepbookFor(fork).override({...}) // COMPILE ERROR
134
142
  *
@@ -138,23 +146,23 @@ declare const deepbookFor: ModeNamespace<{
138
146
  local: {
139
147
  local: <const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], const Pyth extends PythOptions | undefined = undefined>(opts: DeepbookLocalOptions<Publisher, Package, Pools, Pyth>) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
140
148
  readonly mode: SuiOptions["mode"];
141
- }>, Publisher, Package, ...PythRefs<Pyth>, ...PoolCoinRefTuple<Pools>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">]>;
149
+ }>, Publisher, Package, ...PythRefs<Pyth>, ...PoolCoinRefTuple<Pools>]>;
142
150
  override: (opts: DeepbookOverrideOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
143
151
  readonly mode: SuiOptions["mode"];
144
- }>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">]>;
152
+ }>]>;
145
153
  known: (opts: DeepbookKnownOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
146
154
  readonly mode: SuiOptions["mode"];
147
- }>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">, ...StrategyContributorDecl<"coinType:0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP", DeepbookDeepFundingStrategy>[]]>;
155
+ }>]>;
148
156
  };
149
157
  live: {
150
158
  known: (opts: DeepbookKnownOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
151
159
  readonly mode: SuiOptions["mode"];
152
- }>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">, ...StrategyContributorDecl<"coinType:0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP", DeepbookDeepFundingStrategy>[]]>;
160
+ }>]>;
153
161
  };
154
162
  fork: {
155
163
  known: (opts: DeepbookKnownOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
156
164
  readonly mode: SuiOptions["mode"];
157
- }>], readonly [SnapshotableDecl, CodegenableDecl<"deepbook-network">, ...StrategyContributorDecl<"coinType:0x36dbef866a1d62bf7328989a10fb2f07d769f4ee587c0de4a0a256e57e0a58a8::deep::DEEP", DeepbookDeepFundingStrategy>[]]>;
165
+ }>]>;
158
166
  };
159
167
  }>;
160
168
  //#endregion