@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.
- package/README.md +6 -3
- package/dashboard-ui/assets/grpc-Clz0oOtc.js +3 -0
- package/dashboard-ui/assets/index-B82Bh84P.css +1 -0
- package/dashboard-ui/assets/index-Cmqv9kiU.js +1283 -0
- package/dashboard-ui/index.html +2 -2
- package/dist/api/define-capabilities.d.mts +1 -20
- package/dist/api/define-capabilities.mjs +15 -22
- package/dist/api/define-capabilities.mjs.map +1 -1
- package/dist/api/define-devstack-with.d.mts +7 -1
- package/dist/api/define-devstack-with.mjs.map +1 -1
- package/dist/api/define-devstack.mjs.map +1 -1
- package/dist/api/define-plugin.d.mts +2 -1
- package/dist/api/inference-network.d.mts +31 -17
- package/dist/api/inference-network.mjs +40 -43
- package/dist/api/inference-network.mjs.map +1 -1
- package/dist/api/load-config.mjs +88 -0
- package/dist/api/load-config.mjs.map +1 -0
- package/dist/api/mode-narrowed-factory.d.mts +1 -1
- package/dist/api/mode-narrowed-factory.mjs.map +1 -1
- package/dist/api/run-stack-internal.mjs +203 -0
- package/dist/api/run-stack-internal.mjs.map +1 -0
- package/dist/api/run-stack.d.mts +82 -31
- package/dist/api/run-stack.mjs +22 -141
- package/dist/api/run-stack.mjs.map +1 -1
- package/dist/build-integrations/dapp-kit/index.d.mts +61 -0
- package/dist/build-integrations/dapp-kit/index.mjs +58 -0
- package/dist/build-integrations/dapp-kit/index.mjs.map +1 -0
- package/dist/build-integrations/playwright/config.d.mts +3 -31
- package/dist/build-integrations/playwright/config.mjs +2 -28
- package/dist/build-integrations/playwright/config.mjs.map +1 -1
- package/dist/build-integrations/playwright/errors.d.mts +4 -7
- package/dist/build-integrations/playwright/errors.mjs.map +1 -1
- package/dist/build-integrations/playwright/global-setup.d.mts +42 -71
- package/dist/build-integrations/playwright/global-setup.mjs +142 -218
- package/dist/build-integrations/playwright/global-setup.mjs.map +1 -1
- package/dist/build-integrations/playwright/index.d.mts +2 -2
- package/dist/build-integrations/playwright/index.mjs +2 -2
- package/dist/build-integrations/playwright/stack-context.d.mts +3 -1
- package/dist/build-integrations/playwright/stack-context.mjs +4 -2
- package/dist/build-integrations/playwright/stack-context.mjs.map +1 -1
- package/dist/build-integrations/playwright/wallet-context.mjs +44 -19
- package/dist/build-integrations/playwright/wallet-context.mjs.map +1 -1
- package/dist/build-integrations/runtime/cold-start-url.mjs.map +1 -1
- package/dist/build-integrations/runtime/conventional-routes.mjs.map +1 -1
- package/dist/build-integrations/runtime/dapp-kit-slot.mjs.map +1 -1
- package/dist/build-integrations/runtime/discover.d.mts +6 -4
- package/dist/build-integrations/runtime/discover.mjs +15 -4
- package/dist/build-integrations/runtime/discover.mjs.map +1 -1
- package/dist/build-integrations/runtime/endpoint-registry.mjs.map +1 -1
- package/dist/build-integrations/runtime/errors.mjs.map +1 -1
- package/dist/build-integrations/runtime/read-stack-context.mjs +3 -3
- package/dist/build-integrations/runtime/read-stack-context.mjs.map +1 -1
- package/dist/build-integrations/runtime/resolve-discovery-env.d.mts +23 -7
- package/dist/build-integrations/runtime/resolve-discovery-env.mjs +25 -12
- package/dist/build-integrations/runtime/resolve-discovery-env.mjs.map +1 -1
- package/dist/build-integrations/runtime/stack-context.d.mts +2 -2
- package/dist/build-integrations/vite/index.d.mts +114 -19
- package/dist/build-integrations/vite/index.mjs +239 -28
- package/dist/build-integrations/vite/index.mjs.map +1 -1
- package/dist/build-integrations/vitest/config.d.mts +20 -2
- package/dist/build-integrations/vitest/config.mjs +15 -4
- package/dist/build-integrations/vitest/config.mjs.map +1 -1
- package/dist/build-integrations/vitest/env.d.mts +18 -10
- package/dist/build-integrations/vitest/env.mjs +11 -10
- package/dist/build-integrations/vitest/env.mjs.map +1 -1
- package/dist/build-integrations/vitest/errors.d.mts +7 -11
- package/dist/build-integrations/vitest/errors.mjs +3 -4
- package/dist/build-integrations/vitest/errors.mjs.map +1 -1
- package/dist/build-integrations/vitest/global-setup.d.mts +35 -0
- package/dist/build-integrations/vitest/global-setup.mjs +156 -0
- package/dist/build-integrations/vitest/global-setup.mjs.map +1 -0
- package/dist/build-integrations/vitest/index.d.mts +3 -2
- package/dist/build-integrations/vitest/index.mjs +3 -2
- package/dist/build-integrations/vitest/setup.mjs +2 -2
- package/dist/build-integrations/vitest/setup.mjs.map +1 -1
- package/dist/build-integrations/vitest/stack-context.d.mts +5 -3
- package/dist/build-integrations/vitest/stack-context.mjs +3 -2
- package/dist/build-integrations/vitest/stack-context.mjs.map +1 -1
- package/dist/cli/bail.mjs.map +1 -1
- package/dist/cli/doctor-probes.mjs +8 -5
- package/dist/cli/doctor-probes.mjs.map +1 -1
- package/dist/cli/main.d.mts +23 -1
- package/dist/cli/main.mjs +63 -8
- package/dist/cli/main.mjs.map +1 -1
- package/dist/cli/prune-direct.mjs.map +1 -1
- package/dist/cli/snapshot-reader.mjs.map +1 -1
- package/dist/cli/up-lifecycle.mjs.map +1 -1
- package/dist/cli/wirings/apply.mjs +28 -21
- package/dist/cli/wirings/apply.mjs.map +1 -1
- package/dist/cli/wirings/codegen.mjs +108 -0
- package/dist/cli/wirings/codegen.mjs.map +1 -0
- package/dist/cli/wirings/config-loader.mjs +12 -62
- package/dist/cli/wirings/config-loader.mjs.map +1 -1
- package/dist/cli/wirings/dump-ids.mjs +86 -0
- package/dist/cli/wirings/dump-ids.mjs.map +1 -0
- package/dist/cli/wirings/engine-command.mjs +1 -1
- package/dist/cli/wirings/engine-command.mjs.map +1 -1
- package/dist/cli/wirings/identity.mjs +2 -2
- package/dist/cli/wirings/identity.mjs.map +1 -1
- package/dist/cli/wirings/provide-file-system.mjs.map +1 -1
- package/dist/cli/wirings/read-devstack-version.mjs +17 -0
- package/dist/cli/wirings/read-devstack-version.mjs.map +1 -0
- package/dist/cli/wirings/snapshot.mjs +27 -34
- package/dist/cli/wirings/snapshot.mjs.map +1 -1
- package/dist/cli/wirings/up-ipc.mjs +147 -0
- package/dist/cli/wirings/up-ipc.mjs.map +1 -0
- package/dist/cli/wirings/up.mjs +225 -198
- package/dist/cli/wirings/up.mjs.map +1 -1
- package/dist/cli/wirings/wipe.mjs +1 -1
- package/dist/cli/wirings/wipe.mjs.map +1 -1
- package/dist/contracts/chain-probe.d.mts +1 -1
- package/dist/contracts/chain-probe.mjs +1 -1
- package/dist/contracts/chain-probe.mjs.map +1 -1
- package/dist/contracts/codegenable.d.mts +60 -6
- package/dist/contracts/codegenable.mjs +28 -0
- package/dist/contracts/codegenable.mjs.map +1 -0
- package/dist/contracts/config-bindings.mjs +162 -0
- package/dist/contracts/config-bindings.mjs.map +1 -0
- package/dist/contracts/container-runtime.d.mts +23 -17
- package/dist/contracts/plugin-expander.mjs.map +1 -1
- package/dist/contracts/snapshotable.d.mts +5 -7
- package/dist/contracts/wallet-protocol.d.mts +2 -5
- package/dist/contracts/wallet-protocol.mjs +2 -5
- package/dist/contracts/wallet-protocol.mjs.map +1 -1
- package/dist/index.d.mts +21 -26
- package/dist/index.mjs +8 -9
- package/dist/orchestrators/boot.d.mts +28 -0
- package/dist/orchestrators/boot.mjs +450 -0
- package/dist/orchestrators/boot.mjs.map +1 -0
- package/dist/orchestrators/codegen/bindings.d.mts +13 -1
- package/dist/orchestrators/codegen/bindings.mjs +23 -9
- package/dist/orchestrators/codegen/bindings.mjs.map +1 -1
- package/dist/orchestrators/codegen/config-runtime.mjs +208 -0
- package/dist/orchestrators/codegen/config-runtime.mjs.map +1 -0
- package/dist/orchestrators/codegen/emit.mjs +1 -1
- package/dist/orchestrators/codegen/emit.mjs.map +1 -1
- package/dist/orchestrators/codegen/errors.mjs +21 -1
- package/dist/orchestrators/codegen/errors.mjs.map +1 -1
- package/dist/orchestrators/codegen/format.mjs +2 -0
- package/dist/orchestrators/codegen/format.mjs.map +1 -1
- package/dist/orchestrators/codegen/gitignore.mjs +30 -11
- package/dist/orchestrators/codegen/gitignore.mjs.map +1 -1
- package/dist/orchestrators/codegen/id-config.mjs +107 -0
- package/dist/orchestrators/codegen/id-config.mjs.map +1 -0
- package/dist/orchestrators/codegen/output-location.mjs +23 -32
- package/dist/orchestrators/codegen/output-location.mjs.map +1 -1
- package/dist/orchestrators/codegen/paths.mjs +8 -1
- package/dist/orchestrators/codegen/paths.mjs.map +1 -1
- package/dist/orchestrators/codegen/permissions.mjs.map +1 -1
- package/dist/orchestrators/codegen/service.mjs +303 -60
- package/dist/orchestrators/codegen/service.mjs.map +1 -1
- package/dist/orchestrators/layers.mjs +31 -0
- package/dist/orchestrators/layers.mjs.map +1 -0
- package/dist/orchestrators/lifecycle-prune/errors.mjs.map +1 -1
- package/dist/orchestrators/lifecycle-prune/index.mjs +8 -10
- package/dist/orchestrators/lifecycle-prune/index.mjs.map +1 -1
- package/dist/orchestrators/network-options.d.mts +52 -0
- package/dist/orchestrators/network-options.mjs +43 -0
- package/dist/orchestrators/network-options.mjs.map +1 -0
- package/dist/orchestrators/router/cleanup.mjs.map +1 -1
- package/dist/orchestrators/router/cors.mjs.map +1 -1
- package/dist/orchestrators/router/entrypoints.mjs.map +1 -1
- package/dist/orchestrators/router/errors.mjs.map +1 -1
- package/dist/orchestrators/router/file-provider.mjs.map +1 -1
- package/dist/orchestrators/router/hostname.mjs.map +1 -1
- package/dist/orchestrators/router/profile.mjs +1 -1
- package/dist/orchestrators/router/profile.mjs.map +1 -1
- package/dist/orchestrators/router/service.d.mts +2 -2
- package/dist/orchestrators/router/service.mjs +12 -27
- package/dist/orchestrators/router/service.mjs.map +1 -1
- package/dist/orchestrators/router/traefik-container.mjs +1 -1
- package/dist/orchestrators/router/traefik-container.mjs.map +1 -1
- package/dist/orchestrators/snapshot/capture.mjs +171 -195
- package/dist/orchestrators/snapshot/capture.mjs.map +1 -1
- package/dist/orchestrators/snapshot/descriptor.d.mts +1 -1
- package/dist/orchestrators/snapshot/descriptor.mjs +53 -11
- package/dist/orchestrators/snapshot/descriptor.mjs.map +1 -1
- package/dist/orchestrators/snapshot/identity-guard.mjs +3 -5
- package/dist/orchestrators/snapshot/identity-guard.mjs.map +1 -1
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs +32 -101
- package/dist/orchestrators/snapshot/image-bundle-tags.mjs.map +1 -1
- package/dist/orchestrators/snapshot/index.mjs +1 -4
- package/dist/orchestrators/snapshot/integrity.mjs.map +1 -1
- package/dist/orchestrators/snapshot/interrupted-restore.mjs +116 -0
- package/dist/orchestrators/snapshot/interrupted-restore.mjs.map +1 -0
- package/dist/orchestrators/snapshot/phase-error.mjs.map +1 -1
- package/dist/orchestrators/snapshot/prune.mjs +40 -31
- package/dist/orchestrators/snapshot/prune.mjs.map +1 -1
- package/dist/orchestrators/snapshot/restore.mjs +221 -196
- package/dist/orchestrators/snapshot/restore.mjs.map +1 -1
- package/dist/orchestrators/snapshot/service.mjs +72 -62
- package/dist/orchestrators/snapshot/service.mjs.map +1 -1
- package/dist/orchestrators/snapshot/wipe.mjs +67 -56
- package/dist/orchestrators/snapshot/wipe.mjs.map +1 -1
- package/dist/plugins/account/codegen.mjs +3 -0
- package/dist/plugins/account/codegen.mjs.map +1 -1
- package/dist/plugins/account/errors.d.mts +2 -2
- package/dist/plugins/account/errors.mjs +1 -4
- package/dist/plugins/account/errors.mjs.map +1 -1
- package/dist/plugins/account/funding.mjs +3 -27
- package/dist/plugins/account/funding.mjs.map +1 -1
- package/dist/plugins/account/index.d.mts +3 -8
- package/dist/plugins/account/index.mjs +71 -35
- package/dist/plugins/account/index.mjs.map +1 -1
- package/dist/plugins/account/keypair.d.mts +8 -7
- package/dist/plugins/account/keypair.mjs +5 -18
- package/dist/plugins/account/keypair.mjs.map +1 -1
- package/dist/plugins/account/lease.mjs.map +1 -1
- package/dist/plugins/account/registry.d.mts +1 -46
- package/dist/plugins/account/registry.mjs.map +1 -1
- package/dist/plugins/account/service.d.mts +43 -34
- package/dist/plugins/account/service.mjs +9 -54
- package/dist/plugins/account/service.mjs.map +1 -1
- package/dist/plugins/account/snapshot.mjs.map +1 -1
- package/dist/plugins/account/variants/ephemeral.mjs.map +1 -1
- package/dist/plugins/account/variants/impersonate.mjs.map +1 -1
- package/dist/plugins/account/variants/signer.mjs.map +1 -1
- package/dist/plugins/action/discriminator.mjs.map +1 -1
- package/dist/plugins/action/errors.mjs +1 -4
- package/dist/plugins/action/errors.mjs.map +1 -1
- package/dist/plugins/action/execute.mjs +3 -4
- package/dist/plugins/action/execute.mjs.map +1 -1
- package/dist/plugins/action/index.d.mts +2 -2
- package/dist/plugins/action/index.mjs +7 -11
- package/dist/plugins/action/index.mjs.map +1 -1
- package/dist/plugins/action/service.d.mts +5 -7
- package/dist/plugins/action/service.mjs +2 -16
- package/dist/plugins/action/service.mjs.map +1 -1
- package/dist/plugins/coin/address-resolution.mjs.map +1 -1
- package/dist/plugins/coin/codegen.mjs +97 -16
- package/dist/plugins/coin/codegen.mjs.map +1 -1
- package/dist/plugins/coin/discovery.mjs.map +1 -1
- package/dist/plugins/coin/errors.mjs +1 -4
- package/dist/plugins/coin/errors.mjs.map +1 -1
- package/dist/plugins/coin/index.d.mts +4 -34
- package/dist/plugins/coin/index.mjs +47 -28
- package/dist/plugins/coin/index.mjs.map +1 -1
- package/dist/plugins/coin/metadata.d.mts +1 -0
- package/dist/plugins/coin/metadata.mjs +8 -9
- package/dist/plugins/coin/metadata.mjs.map +1 -1
- package/dist/plugins/coin/mint.mjs +7 -21
- package/dist/plugins/coin/mint.mjs.map +1 -1
- package/dist/plugins/coin/registry.mjs +33 -20
- package/dist/plugins/coin/registry.mjs.map +1 -1
- package/dist/plugins/coin/service.d.mts +1 -1
- package/dist/plugins/coin/service.mjs +1 -8
- package/dist/plugins/coin/service.mjs.map +1 -1
- package/dist/plugins/coin/snapshot.mjs.map +1 -1
- package/dist/plugins/coin/type-strings.mjs.map +1 -1
- package/dist/plugins/dashboard/domain.mjs +124 -168
- package/dist/plugins/dashboard/domain.mjs.map +1 -1
- package/dist/plugins/dashboard/index.mjs +13 -13
- package/dist/plugins/dashboard/index.mjs.map +1 -1
- package/dist/plugins/dashboard/origin-policy.mjs +3 -3
- package/dist/plugins/dashboard/origin-policy.mjs.map +1 -1
- package/dist/plugins/dashboard/routable.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/builder.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/enums.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/root.mjs +25 -46
- package/dist/plugins/dashboard/schema/root.mjs.map +1 -1
- package/dist/plugins/dashboard/schema/types.mjs +52 -93
- package/dist/plugins/dashboard/schema/types.mjs.map +1 -1
- package/dist/plugins/dashboard/schema.mjs.map +1 -1
- package/dist/plugins/dashboard/server.mjs.map +1 -1
- package/dist/plugins/deepbook/codegen.d.mts +12 -11
- package/dist/plugins/deepbook/codegen.mjs +108 -11
- package/dist/plugins/deepbook/codegen.mjs.map +1 -1
- package/dist/plugins/deepbook/deploy.mjs +7 -14
- package/dist/plugins/deepbook/deploy.mjs.map +1 -1
- package/dist/plugins/deepbook/errors.mjs +4 -2
- package/dist/plugins/deepbook/errors.mjs.map +1 -1
- package/dist/plugins/deepbook/faucet-strategy.mjs +4 -10
- package/dist/plugins/deepbook/faucet-strategy.mjs.map +1 -1
- package/dist/plugins/deepbook/hash.mjs.map +1 -1
- package/dist/plugins/deepbook/index.d.mts +45 -37
- package/dist/plugins/deepbook/index.mjs +136 -67
- package/dist/plugins/deepbook/index.mjs.map +1 -1
- package/dist/plugins/deepbook/plugin-key.mjs.map +1 -1
- package/dist/plugins/deepbook/pyth/index.mjs +4 -8
- package/dist/plugins/deepbook/pyth/index.mjs.map +1 -1
- package/dist/plugins/deepbook/snapshot.mjs +0 -1
- package/dist/plugins/deepbook/snapshot.mjs.map +1 -1
- package/dist/plugins/deepbook/type-strings.mjs.map +1 -1
- package/dist/plugins/deepbook/types.d.mts +2 -1
- package/dist/plugins/deepbook/types.mjs.map +1 -1
- package/dist/plugins/faucet/dispatcher.d.mts +3 -3
- package/dist/plugins/faucet/dispatcher.mjs.map +1 -1
- package/dist/plugins/faucet/errors.mjs.map +1 -1
- package/dist/plugins/faucet/http.mjs +2 -10
- package/dist/plugins/faucet/http.mjs.map +1 -1
- package/dist/plugins/faucet/index.mjs +0 -1
- package/dist/plugins/faucet/index.mjs.map +1 -1
- package/dist/plugins/host-service/errors.d.mts +1 -3
- package/dist/plugins/host-service/errors.mjs +1 -2
- package/dist/plugins/host-service/errors.mjs.map +1 -1
- package/dist/plugins/host-service/index.d.mts +1 -2
- package/dist/plugins/host-service/index.mjs +11 -11
- package/dist/plugins/host-service/index.mjs.map +1 -1
- package/dist/plugins/host-service/routable.mjs.map +1 -1
- package/dist/plugins/host-service/service.mjs +13 -13
- package/dist/plugins/host-service/service.mjs.map +1 -1
- package/dist/plugins/internal/acquire-on-chain-artifact.mjs.map +1 -1
- package/dist/plugins/internal/codegen-helpers.mjs +2 -0
- package/dist/plugins/internal/codegen-helpers.mjs.map +1 -1
- package/dist/plugins/internal/funding-failure-error.mjs.map +1 -1
- package/dist/plugins/{postgres → internal/postgres-sidecar}/connection.mjs +1 -1
- package/dist/plugins/internal/postgres-sidecar/connection.mjs.map +1 -0
- package/dist/plugins/{postgres → internal/postgres-sidecar}/db-ensure.mjs +30 -16
- package/dist/plugins/internal/postgres-sidecar/db-ensure.mjs.map +1 -0
- package/dist/plugins/internal/postgres-sidecar/errors.mjs +21 -0
- package/dist/plugins/internal/postgres-sidecar/errors.mjs.map +1 -0
- package/dist/{substrate/runtime/scoped-multimap → plugins/internal/postgres-sidecar}/index.mjs +1 -0
- package/dist/plugins/internal/postgres-sidecar/service.mjs +121 -0
- package/dist/plugins/internal/postgres-sidecar/service.mjs.map +1 -0
- package/dist/plugins/package/build.mjs +2 -2
- package/dist/plugins/package/build.mjs.map +1 -1
- package/dist/plugins/package/codegen.d.mts +7 -14
- package/dist/plugins/package/codegen.mjs +187 -59
- package/dist/plugins/package/codegen.mjs.map +1 -1
- package/dist/plugins/package/dep-resolution.mjs +51 -3
- package/dist/plugins/package/dep-resolution.mjs.map +1 -1
- package/dist/plugins/package/errors.mjs +1 -4
- package/dist/plugins/package/errors.mjs.map +1 -1
- package/dist/plugins/package/git-source.d.mts +18 -0
- package/dist/plugins/package/git-source.mjs +119 -0
- package/dist/plugins/package/git-source.mjs.map +1 -0
- package/dist/plugins/package/index.d.mts +28 -19
- package/dist/plugins/package/index.mjs +107 -32
- package/dist/plugins/package/index.mjs.map +1 -1
- package/dist/plugins/package/mode-known.mjs +2 -2
- package/dist/plugins/package/mode-known.mjs.map +1 -1
- package/dist/plugins/package/mode-local.mjs +18 -35
- package/dist/plugins/package/mode-local.mjs.map +1 -1
- package/dist/plugins/package/publish-executor.mjs +13 -8
- package/dist/plugins/package/publish-executor.mjs.map +1 -1
- package/dist/plugins/package/publish-output.d.mts +1 -11
- package/dist/plugins/package/publish-output.mjs +1 -9
- package/dist/plugins/package/publish-output.mjs.map +1 -1
- package/dist/plugins/package/registry.d.mts +1 -1
- package/dist/plugins/package/registry.mjs +26 -14
- package/dist/plugins/package/registry.mjs.map +1 -1
- package/dist/plugins/package/service.mjs.map +1 -1
- package/dist/plugins/package/snapshot.mjs.map +1 -1
- package/dist/plugins/router-entrypoints.mjs +1 -3
- package/dist/plugins/router-entrypoints.mjs.map +1 -1
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs +1 -2
- package/dist/plugins/seal/bootstrap-assets/cargo-image.mjs.map +1 -1
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs +1 -6
- package/dist/plugins/seal/bootstrap-assets/source-fetch.mjs.map +1 -1
- package/dist/plugins/seal/codegen.d.mts +1 -5
- package/dist/plugins/seal/codegen.mjs +83 -12
- package/dist/plugins/seal/codegen.mjs.map +1 -1
- package/dist/plugins/seal/config-render.mjs +2 -6
- package/dist/plugins/seal/config-render.mjs.map +1 -1
- package/dist/plugins/seal/deploy.mjs +18 -29
- package/dist/plugins/seal/deploy.mjs.map +1 -1
- package/dist/plugins/seal/errors.d.mts +4 -5
- package/dist/plugins/seal/errors.mjs +1 -8
- package/dist/plugins/seal/errors.mjs.map +1 -1
- package/dist/plugins/seal/index.d.mts +7 -28
- package/dist/plugins/seal/index.mjs +69 -47
- package/dist/plugins/seal/index.mjs.map +1 -1
- package/dist/plugins/seal/key-manager.mjs.map +1 -1
- package/dist/plugins/seal/key-server.mjs +1 -6
- package/dist/plugins/seal/key-server.mjs.map +1 -1
- package/dist/plugins/seal/keygen.mjs +2 -3
- package/dist/plugins/seal/keygen.mjs.map +1 -1
- package/dist/plugins/seal/mode/fork-known.mjs.map +1 -1
- package/dist/plugins/seal/mode/live.mjs +1 -1
- package/dist/plugins/seal/mode/live.mjs.map +1 -1
- package/dist/plugins/seal/mode/local-keygen.mjs +4 -10
- package/dist/plugins/seal/mode/local-keygen.mjs.map +1 -1
- package/dist/plugins/seal/plugin-key.mjs.map +1 -1
- package/dist/plugins/seal/registry-publish.mjs.map +1 -1
- package/dist/plugins/seal/routable.mjs.map +1 -1
- package/dist/plugins/seal/service.mjs.map +1 -1
- package/dist/plugins/seal/snapshot.mjs +1 -2
- package/dist/plugins/seal/snapshot.mjs.map +1 -1
- package/dist/plugins/sui/auto-tick.mjs +5 -5
- package/dist/plugins/sui/auto-tick.mjs.map +1 -1
- package/dist/plugins/sui/chain-build-container.mjs +2 -2
- package/dist/plugins/sui/chain-build-container.mjs.map +1 -1
- package/dist/plugins/sui/chain-probe.mjs +4 -4
- package/dist/plugins/sui/chain-probe.mjs.map +1 -1
- package/dist/plugins/sui/codegen.d.mts +9 -7
- package/dist/plugins/sui/codegen.mjs +49 -46
- package/dist/plugins/sui/codegen.mjs.map +1 -1
- package/dist/plugins/sui/errors.d.mts +1 -1
- package/dist/plugins/sui/errors.mjs +1 -9
- package/dist/plugins/sui/errors.mjs.map +1 -1
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.d.mts +1 -1
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/index.mjs +3 -7
- package/dist/plugins/sui/exec/index.mjs.map +1 -0
- package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.mjs +1 -1
- package/dist/plugins/sui/exec/sign-and-dispatch.mjs.map +1 -0
- package/dist/plugins/sui/fork-faucet-strategy.mjs +2 -6
- package/dist/plugins/sui/fork-faucet-strategy.mjs.map +1 -1
- package/dist/plugins/sui/fork-orchestration.mjs +13 -23
- package/dist/plugins/sui/fork-orchestration.mjs.map +1 -1
- package/dist/plugins/sui/fork-transaction.mjs.map +1 -1
- package/dist/plugins/sui/index.d.mts +44 -93
- package/dist/plugins/sui/index.mjs +200 -68
- package/dist/plugins/sui/index.mjs.map +1 -1
- package/dist/{substrate/runtime/sui-ledger → plugins/sui/ledger}/object-ref.mjs +1 -1
- package/dist/plugins/sui/ledger/object-ref.mjs.map +1 -0
- package/dist/plugins/sui/local-faucet-strategy.mjs +1 -5
- package/dist/plugins/sui/local-faucet-strategy.mjs.map +1 -1
- package/dist/plugins/sui/log-attrs.mjs +11 -0
- package/dist/plugins/sui/log-attrs.mjs.map +1 -0
- package/dist/plugins/sui/mode/external.mjs +4 -12
- package/dist/plugins/sui/mode/external.mjs.map +1 -1
- package/dist/plugins/sui/mode/fork.mjs +19 -16
- package/dist/plugins/sui/mode/fork.mjs.map +1 -1
- package/dist/plugins/sui/mode/live.mjs +4 -17
- package/dist/plugins/sui/mode/live.mjs.map +1 -1
- package/dist/plugins/sui/mode/local.d.mts +1 -0
- package/dist/plugins/sui/mode/local.mjs +203 -61
- package/dist/plugins/sui/mode/local.mjs.map +1 -1
- package/dist/plugins/sui/mode/shared-boot.mjs +18 -23
- package/dist/plugins/sui/mode/shared-boot.mjs.map +1 -1
- package/dist/plugins/sui/mode/shared.d.mts +6 -7
- package/dist/plugins/sui/mode/shared.mjs.map +1 -1
- package/dist/plugins/sui/mode/spec.d.mts +23 -6
- package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.mjs +28 -30
- package/dist/plugins/sui/move/index.mjs.map +1 -0
- package/dist/plugins/sui/move-summary-runner.mjs +37 -6
- package/dist/plugins/sui/move-summary-runner.mjs.map +1 -1
- package/dist/{substrate/network.d.mts → plugins/sui/network-config.d.mts} +11 -10
- package/dist/plugins/sui/network-resolver.d.mts +6 -6
- package/dist/plugins/sui/routable.mjs.map +1 -1
- package/dist/plugins/sui/service.mjs +10 -6
- package/dist/plugins/sui/service.mjs.map +1 -1
- package/dist/plugins/sui/snapshot.mjs +10 -5
- package/dist/plugins/sui/snapshot.mjs.map +1 -1
- package/dist/plugins/wallet/codegen.d.mts +8 -6
- package/dist/plugins/wallet/codegen.mjs +4 -10
- package/dist/plugins/wallet/codegen.mjs.map +1 -1
- package/dist/plugins/wallet/errors.mjs +1 -4
- package/dist/plugins/wallet/errors.mjs.map +1 -1
- package/dist/plugins/wallet/index.d.mts +3 -6
- package/dist/plugins/wallet/index.mjs +16 -21
- package/dist/plugins/wallet/index.mjs.map +1 -1
- package/dist/plugins/wallet/origin-policy.mjs +3 -3
- package/dist/plugins/wallet/origin-policy.mjs.map +1 -1
- package/dist/plugins/wallet/pairing.mjs +6 -24
- package/dist/plugins/wallet/pairing.mjs.map +1 -1
- package/dist/plugins/wallet/protocol.mjs.map +1 -1
- package/dist/plugins/wallet/routable.mjs.map +1 -1
- package/dist/plugins/wallet/server.mjs +17 -24
- package/dist/plugins/wallet/server.mjs.map +1 -1
- package/dist/plugins/wallet/service.d.mts +2 -2
- package/dist/plugins/wallet/service.mjs +4 -15
- package/dist/plugins/wallet/service.mjs.map +1 -1
- package/dist/plugins/wallet/snapshot.mjs.map +1 -1
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs +1 -5
- package/dist/plugins/walrus/bootstrap-assets/cargo-image.mjs.map +1 -1
- package/dist/plugins/walrus/codegen.d.mts +2 -13
- package/dist/plugins/walrus/codegen.mjs +93 -28
- package/dist/plugins/walrus/codegen.mjs.map +1 -1
- package/dist/plugins/walrus/deploy-paths.mjs +2 -3
- package/dist/plugins/walrus/deploy-paths.mjs.map +1 -1
- package/dist/plugins/walrus/deploy.mjs +26 -19
- package/dist/plugins/walrus/deploy.mjs.map +1 -1
- package/dist/plugins/walrus/errors.mjs +1 -8
- package/dist/plugins/walrus/errors.mjs.map +1 -1
- package/dist/plugins/walrus/faucet-strategy.mjs +15 -1
- package/dist/plugins/walrus/faucet-strategy.mjs.map +1 -1
- package/dist/plugins/walrus/index.d.mts +13 -44
- package/dist/plugins/walrus/index.mjs +119 -122
- package/dist/plugins/walrus/index.mjs.map +1 -1
- package/dist/plugins/walrus/mode/known-deploy.mjs +6 -6
- package/dist/plugins/walrus/mode/known-deploy.mjs.map +1 -1
- package/dist/plugins/walrus/mode/local-cluster.d.mts +2 -2
- package/dist/plugins/walrus/mode/local-cluster.mjs +2 -10
- package/dist/plugins/walrus/mode/local-cluster.mjs.map +1 -1
- package/dist/plugins/walrus/plugin-key.mjs.map +1 -1
- package/dist/plugins/walrus/registry-publish.mjs.map +1 -1
- package/dist/plugins/walrus/routable.mjs.map +1 -1
- package/dist/plugins/walrus/service.mjs.map +1 -1
- package/dist/plugins/walrus/snapshot.mjs +3 -3
- package/dist/plugins/walrus/snapshot.mjs.map +1 -1
- package/dist/plugins/walrus/storage-nodes.mjs +53 -14
- package/dist/plugins/walrus/storage-nodes.mjs.map +1 -1
- package/dist/plugins/walrus/wal-swap.mjs +4 -8
- package/dist/plugins/walrus/wal-swap.mjs.map +1 -1
- package/dist/primitives/artifact-publisher.mjs.map +1 -1
- package/dist/primitives/cache.d.mts +1 -1
- package/dist/runtime/docker/client.mjs +47 -3
- package/dist/runtime/docker/client.mjs.map +1 -1
- package/dist/runtime/docker/container.mjs +37 -57
- package/dist/runtime/docker/container.mjs.map +1 -1
- package/dist/runtime/docker/errors.mjs.map +1 -1
- package/dist/runtime/docker/exec.mjs +2 -2
- package/dist/runtime/docker/exec.mjs.map +1 -1
- package/dist/runtime/docker/image.mjs +10 -11
- package/dist/runtime/docker/image.mjs.map +1 -1
- package/dist/runtime/docker/index.mjs +0 -1
- package/dist/runtime/docker/inspect-and-decode.mjs.map +1 -1
- package/dist/runtime/docker/inventory.mjs +9 -9
- package/dist/runtime/docker/inventory.mjs.map +1 -1
- package/dist/runtime/docker/labels.mjs +12 -1
- package/dist/runtime/docker/labels.mjs.map +1 -1
- package/dist/runtime/docker/network.mjs +6 -6
- package/dist/runtime/docker/network.mjs.map +1 -1
- package/dist/runtime/docker/render-run-args.mjs.map +1 -1
- package/dist/runtime/docker/service.mjs +31 -45
- package/dist/runtime/docker/service.mjs.map +1 -1
- package/dist/runtime/docker/sweep.mjs +14 -64
- package/dist/runtime/docker/sweep.mjs.map +1 -1
- package/dist/runtime/docker/volume.mjs +1 -1
- package/dist/runtime/docker/volume.mjs.map +1 -1
- package/dist/runtime/docker/wrap.mjs +14 -2
- package/dist/runtime/docker/wrap.mjs.map +1 -1
- package/dist/substrate/brand.d.mts +2 -5
- package/dist/substrate/brand.mjs +3 -2
- package/dist/substrate/brand.mjs.map +1 -1
- package/dist/substrate/cross-process.mjs +2 -16
- package/dist/substrate/cross-process.mjs.map +1 -1
- package/dist/substrate/event-time.mjs +0 -2
- package/dist/substrate/event-time.mjs.map +1 -1
- package/dist/substrate/events.d.mts +46 -16
- package/dist/substrate/identity.d.mts +11 -5
- package/dist/substrate/manifest.d.mts +33 -26
- package/dist/substrate/manifest.mjs +8 -3
- package/dist/substrate/manifest.mjs.map +1 -1
- package/dist/substrate/options.d.mts +33 -4
- package/dist/substrate/plugin-ctx.d.mts +70 -0
- package/dist/substrate/plugin-ctx.mjs +66 -0
- package/dist/substrate/plugin-ctx.mjs.map +1 -0
- package/dist/substrate/plugin.d.mts +46 -38
- package/dist/substrate/plugin.mjs +13 -9
- package/dist/substrate/plugin.mjs.map +1 -1
- package/dist/substrate/projection.d.mts +1 -1
- package/dist/substrate/runtime/atomic-write.mjs +3 -4
- package/dist/substrate/runtime/atomic-write.mjs.map +1 -1
- package/dist/substrate/runtime/cache/schema.mjs.map +1 -1
- package/dist/substrate/runtime/cache/service.mjs +50 -20
- package/dist/substrate/runtime/cache/service.mjs.map +1 -1
- package/dist/substrate/runtime/config-validation.mjs.map +1 -1
- package/dist/substrate/runtime/control-plane/domain.mjs +34 -12
- package/dist/substrate/runtime/control-plane/domain.mjs.map +1 -1
- package/dist/substrate/runtime/control-plane/service.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs +14 -17
- package/dist/substrate/runtime/cross-process/command-channel/channel.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/file-channel.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/protocol.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/command-channel/runtime-control-lock.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/index.mjs +0 -2
- package/dist/substrate/runtime/cross-process/live-clock.mjs +1 -1
- package/dist/substrate/runtime/cross-process/live-clock.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/liveness.mjs +11 -18
- package/dist/substrate/runtime/cross-process/liveness.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs +2 -2
- package/dist/substrate/runtime/cross-process/reclaim-stale-file.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/roster.mjs +17 -127
- package/dist/substrate/runtime/cross-process/roster.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/self-pid.mjs.map +1 -1
- package/dist/substrate/runtime/cross-process/stack-lock.mjs +29 -28
- package/dist/substrate/runtime/cross-process/stack-lock.mjs.map +1 -1
- package/dist/substrate/runtime/current-plugin.mjs.map +1 -1
- package/dist/substrate/runtime/errors.mjs +1 -13
- package/dist/substrate/runtime/errors.mjs.map +1 -1
- package/dist/substrate/runtime/format-unknown-error.mjs.map +1 -1
- package/dist/substrate/runtime/host-bind-mount-owner.mjs.map +1 -1
- package/dist/substrate/runtime/host-gateway.mjs.map +1 -1
- package/dist/substrate/runtime/host-tree-tar/index.mjs +15 -163
- package/dist/substrate/runtime/host-tree-tar/index.mjs.map +1 -1
- package/dist/substrate/runtime/http-probe.d.mts +1 -3
- package/dist/substrate/runtime/http-probe.mjs.map +1 -1
- package/dist/substrate/runtime/index.mjs +2 -6
- package/dist/substrate/runtime/lease-broker/service.mjs +5 -23
- package/dist/substrate/runtime/lease-broker/service.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs +3 -3
- package/dist/substrate/runtime/lifecycle/dep-graph.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/file-watcher.mjs +54 -0
- package/dist/substrate/runtime/lifecycle/file-watcher.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.d.mts +1 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.mjs +133 -0
- package/dist/substrate/runtime/lifecycle/graph-input-id.mjs.map +1 -0
- package/dist/substrate/runtime/lifecycle/index.mjs +3 -2
- package/dist/substrate/runtime/lifecycle/plugin-registry.d.mts +1 -1
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs +22 -1
- package/dist/substrate/runtime/lifecycle/plugin-registry.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs +2 -15
- package/dist/substrate/runtime/lifecycle/ready-gate.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs +29 -25
- package/dist/substrate/runtime/lifecycle/selective-restart.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/signals.mjs +1 -1
- package/dist/substrate/runtime/lifecycle/signals.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/state-machine.mjs.map +1 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.d.mts +1 -1
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs +76 -7
- package/dist/substrate/runtime/lifecycle/watch-attribution.mjs.map +1 -1
- package/dist/substrate/runtime/managed-container.d.mts +5 -1
- package/dist/substrate/runtime/managed-container.mjs +8 -10
- package/dist/substrate/runtime/managed-container.mjs.map +1 -1
- package/dist/substrate/runtime/manifest/manifest.mjs +8 -30
- package/dist/substrate/runtime/manifest/manifest.mjs.map +1 -1
- package/dist/substrate/runtime/mode-errors.d.mts +1 -2
- package/dist/substrate/runtime/mode-errors.mjs.map +1 -1
- package/dist/substrate/runtime/observability/cascade-formatter.mjs +1 -11
- package/dist/substrate/runtime/observability/cascade-formatter.mjs.map +1 -1
- package/dist/substrate/runtime/observability/ignore-with-log.mjs.map +1 -1
- package/dist/substrate/runtime/observability/index.d.mts +1 -1
- package/dist/substrate/runtime/observability/index.mjs +4 -6
- package/dist/substrate/runtime/observability/log-attrs.mjs +46 -0
- package/dist/substrate/runtime/observability/log-attrs.mjs.map +1 -0
- package/dist/substrate/runtime/observability/log-store.mjs.map +1 -1
- package/dist/substrate/runtime/observability/logger.mjs +3 -3
- package/dist/substrate/runtime/observability/logger.mjs.map +1 -1
- package/dist/substrate/runtime/observability/output-truncate.mjs.map +1 -1
- package/dist/substrate/runtime/observability/pretty-error.mjs.map +1 -1
- package/dist/substrate/runtime/observability/process-lines.mjs.map +1 -1
- package/dist/substrate/runtime/observability/redaction.mjs.map +1 -1
- package/dist/substrate/runtime/observability/subprocess-capture.mjs +2 -2
- package/dist/substrate/runtime/observability/subprocess-capture.mjs.map +1 -1
- package/dist/substrate/runtime/passthrough-or-wrap.mjs.map +1 -1
- package/dist/substrate/runtime/paths.mjs +27 -9
- package/dist/substrate/runtime/paths.mjs.map +1 -1
- package/dist/substrate/runtime/phase-preserving-produce.mjs.map +1 -1
- package/dist/substrate/runtime/port-broker/service.mjs +10 -27
- package/dist/substrate/runtime/port-broker/service.mjs.map +1 -1
- package/dist/substrate/runtime/post-acquire-tasks.mjs.map +1 -1
- package/dist/substrate/runtime/probes.d.mts +2 -3
- package/dist/substrate/runtime/probes.mjs.map +1 -1
- package/dist/substrate/runtime/process-supervisor.mjs.map +1 -1
- package/dist/substrate/runtime/projection/operational-endpoints.mjs.map +1 -1
- package/dist/substrate/runtime/projection/state-ref.mjs.map +1 -1
- package/dist/substrate/runtime/projection/update.mjs +87 -11
- package/dist/substrate/runtime/projection/update.mjs.map +1 -1
- package/dist/substrate/runtime/random-suffix.mjs.map +1 -1
- package/dist/substrate/runtime/reconcile/fs-plan.mjs +146 -0
- package/dist/substrate/runtime/reconcile/fs-plan.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/graph.mjs +19 -0
- package/dist/substrate/runtime/reconcile/graph.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/index.mjs +5 -0
- package/dist/substrate/runtime/reconcile/label.mjs +41 -0
- package/dist/substrate/runtime/reconcile/label.mjs.map +1 -0
- package/dist/substrate/runtime/reconcile/spec.mjs +15 -0
- package/dist/substrate/runtime/reconcile/spec.mjs.map +1 -0
- package/dist/substrate/runtime/retry-policy.d.mts +2 -3
- package/dist/substrate/runtime/retry-policy.mjs.map +1 -1
- package/dist/substrate/runtime/routed-url.mjs.map +1 -1
- package/dist/substrate/runtime/runtime-decode.mjs.map +1 -1
- package/dist/substrate/runtime/scoped-http-server.mjs.map +1 -1
- package/dist/substrate/runtime/stage-and-swap/index.mjs +49 -12
- package/dist/substrate/runtime/stage-and-swap/index.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/chain-keyed-strategy-for.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/chain-probe-for.mjs.map +1 -1
- package/dist/substrate/runtime/strategy-registry/service.mjs +29 -17
- package/dist/substrate/runtime/strategy-registry/service.mjs.map +1 -1
- package/dist/substrate/runtime/subnet-broker.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/acquire-node.mjs +188 -56
- package/dist/substrate/runtime/supervisor/acquire-node.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/background-tasks.mjs +79 -65
- package/dist/substrate/runtime/supervisor/background-tasks.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/command-loop.mjs +82 -23
- package/dist/substrate/runtime/supervisor/command-loop.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.d.mts +1 -0
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs +16 -0
- package/dist/substrate/runtime/supervisor/contribution-dispatcher.mjs.map +1 -0
- package/dist/substrate/runtime/supervisor/errors.mjs +11 -2
- package/dist/substrate/runtime/supervisor/errors.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/index.mjs +2 -0
- package/dist/substrate/runtime/supervisor/shutdown.mjs +6 -6
- package/dist/substrate/runtime/supervisor/shutdown.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/start-supervisor.mjs +61 -75
- package/dist/substrate/runtime/supervisor/start-supervisor.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/state.d.mts +1 -1
- package/dist/substrate/runtime/supervisor/state.mjs +1 -1
- package/dist/substrate/runtime/supervisor/state.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/teardown.mjs +10 -9
- package/dist/substrate/runtime/supervisor/teardown.mjs.map +1 -1
- package/dist/substrate/runtime/supervisor/wiring.mjs +6 -20
- package/dist/substrate/runtime/supervisor/wiring.mjs.map +1 -1
- package/dist/substrate/runtime/tar/reader.mjs +216 -0
- package/dist/substrate/runtime/tar/reader.mjs.map +1 -0
- package/dist/substrate/runtime/typed-env.mjs.map +1 -1
- package/dist/substrate/versioned-doc-schema.mjs.map +1 -1
- package/dist/substrate/versioned-doc-sync.mjs +5 -5
- package/dist/substrate/versioned-doc-sync.mjs.map +1 -1
- package/dist/surfaces/cli/command-tree.mjs +49 -7
- package/dist/surfaces/cli/command-tree.mjs.map +1 -1
- package/dist/surfaces/cli/commands/config.mjs +1 -1
- package/dist/surfaces/cli/commands/config.mjs.map +1 -1
- package/dist/surfaces/cli/commands/confirm-node.mjs.map +1 -1
- package/dist/surfaces/cli/commands/confirm.mjs.map +1 -1
- package/dist/surfaces/cli/commands/doctor.mjs +1 -1
- package/dist/surfaces/cli/commands/doctor.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune-picker-entry.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune-picker.mjs.map +1 -1
- package/dist/surfaces/cli/commands/prune.mjs +1 -1
- package/dist/surfaces/cli/commands/prune.mjs.map +1 -1
- package/dist/surfaces/cli/commands/snapshot.mjs +1 -1
- package/dist/surfaces/cli/commands/snapshot.mjs.map +1 -1
- package/dist/surfaces/cli/commands/status.mjs +1 -1
- package/dist/surfaces/cli/commands/status.mjs.map +1 -1
- package/dist/surfaces/cli/commands/supervisor-presence.mjs.map +1 -1
- package/dist/surfaces/cli/commands/wipe.mjs +3 -4
- package/dist/surfaces/cli/commands/wipe.mjs.map +1 -1
- package/dist/surfaces/cli/envelope.mjs.map +1 -1
- package/dist/surfaces/cli/errors.mjs.map +1 -1
- package/dist/surfaces/cli/flags.mjs.map +1 -1
- package/dist/surfaces/cli/index.mjs +45 -14
- package/dist/surfaces/cli/index.mjs.map +1 -1
- package/dist/surfaces/cli/output.mjs.map +1 -1
- package/dist/surfaces/cli/sysexits.mjs.map +1 -1
- package/dist/surfaces/tui/app.mjs +0 -21
- package/dist/surfaces/tui/app.mjs.map +1 -1
- package/dist/surfaces/tui/dashboard.mjs +0 -48
- package/dist/surfaces/tui/dashboard.mjs.map +1 -1
- package/dist/surfaces/tui/display-derivation.mjs +80 -16
- package/dist/surfaces/tui/display-derivation.mjs.map +1 -1
- package/dist/surfaces/tui/errors.mjs.map +1 -1
- package/dist/surfaces/tui/event-log.mjs +0 -9
- package/dist/surfaces/tui/event-log.mjs.map +1 -1
- package/dist/surfaces/tui/heartbeat.mjs.map +1 -1
- package/dist/surfaces/tui/index.mjs +2 -2
- package/dist/surfaces/tui/index.mjs.map +1 -1
- package/dist/surfaces/tui/input.mjs.map +1 -1
- package/dist/surfaces/tui/mode-detect.mjs.map +1 -1
- package/dist/surfaces/tui/mount-ink.mjs.map +1 -1
- package/dist/surfaces/tui/plain-renderer.mjs +26 -19
- package/dist/surfaces/tui/plain-renderer.mjs.map +1 -1
- package/dist/surfaces/tui/resource-table.mjs +8 -10
- package/dist/surfaces/tui/resource-table.mjs.map +1 -1
- package/images/postgres/Dockerfile +0 -1
- package/images/sui/Dockerfile +27 -54
- package/images/sui/entrypoint.sh +17 -179
- package/package.json +23 -15
- package/dashboard-ui/assets/index-Bmi1UtAg.js +0 -1356
- package/dashboard-ui/assets/index-D5EShVt4.js +0 -3
- package/dashboard-ui/assets/index-Deml9drg.css +0 -1
- package/dist/api/plugin-errors.d.mts +0 -7
- package/dist/api/plugin-errors.mjs +0 -10
- package/dist/api/plugin-errors.mjs.map +0 -1
- package/dist/cli/wirings/build-verb-layers.mjs +0 -42
- package/dist/cli/wirings/build-verb-layers.mjs.map +0 -1
- package/dist/contracts/capability-decl.d.mts +0 -40
- package/dist/orchestrators/built-in-plugin-layers.mjs +0 -54
- package/dist/orchestrators/built-in-plugin-layers.mjs.map +0 -1
- package/dist/orchestrators/run.mjs +0 -91
- package/dist/orchestrators/run.mjs.map +0 -1
- package/dist/orchestrators/runtime-composition.d.mts +0 -10
- package/dist/orchestrators/runtime-composition.mjs +0 -252
- package/dist/orchestrators/runtime-composition.mjs.map +0 -1
- package/dist/orchestrators/snapshot/capture-command.d.mts +0 -1
- package/dist/orchestrators/snapshot/capture-command.mjs +0 -25
- package/dist/orchestrators/snapshot/capture-command.mjs.map +0 -1
- package/dist/orchestrators/snapshot/pending-marker.mjs +0 -99
- package/dist/orchestrators/snapshot/pending-marker.mjs.map +0 -1
- package/dist/orchestrators/snapshot/recover-pending.mjs +0 -223
- package/dist/orchestrators/snapshot/recover-pending.mjs.map +0 -1
- package/dist/orchestrators/snapshot/state-document.d.mts +0 -1
- package/dist/orchestrators/snapshot/state-document.mjs +0 -58
- package/dist/orchestrators/snapshot/state-document.mjs.map +0 -1
- package/dist/plugins/account/spans.mjs +0 -16
- package/dist/plugins/account/spans.mjs.map +0 -1
- package/dist/plugins/account/variants/env.mjs +0 -24
- package/dist/plugins/account/variants/env.mjs.map +0 -1
- package/dist/plugins/account/variants/inline.mjs +0 -13
- package/dist/plugins/account/variants/inline.mjs.map +0 -1
- package/dist/plugins/account/variants/keystore.mjs +0 -91
- package/dist/plugins/account/variants/keystore.mjs.map +0 -1
- package/dist/plugins/action/spans.mjs +0 -11
- package/dist/plugins/action/spans.mjs.map +0 -1
- package/dist/plugins/coin/spans.mjs +0 -20
- package/dist/plugins/coin/spans.mjs.map +0 -1
- package/dist/plugins/deepbook/spans.mjs +0 -18
- package/dist/plugins/deepbook/spans.mjs.map +0 -1
- package/dist/plugins/faucet/spans.mjs +0 -12
- package/dist/plugins/faucet/spans.mjs.map +0 -1
- package/dist/plugins/package/spans.mjs +0 -14
- package/dist/plugins/package/spans.mjs.map +0 -1
- package/dist/plugins/postgres/codegen.mjs +0 -42
- package/dist/plugins/postgres/codegen.mjs.map +0 -1
- package/dist/plugins/postgres/connection.d.mts +0 -33
- package/dist/plugins/postgres/connection.mjs.map +0 -1
- package/dist/plugins/postgres/db-ensure.mjs.map +0 -1
- package/dist/plugins/postgres/errors.d.mts +0 -60
- package/dist/plugins/postgres/errors.mjs +0 -29
- package/dist/plugins/postgres/errors.mjs.map +0 -1
- package/dist/plugins/postgres/index.d.mts +0 -37
- package/dist/plugins/postgres/index.mjs +0 -68
- package/dist/plugins/postgres/index.mjs.map +0 -1
- package/dist/plugins/postgres/routable.mjs +0 -33
- package/dist/plugins/postgres/routable.mjs.map +0 -1
- package/dist/plugins/postgres/service.d.mts +0 -50
- package/dist/plugins/postgres/service.mjs +0 -179
- package/dist/plugins/postgres/service.mjs.map +0 -1
- package/dist/plugins/postgres/snapshot.mjs +0 -32
- package/dist/plugins/postgres/snapshot.mjs.map +0 -1
- package/dist/plugins/postgres/spans.mjs +0 -11
- package/dist/plugins/postgres/spans.mjs.map +0 -1
- package/dist/plugins/seal/spans.mjs +0 -18
- package/dist/plugins/seal/spans.mjs.map +0 -1
- package/dist/plugins/sui/spans.mjs +0 -17
- package/dist/plugins/sui/spans.mjs.map +0 -1
- package/dist/plugins/wallet/spans.mjs +0 -22
- package/dist/plugins/wallet/spans.mjs.map +0 -1
- package/dist/plugins/walrus/registry-publish.d.mts +0 -24
- package/dist/plugins/walrus/spans.mjs +0 -18
- package/dist/plugins/walrus/spans.mjs.map +0 -1
- package/dist/runtime/docker/logs.d.mts +0 -1
- package/dist/runtime/docker/logs.mjs +0 -34
- package/dist/runtime/docker/logs.mjs.map +0 -1
- package/dist/substrate/runtime/artifact-publisher/index.mjs +0 -86
- package/dist/substrate/runtime/artifact-publisher/index.mjs.map +0 -1
- package/dist/substrate/runtime/capability-sinks/index.d.mts +0 -1
- package/dist/substrate/runtime/capability-sinks/index.mjs +0 -3
- package/dist/substrate/runtime/capability-sinks/layer.d.mts +0 -1
- package/dist/substrate/runtime/capability-sinks/layer.mjs +0 -31
- package/dist/substrate/runtime/capability-sinks/layer.mjs.map +0 -1
- package/dist/substrate/runtime/capability-sinks/service.d.mts +0 -95
- package/dist/substrate/runtime/capability-sinks/service.mjs +0 -69
- package/dist/substrate/runtime/capability-sinks/service.mjs.map +0 -1
- package/dist/substrate/runtime/cross-process/lock.d.mts +0 -1
- package/dist/substrate/runtime/cross-process/lock.mjs +0 -23
- package/dist/substrate/runtime/cross-process/lock.mjs.map +0 -1
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs +0 -113
- package/dist/substrate/runtime/cross-process/snapshot-reservation.mjs.map +0 -1
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs +0 -31
- package/dist/substrate/runtime/lifecycle/lifecycle-fact.mjs.map +0 -1
- package/dist/substrate/runtime/observability/formatter-registry.d.mts +0 -1
- package/dist/substrate/runtime/observability/formatter-registry.mjs +0 -48
- package/dist/substrate/runtime/observability/formatter-registry.mjs.map +0 -1
- package/dist/substrate/runtime/observability/span-store.d.mts +0 -1
- package/dist/substrate/runtime/observability/span-store.mjs +0 -110
- package/dist/substrate/runtime/observability/span-store.mjs.map +0 -1
- package/dist/substrate/runtime/observability/spans.d.mts +0 -1
- package/dist/substrate/runtime/observability/spans.mjs +0 -87
- package/dist/substrate/runtime/observability/spans.mjs.map +0 -1
- package/dist/substrate/runtime/projection/index.mjs +0 -4
- package/dist/substrate/runtime/projection/persisted.mjs +0 -213
- package/dist/substrate/runtime/projection/persisted.mjs.map +0 -1
- package/dist/substrate/runtime/scoped-multimap/service.mjs +0 -52
- package/dist/substrate/runtime/scoped-multimap/service.mjs.map +0 -1
- package/dist/substrate/runtime/scoped-ref-map/index.mjs +0 -2
- package/dist/substrate/runtime/scoped-ref-map/service.mjs +0 -83
- package/dist/substrate/runtime/scoped-ref-map/service.mjs.map +0 -1
- package/dist/substrate/runtime/state-store/index.mjs +0 -3
- package/dist/substrate/runtime/state-store/schema.d.mts +0 -1
- package/dist/substrate/runtime/state-store/schema.mjs +0 -41
- package/dist/substrate/runtime/state-store/schema.mjs.map +0 -1
- package/dist/substrate/runtime/state-store/service.d.mts +0 -1
- package/dist/substrate/runtime/state-store/service.mjs +0 -145
- package/dist/substrate/runtime/state-store/service.mjs.map +0 -1
- package/dist/substrate/runtime/sui-execute/index.mjs.map +0 -1
- package/dist/substrate/runtime/sui-execute/sign-and-dispatch.mjs.map +0 -1
- package/dist/substrate/runtime/sui-ledger/object-ref.mjs.map +0 -1
- package/dist/substrate/runtime/sui-move-build/index.mjs.map +0 -1
- package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs +0 -151
- package/dist/substrate/runtime/supervisor/dispatch-contributions.mjs.map +0 -1
- package/dist/substrate/state-store.d.mts +0 -1
- /package/dist/orchestrators/{snapshot/pending-marker.d.mts → codegen/id-config.d.mts} +0 -0
- /package/dist/orchestrators/snapshot/{recover-pending.d.mts → interrupted-restore.d.mts} +0 -0
- /package/dist/{substrate/runtime/sui-execute → plugins/sui/exec}/sign-and-dispatch.d.mts +0 -0
- /package/dist/plugins/{postgres/snapshot.d.mts → sui/ledger/object-ref.d.mts} +0 -0
- /package/dist/{substrate/runtime/sui-move-build → plugins/sui/move}/index.d.mts +0 -0
- /package/dist/substrate/runtime/{cross-process/snapshot-reservation.d.mts → lifecycle/file-watcher.d.mts} +0 -0
- /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":";;;;;;;;;;;;;;;AAmGA,MAAM,mBAAmB,YAA4D,EACpF,OAAO,OAAO,MAAM,KAAK,UAAU;CAClC,MAAM,KAAK;CACX,QAAQ,KAAK;CACb,MAAM,KAAK;CACX,OAAO,KAAK;CACZ,cAAc,KAAK;CACnB,eAAe,KAAK;CACpB,UAAU,OAAO,KAAK,QAAQ;CAC9B,SAAS,OAAO,KAAK,OAAO;CAC5B,SAAS,OAAO,KAAK,OAAO;AAC7B,EAAE,EACH;AAEA,MAAM,gBAAgB,MAAgC,YAAwC;CAC7F,MAAM,KAAK;CACX;CACA,MAAM,KAAK;CACX,OAAO,KAAK;CACZ,cAAc,mBAAmB,KAAK,YAAY;CAClD,eAAe,mBAAmB,KAAK,aAAa;CACpD,UAAU,KAAK,SAAS,SAAS;CACjC,SAAS,KAAK,QAAQ,SAAS;CAC/B,SAAS,KAAK,QAAQ,SAAS;AAChC;AAEA,MAAM,kBACL,KACA,QACA,UAEA,kBACC;CACC;CACA,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,GAAG,MACD,KAAK,SACL;EACC,KAAK;EACL,mBAAmB,KAAK,YAAY;EACpC,mBAAmB,KAAK,aAAa;EACrC,KAAK,SAAS,SAAS;EACvB,KAAK,QAAQ,SAAS;EACtB,KAAK,QAAQ,SAAS;EACtB,OAAO,KAAK,WAAW;EACvB,OAAO,KAAK,UAAU;CACvB,CAAC,CAAC,KAAK,GAAG,CACX,CAAC,CACA,KAAK;AACR,CAAC,CAAC,KAAK,IAAI,CACZ;AAED,MAAM,kBACL,KACA,QACA,MACA,SAEA,kBACC;CACC;CACA,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,KAAK;CACL,KAAK;CACL,mBAAmB,KAAK,YAAY;CACpC,mBAAmB,KAAK,aAAa;CACrC,KAAK,MAAM,YAAY,SAAS,KAAK;CACrC,KAAK,MAAM,aAAa,SAAS,KAAK;CACtC,IAAI,KAAK,MAAM,UAAU,CAAC,EAAA,CAAG,KAAK,OAAO,UACxC;EACC;EACA,MAAM;EACN,MAAM,MAAM,SAAS;EACrB,MAAM,SAAS,SAAS;EACxB,MAAM,eAAe,SAAS,KAAK;EACnC,OAAO,MAAM,eAAe,KAAK;CAClC,CAAC,CAAC,KAAK,GAAG,CACX;AACD,CAAC,CAAC,KAAK,IAAI,CACZ;AAED,MAAM,uBACL,KACA,aAEA,OAAO,WAAW;CACjB,WAAW,IAAI,KAAK,UAAU,EAAE,SAAS,CAAC;CAC1C,aAAa;AACd,CAAC,CAAC,CAAC,KAAK,OAAO,YAAY,OAAO,QAAQ,IAAI,CAAC,CAAC;AAEjD,MAAM,oBACL,KACA,WAEA,OAAO,IAAI,aAAa;CAIvB,KAAI,OAHmB,iBACtB,OAAO,MAAM,KAAK,SAAS,oBAAoB,KAAK,KAAK,MAAM,CAAC,CACjE,EAAA,CACY,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,KAAA,CAAS,GAAG,OAAO;CACrE,OAAO;AACR,CAAC;AAEF,MAAM,wBACL,KACA,WAEA,OAAO,IAAI,aAAa;CACvB,MAAM,MAAM,OAAO,oBAAoB,KAAK,OAAO,gBAAgB;CACnE,IAAI,QAAQ,QAAQ,QAAQ,KAAA,GAAW,OAAO;CAC9C,OAAO;AACR,CAAC;AAEF,MAAM,sBACL,KACA,QACA,KACA,SAEA,OAAO,WAAW;CACjB,KAAK,YAAY;EAChB,MAAM,KAAK,IAAI,YAAY;EAC3B,GAAG,UAAU,OAAO,OAAO;EAC3B,GAAG,SAAS;GACX,QAAQ,GAAG,IAAI,UAAU;GACzB,eAAe,CAAC,KAAK,cAAc,KAAK,aAAa;GACrD,WAAW,CAAC,GAAG,OAAO,IAAI,UAAU,CAAC;EACtC,CAAC;EAKD,MAAM,SAAQ,MAJO,IAAI,OAAO,KAAK,oBAAoB;GACxD,aAAa;GACb,SAAS;IAAE,gBAAgB;IAAM,SAAS;GAAK;EAChD,CAAC,EAAA,CACoB,iBAAiB,EAAE,EAAE,eAAe,EAAE,EAAE;EAC7D,IAAI,UAAU,KAAA,GAAW,OAAO;EAChC,MAAM,aAAa,oBAAoB,IAAI,QAAQ,MAAM,KAAK,CAAC;EAM/D,IAAI,eAAe,oBAAoB,KAAK,GAAG,OAAO;EACtD,OAAO;CACR;CACA,aAAa;AACd,CAAC,CAAC,CAAC,KAAK,OAAO,YAAY,OAAO,QAAQ,IAAI,CAAC,CAAC;AAEjD,MAAM,qBACL,KACA,QACA,KACA,UAEA,OAAO,IAAI,aAAa;CACvB,MAAM,wBAAQ,IAAI,IAAgC;CAClD,KAAK,MAAM,QAAQ,OAAO;EACzB,MAAM,SAAS,OAAO,mBAAmB,KAAK,QAAQ,KAAK,IAAI;EAC/D,IAAI,WAAW,MACd,MAAM,IAAI,KAAK,MAAM,aAAa,MAAM,MAAM,CAAC;CAEjD;CACA,OAAO;AACR,CAAC;AASF,MAAM,mBACL,SAKA,SACmB;CACnB,KAAK,MAAM,UAAU,SAAS;EAC7B,MAAM,OAAO,OAAO;EACpB,IAAI,OAAO,gBAAgB,aAAa,SAAS,KAAA,GAAW;EAC5D,IAAI,cAAc,MAAM,KAAK,cAAc,KAAK,aAAa,GAC5D,OAAO,OAAO;CAEhB;CACA,OAAO;AACR;AAEA,MAAM,oBAAoB,OAAsB,QAC/C,oBAAoB,OAAO,IAAI,SAAS,yBAAyB,IAAI,SAAS,OAAO,GAAG,CAAC;AAE1F,MAAM,uBAAuB;AAC7B,MAAM,6BAA6B;AACnC,MAAM,gBAAgB;AACtB,MAAM,WAAW,mBAAmB,eAAe;AACnD,MAAM,kBAAkB;AACxB,MAAM,+BAA+B;;;;;;AAMrC,MAAM,oCACL,WAEA,aAAa,MAAM,CAAC,CAAC,KACpB,OAAO,MAAM;CACZ,UAAU,wBACT,mCAAmC,SACnC,mCAAmC,QACpC;CACA,OAAO;AACR,CAAC,CACF;AAMD,MAAa,uBACZ,WACA,KACA,OACA,QACA,KACA,UAEA,OAAO,IAAI,aAAa;CACvB,IAAI,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE;CAE3C,MAAM,WAAW,OAAO,uBAGtB,WAAW;EACZ,WAAW;EACX;EACA,aAAa,eAAe,KAAK,QAAQ,KAAK;EAC9C,SAAS,WAAW,iBAAiB,KAAK,MAAM;EAChD,SAAS,OAAO,IAAI,aAAa;GAChC,MAAM,gBAAgB,OAAO,kBAAkB,KAAK,QAAQ,KAAK,KAAK;GACtE,MAAM,eAAe,MAAM,QAAQ,SAAS,CAAC,cAAc,IAAI,KAAK,IAAI,CAAC;GAEzE,MAAM,cAAoC,CAAC;GAC3C,IAAI,aAAa,SAAS,GAAG;IAC5B,MAAM,SAAS,OAAO,aAAa;KAClC,QAAQ,IAAI;KACZ;KACA,OAAO,YAAY;MAClB,MAAM,KAAK,IAAI,YAAY;MAC3B,GAAG,UAAU,OAAO,OAAO;MAC3B,GAAG,aAAa,GAAW;MAC3B,GAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC,GAAG,OAAO,IAAI,UAAU,GAAG,GAAG,OAAO,IAAI,UAAU,CAAC;MACjE,CAAC;MACD,KAAK,MAAM,QAAQ,cAClB,GAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,eAAe,CAAC,KAAK,cAAc,KAAK,aAAa;OACrD,WAAW;QACV,GAAG,OAAO,IAAI,UAAU;QACxB,GAAG,KAAK,IAAI,KAAK,QAAQ;QACzB,GAAG,KAAK,IAAI,KAAK,OAAO;QACxB,GAAG,KAAK,IAAI,KAAK,OAAO;QACxB,GAAG,KAAK,KAAK,KAAK,WAAW;QAC7B,GAAG,KAAK,KAAK,KAAK,UAAU;QAC5B,GAAG,OAAO,IAAI,UAAU;OACzB;MACD,CAAC;MAEF,OAAO,GAAG,MAAM,EACf,QAAQ,IAAI,OACb,CAAC;KACF;IACD,CAAC,CAAC,CAAC,KACF,OAAO,UACL,QACA,qBACC,kBACA,qCAAqC,IAAI,SAC1C,CACF,CACD;IACA,IAAI,OAAO,UAAU,qBACpB,OAAO,OAAO,OAAO,KACpB,qBACC,kBACA,yDACC,sBAAsB,OAAO,iBAAiB,CAChD,CACD;IAED,MAAM,UAAU,OAAO;IAEvB,KAAK,MAAM,QAAQ,cAAc;KAChC,MAAM,SAAS,gBAAgB,QAAQ,eAAe,IAAI;KAC1D,IAAI,WAAW,MACd,OAAO,OAAO,OAAO,KACpB,qBACC,kBACA,kBAAkB,KAAK,KAAK,uCAChB,QAAQ,OAAO,GAC5B,CACD;KAED,YAAY,KAAK,aAAa,MAAM,MAAM,CAAC;IAC5C;GACD;GAEA,OAAO,EACN,OAAO,MACL,KACC,SACA,cAAc,IAAI,KAAK,IAAI,KAAK,YAAY,MAAM,MAAM,EAAE,SAAS,KAAK,IAAI,CAC9E,CAAC,CACA,QAAQ,SAAqC,SAAS,KAAA,CAAS,EAClE;EACD,CAAC;CACF,CAAC,CAAC,CAAC,KAAK,OAAO,UAAU,QAAQ,iBAAiB,gBAAgB,GAAG,CAAC,CAAC;CAEvE,MAAM,gBAAgB,IAAI,IAAI,SAAS,MAAM,KAAK,SAAS,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC;CAC7E,MAAM,gBAAgB,MAAM,KAAK,SAAS,cAAc,IAAI,KAAK,IAAI,CAAC;CACtE,IAAI,cAAc,MAAM,SAAS,SAAS,KAAA,CAAS,GAClD,OAAO,OAAO,OAAO,KACpB,oBAAoB,gBAAgB,mDAAmD,CACxF;CAGD,OAAO,gBAAgB,EACtB,OAAO,cAAc,QAAQ,SAAqC,SAAS,KAAA,CAAS,EACrF,CAAC;AACF,CAAC;AAMF,MAAM,cAAc,OAAoC,SACvD,MAAM,MAAM,SAAS,KAAK,SAAS,IAAI;AAExC,MAAM,6BACL,YAKmB;CACnB,KAAK,MAAM,UAAU,SAAS;EAC7B,IAAI,OAAO,gBAAgB,WAAW;EACtC,IAAI,OAAO,YAAY,SAAS,mCAAmC,GAClE,OAAO,OAAO;CAEhB;CACA,OAAO;AACR;AAEA,MAAM,6BACL,IACA,KACA,QACA,KACA,gBACA,UACA,WACI;CACJ,IAAI,WAAW,KAAA,KAAa,WAAW,IAAI;CAC3C,OAAO,yBAAyB,IAAI,KAAK,QAAQ,UAAU,MAAM,CAAC,CAAC,MAAM,SAAS;EACjF,GAAG,SAAS;GACX,QAAQ,GAAG,IAAI,UAAU;GACzB,eAAe,CAAC,QAAQ;GACxB,WAAW,CAAC,gBAAgB,IAAI;EACjC,CAAC;CACF,CAAC;AACF;AAEA,MAAM,eAAe,QAAyB;CAC7C,IAAI,eAAe,OAAO,OAAO,IAAI;CACrC,IAAI,OAAO,QAAQ,YAAY,QAAQ,MAAM;EAC5C,IAAI,aAAa,OAAO,OAAO,IAAI,YAAY,UAAU,OAAO,IAAI;EACpE,IAAI,YAAY,OAAO,OAAO,IAAI,WAAW,UAAU,OAAO,IAAI;CACnE;CACA,OAAO,OAAO,GAAG;AAClB;AAEA,MAAM,sBACL,UACA,QACA,UACA,WAC+C;CAC/C,IAAI,aAAa,KAAA,KAAa,WAAW,KAAA,KAAa,WAAW,IAChE,OAAO,OAAO;CAEf,OAAO,SACL,QAAQ;EAAE,SAAS,OAAO;EAAS;CAAO,CAAC,CAAC,CAC5C,KACA,OAAO,UACL,QACA,qBACC,kBACA,oCAAoC,SAAS,iBAC3B,OAAO,KAAK,WAAW,OAAO,IAAI,YAAY,GAAG,GACpE,CACF,CACD;AACF;AASA,MAAa,6BAA6B,OACzC,KACA,QACA,UACA,QACA,YAIK;CACL,MAAM,WAAwB,CAAC;CAC/B,IAAI,kBAAkB;CACtB,IAAI,SAAwB;CAC5B,GAAG;EACF,MAAM,OAAO,MAAM,IAAI,OAAO,KAAK,UAAU;GAC5C,OAAO,OAAO;GACd;GACA;GACA,OAAO;EACR,CAAC;EACD,KAAK,MAAM,QAAQ,KAAK,SAAS;GAChC,SAAS,KAAK,IAAI;GAClB,mBAAmB,OAAO,KAAK,OAAO;GACtC,IAAI,mBAAmB,QAAQ;EAChC;EACA,SAAS,KAAK;EACd,IAAI,mBAAmB,QAAQ;EAC/B,IAAI,CAAC,KAAK,aAAa;CACxB,SAAS,WAAW;CAEpB,IAAI,kBAAkB,UAAU,SAAS,WAAW,GACnD,MAAM,IAAI,MACT,cAAc,OAAO,KAAK,qBAAqB,SAAS,OAAO,QAAQ,aAC1D,OAAO,cAAc,gBAAgB,EACnD;CAGD,OAAO;EAAE;EAAU;CAAgB;AACpC;AAEA,MAAa,4BAA4B,OACxC,IACA,KACA,QACA,qBACI;CAEJ,MAAM,EAAE,aAAa,MAAM,2BAC1B,KACA,QACA,UAJuB,kBAAkB,kBAMzC,oCACD;CACA,MAAM,UAAU,MAAM,QAAQ,IAC7B,SAAS,KAAK,SAAS,uBAAuB,KAAK,KAAK,QAAQ,CAAC,CAClE;CACA,GAAG,aAAa,eAAe;CAC/B,GAAG,YAAY,4BAA4B;CAC3C,GAAG,cAAc,OAAO;AACzB;AAEA,MAAM,wBACL,MACA,UAEC,mBAAmB,KAAK,YAAY,MAAM,WAAY,KAAK,cAAc,KAAM,OAC/E,mBAAmB,KAAK,aAAa,MAAM,WAAY,KAAK,eAAe,KAAM;AAEnF,MAAM,eAAe,OACpB,IACA,KACA,UACA,YACI;CAUJ,MAAM,wBAAuB,MATV,IAAI,KAAK,UAAU,EAAE,SAAS,CAAC,EAAA,CASjB,QAAQ,OAAO,QAAQ;CACxD,IAAI,yBAAyB,KAAA,GAC5B,MAAM,IAAI,MAAM,oBAAoB,SAAS,iBAAiB;CAE/D,OAAO,GAAG,gBAAgB;EACzB;EACA;EACA;CACD,CAAC;AACF;AAEA,MAAM,2BAA2B,OAChC,IACA,KACA,QACA,UACA,WACI;CACJ,IAAI,mBAAmB,QAAQ,MAAM,UAAU;EAC9C,MAAM,CAAC,QAAQ,GAAG,WAAW,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC;EAC1D,OAAO;CACR;CAEA,MAAM,EAAE,UAAU,oBAAoB,MAAM,2BAC3C,KACA,QACA,UACA,QACA,uBACD;CAEA,MAAM,gBAAgB,SAAS;CAC/B,IAAI,kBAAkB,KAAA,GACrB,MAAM,IAAI,MACT,cAAc,OAAO,KAAK,WAAW,SAAS,kCAC/C;CAED,MAAM,QAAQ,MAAM,uBAAuB,KAAK,cAAc,QAAQ;CACtE,MAAM,OAAO,MAAM,QAAQ,IAC1B,SAAS,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,uBAAuB,KAAK,KAAK,QAAQ,CAAC,CAC3E;CACA,MAAM,WAAW,GAAG,UAAU,KAAK;CACnC,IAAI,KAAK,SAAS,GACjB,GAAG,WACF,UACA,KAAK,KAAK,SAAS,GAAG,UAAU,IAAI,CAAC,CACtC;CAED,IAAI,oBAAoB,QAAQ,OAAO;CACvC,MAAM,CAAC,QAAQ,GAAG,WAAW,UAAU,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,CAAC;CAC5D,OAAO;AACR;AAEA,MAAa,qBACZ,WACA,KACA,OACA,QACA,KACA,OACA,UAEA,OAAO,IAAI,aAAa;CACvB,MAAM,SAAmC,CAAC;CAC1C,KAAK,MAAM,QAAQ,OAAO;EACzB,MAAM,OAAO,KAAK;EAClB,IAAI,SAAS,KAAA,KAAa,KAAK,OAAO,WAAW,GAAG;EACpD,MAAM,OAAO,WAAW,OAAO,KAAK,IAAI;EACxC,IAAI,SAAS,KAAA,GACZ,OAAO,OAAO,OAAO,KACpB,oBAAoB,gBAAgB,uBAAuB,KAAK,KAAK,mBAAmB,CACzF;EAGD,MAAM,SAAS,OAAO,uBAGpB,WAAW;GACZ,WAAW,iBAAiB,KAAK;GACjC;GACA,aAAa,eAAe,KAAK,QAAQ,MAAM,IAAI;GACnD,SAAS,WAAW,qBAAqB,KAAK,MAAM;GACpD,SAAS,OAAO,IAAI,aAAa;IAChC,OAAO,mBACN,KAAK,qBACL,QACA,KAAK,cACL,KAAK,UACN;IACA,OAAO,mBACN,KAAK,sBACL,QACA,KAAK,eACL,KAAK,WACN;IAEA,MAAM,SAAS,OAAO,iCAAiC;KACtD,QAAQ,IAAI;KACZ;KACA,OAAO,YAAY;MAClB,MAAM,KAAK,IAAI,YAAY;MAC3B,GAAG,UAAU,OAAO,OAAO;MAC3B,MAAM,0BAA0B,IAAI,KAAK,QAAQ,qBAAqB,MAAM,IAAI,CAAC;MACjF,MAAM,WAAW,MAAM,aAAa,IAAI,KAAK,IAAI,YAAY,IAAI;MACjE,MAAM,aAAa,MAAM,aAAa,IAAI,KAAK,KAAK,QAAQ,IAAI;MAChE,MAAM,iBAAiB,GAAG,SAAS;OAClC,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC;MACb,CAAC;MACD,GAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC,gBAAgB,QAAQ;MACrC,CAAC;MACD,MAAM,0BACL,IACA,KACA,QACA,KACA,gBACA,KAAK,cACL,KAAK,UACN;MACA,MAAM,0BACL,IACA,KACA,QACA,KACA,gBACA,KAAK,eACL,KAAK,WACN;MAEA,MAAM,aAAa,GAAG,SAAS;OAC9B,QAAQ,GAAG,IAAI,UAAU;OACzB,WAAW,CAAC,cAAc;MAC3B,CAAC;MACD,KAAK,MAAM,CAAC,OAAO,UAAU,KAAK,OAAO,QAAQ,GAChD,GAAG,SAAS;OACX,QAAQ,GAAG,IAAI,UAAU;OACzB,eAAe,CAAC,KAAK,cAAc,KAAK,aAAa;OACrD,WAAW;QACV;QACA;QACA;QACA,GAAG,KAAK,IAAI,MAAM,iBAAiB,OAAO,QAAQ,CAAC,CAAC;QACpD,GAAG,KAAK,GAAG,oBAAoB;QAC/B,GAAG,KAAK,GAAG,0BAA0B;QACrC,GAAG,KAAK,IAAI,MAAM,KAAK;QACvB,GAAG,KAAK,IAAI,MAAM,QAAQ;QAC1B,GAAG,KAAK,KAAK,MAAM,SAAS,KAAK;QACjC,GAAG,KAAK,KAAK,MAAM,eAAe,KAAK;QACvC,GAAG,KAAK,IAAI,aAAa;QACzB,GAAG,OAAO,MAAM;OACjB;MACD,CAAC;MAEF,GAAG,gBAAgB,CAAC,cAAc,GAAG,OAAO,OAAO;MACnD,OAAO,GAAG,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC;KACvC;IACD,CAAC,CAAC,CAAC,KACF,OAAO,UACL,QACA,qBACC,kBACA,8CAA8C,KAAK,KAAK,KAAK,IAAI,SAClE,CACF,CACD;IACA,IAAI,OAAO,UAAU,qBACpB,OAAO,OAAO,OAAO,KACpB,qBACC,kBACA,iEAAiE,KAAK,KAAK,MAC1E,sBAAsB,OAAO,iBAAiB,CAChD,CACD;IAED,MAAM,UAAU,OAAO;IAEvB,MAAM,mBAAmB,0BAA0B,QAAQ,aAAa;IACxE,IAAI,qBAAqB,MACxB,OAAO,OAAO,OAAO,KACpB,qBACC,kBACA,mEACY,QAAQ,OAAO,GAC5B,CACD;IAED,OAAO;KAAE,UAAU,KAAK;KAAM;KAAkB,QAAQ,QAAQ;IAAO;GACxE,CAAC;EACF,CAAC,CAAC,CAAC,KAAK,OAAO,UAAU,QAAQ,iBAAiB,gBAAgB,GAAG,CAAC,CAAC;EAEvE,OAAO,KAAK,MAAM;CACnB;CACA,OAAO;AACR,CAAC"}
|
|
@@ -14,8 +14,10 @@ const deepbookConfigError = (field, message, hint, cause) => makeDeepbookConfigE
|
|
|
14
14
|
hint,
|
|
15
15
|
cause
|
|
16
16
|
});
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
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/**
|
|
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 {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
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
|
-
})
|
|
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":"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"}
|
|
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,
|
|
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
|
|
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`
|
|
17
|
-
*
|
|
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
|
|
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
|
-
|
|
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
|
|
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.
|
|
63
|
-
*
|
|
64
|
-
|
|
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
|
|
69
|
-
readonly
|
|
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
|
-
}>]
|
|
98
|
-
declare const buildLocalPlugin: <const Publisher extends AccountMemberAlias, const Package extends DeepbookPackageMember, const Pools extends ReadonlyArray<DeepbookPoolSpec> = readonly [], const Pyth extends PythOptions | undefined = undefined>(
|
|
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>]
|
|
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
|
-
}>]
|
|
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',
|
|
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',
|
|
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>]
|
|
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
|
-
}>]
|
|
152
|
+
}>]>;
|
|
145
153
|
known: (opts: DeepbookKnownOptions) => Plugin<`deepbook/${string}`, DeepbookResolved, readonly [ResourceRef<"sui", SuiClient & {
|
|
146
154
|
readonly mode: SuiOptions["mode"];
|
|
147
|
-
}>]
|
|
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
|
-
}>]
|
|
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
|
-
}>]
|
|
165
|
+
}>]>;
|
|
158
166
|
};
|
|
159
167
|
}>;
|
|
160
168
|
//#endregion
|