From e76a21f76421c3ee7ac31afbde4fd107bafc358d Mon Sep 17 00:00:00 2001 From: Eddie Date: Wed, 2 Sep 2026 19:05:23 -0400 Subject: [PATCH 1/5] Port to the Midnight 2.x line (ledger-v9, compactc 0.34.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Long-lived `ledger-v9` branch. `main` stays the 1.x/preview line and is what https://shielded-night.pages.dev runs; this branch targets node 2.0.0-rc.4 / indexer-standalone 4.4.0-rc.1 / proof-server 9.0.0-rc.5 and is merged into `main` when the network moves to 2.x. Contract Only the pragma changed: `language_version 0.23` -> `0.26` (toolchain 0.34.0 = compactc 0.34.0, language 0.26.0, compact-runtime 0.19.0, ledger 9). None of the 0.25/0.26 tripwires bit: no `as Field` casts, no point/scalar-type import moves, no stdlib renames — and the two ATOMIC circuits, which net a shielded and an unshielded move inside one segment, compile unchanged. All 44 files under src/managed/keys and src/managed/zkir are BYTE-IDENTICAL to the 0.31.1 build, so the deployed preview contract's verifier keys stay valid. Only the generated TypeScript moved (circuits and `initialState` are async on runtime 0.19, plus a new `expectedVk` export), and compactc 0.33+ emits compiler/contract-manifest.json, which midnight-js 5's fetch provider now verifies artifacts against. SDK set @midnightntwrk/ledger-v9 1.0.0-rc.3 (new scope, no hyphen), compact-runtime 0.19.0, compact-js 2.5.5-rc.8, midnight-js 5.0.0-beta.7, @midnightntwrk/ wallet-sdk 2.0.0-beta.2, wallet-sdk-address-format 4.0.0-beta.2; dapp-connector-api stays 4.0.1. midnight-js must be beta.7, not beta.6: midnight-js-protocol beta.6 pins compact-runtime 0.18.0-rc.1, and the generated contract opens with `checkRuntimeVersion('0.19.0')`, whose guard rejects a minor mismatch while the major is 0. compact-runtime 0.19.0 and the 0.19.0-rc.0 that beta.7 pins differ only in the version string, so the overrides block collapses them. Harness ledger-v8 -> ledger-v9 is a pure specifier rename at all 11 import sites. The real work was runtime 0.19's async flip (the simulator gains a static `create()` and async accessors; the unit tests await, and negative cases become `rejects.toThrow`) and three wallet-sdk 2 changes: `createKeystore` now takes `{ kind: 'schnorr', secret }` rather than raw bytes, TransactionHistoryCommonSchema was renamed, and `SignSegment` is async (use the keystore's own `signDataAsync`). Frontend Same SDK set, `resolve.dedupe` updated to the new package names (the build still emits exactly one ledger wasm and one onchain-runtime wasm). FetchZkConfigProvider takes an options bag now, and `ZswapChainState.postBlockUpdate` gained a required retentionDuration. ledger-v9 widened `ProvingProvider` with `lookupKey`, which midnight-js 5 requires — but dapp-connector-api declares only `check`/`prove` in 4.0.1 AND in 4.1.0-beta.1. `withLookupKey()` uses the wallet's implementation when it has one and otherwise serves the same public artifacts the dApp already handed the wallet, logging which lane it took. Stack and CI envs/docker-compose-dynamic.yml moves to the 2.x triple, mirroring midnight-2-offers' compose/core.yml: the node volume must be at /node (the 2.x image sets BASE_PATH=/node/chain), the indexer is linux/amd64-only and its 4.3.x password env keys are gone, and both volumes are wiped together because a v8->v9 chain cannot be upgraded in place. CI pins COMPACT_VERSION 0.34.0 and runs on pushes to `ledger-v9` as well as `main`. README and TESTING describe the two lines. --- .github/workflows/ci.yml | 15 +- README.md | 22 +- TESTING.md | 11 +- bun.lock | 250 ++++---- envs/docker-compose-dynamic.yml | 56 +- frontend/bun.lock | 197 ++++--- frontend/package.json | 37 +- frontend/src/lib/providers.ts | 74 ++- frontend/src/lib/swap.ts | 2 +- frontend/src/lib/tokens.ts | 2 +- frontend/src/lib/walletAdapter.ts | 2 +- frontend/vite.config.ts | 4 +- package.json | 42 +- src/managed/compiler/contract-info.json | 6 +- src/managed/compiler/contract-manifest.json | 258 +++++++++ src/managed/contract/index.d.ts | 105 ++-- src/managed/contract/index.js | 543 ++++++++++-------- src/managed/contract/index.js.map | 4 +- src/shielded-night.compact | 17 +- .../shielded-night.combined.test.ts | 4 +- .../shielded-night.multiparty.test.ts | 4 +- .../shielded-night.security.test.ts | 4 +- test/integration/shielded-night.test.ts | 4 +- .../shielded-night.transient.test.ts | 2 +- test/support/contract-factory.ts | 2 +- test/support/governance.ts | 2 +- test/support/provider-wiring.ts | 8 +- test/support/wallet-builder.ts | 24 +- test/support/wallet-observations.ts | 2 +- test/support/wallet-transfer.ts | 4 +- .../unit/shielded-night.combined.unit.test.ts | 42 +- .../unit/shielded-night.security.unit.test.ts | 218 ++++--- test/unit/shielded-night.unit.test.ts | 152 +++-- .../unit/simulators/ShieldedNightSimulator.ts | 147 +++-- 34 files changed, 1372 insertions(+), 894 deletions(-) create mode 100644 src/managed/compiler/contract-manifest.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e5c1b19..cad4269 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -2,7 +2,9 @@ name: CI on: push: - branches: [main] + # `main` is the 1.x/preview line; `ledger-v9` is the long-lived Midnight 2.x port + # (see README "Two lines"). Both get full CI on every push. + branches: [main, ledger-v9] pull_request: workflow_dispatch: @@ -11,7 +13,12 @@ concurrency: cancel-in-progress: true env: - COMPACT_VERSION: '0.31.1' + # ledger-v9 line: toolchain 0.34.0 = compactc 0.34.0, language 0.26.0, + # compact-runtime 0.19.0, ledger 9. MUST equal the `pragma language_version` + # in src/shielded-night.compact and the `+version` in package.json's compact + # scripts, or the byte-exact rebuild job below is meaningless. + # (`main` pins 0.31.1 / language 0.23.) + COMPACT_VERSION: '0.34.0' jobs: unit: @@ -85,8 +92,8 @@ jobs: reproducible-build: name: Byte-exact contract rebuild runs-on: ubuntu-latest - # Full ZK key generation for all 11 circuits measures ~15s; the headroom is - # for a cold compiler install. + # Full ZK key generation for all 11 circuits measures ~14s on 0.34.0; the + # headroom is for a cold compiler install. timeout-minutes: 20 steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 69b536d..761cdf7 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,23 @@ # Shielded NIGHT +> **You are on the `ledger-v9` branch — the Midnight 2.x line.** +> +> | Branch | Midnight line | Toolchain | Stack | Status | +> |---|---|---|---|---| +> | `main` | **1.x** (preview / preprod / mainnet) | compactc 0.31.1, language 0.23, compact-runtime 0.16.0, `@midnight-ntwrk/ledger-v8` 8.1.0, midnight-js 4.1.1 | node 1.0.0 / indexer-standalone 4.3.3 / proof-server 8.1.0 | what https://shielded-night.pages.dev runs | +> | **`ledger-v9`** (here) | **2.x** | compactc **0.34.0**, language **0.26.0**, compact-runtime **0.19.0**, `@midnightntwrk/ledger-v9` 1.0.0-rc.3, midnight-js 5.0.0-beta.7 | node **2.0.0-rc.4** / indexer-standalone **4.4.0-rc.1** / proof-server **9.0.0-rc.5** | long-lived branch; **merged into `main` when the Midnight network moves to 2.x** | +> +> The two lines are kept separate on purpose: one dependency tree cannot hold both ledger +> wasm modules (two copies give two class identities and every cross-copy `instanceof` +> fails — the reason both `package.json`s carry an `overrides` block). Nothing in this +> branch is deployed to a public network; it targets a local `undeployed` devnet and the +> `midnight-2-offers` demo stack. +> +> **The contract source is unchanged apart from its `pragma language_version`, and all 33 +> ZK artifacts (11 circuits × prover/verifier/bzkir) are byte-identical to the `main` +> build** — so the deployed preview contract's verifier keys remain valid; only the +> generated TypeScript bindings differ. + Convert native **unshielded NIGHT** into **shielded sNight** (a contract-minted wrapper token) and back, on Midnight. Live (preview): https://shielded-night.pages.dev @@ -151,11 +169,11 @@ Anyone can check, without trusting us, that (1) the deployed contract is exactly ### 1. Reproduce the compiled artifacts byte-for-byte -The compiler output is deterministic and the contract pins its language version (`pragma language_version 0.23`), so compiling [src/shielded-night.compact](src/shielded-night.compact) with the pinned toolchain reproduces [src/managed/](src/managed/) exactly: +The compiler output is deterministic and the contract pins its language version (`pragma language_version 0.26` on this branch; `0.23` on `main`), so compiling [src/shielded-night.compact](src/shielded-night.compact) with the pinned toolchain reproduces [src/managed/](src/managed/) exactly: ```bash # Install the Compact toolchain (once): https://docs.midnight.network/relnotes/compact-tools -compact update 0.31.1 # toolchain 0.31.1 = compactc 0.31.101, language 0.23.101 +compact update 0.34.0 # toolchain 0.34.0 = compactc 0.34.0, language 0.26.0, runtime 0.19.0, ledger 9 bun install bun run compact # recompiles src/shielded-night.compact -> src/managed/ diff --git a/TESTING.md b/TESTING.md index 2485efc..2b3c160 100644 --- a/TESTING.md +++ b/TESTING.md @@ -12,7 +12,7 @@ reference suites: - Node 22+ (vitest runs under Node; bun is the package manager) - `bun install` -- The `compact` CLI (the scripts pin compiler `0.31.1`) +- The `compact` CLI (this branch's scripts pin compiler `0.34.0`; `main` pins `0.31.1`) - Docker running (integration tier only) ## Unit tests @@ -36,8 +36,9 @@ bun run test:integration ``` `test/integration/global-setup.ts` boots the docker stack -(`envs/docker-compose-dynamic.yml`: midnight-node 1.0.0, indexer-standalone -4.3.3, proof-server 8.1.0) via testcontainers, then the suite deploys the +(`envs/docker-compose-dynamic.yml`: on this `ledger-v9` branch midnight-node +2.0.0-rc.4, indexer-standalone 4.4.0-rc.1, proof-server 9.0.0-rc.5 — the Midnight +2.x triple; `main` runs 1.0.0 / 4.3.3 / 8.1.0) via testcontainers, then the suite deploys the contract with the genesis wallet and runs the full README round trip (depositUnshielded → withdrawShielded → depositShielded → withdrawUnshielded), the negative paths, and a two-wallet independence test. @@ -158,8 +159,8 @@ locked (this guard was added by this suite; see git history). via `sendImmediateShielded` in the same transaction (a transient), so the wrapper supply is elastic both ways: minted on withdraw, burnt on deposit. [test/integration/shielded-night.transient.test.ts](test/integration/shielded-night.transient.test.ts) -pins the fixed behavior on the current stack (toolchain 0.31.101 / ledger-v8 -8.1.0): the transaction applies, the credit equals the coin value, the **wallet +pins the fixed behavior on the current stack (on `main`, toolchain 0.31.101 / +ledger-v8 8.1.0; on `ledger-v9`, toolchain 0.34.0 / ledger-v9 1.0.0-rc.3): the transaction applies, the credit equals the coin value, the **wallet sees the coin as spent** (the historical bug left the spent UTXO listed as spendable, corrupting wallet state), and the credit withdraws again cleanly. diff --git a/bun.lock b/bun.lock index db83fad..d5b57e7 100644 --- a/bun.lock +++ b/bun.lock @@ -5,15 +5,15 @@ "": { "name": "@zswap-da/contract-shielded-night", "dependencies": { - "@midnight-ntwrk/compact-js": "^2.5.1", - "@midnight-ntwrk/compact-runtime": "0.16.0", - "@midnight-ntwrk/ledger-v8": "^8.1.0", - "@midnight-ntwrk/midnight-js": "^4.1.1", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "^4.1.1", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "^4.1.1", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "^4.1.1", - "@midnight-ntwrk/midnight-js-node-zk-config-provider": "^4.1.1", - "@midnightntwrk/wallet-sdk": "^1.2.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.8", + "@midnight-ntwrk/compact-runtime": "0.19.0", + "@midnight-ntwrk/midnight-js": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-node-zk-config-provider": "5.0.0-beta.7", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/wallet-sdk": "2.0.0-beta.2", "buffer": "^6.0.3", "rxjs": "^7.8.1", "ws": "^8.19.0", @@ -29,20 +29,16 @@ }, }, "overrides": { - "@midnight-ntwrk/ledger-v8": "8.1.0", + "@midnight-ntwrk/compact-runtime": "0.19.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", }, "packages": { - "@apollo/client": ["@apollo/client@4.2.5", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/caches": "^1.0.0", "@wry/equality": "^0.5.6", "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "optimism": "^0.18.0", "tslib": "^2.3.0" }, "peerDependencies": { "graphql": "^16.0.0 || ^17.0.0", "graphql-ws": "^5.5.5 || ^6.0.3", "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "rxjs": "^7.3.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "optionalPeers": ["graphql-ws", "react", "react-dom", "subscriptions-transport-ws"] }, "sha512-1VyJ4eAriUFCfK2Btc09PQtxxgrnmoO1Dbg2A1O7MQbsK1ri5GSWBzc7/P6A0KJrkWll/Ojf9HC6ptIET8yv3g=="], + "@apollo/client": ["@apollo/client@4.2.12", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/caches": "^1.0.0", "@wry/equality": "^0.5.6", "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "optimism": "^0.18.0", "tslib": "^2.3.0" }, "peerDependencies": { "graphql": "^16.0.0 || ^17.0.0", "graphql-ws": "^5.5.5 || ^6.0.3", "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "rxjs": "^7.3.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "optionalPeers": ["graphql-ws", "react", "react-dom", "subscriptions-transport-ws"] }, "sha512-+KS+LM/gZ58z92p9owZZpI54yCc27KfUi1HOtLrxmxz9kDIqUcp/zh+mNjCWCbNZkWGzWslvbbmXGGtTWT8nkw=="], "@balena/dockerignore": ["@balena/dockerignore@1.0.2", "", {}, "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q=="], - "@effect/platform": ["@effect/platform@0.95.0", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.4", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.20.0" } }, "sha512-WDlRiWRSWlmhCPq09bvAofK0qr5vM4yNklXjoJdZHmugKRRTpN/Okn3ODnjgM/Kb/4hjMrRyrsUeH/Brieq7KA=="], - - "@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="], - - "@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], - - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], + "@effect/platform": ["@effect/platform@0.97.1", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.8" }, "peerDependencies": { "effect": "^3.22.1" } }, "sha512-IevWxwmrxCdeXxbXDx/hiOstHtERRigd1nhZSuHgiFEl7NkBmS/5GVWsRacq4NfJN2uCXqggETKNwij15VEpew=="], "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], @@ -52,71 +48,69 @@ "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], "@js-sdsl/ordered-map": ["@js-sdsl/ordered-map@4.4.2", "", {}, "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw=="], "@kwsites/file-exists": ["@kwsites/file-exists@1.1.1", "", { "dependencies": { "debug": "^4.1.1" } }, "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw=="], - "@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], + "@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.5-rc.8", "", { "dependencies": { "@effect/platform": "^0.97.0", "@midnight-ntwrk/compact-runtime": "0.19.0-rc.0", "@midnight-ntwrk/platform-js": "^3.0.0", "@midnightntwrk/ledger-v9": "^1.0.0-rc.3", "@noble/hashes": "^2.3.0", "effect": "^3.22.1", "tslib": "^2.8.1" } }, "sha512-7CGWGCTL+8IvqFUI/srHRwAWxGVLD2ytHLjSyvOcNi6UX1QLeG5vUtGlXQAKSJXvjPwndosqIFdW39OgkNH/Mg=="], - "@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.19.0", "", { "dependencies": { "@midnightntwrk/onchain-runtime-v4": "^4.0.0-rc.3", "@noble/curves": "^2.2.0", "@noble/hashes": "^2.0.1", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-0q1ZOlyPdCCEasAxlHxagO6Sb+Db5GM6qYPQ+c+cp71NRxQgiY0Wd0/LIoshQTs+OBISb4XTjiNQ1lxcKR79qQ=="], - "@midnight-ntwrk/ledger-v8": ["@midnight-ntwrk/ledger-v8@8.1.0", "", {}, "sha512-rwOVP5kBwACpYmmY6+oLeaiM3e5gHscRMjbZUOntOC5QdtqLdpeep6eQW1OngI+sxjjdVoGg2eE16sLf+DAHmQ=="], + "@midnight-ntwrk/midnight-js": ["@midnight-ntwrk/midnight-js@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7" } }, "sha512-viRsVlcc+pgk7a9RZGXt1NleJsCzYLninrTM6t8T8rcoycE8wvM+TBuI0Tu/AlK4OJE4G384DOHSfIGpR5FQzw=="], - "@midnight-ntwrk/midnight-js": ["@midnight-ntwrk/midnight-js@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-n6g3+NA3umlZ0FT/lU7VktKyhaYcJsrh3Jcr50pHkUZw5wMqy0gncWZklQmp8qU8F6/igy5LywKZ30PIL3wOHA=="], + "@midnight-ntwrk/midnight-js-contracts": ["@midnight-ntwrk/midnight-js-contracts@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "effect": "^3.22.1" } }, "sha512-dWM+u2SEShctUb6BvR38wiXWPr4JkYAughEM33RpthP+mnqGP+C5oOq9FOPLzdKvlYg6Ne5Fk+OMiJjaG0AZQg=="], - "@midnight-ntwrk/midnight-js-contracts": ["@midnight-ntwrk/midnight-js-contracts@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-vHeKyaj9RXTx+Cep3YpIRgg2EWkzibO4gxI7k/rYpXmGXc3waetrR5sb9FPR7v9SUX00/zf/sYbLp1NZhwZbjg=="], + "@midnight-ntwrk/midnight-js-http-client-proof-provider": ["@midnight-ntwrk/midnight-js-http-client-proof-provider@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "cross-fetch": "^4.1.0", "fetch-retry": "^6.0.0" } }, "sha512-mFbSjPJrJ1Ju60lI/Gth497kQy+c+Qa5SxM4jvMLW8pbKg1IHN8KIsQJQfGnw7NyAgqtsY6CfT+UMOmuzr9QMg=="], - "@midnight-ntwrk/midnight-js-http-client-proof-provider": ["@midnight-ntwrk/midnight-js-http-client-proof-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "cross-fetch": "^4.1.0", "fetch-retry": "^6.0.0" } }, "sha512-Q2VNRTvuWlf3MbjV7C3asuLHeFwtZMdh6t5Z+u8c8RDpejW9GhKaSjlJ2zgJII5ckE8/cocPEDwt3GKBebGHWA=="], + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": ["@midnight-ntwrk/midnight-js-indexer-public-data-provider@5.0.0-beta.7", "", { "dependencies": { "@apollo/client": "^4.2.5", "@graphql-typed-document-node/core": "^3.2.0", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "buffer": "^6.0.3", "cross-fetch": "^4.1.0", "graphql": "^17.0.1", "graphql-ws": "^6.0.8", "isomorphic-ws": "^5.0.0", "rxjs": "^7.8.2", "ws": "^8.20.0" } }, "sha512-rjKG5U1bbjOD4acVia81hrobBVj8xovp1IA++RL4SVE75lveFekqNaZO+Y0Z6RbZwEjVBbmPOAD4jChdFuSFkQ=="], - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": ["@midnight-ntwrk/midnight-js-indexer-public-data-provider@4.1.1", "", { "dependencies": { "@apollo/client": "^4.2.0", "@graphql-typed-document-node/core": "^3.2.0", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "buffer": "^6.0.3", "cross-fetch": "^4.1.0", "graphql": "^16.14.0", "graphql-ws": "^6.0.8", "isomorphic-ws": "^5.0.0", "rxjs": "^7.8.2", "ws": "^8.20.0" } }, "sha512-50CjiYqw/msRintyfkuNrJl1v4Zj+AaBFmV2uLjY/zpkPop4VBFH4QZSrtKsG1ljT9vzWsxU7Eo4Tn1tgKkPlA=="], + "@midnight-ntwrk/midnight-js-level-private-state-provider": ["@midnight-ntwrk/midnight-js-level-private-state-provider@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "abstract-level": "^3.1.1", "buffer": "^6.0.3", "level": "^10.0.0", "superjson": "^2.2.6" } }, "sha512-O3eLwjltjAkXVeXiKyot2aiM43POGtiem2DhtAD4gfsGbWVPGQ//yFyMDsS92h2eb4eJma9wpUqdmAXzs5ilxQ=="], - "@midnight-ntwrk/midnight-js-level-private-state-provider": ["@midnight-ntwrk/midnight-js-level-private-state-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "abstract-level": "^3.1.1", "buffer": "^6.0.3", "level": "^10.0.0", "superjson": "^2.2.6" } }, "sha512-i+1lXJ4rcRGERnOPXHc3/Oh5ef7X/yb6p51bOAUjITazdPPcuU8qTeTeFgX+lPhWTGxROb9/pgrrVPH9G0FxSw=="], + "@midnight-ntwrk/midnight-js-network-id": ["@midnight-ntwrk/midnight-js-network-id@5.0.0-beta.7", "", {}, "sha512-S51x/aRibCViA+4NdjYImdCHSCltJCCnI0K3K0ZqoAQc6d4b+KfIK1aSvo0cU1k1bdJwQhcgohhWH6Z5GxEHBQ=="], - "@midnight-ntwrk/midnight-js-network-id": ["@midnight-ntwrk/midnight-js-network-id@4.1.1", "", {}, "sha512-g49IBK0In1Jt2wKgi18rUvoy1ShGVrfb/VvgWALkc9Noc6+4MX5NTLVg5zqu+CyO2waIGb5lqDPnAhTD9wPAOQ=="], + "@midnight-ntwrk/midnight-js-node-zk-config-provider": ["@midnight-ntwrk/midnight-js-node-zk-config-provider@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7" } }, "sha512-PkOKC0awUkLzHE9rALoLmEBTdQQflpeCGL2Vu1JpB627sK9vRw8MY7qiZbH8MCp1PQUVMK5VpVGc/awaqQkAnA=="], - "@midnight-ntwrk/midnight-js-node-zk-config-provider": ["@midnight-ntwrk/midnight-js-node-zk-config-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-fbBhLBhU/BjrQRnRJCcmKkhYRLlSqJyXEhq72vMS6vlKXprmDmAjlVV62+bn1aiAlNY9FXl1rrrMUFKQUmuZFg=="], + "@midnight-ntwrk/midnight-js-protocol": ["@midnight-ntwrk/midnight-js-protocol@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/compact-js": "2.5.5-rc.8", "@midnight-ntwrk/compact-runtime": "0.19.0-rc.0", "@midnight-ntwrk/platform-js": "3.0.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3" } }, "sha512-XwcAiVjEvXqpbp58oZnYq3/TCs1lduN8YHxbRKB4EvltxkpptaHr2fE78MMndpvSDGEgernJreAKO0VYDOACCA=="], - "@midnight-ntwrk/midnight-js-protocol": ["@midnight-ntwrk/midnight-js-protocol@4.1.1", "", { "dependencies": { "@midnight-ntwrk/compact-js": "2.5.1", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "8.1.0", "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", "@midnight-ntwrk/platform-js": "2.2.4" } }, "sha512-JH1010ir3YrawKsA4C08aIXWpFGHrCrAaBkZFbn+xh+iwOX5Ss0WU4//mDSEnHvQN0wD6GTc2JwUfKYFaS2CcA=="], + "@midnight-ntwrk/midnight-js-types": ["@midnight-ntwrk/midnight-js-types@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "effect": "^3.22.1", "pino": "^10.3.1", "rxjs": "^7.8.2" } }, "sha512-dZMW1DWgvyOPuuSCaEAx6pOYQomT+YYHFrDk9pjPSSRG/3qhe8PKtc2DYFRu9t8E4xy7FkZM8A2EW/S8auf5JQ=="], - "@midnight-ntwrk/midnight-js-types": ["@midnight-ntwrk/midnight-js-types@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "effect": "^3.20.0", "pino": "^10.3.1", "rxjs": "^7.8.2" } }, "sha512-MPT7YToXN2EsDtOOVSJonYZSZ4eqmdVgftBfH56w+tmZM0sZt9u+Mq18uuBQl9ebpTXnp8o7WqeISbgPMxTBcQ=="], + "@midnight-ntwrk/midnight-js-utils": ["@midnight-ntwrk/midnight-js-utils@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@noble/hashes": "^2.2.0" } }, "sha512-mZwdEL/o38yeFp+ba3Uil6xuxFPAC9bplMVoP6Cs6C5gycVaeWkW1h+7wDEKGDcJ2qImfi7egNDHs+u+PbHWTg=="], - "@midnight-ntwrk/midnight-js-utils": ["@midnight-ntwrk/midnight-js-utils@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/wallet-sdk-address-format": "^3.1.0" } }, "sha512-b65QADd2FaZbWXe9D3fe9mSGmPlP1DTRMGSruJqhl9fOTNxBhQIzIKs0j/eL9Kv77dVeGDYgQdbV+JkDj3j5Qg=="], + "@midnight-ntwrk/platform-js": ["@midnight-ntwrk/platform-js@3.0.0", "", { "dependencies": { "@effect/platform": "^0.96.1", "effect": "^3.21.0", "tslib": "^2.8.1" } }, "sha512-cAOpmWURUELDKmcNf8/mZjDtxkqg6ShjV6v0KY7mmwMWkieDEERq/TRmK5cMJgUqMi6nCWjwLZqOmPB07B8Y4A=="], - "@midnight-ntwrk/onchain-runtime-v3": ["@midnight-ntwrk/onchain-runtime-v3@3.0.0", "", {}, "sha512-HbFbUOsvgpEFy1OT0Ni2LMFk4jnMQS1em+H+Mof/B3DpnNKl0Lkx5QiulKOc6pyU4KPEagOqx4fYNyVXFwgZ7g=="], - - "@midnight-ntwrk/platform-js": ["@midnight-ntwrk/platform-js@2.2.4", "", { "dependencies": { "@effect/platform": "^0.95.0", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-6mrYKSSE8kPgn/5rQ2xofDJk1yAZZRdLOO6Yelweuh5GOnOGz7Qw4venDG/c4TRqtV9ouFp+F5j7ta8aprMinw=="], + "@midnight-ntwrk/zkir-v2": ["@midnight-ntwrk/zkir-v2@2.1.0", "", {}, "sha512-UDMujjzCt0SA89uqOFWUL4LZTkxVAS8JjvOaYMAgxlSrWfN7m5th1R1qGlpDJuSH39rbWt6WwtuK3k08Mta6LA=="], - "@midnight-ntwrk/wallet-sdk-address-format": ["@midnight-ntwrk/wallet-sdk-address-format@3.1.2", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-SRkgwmKFOZSUR25iurAB8U7kTKF7AljSl+tMkuuj8Pthc/l0yIg+/q1rFSozJ0Nz9FJRhshazDyrL0l84fOabg=="], + "@midnightntwrk/ledger-v9": ["@midnightntwrk/ledger-v9@1.0.0-rc.3", "", {}, "sha512-i/Cl/d2XQ19gIm5SCruMHr+XiruxIn9Ec3i15DrZ/44Yggzu1u5+dG7QUx7Rw1htkgALXivEt7Kw4NzxPr4pBw=="], - "@midnight-ntwrk/zkir-v2": ["@midnight-ntwrk/zkir-v2@2.1.0", "", {}, "sha512-UDMujjzCt0SA89uqOFWUL4LZTkxVAS8JjvOaYMAgxlSrWfN7m5th1R1qGlpDJuSH39rbWt6WwtuK3k08Mta6LA=="], + "@midnightntwrk/onchain-runtime-v4": ["@midnightntwrk/onchain-runtime-v4@4.0.0-rc.3", "", {}, "sha512-LAf4g3vgwtPqActbi5RAoZcfYduqnFqtsHN+i1s/Mcb5vi2yMbPmpSOJ0YCCIGb2S/qY7G5tQARHVD0PJyHSNA=="], - "@midnightntwrk/wallet-sdk": ["@midnightntwrk/wallet-sdk@1.2.0", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-dust-wallet": "^4.2.0", "@midnightntwrk/wallet-sdk-facade": "^4.1.0", "@midnightntwrk/wallet-sdk-hd": "^3.0.3", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-node-client": "^1.1.3", "@midnightntwrk/wallet-sdk-prover-client": "^1.2.3", "@midnightntwrk/wallet-sdk-runtime": "^1.0.5", "@midnightntwrk/wallet-sdk-shielded": "^3.0.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "^3.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0" } }, "sha512-bG/RuW/pJphSuBN0xqmFcVqiXClXdKbubyRQA0XUPK7InoibMMNzXoAto8T2iRqcpKRzRpffvG5U/s6sij0rEg=="], + "@midnightntwrk/wallet-sdk": ["@midnightntwrk/wallet-sdk@2.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-facade": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-hd": "3.1.0-beta.1", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-node-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-utilities": "1.2.0" } }, "sha512-XL0ZG7NuswssFnsJYlJzf7AcBizBF14Da67KhRegLFLuDb0OYj3ZQNNR/c3q+2KXoJ7TJ5s75hhPMsWfBZWakg=="], - "@midnightntwrk/wallet-sdk-abstractions": ["@midnightntwrk/wallet-sdk-abstractions@2.1.0", "", { "dependencies": { "effect": "^3.19.19" } }, "sha512-56ErAc2eoJIICFXCe64x1uM0Xw6xfAoZwDqN1Nks5ZrQQvmPrNArS3s4SOEXhSR9X9TJ66T2KBx6M/jepyesfg=="], + "@midnightntwrk/wallet-sdk-abstractions": ["@midnightntwrk/wallet-sdk-abstractions@3.0.0-beta.0", "", { "dependencies": { "effect": "^3.19.19" } }, "sha512-9gzVaSd9dk1rymqd6CrqSSNGPoMtIbr24wVSwCfuB3L1y9wcNgzCw9l/RH744XJE+4RyDZODEIWo7WU5LCYvNw=="], - "@midnightntwrk/wallet-sdk-address-format": ["@midnightntwrk/wallet-sdk-address-format@3.1.2", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-1eXt4eazKoT6C88/yy++fpxIBhF0o6iSqplc6DuCzNL0uePn7Opg0hiTIap2oEmC25XVXmzPhUa0xiWJzv3TIw=="], + "@midnightntwrk/wallet-sdk-address-format": ["@midnightntwrk/wallet-sdk-address-format@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-yK4jlntQ0Pgks8dKrPx6J7IMdzIznEYZ4yO9/msIJrn2IM4o1d8+MEh07OMFvZ9ui1YNQB272aUv5muopBCrdA=="], - "@midnightntwrk/wallet-sdk-capabilities": ["@midnightntwrk/wallet-sdk-capabilities@3.3.1", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.2", "@midnightntwrk/wallet-sdk-node-client": "^1.1.2", "@midnightntwrk/wallet-sdk-prover-client": "^1.2.2", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-DpM9kkwFdAr/0Z0G62qL9U8hG5SOYMtwiPqbStvNhk97E2gGwmu5Yu0Zrdm9PDxCYjWgsudAdnVt0WxE8auUGA=="], + "@midnightntwrk/wallet-sdk-capabilities": ["@midnightntwrk/wallet-sdk-capabilities@4.0.0-beta.2", "", { "dependencies": { "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-node-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-QoeautcgfOgUMzbU5JAqhVP7n8K8fNdpQgoOwDwIdjJGpP+mH0f2/QtGia373OVTt1olf3cQN+7bLL9B0ihvlg=="], - "@midnightntwrk/wallet-sdk-dust-wallet": ["@midnightntwrk/wallet-sdk-dust-wallet@4.2.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-runtime": "^1.0.5", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-L8BfDPfxh9AG/IPvlfqky8Y81Vg/9jYZ0w4UqYWxH5TNnzq6BwZHVGZTYc/iQLq02NwaGPtbrzePMXpH2gF0CA=="], + "@midnightntwrk/wallet-sdk-dust-wallet": ["@midnightntwrk/wallet-sdk-dust-wallet@5.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-ILtpnmrx5mkMbDDAt1Az0qAdev3CtbTSsjk0PHh6sIowiaooQBSJ1GH043unYkpUj++OLlTcS2Dwf1VT2ya0oA=="], - "@midnightntwrk/wallet-sdk-facade": ["@midnightntwrk/wallet-sdk-facade@4.1.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-dust-wallet": "^4.2.0", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-shielded": "^3.0.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "^3.1.0", "rxjs": "^7.8.2" } }, "sha512-GH/iqokeXgazvyYnxVU6S2EWD/fJRxqkB+MNlsk04siyEKEj+jhFFyTsg+loHqGQ9P+9I9xA5k1+rFpTLhI5VA=="], + "@midnightntwrk/wallet-sdk-facade": ["@midnightntwrk/wallet-sdk-facade@5.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-dust-wallet": "5.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-shielded": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-unshielded-wallet": "4.0.0-beta.2", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-iDtxlilzBz2oPRJkGaktLS5hUkNXLwAZovYv99XLpoSg/+QYGpX3zWhFW5+OUV3kt9QYFLDSilRKdmtXa+WHJQ=="], - "@midnightntwrk/wallet-sdk-hd": ["@midnightntwrk/wallet-sdk-hd@3.0.3", "", { "dependencies": { "@scure/bip32": "^2.0.1", "@scure/bip39": "^2.0.1" } }, "sha512-HDRKZdLvgNS9UkKw1W9V+XBCMpiwnBQl/4wyhu8KXy5sXgSRgN35qslrnzM9WtAQP6BzKek2vw7Dk/M8EZC5DA=="], + "@midnightntwrk/wallet-sdk-hd": ["@midnightntwrk/wallet-sdk-hd@3.1.0-beta.1", "", { "dependencies": { "@scure/bip32": "^2.0.1", "@scure/bip39": "^2.0.1" } }, "sha512-zQCucKVf7BXmTA6Clf5yHUsNspAiV0q+noEZVvHxd2yQTS6pXBmibUZ0wBWs1KG3V2tCfBllzoil7rS+L82IRQ=="], - "@midnightntwrk/wallet-sdk-indexer-client": ["@midnightntwrk/wallet-sdk-indexer-client@1.2.3", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "graphql": "^16.13.0", "graphql-http": "^1.22.4", "graphql-ws": "^6.0.7" } }, "sha512-iJ2FV33XxFqsoEYBICopsVDREoA8LkkTo+UKB1yx1GpAWe4B8I0TT+6Iyj0zX19LyEVm7dP5IpVROlOhWw9L3g=="], + "@midnightntwrk/wallet-sdk-indexer-client": ["@midnightntwrk/wallet-sdk-indexer-client@1.3.0-beta.1", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "graphql": "^17.0.0", "graphql-http": "^1.22.4", "graphql-ws": "^6.0.7" } }, "sha512-Kn3RT3kpRlyTAmN9xhV98q8k8ZiLE40zOGte/++tHHE2k69jtCFNWHlKlJXTDpmFVBqGmJFb8Ih658n4xGgdJg=="], - "@midnightntwrk/wallet-sdk-node-client": ["@midnightntwrk/wallet-sdk-node-client@1.1.3", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "@polkadot/api": "^16.5.4", "@polkadot/types": "^16.5.4", "@polkadot/util": "^14.0.1", "@types/bn.js": "^5.2.0", "bn.js": "^5.2.3", "effect": "^3.19.19" }, "peerDependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-prover-client": "^1.2.3" }, "optionalPeers": ["@midnight-ntwrk/ledger-v8", "@midnightntwrk/wallet-sdk-prover-client"] }, "sha512-ijf3EjDyuBxla2zl3yp/4CD5hsg10M61K8n033lRi7aC7kvUarbrIxUJQz4dgJQ0J73rGRDLyJi1D0II++FmVg=="], + "@midnightntwrk/wallet-sdk-node-client": ["@midnightntwrk/wallet-sdk-node-client@2.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "@polkadot/api": "^16.5.4", "@polkadot/types": "^16.5.4", "@polkadot/util": "^14.0.1", "@types/bn.js": "^5.2.0", "bn.js": "^5.2.3", "effect": "^3.19.19" }, "peerDependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-prover-client": "2.0.0-beta.2" }, "optionalPeers": ["@midnightntwrk/ledger-v9", "@midnightntwrk/wallet-sdk-prover-client"] }, "sha512-jW9Mu37a1B9kpUSVAg0PTu7agPza4ffUCLS8rCAWDbAfa65xoECFXUH2FzWR95uxVPes8XY7+onNeBQN7ffJ3w=="], - "@midnightntwrk/wallet-sdk-prover-client": ["@midnightntwrk/wallet-sdk-prover-client@1.2.3", "", { "dependencies": { "@effect/platform": "^0.96.0", "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "web-worker": "^1.5.0" } }, "sha512-1gTpxRzFsXyZLcro0sBo7cgLXiHUbIgV/t/tTDDPwGeoPKX4pLP7go39XDxCtKhe1YjmKquVQ/Qtz7djpshgzw=="], + "@midnightntwrk/wallet-sdk-prover-client": ["@midnightntwrk/wallet-sdk-prover-client@2.0.0-beta.2", "", { "dependencies": { "@effect/platform": "^0.96.0", "@midnight-ntwrk/zkir-v2": "^2.1.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "web-worker": "^1.5.0" } }, "sha512-hNHwsxRbg6HkkgTG4tE13ycKI1IwzMUVFLBgfLtt2/7TkbymyI9XkgollShNrcIQ5RzAg3WYX7d1sx9XIUxblA=="], - "@midnightntwrk/wallet-sdk-runtime": ["@midnightntwrk/wallet-sdk-runtime@1.0.5", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-0CHGeenRGcm1SommH/fDIXPU4jdee2giNOTDepyO6l46b3nqemhb/drv8RIrc4UIbxATgPJIcWsLrRX/fEu0mQ=="], + "@midnightntwrk/wallet-sdk-runtime": ["@midnightntwrk/wallet-sdk-runtime@1.0.6-beta.0", "", { "dependencies": { "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-4Q/hTopMvLaiyncaIFiWQVPvXBHOg8tgPq4Aqx9ta+smuiPFbCAZRq7ezA7PMmKYAEqWeqaY93oK98NmeKUakg=="], - "@midnightntwrk/wallet-sdk-shielded": ["@midnightntwrk/wallet-sdk-shielded@3.0.2", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.3", "@midnightntwrk/wallet-sdk-runtime": "^1.0.5", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-zzYDKrOXL+igNivpjgJKiHd8USETgAZyOLR2u8nDupHvIsmDlxScxzJO/gULr8Mon3SiCYUkElls5p4aFKz3vg=="], + "@midnightntwrk/wallet-sdk-shielded": ["@midnightntwrk/wallet-sdk-shielded@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-ecxajW6CS4+tNg0nMrofdwXzdhPCbpXADI1saMqP7bP9FJ3+BBIFfZtKIsHL+dN2RySa7+YOlFgeG4kzh/sIYA=="], - "@midnightntwrk/wallet-sdk-unshielded-wallet": ["@midnightntwrk/wallet-sdk-unshielded-wallet@3.1.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@midnightntwrk/wallet-sdk-abstractions": "^2.1.0", "@midnightntwrk/wallet-sdk-address-format": "^3.1.2", "@midnightntwrk/wallet-sdk-capabilities": "^3.3.1", "@midnightntwrk/wallet-sdk-indexer-client": "^1.2.2", "@midnightntwrk/wallet-sdk-runtime": "^1.0.4", "@midnightntwrk/wallet-sdk-utilities": "^1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-nqeo1W+81n36T2VoF5/TJcaeXYh5+QE716VwMD/DjQ42+xvVLD2XlckRuUWPzYrVcMRvxaB+Up94K5WVCE+E+w=="], + "@midnightntwrk/wallet-sdk-unshielded-wallet": ["@midnightntwrk/wallet-sdk-unshielded-wallet@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/wallet-sdk-abstractions": "3.0.0-beta.0", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-capabilities": "4.0.0-beta.2", "@midnightntwrk/wallet-sdk-indexer-client": "1.3.0-beta.1", "@midnightntwrk/wallet-sdk-runtime": "1.0.6-beta.0", "@midnightntwrk/wallet-sdk-utilities": "1.2.0", "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-SBhXPqzEWUybgYO5iLdcPwy1jy2gP4viqTiaWHWGwdkr6kTO1nsXLgq2ZCteWuypbRyMnKhP28z+uGzsrtaZcg=="], "@midnightntwrk/wallet-sdk-utilities": ["@midnightntwrk/wallet-sdk-utilities@1.2.0", "", { "dependencies": { "effect": "^3.19.19", "rxjs": "^7.8.2" } }, "sha512-Xh5uuCwg4FtAOQCYQ2wkBZtIEt0oCCt1mO3jHLnP+7cyMUQfMNbKwOVi85W3zq+84YFy5DVsN9xifFm75c1MQg=="], @@ -132,15 +126,13 @@ "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4", "", { "os": "win32", "cpu": "x64" }, "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.6", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg=="], + "@noble/ciphers": ["@noble/ciphers@2.4.0", "", {}, "sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw=="], - "@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="], + "@noble/curves": ["@noble/curves@2.4.0", "", { "dependencies": { "@noble/hashes": "2.4.0" } }, "sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew=="], - "@noble/curves": ["@noble/curves@2.2.0", "", { "dependencies": { "@noble/hashes": "2.2.0" } }, "sha512-T/BoHgFXirb0ENSPBquzX0rcjXeM6Lo892a2jlYJkqk83LqZx0l1Of7DzlKJ6jkpvMrkHSnAcgb5JegL8SeIkQ=="], + "@noble/hashes": ["@noble/hashes@2.4.0", "", {}, "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA=="], - "@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - - "@oxc-project/types": ["@oxc-project/types@0.138.0", "", {}, "sha512-1a7ZKmrRTCoN1XMZ4L0PyyqrMnrNlLyPuOkdSX2MZg7IiIGRUyurNhAm73ptDOraoBcIordsIGKNPKUzy3ZmfA=="], + "@oxc-project/types": ["@oxc-project/types@0.148.0", "", {}, "sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A=="], "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], @@ -238,43 +230,43 @@ "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], - "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.1.4", "", { "os": "android", "cpu": "arm64" }, "sha512-EZLpf/8y7GXkkra90ML47kzik/GMP3EMcE9bPyHmRfxLC6z9+aW5A8poCsoxjrT5GfEcNAAvWwUHjvP1pUQkfw=="], + "@rolldown/binding-android-arm-eabi": ["@rolldown/binding-android-arm-eabi@1.2.7", "", { "os": "android", "cpu": "arm" }, "sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ=="], - "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.1.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-aUi+HBvmYb7j8krl1+qJgkG8C17fO79gk3c+jPw4S8glRFc1DTija9S3EyaTSQUm5GJXYKDAsugBEhFHH2vYiQ=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.2.7", "", { "os": "android", "cpu": "arm64" }, "sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw=="], - "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.1.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-F7hHC3gwY11+vByKPRWqwGbeXWVgKmL+pTGCinaEhdihzBV2aQ0fvZOch9cXYUOKuKKq429HeYXOqQLc7wFCEg=="], + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.2.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw=="], - "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.1.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-sI5yw+7s92SK6odiEhD5lKCBlWcpjHS5qyqpVQbZAJ0fIzEUXrmbl3DH2ybR3PZogulNJF+COLtmA8hUfvkCCQ=="], + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.2.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ=="], - "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.1.4", "", { "os": "linux", "cpu": "arm" }, "sha512-mCi0OKgEieFircrtVYmQAFGszRtMnZ6fpZAXrxanXAu7lqZcsK1E1RAaZNG0uKAnxox3B1f4EyQNnoyMfN1vAA=="], + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.2.7", "", { "os": "freebsd", "cpu": "x64" }, "sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA=="], - "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.1.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-B9Ial3Kv5sh0SHnB1g/QWcUQCEvCF6QKGAl4zXypYj65mVI+B4AhFBwPtSN7pDrJeIx8Z7zdy4ntx+wQABom7w=="], + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.2.7", "", { "os": "linux", "cpu": "arm" }, "sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ=="], - "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.1.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-lZVym0PuHE1KZ22gmFTC15lAkrg9iTszR617oYRB/iPY1A56ywoJzVKOJBKaot5RiikCObmur6pogpse3gRcng=="], + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg=="], - "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.1.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-t2DNiLJWNTbnEHyUzTumldML6ET4/g16467LZoDDJ3tSxGvguL5/NyC2lCsNKuyRycg9XeDQF5SSv+TNOhQEXg=="], + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.2.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q=="], - "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.1.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-0WIRnL1Uw4BvTZRLQt+PVgo6ZKTJadlC2btP+/EOXv2f/DWbY0rEgl+y834mIVwP1FkTlWVTrGGJXf12lru7EQ=="], + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.2.7", "", { "os": "linux", "cpu": "ppc64" }, "sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg=="], - "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.1.4", "", { "os": "linux", "cpu": "x64" }, "sha512-JWtGshGfX+oENAKonoNkqEJX+7hC8yfhi9GUyPX1VX4mdh1y5r+ZiJLR5XzAB0aoP6s/PcILsGjKq8O0mm24bw=="], + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.2.7", "", { "os": "linux", "cpu": "s390x" }, "sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw=="], - "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.1.4", "", { "os": "linux", "cpu": "x64" }, "sha512-rT6yQcxUuXs4CnbofqwHRRV0iem349rLMYpTjkgQGLjrY4ado/eDzwPZPTCgTOlF6Nkp8NEv70yLMTn6qkWxsQ=="], + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA=="], - "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.1.4", "", { "os": "none", "cpu": "arm64" }, "sha512-KXMGoboq5cyaCQjDA4GLuRiOwBQ0EyFnJoVViLeZ45/3rFItRODEr+NdsBcVpll40hhNArlm/speWGRvj08LzA=="], + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.2.7", "", { "os": "linux", "cpu": "x64" }, "sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw=="], - "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.1.4", "", { "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-5K83rb36oJiY7BCyE9zLZtGcPV4g5wvq+xwdO0XPIwDVZI8cyB/AUjkNXGb92/rnmezEkjMOpgY61rtwjQtFwg=="], + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.2.7", "", { "os": "none", "cpu": "arm64" }, "sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w=="], - "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.1.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-PnWBtw3TV5KOg69HQQDR0mnQuyCmSGR2pAB4DC1rPF808fgKeTUMj2EOEyKATpgiuxuR5APQmiDO7PDgEjTFSA=="], + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.2.7", "", { "os": "win32", "cpu": "arm64" }, "sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw=="], - "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.1.4", "", { "os": "win32", "cpu": "x64" }, "sha512-M1lpniBePobTfsa7Ks9a199e1akxsXn+GYBUKsEzv3YFzOm1HJAMNwKI3qr0Zq+mxwx9gOZoTdP1yXRYsZUocQ=="], + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.2.7", "", { "os": "win32", "cpu": "x64" }, "sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw=="], "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], - "@scure/base": ["@scure/base@2.2.0", "", {}, "sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg=="], + "@scure/base": ["@scure/base@2.4.0", "", {}, "sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg=="], - "@scure/bip32": ["@scure/bip32@2.2.0", "", { "dependencies": { "@noble/curves": "2.2.0", "@noble/hashes": "2.2.0", "@scure/base": "2.2.0" } }, "sha512-zFr7t2F+a9+5tB7QbarF2HQNYrgjCNaoLAupZdKkrFMYMozJf5zqH2WJCQibMzm1qQ0QogrxVGO3qXfQDYMaQg=="], + "@scure/bip32": ["@scure/bip32@2.4.0", "", { "dependencies": { "@noble/curves": "2.4.0", "@noble/hashes": "2.4.0", "@scure/base": "2.4.0" } }, "sha512-i3DS0CptAocyvqE4n3SUkpzeQK4vJMFwWLofTwRiiKo2aWojBOfyMCgfKw9HVpO6fSY5AK86sHS/Uzn8kK9Few=="], - "@scure/bip39": ["@scure/bip39@2.2.0", "", { "dependencies": { "@noble/hashes": "2.2.0", "@scure/base": "2.2.0" } }, "sha512-T/Bj/YvYMNkIPq6EENO6/rcs2e7qTNuyoUXf0KBFDmp0ZDu0H2X4Lq6yC3i0c8PcWkov5EbW+yQZZbdMmk154A=="], + "@scure/bip39": ["@scure/bip39@2.4.0", "", { "dependencies": { "@noble/hashes": "2.4.0" } }, "sha512-82dxFbZUYboyOf0AXiydsQrFQ5Q4h9mX+O2UkE91ROYmsc0BKMGZLwDmy96Jpa2+vrtoxomjUhy1RPIgH/r2nA=="], "@scure/sr25519": ["@scure/sr25519@0.2.0", "", { "dependencies": { "@noble/curves": "~1.9.2", "@noble/hashes": "~1.8.0" } }, "sha512-uUuLP7Z126XdSizKtrCGqYyR3b3hYtJ6Fg/XFUXmc2//k2aXHDLqZwFeXxL97gg4XydPROPVnuaHGF2+xriSKg=="], @@ -296,8 +288,6 @@ "@substrate/ss58-registry": ["@substrate/ss58-registry@1.51.0", "", {}, "sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ=="], - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], - "@types/bn.js": ["@types/bn.js@5.2.0", "", { "dependencies": { "@types/node": "*" } }, "sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q=="], "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], @@ -310,7 +300,7 @@ "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], - "@types/node": ["@types/node@24.13.2", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA=="], + "@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="], "@types/object-inspect": ["@types/object-inspect@1.13.0", "", {}, "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w=="], @@ -320,19 +310,19 @@ "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - "@vitest/expect": ["@vitest/expect@4.1.10", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA=="], + "@vitest/expect": ["@vitest/expect@4.1.11", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw=="], - "@vitest/mocker": ["@vitest/mocker@4.1.10", "", { "dependencies": { "@vitest/spy": "4.1.10", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow=="], + "@vitest/mocker": ["@vitest/mocker@4.1.11", "", { "dependencies": { "@vitest/spy": "4.1.11", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ=="], - "@vitest/pretty-format": ["@vitest/pretty-format@4.1.10", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q=="], + "@vitest/pretty-format": ["@vitest/pretty-format@4.1.11", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw=="], - "@vitest/runner": ["@vitest/runner@4.1.10", "", { "dependencies": { "@vitest/utils": "4.1.10", "pathe": "^2.0.3" } }, "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg=="], + "@vitest/runner": ["@vitest/runner@4.1.11", "", { "dependencies": { "@vitest/utils": "4.1.11", "pathe": "^2.0.3" } }, "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw=="], - "@vitest/snapshot": ["@vitest/snapshot@4.1.10", "", { "dependencies": { "@vitest/pretty-format": "4.1.10", "@vitest/utils": "4.1.10", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw=="], + "@vitest/snapshot": ["@vitest/snapshot@4.1.11", "", { "dependencies": { "@vitest/pretty-format": "4.1.11", "@vitest/utils": "4.1.11", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog=="], - "@vitest/spy": ["@vitest/spy@4.1.10", "", {}, "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw=="], + "@vitest/spy": ["@vitest/spy@4.1.11", "", {}, "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA=="], - "@vitest/utils": ["@vitest/utils@4.1.10", "", { "dependencies": { "@vitest/pretty-format": "4.1.10", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA=="], + "@vitest/utils": ["@vitest/utils@4.1.11", "", { "dependencies": { "@vitest/pretty-format": "4.1.11", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ=="], "@wry/caches": ["@wry/caches@1.0.1", "", { "dependencies": { "tslib": "^2.3.0" } }, "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA=="], @@ -368,17 +358,15 @@ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "bare-events": ["bare-events@2.9.1", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg=="], - - "bare-fs": ["bare-fs@4.7.3", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-xRgplks8SvcKkdlv2M6Z2LZmRsmqd+x0nXXGXeMEjwdibj1HSDrlnqBRLeYdMvsgCox7Bq0e+DHwfczOfsn6IA=="], + "bare-events": ["bare-events@2.9.2", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA=="], - "bare-os": ["bare-os@3.9.3", "", {}, "sha512-fF4Q7QsyKVF5Rj0qvI8BgUNjqzC2JvQlpTaPLjVJVxYVUX5Zr9un+y3w1HmA4nNKdFmRBT8z/WmrjvXzXVerKQ=="], + "bare-fs": ["bare-fs@4.8.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-N1nnXdHZAOSstz0XiHikGS4HGMH4CnSwhqWdGQQMqqdvp4Jybm9sE3R1WVnpWVd4SFkc8ryPDBLViNLwiEqECg=="], - "bare-path": ["bare-path@3.0.1", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-ghj2DSK/2e99a1anTVPCV4m4YIYtrbXhfM7V3D7XZLOTsybnYyaJloymGqssQc8l/or0UoDyRtNQkmkEF/ysgQ=="], + "bare-path": ["bare-path@3.1.2", "", {}, "sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw=="], - "bare-stream": ["bare-stream@2.13.3", "", { "dependencies": { "b4a": "^1.8.1", "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ=="], + "bare-stream": ["bare-stream@2.13.4", "", { "dependencies": { "b4a": "^1.8.1", "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA=="], - "bare-url": ["bare-url@2.4.5", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ=="], + "bare-url": ["bare-url@2.5.4", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g=="], "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], @@ -386,9 +374,9 @@ "bl": ["bl@4.1.0", "", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="], - "bn.js": ["bn.js@5.2.4", "", {}, "sha512-QL7sb18rJ1PbdsKsqPA0guxL563vIMwRHgzNrW/uzQuRGN1Cjqd/wonUBAVqHox9KwzHA6vCbM0lXx3k4iQMow=="], + "bn.js": ["bn.js@5.2.5", "", {}, "sha512-Vq886eXykuP5E6HcKSSStP3bJgrE6In5WKxVUvJ8XGpWWYs2xZHWqUwzCtGgEtBcxyd57KBFDPFoUfNzdaHCNg=="], - "brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "brace-expansion": ["brace-expansion@2.1.4", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg=="], "browser-level": ["browser-level@3.0.0", "", { "dependencies": { "abstract-level": "^3.1.0" } }, "sha512-kGXtLh29jMwqKaskz5xeDLtCtN1KBz/DbQSqmvH7QdJiyGRC7RAM8PPg6gvUiNMa+wVnaxS9eSmEtP/f5ajOVw=="], @@ -416,7 +404,7 @@ "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - "copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="], + "copy-anything": ["copy-anything@4.1.0", "", {}, "sha512-ufbM3smX/Jbnpk5wcQjzd1MgBpzmqfNETUAyZNrGwU9foRlyHoGzMMBBCRzEhQLBjZfFDE1W2ufPXX2vdWkV8Q=="], "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], @@ -444,13 +432,13 @@ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], - "effect": ["effect@3.21.4", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-B89v/xSgPbl1J2Ai2u18jxq3odpFauU1rC6/eSs4FeNHi72kwKdJp12VGigvRV2lK+kRnx+OOz41XV8guZd4gQ=="], + "effect": ["effect@3.22.1", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-TNoXushmPOBAjJlthF5d2QwnX2xBPEtcNJr5XKNKbRLbDvBcOYkXlYDfvGfSA0zriwLFuCll5MDtNMAdZL17PQ=="], "emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - "es-module-lexer": ["es-module-lexer@2.3.0", "", {}, "sha512-KLdwQm2NvGLDkQDCGvmiQrhkd0JbMzXthwQAUgWjQuQdBLFa3eiBP5arXZyA+f8x+x7OXgud6bq2rxjGtHV2tw=="], + "es-module-lexer": ["es-module-lexer@2.3.2", "", {}, "sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw=="], "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], @@ -494,13 +482,13 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graphql": ["graphql@16.14.2", "", {}, "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA=="], + "graphql": ["graphql@17.0.2", "", {}, "sha512-FRWbddMxfkjiB7z+aQDWIR+E34xo9I8c9mtK2RPv8PmMzKRvrdsreHL/Ui/TmwHJfhHChEtsFPyMHKI+xuarQQ=="], - "graphql-http": ["graphql-http@1.22.4", "", { "peerDependencies": { "graphql": ">=0.11 <=16" } }, "sha512-OC3ucK988teMf+Ak/O+ZJ0N2ukcgrEurypp8ePyJFWq83VzwRAmHxxr+XxrMpxO/FIwI4a7m/Fzv3tWGJv0wPA=="], + "graphql-http": ["graphql-http@1.23.0", "", { "peerDependencies": { "graphql": ">=0.11 <=17" } }, "sha512-nQbRzoaqyNBVFG6X6r0mXC6S4X9eZOmmGz6t3l9H3MVKc2em3KeQAx+KhZKKFzj56ePDEncMOXeLu/hjO/4LQg=="], "graphql-tag": ["graphql-tag@2.12.7", "", { "dependencies": { "tslib": "^2.1.0" }, "peerDependencies": { "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-xnE/NFzy+0eIesvAsREJZ284zTl/wYuBAvpsFSDhRGRdRHdnE90M21Q3xAWyYInb0J756c6x0pIQ62+vtvOs1Q=="], - "graphql-ws": ["graphql-ws@6.0.8", "", { "peerDependencies": { "@fastify/websocket": "^10 || ^11", "crossws": "~0.3", "graphql": "^15.10.1 || ^16", "ws": "^8" }, "optionalPeers": ["@fastify/websocket", "crossws", "ws"] }, "sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw=="], + "graphql-ws": ["graphql-ws@6.2.1", "", { "peerDependencies": { "@fastify/websocket": "^10 || ^11", "crossws": "~0.3", "graphql": "^15.10.1 || ^16 || ^17", "ws": "^8" }, "optionalPeers": ["@fastify/websocket", "crossws", "ws"] }, "sha512-NMbPNeTwXpUOxmczdMtzEnynLNbbR267E9hRcJ81SSbQeIvZup3cMjbD1ZT3jpS2xkpxooisitvO7LZNOyz17Q=="], "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], @@ -512,8 +500,6 @@ "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="], - "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], @@ -532,29 +518,29 @@ "level-transcoder": ["level-transcoder@1.0.1", "", { "dependencies": { "buffer": "^6.0.3", "module-error": "^1.0.1" } }, "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w=="], - "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + "lightningcss": ["lightningcss@1.33.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.33.0", "lightningcss-darwin-arm64": "1.33.0", "lightningcss-darwin-x64": "1.33.0", "lightningcss-freebsd-x64": "1.33.0", "lightningcss-linux-arm-gnueabihf": "1.33.0", "lightningcss-linux-arm64-gnu": "1.33.0", "lightningcss-linux-arm64-musl": "1.33.0", "lightningcss-linux-x64-gnu": "1.33.0", "lightningcss-linux-x64-musl": "1.33.0", "lightningcss-win32-arm64-msvc": "1.33.0", "lightningcss-win32-x64-msvc": "1.33.0" } }, "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA=="], - "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.33.0", "", { "os": "android", "cpu": "arm64" }, "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.33.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.33.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.33.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.33.0", "", { "os": "linux", "cpu": "arm" }, "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.33.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.33.0", "", { "os": "linux", "cpu": "x64" }, "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.33.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.33.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA=="], "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], @@ -590,7 +576,7 @@ "nan": ["nan@2.28.0", "", {}, "sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ=="], - "nanoid": ["nanoid@3.3.15", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA=="], + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], "napi-macros": ["napi-macros@2.2.2", "", {}, "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g=="], @@ -608,7 +594,7 @@ "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], - "obug": ["obug@2.1.3", "", {}, "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg=="], + "obug": ["obug@2.1.4", "", {}, "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA=="], "on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="], @@ -626,7 +612,7 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], + "picomatch": ["picomatch@4.0.7", "", {}, "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA=="], "pino": ["pino@10.3.1", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^3.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^4.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg=="], @@ -634,13 +620,13 @@ "pino-std-serializers": ["pino-std-serializers@7.1.0", "", {}, "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw=="], - "postcss": ["postcss@8.5.16", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg=="], + "postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], - "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], + "process-warning": ["process-warning@5.1.0", "", {}, "sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw=="], "propagate": ["propagate@2.0.1", "", {}, "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag=="], @@ -648,7 +634,7 @@ "properties-reader": ["properties-reader@3.0.1", "", { "dependencies": { "@kwsites/file-exists": "^1.1.1", "mkdirp": "^3.0.1" } }, "sha512-WPn+h9RGEExOKdu4bsF4HksG/uzd3cFq3MFtq8PsFeExPse5Ha/VOjQNyHhjboBFwGXGev6muJYTSPAOkROq2g=="], - "protobufjs": ["protobufjs@7.6.5", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw=="], + "protobufjs": ["protobufjs@7.6.6", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg=="], "pump": ["pump@3.0.4", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA=="], @@ -666,7 +652,7 @@ "retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], - "rolldown": ["rolldown@1.1.4", "", { "dependencies": { "@oxc-project/types": "=0.138.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.1.4", "@rolldown/binding-darwin-arm64": "1.1.4", "@rolldown/binding-darwin-x64": "1.1.4", "@rolldown/binding-freebsd-x64": "1.1.4", "@rolldown/binding-linux-arm-gnueabihf": "1.1.4", "@rolldown/binding-linux-arm64-gnu": "1.1.4", "@rolldown/binding-linux-arm64-musl": "1.1.4", "@rolldown/binding-linux-ppc64-gnu": "1.1.4", "@rolldown/binding-linux-s390x-gnu": "1.1.4", "@rolldown/binding-linux-x64-gnu": "1.1.4", "@rolldown/binding-linux-x64-musl": "1.1.4", "@rolldown/binding-openharmony-arm64": "1.1.4", "@rolldown/binding-wasm32-wasi": "1.1.4", "@rolldown/binding-win32-arm64-msvc": "1.1.4", "@rolldown/binding-win32-x64-msvc": "1.1.4" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-IjZYiLxZwpnhwhdBH2ugdTGVSdhCQUmLxLoqyjiL0JxYjyRst+5a0P3xfrTxJ5F638j4Mvvw5FAX5XE6eHpXbA=="], + "rolldown": ["rolldown@1.2.7", "", { "dependencies": { "@oxc-project/types": "=0.148.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm-eabi": "1.2.7", "@rolldown/binding-android-arm64": "1.2.7", "@rolldown/binding-darwin-arm64": "1.2.7", "@rolldown/binding-darwin-x64": "1.2.7", "@rolldown/binding-freebsd-x64": "1.2.7", "@rolldown/binding-linux-arm-gnueabihf": "1.2.7", "@rolldown/binding-linux-arm64-gnu": "1.2.7", "@rolldown/binding-linux-arm64-musl": "1.2.7", "@rolldown/binding-linux-ppc64-gnu": "1.2.7", "@rolldown/binding-linux-s390x-gnu": "1.2.7", "@rolldown/binding-linux-x64-gnu": "1.2.7", "@rolldown/binding-linux-x64-musl": "1.2.7", "@rolldown/binding-openharmony-arm64": "1.2.7", "@rolldown/binding-win32-arm64-msvc": "1.2.7", "@rolldown/binding-win32-x64-msvc": "1.2.7" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig=="], "rxjs": ["rxjs@7.8.2", "", { "dependencies": { "tslib": "^2.1.0" } }, "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA=="], @@ -702,9 +688,9 @@ "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], - "std-env": ["std-env@4.1.0", "", {}, "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ=="], + "std-env": ["std-env@4.2.0", "", {}, "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw=="], - "streamx": ["streamx@2.28.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw=="], + "streamx": ["streamx@2.28.1", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA=="], "string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], @@ -720,7 +706,7 @@ "tar-fs": ["tar-fs@3.1.3", "", { "dependencies": { "pump": "^3.0.0", "tar-stream": "^3.1.5" }, "optionalDependencies": { "bare-fs": "^4.0.1", "bare-path": "^3.0.0" } }, "sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ=="], - "tar-stream": ["tar-stream@3.2.0", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg=="], + "tar-stream": ["tar-stream@3.2.1", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ=="], "teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="], @@ -732,11 +718,11 @@ "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], - "tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], + "tinyexec": ["tinyexec@1.3.0", "", {}, "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ=="], "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], - "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="], + "tinyrainbow": ["tinyrainbow@3.1.1", "", {}, "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw=="], "tmp": ["tmp@0.2.7", "", {}, "sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw=="], @@ -748,7 +734,7 @@ "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], - "undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + "undici": ["undici@7.29.0", "", {}, "sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw=="], "undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], @@ -756,9 +742,9 @@ "uuid": ["uuid@10.0.0", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="], - "vite": ["vite@8.1.3", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", "postcss": "^8.5.16", "rolldown": "~1.1.3", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-Ds+gBRbj0lwRO2Y5hwnUBdxSwlAve9LeRyU4sNnAr0ewW0gWF0n5bgXgUzbgZ49MV9BVUAQUFYVcDUcilUExMA=="], + "vite": ["vite@8.2.2", "", { "dependencies": { "lightningcss": "^1.33.0", "picomatch": "^4.0.5", "postcss": "^8.5.26", "rolldown": "~1.2.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.4.0 || ^0.5.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cFKLV/PRgAUlIRm5WjMjJ86jrftzpqcgH+Us+DS8mI3CDNiH30Whrz8uHL3+MOLPAgqbMBAqWdAHAphOAM+z/Q=="], - "vitest": ["vitest@4.1.10", "", { "dependencies": { "@vitest/expect": "4.1.10", "@vitest/mocker": "4.1.10", "@vitest/pretty-format": "4.1.10", "@vitest/runner": "4.1.10", "@vitest/snapshot": "4.1.10", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.10", "@vitest/browser-preview": "4.1.10", "@vitest/browser-webdriverio": "4.1.10", "@vitest/coverage-istanbul": "4.1.10", "@vitest/coverage-v8": "4.1.10", "@vitest/ui": "4.1.10", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw=="], + "vitest": ["vitest@4.1.11", "", { "dependencies": { "@vitest/expect": "4.1.11", "@vitest/mocker": "4.1.11", "@vitest/pretty-format": "4.1.11", "@vitest/runner": "4.1.11", "@vitest/snapshot": "4.1.11", "@vitest/spy": "4.1.11", "@vitest/utils": "4.1.11", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.11", "@vitest/browser-preview": "4.1.11", "@vitest/browser-webdriverio": "4.1.11", "@vitest/coverage-istanbul": "4.1.11", "@vitest/coverage-v8": "4.1.11", "@vitest/ui": "4.1.11", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw=="], "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], @@ -778,7 +764,7 @@ "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], - "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -798,7 +784,9 @@ "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], - "@midnightntwrk/wallet-sdk-prover-client/@effect/platform": ["@effect/platform@0.96.2", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.4" } }, "sha512-oJm3UztdzZvK7BXkFSV3IdyGuqQrhLmViG/hMDZh99ski7aADesNuv19z4R0heH3bAXnSt/Nb8O9KJQ886C0Tg=="], + "@midnight-ntwrk/platform-js/@effect/platform": ["@effect/platform@0.96.3", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.5" } }, "sha512-LzvIj4HYE++TcTv/cVTCI/GRvQTV0ymwRmgjZMzNB5dU4OS05pTN36RKN0npiOm5orLJgw4yjIv1dNZoYGh/vg=="], + + "@midnightntwrk/wallet-sdk-prover-client/@effect/platform": ["@effect/platform@0.96.3", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.5" } }, "sha512-LzvIj4HYE++TcTv/cVTCI/GRvQTV0ymwRmgjZMzNB5dU4OS05pTN36RKN0npiOm5orLJgw4yjIv1dNZoYGh/vg=="], "@polkadot-api/substrate-bindings/@noble/hashes": ["@noble/hashes@1.8.0", "", {}, "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A=="], @@ -834,7 +822,7 @@ "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], + "@isaacs/cliui/strip-ansi/ansi-regex": ["ansi-regex@6.3.0", "", {}, "sha512-WpDfL7NO6j7tH88IDBNVdUJxDh9nmCteAVW9dsep846XdwF4naCBK+/tGLX3KJgcpgMRXCFlTM2hKGoK9FsdrQ=="], "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], diff --git a/envs/docker-compose-dynamic.yml b/envs/docker-compose-dynamic.yml index 706efe7..006950f 100644 --- a/envs/docker-compose-dynamic.yml +++ b/envs/docker-compose-dynamic.yml @@ -1,6 +1,17 @@ +# Local `undeployed` devnet — the Midnight 2.x triple (ledger-v9 line). +# +# This is the `ledger-v9` branch's stack: node 2.0.0-rc.4 / indexer-standalone 4.4.0-rc.1 / +# proof-server 9.0.0-rc.5. (`main` runs the 1.x triple: 1.0.0 / 4.3.3 / 8.1.0.) Mirrors +# midnight-2-offers' `compose/core.yml`, so a contract proven here proves there too. +# +# Host ports stay ephemeral (`127.0.0.1::`) because testcontainers maps and reads +# them; nothing addresses another service by a host port. services: proof-server: - image: 'midnightntwrk/proof-server:${PROOF_TAG:-8.1.0}' + # PLAIN, not `_experimental`: this contract is compiled without `--feature-zkir-v3`, so + # its keys are tagged `midnight:verifier-key[v6]` = ProofVersioned::V2, which the plain + # image proves. The `_experimental` build is only needed for the zkir-v3 lane. + image: 'midnightntwrk/proof-server:${PROOF_TAG:-9.0.0-rc.5}' cap_drop: - ALL security_opt: @@ -14,37 +25,54 @@ services: # checks always fail. The helper waits on the listening port instead. indexer: - image: 'midnightntwrk/indexer-standalone:${INDEXER_TAG:-4.3.3}' + image: 'midnightntwrk/indexer-standalone:${INDEXER_TAG:-4.4.0-rc.1}' + # 4.4.0-rc.1 is published for linux/amd64 ONLY (no arm64 manifest entry), so on Apple + # Silicon this one service runs emulated while node and proof-server run native. + # Expect it to be the slowest service to come up. + platform: '${INDEXER_PLATFORM:-linux/amd64}' cap_drop: - ALL security_opt: - 'no-new-privileges:true' ports: - '127.0.0.1::8088' + volumes: + # config.yaml puts both sqlite files under /data (storage.cnn_url = /data/indexer.sqlite, + # ledger_db.cnn_url = /data/ledger-db.sqlite). + - indexer-data:/data environment: RUST_LOG: 'indexer=info,chain_indexer=info,indexer_api=info,wallet_indexer=info,indexer_common=info,fastrace_opentelemetry=off,info' APP__APPLICATION__NETWORK_ID: 'undeployed' APP__INFRA__NODE__URL: 'ws://node:9944' - APP__INFRA__STORAGE__PASSWORD: 'indexer' - APP__INFRA__PUB_SUB__PASSWORD: 'indexer' - APP__INFRA__LEDGER_STATE_STORAGE__PASSWORD: 'indexer' + # NOTE vs the 4.3.x stack on `main`: APP__INFRA__STORAGE__PASSWORD, + # APP__INFRA__PUB_SUB__PASSWORD and APP__INFRA__LEDGER_STATE_STORAGE__PASSWORD are GONE + # in 4.4 — standalone now uses embedded sqlite for all three, and supplying the old keys + # is at best inert. APP__INFRA__SECRET: '303132333435363738393031323334353637383930313233343536373839303132' + # indexer >=4.3 opens a SECOND (SPO) connection with its own URL. Left at the config + # default it dials ws://localhost:9944 inside this container, never connects, burns its + # reconnect budget and the WHOLE indexer exits after ~5 minutes. APP__INFRA__SPO_NODE__URL: 'ws://node:9944' + # Must be a non-empty string or startup fails outright. SPO features are unused here. APP__INFRA__SPO_NODE__BLOCKFROST_ID: 'e2e-test-dummy-id' + # Belt and braces for the same failure mode: cap the backoff so high that the reconnect + # budget (reconnect_max_attempts: 30) can never be exhausted during a test run. + APP__INFRA__SPO_NODE__RECONNECT_MAX_DELAY: '24h' healthcheck: # NOTE: the indexer-standalone image has neither curl nor wget, so an HTTP `/ready` probe can never pass and the # container stays "unhealthy" → testcontainers aborts startup. Use the file the indexer writes when running. test: ['CMD-SHELL', 'cat /var/run/indexer-standalone/running'] interval: 5s timeout: 5s - retries: 36 - start_period: 60s + # Emulated on arm64, so give it more room than the 4.3.3 stack needed. + retries: 60 + start_period: 30s depends_on: node: condition: service_healthy node: - image: 'midnightntwrk/midnight-node:${NODE_TAG:-1.0.0}' + image: 'midnightntwrk/midnight-node:${NODE_TAG:-2.0.0-rc.4}' cap_drop: - ALL cap_add: @@ -56,7 +84,9 @@ services: ports: - '127.0.0.1::9944' volumes: - - node-data:/data + # MUST be /node, not /data: the 2.x image sets BASE_PATH=/node/chain, so a volume at + # /data would leave the chain db on the container's writable layer. + - node-data:/node healthcheck: test: - 'CMD-SHELL' @@ -66,10 +96,16 @@ services: '"result":"0x' interval: 2s timeout: 5s - retries: 30 + retries: 45 start_period: 5s environment: CFG_PRESET: 'dev' SIDECHAIN_BLOCK_BENEFICIARY: '04bcf7ad3be7a5c790460be82a713af570f22e0f801f6659ab8e84a52be6969e' + # The node gracefully terminates when free space on the db volume drops below + # `threshold` MiB (default 512); 0 disables the monitor. + THRESHOLD: '0' + RUST_BACKTRACE: '1' volumes: node-data: + # A ledger v8→v9 chain cannot be upgraded in place, so these are wiped together. + indexer-data: diff --git a/frontend/bun.lock b/frontend/bun.lock index 79a72ef..16a02c8 100644 --- a/frontend/bun.lock +++ b/frontend/bun.lock @@ -5,16 +5,16 @@ "": { "name": "@zswap-da/shielded-night-frontend", "dependencies": { - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/compact-runtime": "0.16.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.8", + "@midnight-ntwrk/compact-runtime": "0.19.0", "@midnight-ntwrk/dapp-connector-api": "4.0.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js": "4.1.1", - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "4.1.1", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0", + "@midnight-ntwrk/midnight-js": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.7", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "bech32": "^2.0.0", "buffer": "^6.0.3", "effect": "^3.21.4", @@ -40,12 +40,13 @@ }, }, "overrides": { - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/compact-runtime": "0.16.0", - "@midnight-ntwrk/ledger-v8": "8.1.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.8", + "@midnight-ntwrk/compact-runtime": "0.19.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3", }, "packages": { - "@apollo/client": ["@apollo/client@4.2.6", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/caches": "^1.0.0", "@wry/equality": "^0.5.6", "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "optimism": "^0.18.0", "tslib": "^2.3.0" }, "peerDependencies": { "graphql": "^16.0.0 || ^17.0.0", "graphql-ws": "^5.5.5 || ^6.0.3", "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "rxjs": "^7.3.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "optionalPeers": ["graphql-ws", "react", "react-dom", "subscriptions-transport-ws"] }, "sha512-zAkN947OHLLvSaEZvhXmT2YGPuDSJyIlW3+ylvxbRfSQFJW5PiaGs0PvhhMGfyYvO8gtfg+JjI8jjkczQSwt5w=="], + "@apollo/client": ["@apollo/client@4.2.12", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/caches": "^1.0.0", "@wry/equality": "^0.5.6", "@wry/trie": "^0.5.0", "graphql-tag": "^2.12.6", "optimism": "^0.18.0", "tslib": "^2.3.0" }, "peerDependencies": { "graphql": "^16.0.0 || ^17.0.0", "graphql-ws": "^5.5.5 || ^6.0.3", "react": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "react-dom": "^17.0.0 || ^18.0.0 || >=19.0.0-rc", "rxjs": "^7.3.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "optionalPeers": ["graphql-ws", "react", "react-dom", "subscriptions-transport-ws"] }, "sha512-+KS+LM/gZ58z92p9owZZpI54yCc27KfUi1HOtLrxmxz9kDIqUcp/zh+mNjCWCbNZkWGzWslvbbmXGGtTWT8nkw=="], "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], @@ -53,7 +54,7 @@ "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], - "@babel/generator": ["@babel/generator@7.29.7", "", { "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ=="], + "@babel/generator": ["@babel/generator@7.29.8", "", { "dependencies": { "@babel/parser": "^7.29.8", "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg=="], "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.29.7", "", { "dependencies": { "@babel/compat-data": "^7.29.7", "@babel/helper-validator-option": "^7.29.7", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g=="], @@ -73,7 +74,7 @@ "@babel/helpers": ["@babel/helpers@7.29.7", "", { "dependencies": { "@babel/template": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg=="], - "@babel/parser": ["@babel/parser@7.29.7", "", { "dependencies": { "@babel/types": "^7.29.7" }, "bin": "./bin/babel-parser.js" }, "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg=="], + "@babel/parser": ["@babel/parser@7.29.8", "", { "dependencies": { "@babel/types": "^7.29.8" }, "bin": "./bin/babel-parser.js" }, "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA=="], "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.29.7", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.29.7" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw=="], @@ -81,11 +82,11 @@ "@babel/template": ["@babel/template@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7" } }, "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg=="], - "@babel/traverse": ["@babel/traverse@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/types": "^7.29.7", "debug": "^4.3.1" } }, "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw=="], + "@babel/traverse": ["@babel/traverse@7.29.8", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", "@babel/types": "^7.29.8", "debug": "^4.3.1" } }, "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg=="], - "@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], + "@babel/types": ["@babel/types@7.29.8", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg=="], - "@effect/platform": ["@effect/platform@0.95.0", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.4", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.20.0" } }, "sha512-WDlRiWRSWlmhCPq09bvAofK0qr5vM4yNklXjoJdZHmugKRRTpN/Okn3ODnjgM/Kb/4hjMrRyrsUeH/Brieq7KA=="], + "@effect/platform": ["@effect/platform@0.97.1", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.8" }, "peerDependencies": { "effect": "^3.22.1" } }, "sha512-IevWxwmrxCdeXxbXDx/hiOstHtERRigd1nhZSuHgiFEl7NkBmS/5GVWsRacq4NfJN2uCXqggETKNwij15VEpew=="], "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.21.5", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ=="], @@ -141,43 +142,43 @@ "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.6.0", "", {}, "sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw=="], "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.1", "", { "dependencies": { "@effect/platform": "^0.95.0", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "^8.0.3", "@midnight-ntwrk/platform-js": "^2.2.4", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-UO0+tDiRadYFO2kaUu9PIhAOISvDKvmiyh9vSOyKEZLj3AUAY1qmmHm/oQrzPqrkiWHO0Rnln/j/zZ5dvc5vxg=="], + "@midnight-ntwrk/compact-js": ["@midnight-ntwrk/compact-js@2.5.5-rc.8", "", { "dependencies": { "@effect/platform": "^0.97.0", "@midnight-ntwrk/compact-runtime": "0.19.0-rc.0", "@midnight-ntwrk/platform-js": "^3.0.0", "@midnightntwrk/ledger-v9": "^1.0.0-rc.3", "@noble/hashes": "^2.3.0", "effect": "^3.22.1", "tslib": "^2.8.1" } }, "sha512-7CGWGCTL+8IvqFUI/srHRwAWxGVLD2ytHLjSyvOcNi6UX1QLeG5vUtGlXQAKSJXvjPwndosqIFdW39OgkNH/Mg=="], - "@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.16.0", "", { "dependencies": { "@midnight-ntwrk/onchain-runtime-v3": "^3.0.0", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-UR8+MI5zol+gkne17ZZru8xmZNf11xMgQJkiLT9KWsF+QD8Wuz1WONaqQLL0RAZ2aN2XlRsBFd0ViKDVh8prFw=="], + "@midnight-ntwrk/compact-runtime": ["@midnight-ntwrk/compact-runtime@0.19.0", "", { "dependencies": { "@midnightntwrk/onchain-runtime-v4": "^4.0.0-rc.3", "@noble/curves": "^2.2.0", "@noble/hashes": "^2.0.1", "@types/object-inspect": "^1.8.1", "object-inspect": "^1.12.3" } }, "sha512-0q1ZOlyPdCCEasAxlHxagO6Sb+Db5GM6qYPQ+c+cp71NRxQgiY0Wd0/LIoshQTs+OBISb4XTjiNQ1lxcKR79qQ=="], "@midnight-ntwrk/dapp-connector-api": ["@midnight-ntwrk/dapp-connector-api@4.0.1", "", {}, "sha512-IstRo8xfmlJlGgUcAJeRzPUmGCp0/xZR3/bfTOk33MHrzbGmB79r/zYziGavcclo1pkkoBHAodX4vz3xgFxczw=="], - "@midnight-ntwrk/ledger-v8": ["@midnight-ntwrk/ledger-v8@8.1.0", "", {}, "sha512-rwOVP5kBwACpYmmY6+oLeaiM3e5gHscRMjbZUOntOC5QdtqLdpeep6eQW1OngI+sxjjdVoGg2eE16sLf+DAHmQ=="], + "@midnight-ntwrk/midnight-js": ["@midnight-ntwrk/midnight-js@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7" } }, "sha512-viRsVlcc+pgk7a9RZGXt1NleJsCzYLninrTM6t8T8rcoycE8wvM+TBuI0Tu/AlK4OJE4G384DOHSfIGpR5FQzw=="], - "@midnight-ntwrk/midnight-js": ["@midnight-ntwrk/midnight-js@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-n6g3+NA3umlZ0FT/lU7VktKyhaYcJsrh3Jcr50pHkUZw5wMqy0gncWZklQmp8qU8F6/igy5LywKZ30PIL3wOHA=="], + "@midnight-ntwrk/midnight-js-contracts": ["@midnight-ntwrk/midnight-js-contracts@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "effect": "^3.22.1" } }, "sha512-dWM+u2SEShctUb6BvR38wiXWPr4JkYAughEM33RpthP+mnqGP+C5oOq9FOPLzdKvlYg6Ne5Fk+OMiJjaG0AZQg=="], - "@midnight-ntwrk/midnight-js-contracts": ["@midnight-ntwrk/midnight-js-contracts@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1" } }, "sha512-vHeKyaj9RXTx+Cep3YpIRgg2EWkzibO4gxI7k/rYpXmGXc3waetrR5sb9FPR7v9SUX00/zf/sYbLp1NZhwZbjg=="], + "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": ["@midnight-ntwrk/midnight-js-fetch-zk-config-provider@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "cross-fetch": "^4.1.0" } }, "sha512-/NgVAV8Zt7AO/fTZ4cxXfeprjkMPh9r4YfzO7Yve8M5p88Z/BBGwji8R0sXwPe251PiMWxtxaekeg5rygb27oQ=="], - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": ["@midnight-ntwrk/midnight-js-fetch-zk-config-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "cross-fetch": "^4.1.0" } }, "sha512-d9vPAXjCvbe3KdPDBwp8Cp4HXwdo9jfCjeyJjJPfIDHCctXrIQ7btu+CqY1+bgV05FHVMOBLjJ9TS2tc2xdwrw=="], + "@midnight-ntwrk/midnight-js-http-client-proof-provider": ["@midnight-ntwrk/midnight-js-http-client-proof-provider@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "cross-fetch": "^4.1.0", "fetch-retry": "^6.0.0" } }, "sha512-mFbSjPJrJ1Ju60lI/Gth497kQy+c+Qa5SxM4jvMLW8pbKg1IHN8KIsQJQfGnw7NyAgqtsY6CfT+UMOmuzr9QMg=="], - "@midnight-ntwrk/midnight-js-http-client-proof-provider": ["@midnight-ntwrk/midnight-js-http-client-proof-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-contracts": "4.1.1", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "cross-fetch": "^4.1.0", "fetch-retry": "^6.0.0" } }, "sha512-Q2VNRTvuWlf3MbjV7C3asuLHeFwtZMdh6t5Z+u8c8RDpejW9GhKaSjlJ2zgJII5ckE8/cocPEDwt3GKBebGHWA=="], + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": ["@midnight-ntwrk/midnight-js-indexer-public-data-provider@5.0.0-beta.7", "", { "dependencies": { "@apollo/client": "^4.2.5", "@graphql-typed-document-node/core": "^3.2.0", "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "buffer": "^6.0.3", "cross-fetch": "^4.1.0", "graphql": "^17.0.1", "graphql-ws": "^6.0.8", "isomorphic-ws": "^5.0.0", "rxjs": "^7.8.2", "ws": "^8.20.0" } }, "sha512-rjKG5U1bbjOD4acVia81hrobBVj8xovp1IA++RL4SVE75lveFekqNaZO+Y0Z6RbZwEjVBbmPOAD4jChdFuSFkQ=="], - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": ["@midnight-ntwrk/midnight-js-indexer-public-data-provider@4.1.1", "", { "dependencies": { "@apollo/client": "^4.2.0", "@graphql-typed-document-node/core": "^3.2.0", "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "buffer": "^6.0.3", "cross-fetch": "^4.1.0", "graphql": "^16.14.0", "graphql-ws": "^6.0.8", "isomorphic-ws": "^5.0.0", "rxjs": "^7.8.2", "ws": "^8.20.0" } }, "sha512-50CjiYqw/msRintyfkuNrJl1v4Zj+AaBFmV2uLjY/zpkPop4VBFH4QZSrtKsG1ljT9vzWsxU7Eo4Tn1tgKkPlA=="], + "@midnight-ntwrk/midnight-js-level-private-state-provider": ["@midnight-ntwrk/midnight-js-level-private-state-provider@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-types": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-utils": "5.0.0-beta.7", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "abstract-level": "^3.1.1", "buffer": "^6.0.3", "level": "^10.0.0", "superjson": "^2.2.6" } }, "sha512-O3eLwjltjAkXVeXiKyot2aiM43POGtiem2DhtAD4gfsGbWVPGQ//yFyMDsS92h2eb4eJma9wpUqdmAXzs5ilxQ=="], - "@midnight-ntwrk/midnight-js-level-private-state-provider": ["@midnight-ntwrk/midnight-js-level-private-state-provider@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/midnight-js-types": "4.1.1", "@midnight-ntwrk/midnight-js-utils": "4.1.1", "@noble/ciphers": "^2.2.0", "@noble/hashes": "^2.2.0", "abstract-level": "^3.1.1", "buffer": "^6.0.3", "level": "^10.0.0", "superjson": "^2.2.6" } }, "sha512-i+1lXJ4rcRGERnOPXHc3/Oh5ef7X/yb6p51bOAUjITazdPPcuU8qTeTeFgX+lPhWTGxROb9/pgrrVPH9G0FxSw=="], + "@midnight-ntwrk/midnight-js-network-id": ["@midnight-ntwrk/midnight-js-network-id@5.0.0-beta.7", "", {}, "sha512-S51x/aRibCViA+4NdjYImdCHSCltJCCnI0K3K0ZqoAQc6d4b+KfIK1aSvo0cU1k1bdJwQhcgohhWH6Z5GxEHBQ=="], - "@midnight-ntwrk/midnight-js-network-id": ["@midnight-ntwrk/midnight-js-network-id@4.1.1", "", {}, "sha512-g49IBK0In1Jt2wKgi18rUvoy1ShGVrfb/VvgWALkc9Noc6+4MX5NTLVg5zqu+CyO2waIGb5lqDPnAhTD9wPAOQ=="], + "@midnight-ntwrk/midnight-js-protocol": ["@midnight-ntwrk/midnight-js-protocol@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/compact-js": "2.5.5-rc.8", "@midnight-ntwrk/compact-runtime": "0.19.0-rc.0", "@midnight-ntwrk/platform-js": "3.0.0", "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3" } }, "sha512-XwcAiVjEvXqpbp58oZnYq3/TCs1lduN8YHxbRKB4EvltxkpptaHr2fE78MMndpvSDGEgernJreAKO0VYDOACCA=="], - "@midnight-ntwrk/midnight-js-protocol": ["@midnight-ntwrk/midnight-js-protocol@4.1.1", "", { "dependencies": { "@midnight-ntwrk/compact-js": "2.5.1", "@midnight-ntwrk/compact-runtime": "0.16.0", "@midnight-ntwrk/ledger-v8": "8.1.0", "@midnight-ntwrk/onchain-runtime-v3": "3.0.0", "@midnight-ntwrk/platform-js": "2.2.4" } }, "sha512-JH1010ir3YrawKsA4C08aIXWpFGHrCrAaBkZFbn+xh+iwOX5Ss0WU4//mDSEnHvQN0wD6GTc2JwUfKYFaS2CcA=="], + "@midnight-ntwrk/midnight-js-types": ["@midnight-ntwrk/midnight-js-types@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "effect": "^3.22.1", "pino": "^10.3.1", "rxjs": "^7.8.2" } }, "sha512-dZMW1DWgvyOPuuSCaEAx6pOYQomT+YYHFrDk9pjPSSRG/3qhe8PKtc2DYFRu9t8E4xy7FkZM8A2EW/S8auf5JQ=="], - "@midnight-ntwrk/midnight-js-types": ["@midnight-ntwrk/midnight-js-types@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "effect": "^3.20.0", "pino": "^10.3.1", "rxjs": "^7.8.2" } }, "sha512-MPT7YToXN2EsDtOOVSJonYZSZ4eqmdVgftBfH56w+tmZM0sZt9u+Mq18uuBQl9ebpTXnp8o7WqeISbgPMxTBcQ=="], + "@midnight-ntwrk/midnight-js-utils": ["@midnight-ntwrk/midnight-js-utils@5.0.0-beta.7", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "5.0.0-beta.7", "@midnight-ntwrk/midnight-js-protocol": "5.0.0-beta.7", "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2", "@noble/hashes": "^2.2.0" } }, "sha512-mZwdEL/o38yeFp+ba3Uil6xuxFPAC9bplMVoP6Cs6C5gycVaeWkW1h+7wDEKGDcJ2qImfi7egNDHs+u+PbHWTg=="], - "@midnight-ntwrk/midnight-js-utils": ["@midnight-ntwrk/midnight-js-utils@4.1.1", "", { "dependencies": { "@midnight-ntwrk/midnight-js-network-id": "4.1.1", "@midnight-ntwrk/midnight-js-protocol": "4.1.1", "@midnight-ntwrk/wallet-sdk-address-format": "^3.1.0" } }, "sha512-b65QADd2FaZbWXe9D3fe9mSGmPlP1DTRMGSruJqhl9fOTNxBhQIzIKs0j/eL9Kv77dVeGDYgQdbV+JkDj3j5Qg=="], + "@midnight-ntwrk/platform-js": ["@midnight-ntwrk/platform-js@3.0.0", "", { "dependencies": { "@effect/platform": "^0.96.1", "effect": "^3.21.0", "tslib": "^2.8.1" } }, "sha512-cAOpmWURUELDKmcNf8/mZjDtxkqg6ShjV6v0KY7mmwMWkieDEERq/TRmK5cMJgUqMi6nCWjwLZqOmPB07B8Y4A=="], - "@midnight-ntwrk/onchain-runtime-v3": ["@midnight-ntwrk/onchain-runtime-v3@3.0.0", "", {}, "sha512-HbFbUOsvgpEFy1OT0Ni2LMFk4jnMQS1em+H+Mof/B3DpnNKl0Lkx5QiulKOc6pyU4KPEagOqx4fYNyVXFwgZ7g=="], + "@midnightntwrk/ledger-v9": ["@midnightntwrk/ledger-v9@1.0.0-rc.3", "", {}, "sha512-i/Cl/d2XQ19gIm5SCruMHr+XiruxIn9Ec3i15DrZ/44Yggzu1u5+dG7QUx7Rw1htkgALXivEt7Kw4NzxPr4pBw=="], - "@midnight-ntwrk/platform-js": ["@midnight-ntwrk/platform-js@2.2.4", "", { "dependencies": { "@effect/platform": "^0.95.0", "effect": "^3.20.0", "tslib": "^2.8.1" } }, "sha512-6mrYKSSE8kPgn/5rQ2xofDJk1yAZZRdLOO6Yelweuh5GOnOGz7Qw4venDG/c4TRqtV9ouFp+F5j7ta8aprMinw=="], + "@midnightntwrk/onchain-runtime-v4": ["@midnightntwrk/onchain-runtime-v4@4.0.0-rc.3", "", {}, "sha512-LAf4g3vgwtPqActbi5RAoZcfYduqnFqtsHN+i1s/Mcb5vi2yMbPmpSOJ0YCCIGb2S/qY7G5tQARHVD0PJyHSNA=="], - "@midnight-ntwrk/wallet-sdk-address-format": ["@midnight-ntwrk/wallet-sdk-address-format@3.1.0", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.0.2", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-X/MQnbyQQ1SoFVJrxhczkHza1SMJghp3Eo49nXXnHZw2qKUUmpiNa8Hx3MYFq36NXi3m3gsMH7rW0bilMFvdhw=="], + "@midnightntwrk/wallet-sdk-address-format": ["@midnightntwrk/wallet-sdk-address-format@4.0.0-beta.2", "", { "dependencies": { "@midnightntwrk/ledger-v9": "1.0.0-rc.3", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-yK4jlntQ0Pgks8dKrPx6J7IMdzIznEYZ4yO9/msIJrn2IM4o1d8+MEh07OMFvZ9ui1YNQB272aUv5muopBCrdA=="], "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ=="], @@ -191,9 +192,13 @@ "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4", "", { "os": "win32", "cpu": "x64" }, "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ=="], - "@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="], + "@napi-rs/lzma-linux-x64-gnu": ["@napi-rs/lzma-linux-x64-gnu@1.5.1", "", { "os": "linux", "cpu": "x64" }, "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ=="], - "@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], + "@noble/ciphers": ["@noble/ciphers@2.4.0", "", {}, "sha512-AnjFn0Jv92laAkvMrghlFZq4qQCIN/4DxFV/eooqtC2YTjB7kBeLMS2T9KJX4Dn+ZVXLOwK0lSgqDtx9gvxtiw=="], + + "@noble/curves": ["@noble/curves@2.4.0", "", { "dependencies": { "@noble/hashes": "2.4.0" } }, "sha512-P4/62zrgfH33CneE3Dn4WhJVA22YUU0eR51wKIan4NVRvwsA0YnPTwWGpNbpuacSujmSFLvyzpyuR30+fbq2Ew=="], + + "@noble/hashes": ["@noble/hashes@2.4.0", "", {}, "sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -205,57 +210,57 @@ "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.62.2", "", { "os": "android", "cpu": "arm" }, "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.63.1", "", { "os": "android", "cpu": "arm" }, "sha512-UZ8sUxPTiHWYX9QNdJedb1kDZSpS1t/VPWBWGSgqHNi9w3Cu6IXvu2mzbhiTiPvtrqgTQJ+zqiAq2iPIPilpaQ=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.62.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.63.1", "", { "os": "android", "cpu": "arm64" }, "sha512-cQ4nFQABN5cDvDpbvJ7bMStCpnaVxynZrRMfUJYgxcIk9Sh54FIO1vtfkg0B69REjER77ioZ/ov+eAApx/KmLQ=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.63.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-FQNqd1lRy/0QhDk3xeRIkSBiCpXCiDnZO3YLVdcDKN1UBiKToNftCzcXYNLshmPDUMlu2TdeS8tGcsU6f3YF1Q=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.62.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.63.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-pvD16V939D3CloK0+qikpGaxiPrDUXTe7Y5cWOMkMSy7m1cawa8EGy/kXYi/G/cKAC4HDAbSnzCIk1WmsoOKXg=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.62.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.63.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-pcFGeL2345VwdTnJhA6zLbew+YgWB0qBG2+dMtXjCicf6+rm6kO6cOoh5VnTe0ZMrMRgRyuHmCJxZWrIdzYuOw=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.62.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.63.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mRJlqSRulVzcKq/LKA6ICSIc3K/l4fzlVn/gePn2nXIHy8seRi5z/eeRE0d/XMBxcMldiXtQTSpRj0tkkC3g8Q=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.62.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-YDUNvVM85TI3g/1OpnqKP1h4NeW/j64DfWMf+G3M809xNk1bJSnpFp4sh83NpmVE5DXnkh8ULor4LTVZKoYLHw=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.62.2", "", { "os": "linux", "cpu": "arm" }, "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.63.1", "", { "os": "linux", "cpu": "arm" }, "sha512-7Mcn71p9ZuQFAj+h+dhQXy/yeLePRS2yKRnmW1DijA9thKO5qap0GNOIQK4yQ6iP3SU0Mrb/yWo8h8vgRba8lw=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.62.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-4YiLQTX6U4CSl0L9cluep9A9W6UmTfqBDc2/CH6wlu54pl4E7Jn3cOD8oxzvBDEGk/JMKgJ47C8g+radF7mwvg=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.62.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.63.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-2ra8F7w8OquwZN9z2/fKFnli69wa8PLwaVzRMIPGb13ByMJwC28Fbp8YcVGoUhlYMTt7j5j9bNgpysrN2UM+vw=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-Sy20ncyhjmBP0Ml+UvQbimjlk6VFgjW5uNP+qqwHB00mTE8Bl2C1TuHTlRwK2YoXeZbee5lP2XevBWVkAQAtSQ=="], - "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ=="], + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-noITLp8oNjYliPnGWmLyelIHwULGqbHloQHGw1rtxbWhTuWooRpnZarZQJ1y9EUC4szuCusCc+HEpUtxpIwYvA=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.62.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-hlxxXd+F1mWiAcaFR7Sv9ZQT6m6UfI8+Vy/kFJzztq2pDMU/0wZ9sish0iszNZvsQDo8Gc0i5yuFEOz5dDf6fA=="], - "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.62.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w=="], + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.63.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EF7OpqQTQ/BvGqLzUi4rEHuagCV9MugAUXSHemwPW5vxZ75RR+jxO/2j95Ph2dalMpFHSVECjRoioHZgA9zOYA=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-wQO3JesW9PRkwlabQ27y7sPfVOOTLRG73I4F2UYHG5PXun3J9U3y+b7ezVKSYbsvSKGQ1k1cq8Qlun4C9kLt3w=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.63.1", "", { "os": "linux", "cpu": "none" }, "sha512-ouAGwhO6wHRXdnOVCOsB0tRFkA7nhNB2Nwax6oECXN0YiN8EYUTBAOudADOB1PI+yDL61TeNx/u7MVCzksNbkQ=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.62.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.63.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-q2R38Sn+1J8RxhfJ+T54wSWmyKXWec+9jgDfqO2AtArEqHO5R2aeayp5H5OYLr5UYDVGsVaZPEFUooMhYCdz5A=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.62.2", "", { "os": "linux", "cpu": "x64" }, "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-gfI5T24WLLuFfSKw7Go/zDXjAAV0fny0swTaDv+WjK7vqcw4cRhFfdsyKL1n+ukI+ooBxn3bVQnyrn06WpI50w=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.62.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.63.1", "", { "os": "linux", "cpu": "x64" }, "sha512-4h6XqthmB4Hspji84wvgk+ElodTsGj+dbZqHJHHtKxj4mYq0ANSEEPX9ys3moJueqsRjwpaJYH7874Itwnj2ow=="], - "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.62.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg=="], + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.63.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-dlfCOa87o1VAYegLQ9EKilx2JCeRofiyPGhTCmqnuXZ6bMPiycO1rq1+sKoulAp7pGLIsTIw+1x5R+zgh5LhhA=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.62.2", "", { "os": "none", "cpu": "arm64" }, "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.63.1", "", { "os": "none", "cpu": "arm64" }, "sha512-cjkLbOlfcm3QGhMM1J5zaZjsw1GggbN6rw9UTSSRrPrR1KkcXnN7Uq9rPw34xImQ9VOY9GN+6u2Zj80B9ptkcw=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.62.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.63.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-Li1KdUnWGE4N3e1F/B4RTB1ms+nG4WBgjByO46pkeBVX/2UBsY53xf5vK9WygVmnH3RwncIST7lkSdLSY6P9lg=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.62.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.63.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-t4ZYOSoLTgwhuFMrmTMLx/+i1DQVK7HYqMc6kY46EApwi8X0nIVphzdNoThU3xt6n+N5urG1/gxBdCaKDLavfg=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.62.2", "", { "os": "win32", "cpu": "x64" }, "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-RgroPfMmKlD1RzSDxvwgcPiy2HNQKoYV7OmwIXDsk73uKW5t6B/V8KIy27SMv/FNXFo/oSBtWc9J0X7t91ezZg=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.62.2", "", { "os": "win32", "cpu": "x64" }, "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.63.1", "", { "os": "win32", "cpu": "x64" }, "sha512-at8QVep6S3h5Y6gSbdGU06bRY5WJkf6WUduM9YtvYMbYhB1MOFfUgc6kehitQXzOtMSaT70q7f9ydPhpqu821w=="], - "@scure/base": ["@scure/base@2.2.0", "", {}, "sha512-b8XEupJibegiXV+tDUseI8oLQc8ei3d/4Jkb2RpbHh3MfE054ov3uIz2dhFkB3FI8iwYkEh0gGCApkrYggkPNg=="], + "@scure/base": ["@scure/base@2.4.0", "", {}, "sha512-thZ1TuJwFwBblOhgsjDKvvGirBxNp+wSvY/DR6tJBJOTDhdAAcHJ8Vbr2eFnqaxeca4+t0i9KBf+uHYGWwZORg=="], "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], @@ -275,7 +280,7 @@ "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], - "@types/node": ["@types/node@24.13.2", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-fRa09kZTgu8o71KFcDjUFuc7F+dEbZYZmkI0mg5YBTRs0yMKjYHsq/c0urDKeDb+D5qVgXOdFcuu+DZPKOITwA=="], + "@types/node": ["@types/node@24.13.3", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q=="], "@types/object-inspect": ["@types/object-inspect@1.13.0", "", {}, "sha512-lwGTVESDDV+XsQ1pH4UifpJ1f7OtXzQ6QBOX2Afq2bM/T3oOt8hF6exJMjjIjtEWeAN2YAo25J7HxWh97CCz9w=="], @@ -307,13 +312,13 @@ "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.10.42", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-c/jurFrDLyui7o1J86yLkRu4LMsTYcBohveus7/I2Hzdn9KIP2bdJPTue/lR1KH46enoPbD77GKeSYNdyPoD3Q=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.11.20", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-H0ulySigv6icDJ1F7SjtdCD6PrhTpdYCmP0CactWy1+ekh0AFd0o1Wn5T8b+hnTmdBx19u9yhL6wvCylXMY7zw=="], "bech32": ["bech32@2.0.0", "", {}, "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg=="], "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - "bn.js": ["bn.js@5.2.4", "", {}, "sha512-QL7sb18rJ1PbdsKsqPA0guxL563vIMwRHgzNrW/uzQuRGN1Cjqd/wonUBAVqHox9KwzHA6vCbM0lXx3k4iQMow=="], + "bn.js": ["bn.js@5.2.5", "", {}, "sha512-Vq886eXykuP5E6HcKSSStP3bJgrE6In5WKxVUvJ8XGpWWYs2xZHWqUwzCtGgEtBcxyd57KBFDPFoUfNzdaHCNg=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], @@ -331,7 +336,7 @@ "browserify-sign": ["browserify-sign@4.2.6", "", { "dependencies": { "bn.js": "^5.2.3", "browserify-rsa": "^4.1.1", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", "elliptic": "^6.6.1", "inherits": "^2.0.4", "parse-asn1": "^5.1.9", "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1" } }, "sha512-sd+Q65fjlWCYWtZKXiKfrUc8d+4jtp/8f0W2NkwzLtoW4bI6UDnWusLWIurHnmurW0XShIRxpwiOX4EoPtXUAg=="], - "browserslist": ["browserslist@4.28.5", "", { "dependencies": { "baseline-browser-mapping": "^2.10.42", "caniuse-lite": "^1.0.30001800", "electron-to-chromium": "^1.5.387", "node-releases": "^2.0.50", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-Cu2E6QejHWzuDMTkuwgpABFgDfZrXLQq5V13YOACZx4mFAG4IwGTbTfHPMr4WtxlHoXSM8FIuRwYYCz5XiabaQ=="], + "browserslist": ["browserslist@4.28.8", "", { "dependencies": { "baseline-browser-mapping": "^2.11.12", "caniuse-lite": "^1.0.30001809", "electron-to-chromium": "^1.5.402", "node-releases": "^2.0.53", "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" } }, "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA=="], "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], @@ -343,7 +348,7 @@ "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], - "caniuse-lite": ["caniuse-lite@1.0.30001802", "", {}, "sha512-vmv8ub2xwTNmljSKf82mtCk5JH7hC+YgzLj3P5zotvA0tPQ9016tdNNOG8WRca1IxOnhSsivB+J0z5FeE5LOUw=="], + "caniuse-lite": ["caniuse-lite@1.0.30001810", "", {}, "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg=="], "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], @@ -353,7 +358,7 @@ "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - "copy-anything": ["copy-anything@4.0.5", "", { "dependencies": { "is-what": "^5.2.0" } }, "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA=="], + "copy-anything": ["copy-anything@4.1.0", "", {}, "sha512-ufbM3smX/Jbnpk5wcQjzd1MgBpzmqfNETUAyZNrGwU9foRlyHoGzMMBBCRzEhQLBjZfFDE1W2ufPXX2vdWkV8Q=="], "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], @@ -381,9 +386,9 @@ "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], - "effect": ["effect@3.21.4", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-B89v/xSgPbl1J2Ai2u18jxq3odpFauU1rC6/eSs4FeNHi72kwKdJp12VGigvRV2lK+kRnx+OOz41XV8guZd4gQ=="], + "effect": ["effect@3.22.1", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-TNoXushmPOBAjJlthF5d2QwnX2xBPEtcNJr5XKNKbRLbDvBcOYkXlYDfvGfSA0zriwLFuCll5MDtNMAdZL17PQ=="], - "electron-to-chromium": ["electron-to-chromium@1.5.387", "", {}, "sha512-TaxwufTFDufvPEoXdhwVrA3UdFWBeWGkYoJ1K8ldF1xe6gKfth6iRNS5lTQ5JPNOHdGQm8PT1QYKUqFLCiUefQ=="], + "electron-to-chromium": ["electron-to-chromium@1.5.420", "", {}, "sha512-2yD6XreGusOfNV+dUcvipJEXc3n/n7fgr7996aszTG+YY5E4mqM4tOq/3uhP129cazL9YHbVWSpc79ePotWtPA=="], "elliptic": ["elliptic@6.6.1", "", { "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", "hash.js": "^1.0.0", "hmac-drbg": "^1.0.1", "inherits": "^2.0.4", "minimalistic-assert": "^1.0.1", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g=="], @@ -405,7 +410,7 @@ "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], - "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + "fastq": ["fastq@1.20.3", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw=="], "fetch-retry": ["fetch-retry@6.0.0", "", {}, "sha512-BUFj1aMubgib37I3v4q78fYo63Po7t4HUPTpQ6/QE6yK6cIQrP+W43FYToeTEyg5m2Y7eFUtijUuAv/PDlWuag=="], @@ -415,7 +420,7 @@ "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], - "fs-extra": ["fs-extra@11.3.6", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA=="], + "fs-extra": ["fs-extra@11.4.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA=="], "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], @@ -435,11 +440,11 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graphql": ["graphql@16.14.2", "", {}, "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA=="], + "graphql": ["graphql@17.0.2", "", {}, "sha512-FRWbddMxfkjiB7z+aQDWIR+E34xo9I8c9mtK2RPv8PmMzKRvrdsreHL/Ui/TmwHJfhHChEtsFPyMHKI+xuarQQ=="], "graphql-tag": ["graphql-tag@2.12.7", "", { "dependencies": { "tslib": "^2.1.0" }, "peerDependencies": { "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-xnE/NFzy+0eIesvAsREJZ284zTl/wYuBAvpsFSDhRGRdRHdnE90M21Q3xAWyYInb0J756c6x0pIQ62+vtvOs1Q=="], - "graphql-ws": ["graphql-ws@6.0.8", "", { "peerDependencies": { "@fastify/websocket": "^10 || ^11", "crossws": "~0.3", "graphql": "^15.10.1 || ^16", "ws": "^8" }, "optionalPeers": ["@fastify/websocket", "crossws", "ws"] }, "sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw=="], + "graphql-ws": ["graphql-ws@6.2.1", "", { "peerDependencies": { "@fastify/websocket": "^10 || ^11", "crossws": "~0.3", "graphql": "^15.10.1 || ^16 || ^17", "ws": "^8" }, "optionalPeers": ["@fastify/websocket", "crossws", "ws"] }, "sha512-NMbPNeTwXpUOxmczdMtzEnynLNbbR267E9hRcJ81SSbQeIvZup3cMjbD1ZT3jpS2xkpxooisitvO7LZNOyz17Q=="], "has-property-descriptors": ["has-property-descriptors@1.0.2", "", { "dependencies": { "es-define-property": "^1.0.0" } }, "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg=="], @@ -479,8 +484,6 @@ "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], - "is-what": ["is-what@5.5.0", "", {}, "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw=="], - "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "isomorphic-ws": ["isomorphic-ws@5.0.0", "", { "peerDependencies": { "ws": "*" } }, "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw=="], @@ -529,7 +532,7 @@ "multipasta": ["multipasta@0.2.8", "", {}, "sha512-ZPWuMKyv0cSO29f7hozp+k6+crZbQijV8ipMvxNxRf2SwtYGTX1ZX89Kd20VV4H9Znonx+EQn+iy1wGQsJ+b+Q=="], - "nanoid": ["nanoid@3.3.15", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA=="], + "nanoid": ["nanoid@3.3.18", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w=="], "napi-macros": ["napi-macros@2.2.2", "", {}, "sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g=="], @@ -539,7 +542,7 @@ "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="], - "node-releases": ["node-releases@2.0.50", "", {}, "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg=="], + "node-releases": ["node-releases@2.0.54", "", {}, "sha512-YHs7BmmcsdAI5Ozuf8JZo6PT0mv2GIWC9vMfvUC3dp65M8hn7Ux8CPL+2oBI7juNuj9d0ndhTcznq2ODBps9cQ=="], "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], @@ -549,7 +552,7 @@ "optimism": ["optimism@0.18.1", "", { "dependencies": { "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", "@wry/trie": "^0.5.0", "tslib": "^2.3.0" } }, "sha512-mLXNwWPa9dgFyDqkNi54sjDyNJ9/fTI6WGBLgnXku1vdKY/jovHfZT5r+aiVeFFLOz+foPNOm5YJ4mqgld2GBQ=="], - "p-map": ["p-map@7.0.5", "", {}, "sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA=="], + "p-map": ["p-map@7.0.7", "", {}, "sha512-VaWRu2i4FJNRtiRWCuuQRgfQ1B7a6+gMSrO+3j0EQi/k0ULfS9kosRxGoiqwzIjZTDI02tGfk5mXXltLg6QtfQ=="], "parse-asn1": ["parse-asn1@5.1.9", "", { "dependencies": { "asn1.js": "^4.10.1", "browserify-aes": "^1.2.0", "evp_bytestokey": "^1.0.3", "pbkdf2": "^3.1.5", "safe-buffer": "^5.2.1" } }, "sha512-fIYNuZ/HastSb80baGOuPRo1O9cf4baWw5WsAp7dBuUzeTD/BoaG8sVTdlPFksBE2lF21dN+A1AnrpIjSWqHHg=="], @@ -567,13 +570,13 @@ "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.16", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-vuwillviilfKZsg0VGj5R/YwwcHx4SLsIOI/7K6mQkWx+l5cUHTjj5g0AasTBcyXsbfTgrwsUNmVUb5xVwyPwg=="], + "postcss": ["postcss@8.5.26", "", { "dependencies": { "nanoid": "^3.3.17", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ=="], "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], - "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], + "process-warning": ["process-warning@5.1.0", "", {}, "sha512-jQSaVHsPgtyw60e1rQ/A+/ArPEj/S8pS/vFnyGa/gYFXrKk/6RuDkoqVDQ5NI5MmS01698ltlAk0NoDBNLujRw=="], "public-encrypt": ["public-encrypt@4.0.3", "", { "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", "create-hash": "^1.1.0", "parse-asn1": "^5.0.0", "randombytes": "^2.0.1", "safe-buffer": "^5.1.2" } }, "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q=="], @@ -603,7 +606,7 @@ "ripemd160": ["ripemd160@2.0.3", "", { "dependencies": { "hash-base": "^3.1.2", "inherits": "^2.0.4" } }, "sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA=="], - "rollup": ["rollup@4.62.2", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.62.2", "@rollup/rollup-android-arm64": "4.62.2", "@rollup/rollup-darwin-arm64": "4.62.2", "@rollup/rollup-darwin-x64": "4.62.2", "@rollup/rollup-freebsd-arm64": "4.62.2", "@rollup/rollup-freebsd-x64": "4.62.2", "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", "@rollup/rollup-linux-arm-musleabihf": "4.62.2", "@rollup/rollup-linux-arm64-gnu": "4.62.2", "@rollup/rollup-linux-arm64-musl": "4.62.2", "@rollup/rollup-linux-loong64-gnu": "4.62.2", "@rollup/rollup-linux-loong64-musl": "4.62.2", "@rollup/rollup-linux-ppc64-gnu": "4.62.2", "@rollup/rollup-linux-ppc64-musl": "4.62.2", "@rollup/rollup-linux-riscv64-gnu": "4.62.2", "@rollup/rollup-linux-riscv64-musl": "4.62.2", "@rollup/rollup-linux-s390x-gnu": "4.62.2", "@rollup/rollup-linux-x64-gnu": "4.62.2", "@rollup/rollup-linux-x64-musl": "4.62.2", "@rollup/rollup-openbsd-x64": "4.62.2", "@rollup/rollup-openharmony-arm64": "4.62.2", "@rollup/rollup-win32-arm64-msvc": "4.62.2", "@rollup/rollup-win32-ia32-msvc": "4.62.2", "@rollup/rollup-win32-x64-gnu": "4.62.2", "@rollup/rollup-win32-x64-msvc": "4.62.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA=="], + "rollup": ["rollup@4.63.1", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@napi-rs/lzma-linux-x64-gnu": "1.5.1", "@rollup/rollup-android-arm-eabi": "4.63.1", "@rollup/rollup-android-arm64": "4.63.1", "@rollup/rollup-darwin-arm64": "4.63.1", "@rollup/rollup-darwin-x64": "4.63.1", "@rollup/rollup-freebsd-arm64": "4.63.1", "@rollup/rollup-freebsd-x64": "4.63.1", "@rollup/rollup-linux-arm-gnueabihf": "4.63.1", "@rollup/rollup-linux-arm-musleabihf": "4.63.1", "@rollup/rollup-linux-arm64-gnu": "4.63.1", "@rollup/rollup-linux-arm64-musl": "4.63.1", "@rollup/rollup-linux-loong64-gnu": "4.63.1", "@rollup/rollup-linux-loong64-musl": "4.63.1", "@rollup/rollup-linux-ppc64-gnu": "4.63.1", "@rollup/rollup-linux-ppc64-musl": "4.63.1", "@rollup/rollup-linux-riscv64-gnu": "4.63.1", "@rollup/rollup-linux-riscv64-musl": "4.63.1", "@rollup/rollup-linux-s390x-gnu": "4.63.1", "@rollup/rollup-linux-x64-gnu": "4.63.1", "@rollup/rollup-linux-x64-musl": "4.63.1", "@rollup/rollup-openbsd-x64": "4.63.1", "@rollup/rollup-openharmony-arm64": "4.63.1", "@rollup/rollup-win32-arm64-msvc": "4.63.1", "@rollup/rollup-win32-ia32-msvc": "4.63.1", "@rollup/rollup-win32-x64-gnu": "4.63.1", "@rollup/rollup-win32-x64-msvc": "4.63.1", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3Df9jsstwhccuEfmAMi9l8XUh/GOkVObmFTU7CCVBysEbcOZLl84jCtaAZMcPiMz2EGKsATzQcU+Xr3n/wU6cg=="], "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], @@ -631,7 +634,7 @@ "stream-browserify": ["stream-browserify@3.0.0", "", { "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" } }, "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA=="], - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], + "string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], "superjson": ["superjson@2.2.6", "", { "dependencies": { "copy-anything": "^4" } }, "sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA=="], @@ -653,7 +656,7 @@ "universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], - "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + "update-browserslist-db": ["update-browserslist-db@1.3.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UQ+MSxlhRm1bzjhU+DcuXfjFO1FzNtqhK5+9Yvlp90ItDLk5vT932A0rFu619nf7RVS+Y/VeaUW1jaRDqZ8VJw=="], "util": ["util@0.12.5", "", { "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", "which-typed-array": "^1.1.2" } }, "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA=="], @@ -671,48 +674,44 @@ "which-typed-array": ["which-typed-array@1.1.22", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.9", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw=="], - "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + "ws": ["ws@8.21.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw=="], "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "@midnight-ntwrk/midnight-js-utils/@midnight-ntwrk/wallet-sdk-address-format": ["@midnight-ntwrk/wallet-sdk-address-format@3.1.2", "", { "dependencies": { "@midnight-ntwrk/ledger-v8": "^8.1.0", "@scure/base": "^2.0.0", "@subsquid/scale-codec": "^4.0.1" } }, "sha512-SRkgwmKFOZSUR25iurAB8U7kTKF7AljSl+tMkuuj8Pthc/l0yIg+/q1rFSozJ0Nz9FJRhshazDyrL0l84fOabg=="], + "@midnight-ntwrk/platform-js/@effect/platform": ["@effect/platform@0.96.3", "", { "dependencies": { "find-my-way-ts": "^0.1.6", "msgpackr": "^1.11.10", "multipasta": "^0.2.7" }, "peerDependencies": { "effect": "^3.21.5" } }, "sha512-LzvIj4HYE++TcTv/cVTCI/GRvQTV0ymwRmgjZMzNB5dU4OS05pTN36RKN0npiOm5orLJgw4yjIv1dNZoYGh/vg=="], - "asn1.js/bn.js": ["bn.js@4.12.4", "", {}, "sha512-njR1b+ixG2ufvL9Zn9JGneW+b5GV6jqpYyPPpg4QVt723b5kJPGUczkUyWEH9BwEA74UakJZ43I4FDLBF7ci0g=="], + "asn1.js/bn.js": ["bn.js@4.12.5", "", {}, "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ=="], "browserify-sign/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], - "create-ecdh/bn.js": ["bn.js@4.12.4", "", {}, "sha512-njR1b+ixG2ufvL9Zn9JGneW+b5GV6jqpYyPPpg4QVt723b5kJPGUczkUyWEH9BwEA74UakJZ43I4FDLBF7ci0g=="], + "create-ecdh/bn.js": ["bn.js@4.12.5", "", {}, "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ=="], - "diffie-hellman/bn.js": ["bn.js@4.12.4", "", {}, "sha512-njR1b+ixG2ufvL9Zn9JGneW+b5GV6jqpYyPPpg4QVt723b5kJPGUczkUyWEH9BwEA74UakJZ43I4FDLBF7ci0g=="], + "diffie-hellman/bn.js": ["bn.js@4.12.5", "", {}, "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ=="], - "elliptic/bn.js": ["bn.js@4.12.4", "", {}, "sha512-njR1b+ixG2ufvL9Zn9JGneW+b5GV6jqpYyPPpg4QVt723b5kJPGUczkUyWEH9BwEA74UakJZ43I4FDLBF7ci0g=="], + "elliptic/bn.js": ["bn.js@4.12.5", "", {}, "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ=="], "md5.js/hash-base": ["hash-base@3.1.2", "", { "dependencies": { "inherits": "^2.0.4", "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1", "to-buffer": "^1.2.1" } }, "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg=="], - "miller-rabin/bn.js": ["bn.js@4.12.4", "", {}, "sha512-njR1b+ixG2ufvL9Zn9JGneW+b5GV6jqpYyPPpg4QVt723b5kJPGUczkUyWEH9BwEA74UakJZ43I4FDLBF7ci0g=="], + "miller-rabin/bn.js": ["bn.js@4.12.5", "", {}, "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ=="], - "public-encrypt/bn.js": ["bn.js@4.12.4", "", {}, "sha512-njR1b+ixG2ufvL9Zn9JGneW+b5GV6jqpYyPPpg4QVt723b5kJPGUczkUyWEH9BwEA74UakJZ43I4FDLBF7ci0g=="], + "public-encrypt/bn.js": ["bn.js@4.12.5", "", {}, "sha512-3aRg6/JxfffFD+OlOjOFR3Vo79l39ooBTFucxx+MT3dhCtzn3EmiUPQo+6/OZuI2jbXi3YKgmiTFBgChQMwIRQ=="], "ripemd160/hash-base": ["hash-base@3.1.2", "", { "dependencies": { "inherits": "^2.0.4", "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1", "to-buffer": "^1.2.1" } }, "sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg=="], + "string_decoder/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + "thread-stream/real-require": ["real-require@1.0.0", "", {}, "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g=="], "to-buffer/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], "browserify-sign/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - "browserify-sign/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "md5.js/hash-base/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "ripemd160/hash-base/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], "md5.js/hash-base/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - "md5.js/hash-base/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "ripemd160/hash-base/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - - "ripemd160/hash-base/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], } } diff --git a/frontend/package.json b/frontend/package.json index b0e0a91..877518f 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -10,15 +10,15 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/compact-runtime": "0.16.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.8", + "@midnight-ntwrk/compact-runtime": "0.19.0", "@midnight-ntwrk/dapp-connector-api": "4.0.1", - "@midnight-ntwrk/ledger-v8": "8.1.0", - "@midnight-ntwrk/midnight-js": "4.1.1", - "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "4.1.1", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "4.1.1", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnight-ntwrk/midnight-js": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-fetch-zk-config-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.7", "bech32": "^2.0.0", "buffer": "^6.0.3", "effect": "^3.21.4", @@ -27,7 +27,7 @@ "process": "^0.11.10", "react": "^18.3.1", "react-dom": "^18.3.1", - "@midnight-ntwrk/wallet-sdk-address-format": "3.1.0" + "@midnightntwrk/wallet-sdk-address-format": "4.0.0-beta.2" }, "devDependencies": { "@types/node": "^24.10.0", @@ -43,8 +43,19 @@ "vite-plugin-wasm": "^3.4.1" }, "overrides": { - "@midnight-ntwrk/compact-js": "2.5.1", - "@midnight-ntwrk/compact-runtime": "0.16.0", - "@midnight-ntwrk/ledger-v8": "8.1.0" - } + "@midnight-ntwrk/compact-js": "2.5.5-rc.8", + "@midnight-ntwrk/compact-runtime": "0.19.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3" + }, + "//overrides": [ + "The ledger-v9 line. Same single-wasm-copy rule as the root package.json:", + "@midnightntwrk/ledger-v9 (NOTE the scope has no hyphen) replaces", + "@midnight-ntwrk/ledger-v8, and compact-runtime is forced to 0.19.0 because", + "midnight-js 5.0.0-beta.7 pins the byte-identical 0.19.0-rc.0 while compactc", + "0.34.0 emits checkRuntimeVersion('0.19.0'). onchain-runtime-v4 is pinned one", + "level down for the same reason. These MUST agree with resolve.dedupe in", + "vite.config.ts, which collapses the copies the ROOT node_modules would", + "otherwise contribute through ../src/managed." + ] } diff --git a/frontend/src/lib/providers.ts b/frontend/src/lib/providers.ts index 89c23f8..f2d4a53 100644 --- a/frontend/src/lib/providers.ts +++ b/frontend/src/lib/providers.ts @@ -2,9 +2,10 @@ import { levelPrivateStateProvider } from '@midnight-ntwrk/midnight-js-level-pri import { indexerPublicDataProvider } from '@midnight-ntwrk/midnight-js-indexer-public-data-provider'; import { FetchZkConfigProvider } from '@midnight-ntwrk/midnight-js-fetch-zk-config-provider'; import { createProofProvider } from '@midnight-ntwrk/midnight-js/types'; +import type { ProvingProvider as LedgerProvingProvider } from '@midnightntwrk/ledger-v9'; import type { ConnectedAPI } from '@midnight-ntwrk/dapp-connector-api'; import type { BlockHashConfig, BlockHeightConfig } from '@midnight-ntwrk/midnight-js/types'; -import type { ContractAddress } from '@midnight-ntwrk/ledger-v8'; +import type { ContractAddress } from '@midnightntwrk/ledger-v9'; import { createWalletProvidersFromConnectedAPI } from './walletAdapter'; import { type ShieldedNightCircuits, type ShieldedNightProviders, ZK_CONFIG_CONTRACT_NAME } from './contract'; @@ -27,7 +28,14 @@ export type ShieldedAddress = { */ export async function buildProviders(connectedAPI: ConnectedAPI): Promise { const zkConfigBase = window.location.origin + '/contract/compiled/' + ZK_CONFIG_CONTRACT_NAME; - const zkConfigProvider = new FetchZkConfigProvider(zkConfigBase, fetch.bind(window)); + // midnight-js 5: the second argument is an options bag, not a bare fetch. Integrity + // verification defaults to 'require' (fail-closed) and checks every artifact against + // compactc's `compiler/contract-manifest.json` — a file compactc only started emitting + // at 0.33, so serving `src/managed/` WHOLE (manifest included) is now load-bearing, + // not merely tidy. + const zkConfigProvider = new FetchZkConfigProvider(zkConfigBase, { + fetchFunc: fetch.bind(window), + }); const config = await connectedAPI.getConfiguration(); @@ -38,7 +46,11 @@ export async function buildProviders(connectedAPI: ConnectedAPI): Promise ProvingKeyMaterial | undefined`, + * which `createProofProvider` requires. `@midnight-ntwrk/dapp-connector-api` has NOT caught up: + * neither 4.0.1 (the pinned version) nor 4.1.0-beta.1 declares it, so a wallet that implements + * it — as a ledger-v9 wallet must — still hands back a value the connector types describe + * without it. + * + * If the wallet supplies `lookupKey`, it is used unchanged. If it does not, we fill it from THIS + * dApp's own `zkConfigProvider` — the identical artifacts the dApp already served and already + * handed the wallet through `asKeyMaterialProvider()` above. Nothing private crosses the + * boundary and nothing moves proving out of the wallet: `check` and `prove` are still the + * wallet's. Which lane was taken is logged, never silent. + */ +function withLookupKey( + provider: unknown, + zkConfigProvider: FetchZkConfigProvider, +): LedgerProvingProvider { + const p = provider as Partial; + if (typeof p.lookupKey === 'function') { + console.info('[providers] wallet proving provider implements lookupKey (ledger-v9 native)'); + return p as LedgerProvingProvider; + } + console.info( + '[providers] wallet proving provider has no lookupKey; serving key material from the dApp\'s ' + + 'own zkConfigProvider (same public artifacts already passed to getProvingProvider)', + ); + return { + ...(p as LedgerProvingProvider), + async lookupKey(keyLocation: string) { + const circuitId = keyLocation.split('/').pop() as ShieldedNightCircuits; + const [proverKey, verifierKey, ir] = await Promise.all([ + zkConfigProvider.getProverKey(circuitId), + zkConfigProvider.getVerifierKey(circuitId), + zkConfigProvider.getZKIR(circuitId), + ]); + return { proverKey, verifierKey, ir }; + }, + } as LedgerProvingProvider; +} diff --git a/frontend/src/lib/swap.ts b/frontend/src/lib/swap.ts index 25a3a17..8594c34 100644 --- a/frontend/src/lib/swap.ts +++ b/frontend/src/lib/swap.ts @@ -1,5 +1,5 @@ import { submitCallTx } from '@midnight-ntwrk/midnight-js/contracts'; -import { MidnightBech32m } from '@midnight-ntwrk/wallet-sdk-address-format'; +import { MidnightBech32m } from '@midnightntwrk/wallet-sdk-address-format'; import { CompiledShieldedNight, type ShieldedNightProviders, diff --git a/frontend/src/lib/tokens.ts b/frontend/src/lib/tokens.ts index 70edd26..8b30312 100644 --- a/frontend/src/lib/tokens.ts +++ b/frontend/src/lib/tokens.ts @@ -1,4 +1,4 @@ -import * as ledger from '@midnight-ntwrk/ledger-v8'; +import * as ledger from '@midnightntwrk/ledger-v9'; export const DECIMALS = 6; const SCALE = 10n ** BigInt(DECIMALS); diff --git a/frontend/src/lib/walletAdapter.ts b/frontend/src/lib/walletAdapter.ts index cc79ee8..bcb6391 100644 --- a/frontend/src/lib/walletAdapter.ts +++ b/frontend/src/lib/walletAdapter.ts @@ -7,7 +7,7 @@ import { type Proof, type SignatureEnabled, Transaction, -} from '@midnight-ntwrk/ledger-v8'; +} from '@midnightntwrk/ledger-v9'; import type { ConnectedAPI } from '@midnight-ntwrk/dapp-connector-api'; import { Cause } from 'effect'; import type { ShieldedAddress } from './providers'; diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 22680dc..25fc205 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -29,8 +29,8 @@ export default defineConfig({ // single instance for every importer, dev and build alike. dedupe: [ '@midnight-ntwrk/compact-runtime', - '@midnight-ntwrk/onchain-runtime-v3', - '@midnight-ntwrk/ledger-v8', + '@midnightntwrk/onchain-runtime-v4', + '@midnightntwrk/ledger-v9', '@midnight-ntwrk/compact-js', ], alias: { diff --git a/package.json b/package.json index 75bd71d..ebcc997 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "./contract": "./src/managed/contract/index.js" }, "scripts": { - "compact": "compact compile +0.31.1 src/shielded-night.compact src/managed/", - "compact:fast": "compact compile +0.31.1 --skip-zk src/shielded-night.compact src/managed/", + "compact": "compact compile +0.34.0 src/shielded-night.compact src/managed/", + "compact:fast": "compact compile +0.34.0 --skip-zk src/shielded-night.compact src/managed/", "typecheck": "tsc -p tsconfig.json --noEmit", "test": "bun run test:unit && bun run test:integration", "test:unit": "vitest run --config vitest.unit.config.ts", @@ -19,15 +19,15 @@ "verify:deployment": "bun run scripts/verify-deployment.ts" }, "dependencies": { - "@midnight-ntwrk/compact-js": "^2.5.1", - "@midnight-ntwrk/compact-runtime": "0.16.0", - "@midnight-ntwrk/ledger-v8": "^8.1.0", - "@midnight-ntwrk/midnight-js": "^4.1.1", - "@midnight-ntwrk/midnight-js-http-client-proof-provider": "^4.1.1", - "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "^4.1.1", - "@midnight-ntwrk/midnight-js-level-private-state-provider": "^4.1.1", - "@midnight-ntwrk/midnight-js-node-zk-config-provider": "^4.1.1", - "@midnightntwrk/wallet-sdk": "^1.2.0", + "@midnight-ntwrk/compact-js": "2.5.5-rc.8", + "@midnight-ntwrk/compact-runtime": "0.19.0", + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnight-ntwrk/midnight-js": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-http-client-proof-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-indexer-public-data-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-level-private-state-provider": "5.0.0-beta.7", + "@midnight-ntwrk/midnight-js-node-zk-config-provider": "5.0.0-beta.7", + "@midnightntwrk/wallet-sdk": "2.0.0-beta.2", "buffer": "^6.0.3", "rxjs": "^7.8.1", "ws": "^8.19.0", @@ -40,8 +40,24 @@ "typescript": "^5.9.3", "vitest": "^4.1.0" }, - "//overrides": "Force a single ledger-v8 copy tree-wide: two copies give two LedgerParameters class identities and break `instanceof` checks during proving. The note lives OUT here because bun >= 1.4.0 no longer counts a `//` key inside `overrides` as an override, so a lockfile saved with one is rejected by `--frozen-lockfile`.", + "//overrides": [ + "Force a single copy of every wasm-bindgen module tree-wide: two copies give", + "two class identities and break `instanceof` checks during proving. On the v8", + "line this block pinned @midnight-ntwrk/ledger-v8; on the ledger-v9 line the", + "ledger moved to @midnightntwrk/ledger-v9 (NOTE the scope has no hyphen).", + "compact-runtime is pinned too because the versions disagree only in name:", + "compactc 0.34.0 emits `checkRuntimeVersion('0.19.0')` while midnight-js", + "5.0.0-beta.7 pins 0.19.0-rc.0. The two published tarballs differ in three", + "lines (the version string, its source map and package.json) and nothing", + "else, and the runtime guard strips the prerelease suffix — so collapsing", + "them onto 0.19.0 is safe and avoids a second onchain-runtime wasm copy.", + "onchain-runtime-v4 is pinned for the same reason one level down: today", + "compact-runtime's `^4.0.0-rc.3` and midnight-js-protocol's exact", + "`4.0.0-rc.3` agree, but a released 4.0.0 would split them." + ], "overrides": { - "@midnight-ntwrk/ledger-v8": "8.1.0" + "@midnightntwrk/ledger-v9": "1.0.0-rc.3", + "@midnight-ntwrk/compact-runtime": "0.19.0", + "@midnightntwrk/onchain-runtime-v4": "4.0.0-rc.3" } } diff --git a/src/managed/compiler/contract-info.json b/src/managed/compiler/contract-info.json index 3bee93e..9a5137f 100644 --- a/src/managed/compiler/contract-info.json +++ b/src/managed/compiler/contract-info.json @@ -1,7 +1,7 @@ { - "compiler-version": "0.31.1", - "language-version": "0.23.0", - "runtime-version": "0.16.0", + "compiler-version": "0.34.0", + "language-version": "0.26.0", + "runtime-version": "0.19.0", "circuits": [ { "name": "name", diff --git a/src/managed/compiler/contract-manifest.json b/src/managed/compiler/contract-manifest.json new file mode 100644 index 0000000..86ca2d8 --- /dev/null +++ b/src/managed/compiler/contract-manifest.json @@ -0,0 +1,258 @@ +{ + "manifest-version": "1", + "compiler-version": "0.34.0", + "language-version": "0.26.0", + "runtime-version": "0.19.0", + "compiler": { + "type": "directory", + "contract-info.json": { + "type": "file", + "size": 10824, + "hash": "4be77d9071bc7df292cd47a8c0b592647164faf581676ea713c82f0f7db33bf0" + } + }, + "contract": { + "type": "directory", + "index.d.ts": { + "type": "file", + "size": 10829, + "hash": "8245a78e2fd8eef31d71263a5e051aabac69e76643aa8b76e59e7ab24a8e9da3" + }, + "index.js": { + "type": "file", + "size": 128904, + "hash": "9676327416b39508f0f8e914fd8005458fe2ada4cc112e1a15ab983d9182d3a7" + }, + "index.js.map": { + "type": "file", + "size": 6134, + "hash": "ce51c8aef4750cc18f1a03b28a3140dce06169a3bf740ad66399081df7e9b662" + } + }, + "zkir": { + "type": "directory", + "convertToShielded.bzkir": { + "type": "file", + "size": 608, + "hash": "d18d0a123c07e091e8399c9038cec0d196ac6d690175b018829483898bb4dc8d" + }, + "convertToShielded.zkir": { + "type": "file", + "size": 8848, + "hash": "46ffbeb4fea6fdb8f62cf3bf3a343fa5efdfdd0b2bb5cc3e6000292d5c57e40b" + }, + "convertToUnshielded.bzkir": { + "type": "file", + "size": 1113, + "hash": "322e44797c423f495d330b495990f7ef1f0aba3a5b970aaebf9c2040261399b4" + }, + "convertToUnshielded.zkir": { + "type": "file", + "size": 16072, + "hash": "510e51237aeef4384631fe03b49c96013b92d120a7e831b0fb6e307a8e209310" + }, + "decimals.bzkir": { + "type": "file", + "size": 71, + "hash": "bcba28c871a59908f3949f670c82ece40b30a8c5405eda14e39ba8636480c71f" + }, + "decimals.zkir": { + "type": "file", + "size": 953, + "hash": "ea3d2d1a65f5388d28645fd4c0fa4a1f9d516e01a164c4e2e7138aa82fb95fb9" + }, + "depositShielded.bzkir": { + "type": "file", + "size": 930, + "hash": "73f91b44a64c982c130a54bb10fbc22da242ca7a9560711729a740be82259ac1" + }, + "depositShielded.zkir": { + "type": "file", + "size": 13821, + "hash": "16e7d5ada1adea0dd09e9203574fe898fa2ae3198272fda84b12cfbc06507558" + }, + "depositUnshielded.bzkir": { + "type": "file", + "size": 576, + "hash": "bbeb4e4e56b498ba769089bd8f8c26e515dee25166831e9a1d44a98594714d58" + }, + "depositUnshielded.zkir": { + "type": "file", + "size": 8859, + "hash": "274f10abffd9ffd00c191b34ec4d658b0eb57336f8e563630bd82a1980b201ee" + }, + "getBalance.bzkir": { + "type": "file", + "size": 131, + "hash": "c9cfcae07512a89916bc6baba36f189ac2927a7007687e0b4232fc6972c6d86e" + }, + "getBalance.zkir": { + "type": "file", + "size": 1694, + "hash": "ce9fea83599adf8ff4e2c66f431f585d5013662a467112fd41d48c0d6ef071de" + }, + "name.bzkir": { + "type": "file", + "size": 103, + "hash": "7663272ca075a1e6d0d0502251cc8224e92a4576eb40ebbebeb14ce5206ffb56" + }, + "name.zkir": { + "type": "file", + "size": 954, + "hash": "8e8597767f0199f401448d572f251356cfb9ae15ecf364430e7c949650c55893" + }, + "symbol.bzkir": { + "type": "file", + "size": 105, + "hash": "0c0165a89e575ffc4e53fc5c04b7ce9496a081a874914af06c89c78d4e20c2fb" + }, + "symbol.zkir": { + "type": "file", + "size": 993, + "hash": "53a787199d7441b40e651f0bf8d5bc7e672d02d34ac8ea1b6d47bf7534694cf3" + }, + "tokenColor.bzkir": { + "type": "file", + "size": 141, + "hash": "a5ca334193560fb755c20a91bd6675e2cf865b5cad480d9e755e257b1d026a86" + }, + "tokenColor.zkir": { + "type": "file", + "size": 1542, + "hash": "60168cbd0bef54494966388e3f672dd108f78a9d4c8aae15522e41f632f26ace" + }, + "withdrawShielded.bzkir": { + "type": "file", + "size": 711, + "hash": "1c7c58003085134023c4002a6beb899dafd6f45986e98ed157fac3cb5d154b3b" + }, + "withdrawShielded.zkir": { + "type": "file", + "size": 10348, + "hash": "5e73ba4f7765db4ac8c5f9758e6d1f56b5bcae0cae073ef051f31a9016571640" + }, + "withdrawUnshielded.bzkir": { + "type": "file", + "size": 1097, + "hash": "96ec6dd5aaa8753a8da11618706166fc7373664ba87fd4169febb9b5d9b10eb8" + }, + "withdrawUnshielded.zkir": { + "type": "file", + "size": 16165, + "hash": "2de2779327d878142f7349bdd4c8ffac20651dd883f42ddce9ff9c18d99de9dc" + } + }, + "keys": { + "type": "directory", + "convertToShielded.prover": { + "type": "file", + "size": 5204863, + "hash": "39732387554c10974a04365dfc5e46f4f024f5f426752d850b0b124b66c77711" + }, + "convertToShielded.verifier": { + "type": "file", + "size": 2119, + "hash": "ceb794f4a07d5d0f4a200a364cc6334f6b3a8f08fa5a37ba3c99edac4da968eb" + }, + "convertToUnshielded.prover": { + "type": "file", + "size": 5206057, + "hash": "fd0790325985b5afed1f88c93a1a864a12b26c6f8e50d5cc89033923b4e15911" + }, + "convertToUnshielded.verifier": { + "type": "file", + "size": 2119, + "hash": "527e93c8b02cc14d86c625834d874556183d5e45ea615338bbe4966fb503eb4d" + }, + "decimals.prover": { + "type": "file", + "size": 22436, + "hash": "4833687440dcc5a3b27e8af9b6442a84decfd62f07f523aef9c450af07f249eb" + }, + "decimals.verifier": { + "type": "file", + "size": 1351, + "hash": "95a209a810ddd347aa984bb6c6a5c57ba66ef29b4221f1fafd3f04e1fa4fdec9" + }, + "depositShielded.prover": { + "type": "file", + "size": 9994806, + "hash": "bf31c7665560f782d7e05e1bed238e91a9bab688c35cb55aa2129faf4f3249d6" + }, + "depositShielded.verifier": { + "type": "file", + "size": 2119, + "hash": "50ec1aa10bc46a20ecfdaae1fb3354cff6c33dc61fa5c97b3e49e87878cba46c" + }, + "depositUnshielded.prover": { + "type": "file", + "size": 2824062, + "hash": "dfb0813bfce8c813d2e288653a39865d1ae07b9492090cbb268d61fe36454940" + }, + "depositUnshielded.verifier": { + "type": "file", + "size": 2119, + "hash": "72e482e604354b866f7cab1852144c091d06bd913e9a5bd8979046275d88fdc2" + }, + "getBalance.prover": { + "type": "file", + "size": 2820035, + "hash": "33b24cefc9a26ed21b4c1f6d8f8b1a87d64a0a6787eef11440f88a26f06a9a26" + }, + "getBalance.verifier": { + "type": "file", + "size": 2119, + "hash": "7981e85490a0d425652636da8c3b5aa9a3d998ce72ef04c16d3524dba08416bf" + }, + "name.prover": { + "type": "file", + "size": 22436, + "hash": "b05b5111aea5700ed9f8074772535b073481137e0206581ad7ba21c2f08b14f0" + }, + "name.verifier": { + "type": "file", + "size": 1351, + "hash": "b36a8137f9cb7bce5546e12d5194c5e72a8caa1b11441c35a0f2379246e04387" + }, + "symbol.prover": { + "type": "file", + "size": 22434, + "hash": "4b84581f1f43f14bbb8eeaba4acb8a65b87e040dcf6939173779ecf78904f295" + }, + "symbol.verifier": { + "type": "file", + "size": 1351, + "hash": "21005ce77566c9a7f5fed12b07c79796abd19b6d6afbc6553ae6aeb9e908b6d9" + }, + "tokenColor.prover": { + "type": "file", + "size": 2814667, + "hash": "17525dbbe8be1e855e12adc581d89745398ef224cd62c8bb12c7fdac5b4ae7a8" + }, + "tokenColor.verifier": { + "type": "file", + "size": 2119, + "hash": "904cecd3fab66d4f598eee1d90709771e735695cff5344c71cf8afc31a319b5d" + }, + "withdrawShielded.prover": { + "type": "file", + "size": 5212557, + "hash": "0787d27d03f1bbe5b3c2f3f8b6a2144756ea52d282f52848605a75cc5b741de4" + }, + "withdrawShielded.verifier": { + "type": "file", + "size": 2119, + "hash": "71019ebd128964628325541c6a14db941c2dbf024689525132a1e13dff457b42" + }, + "withdrawUnshielded.prover": { + "type": "file", + "size": 2821823, + "hash": "8ea30a2e29cd2b72dc3d2bdf7088f88ad24c33c8fd457a2a1d99ad0c7b92168c" + }, + "withdrawUnshielded.verifier": { + "type": "file", + "size": 2119, + "hash": "b04e3748e1b1146648f490531eabf874f6fa8bb1331680c458b234125a590a37" + } + } +} diff --git a/src/managed/contract/index.d.ts b/src/managed/contract/index.d.ts index 132d51d..d4f5d9a 100644 --- a/src/managed/contract/index.d.ts +++ b/src/managed/contract/index.d.ts @@ -4,40 +4,40 @@ export type Witnesses = { } export type ImpureCircuits = { - name(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - symbol(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - decimals(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - tokenColor(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; + name(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + symbol(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + decimals(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + tokenColor(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; depositUnshielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, - amount_0: bigint): __compactRuntime.CircuitResults; + amount_0: bigint): Promise<__compactRuntime.CircuitResults>; depositShielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, coin_0: { nonce: Uint8Array, color: Uint8Array, value: bigint - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; withdrawUnshielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, amount_0: bigint, recipient_0: { is_left: boolean, left: { bytes: Uint8Array }, right: { bytes: Uint8Array } - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; withdrawShielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, amount_0: bigint, recipient_0: { bytes: Uint8Array }, - nonce_0: Uint8Array): __compactRuntime.CircuitResults; - getBalance(context: __compactRuntime.CircuitContext, secret_0: Uint8Array): __compactRuntime.CircuitResults; + nonce_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; + getBalance(context: __compactRuntime.CircuitContext, secret_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; convertToShielded(context: __compactRuntime.CircuitContext, amount_0: bigint, recipient_0: { bytes: Uint8Array }, - nonce_0: Uint8Array): __compactRuntime.CircuitResults; + nonce_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; convertToUnshielded(context: __compactRuntime.CircuitContext, coin_0: { nonce: Uint8Array, color: Uint8Array, @@ -46,44 +46,44 @@ export type ImpureCircuits = { recipient_0: { is_left: boolean, left: { bytes: Uint8Array }, right: { bytes: Uint8Array } - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; } export type ProvableCircuits = { - name(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - symbol(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - decimals(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - tokenColor(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; + name(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + symbol(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + decimals(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + tokenColor(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; depositUnshielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, - amount_0: bigint): __compactRuntime.CircuitResults; + amount_0: bigint): Promise<__compactRuntime.CircuitResults>; depositShielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, coin_0: { nonce: Uint8Array, color: Uint8Array, value: bigint - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; withdrawUnshielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, amount_0: bigint, recipient_0: { is_left: boolean, left: { bytes: Uint8Array }, right: { bytes: Uint8Array } - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; withdrawShielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, amount_0: bigint, recipient_0: { bytes: Uint8Array }, - nonce_0: Uint8Array): __compactRuntime.CircuitResults; - getBalance(context: __compactRuntime.CircuitContext, secret_0: Uint8Array): __compactRuntime.CircuitResults; + nonce_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; + getBalance(context: __compactRuntime.CircuitContext, secret_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; convertToShielded(context: __compactRuntime.CircuitContext, amount_0: bigint, recipient_0: { bytes: Uint8Array }, - nonce_0: Uint8Array): __compactRuntime.CircuitResults; + nonce_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; convertToUnshielded(context: __compactRuntime.CircuitContext, coin_0: { nonce: Uint8Array, color: Uint8Array, @@ -92,47 +92,47 @@ export type ProvableCircuits = { recipient_0: { is_left: boolean, left: { bytes: Uint8Array }, right: { bytes: Uint8Array } - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; } export type PureCircuits = { } export type Circuits = { - name(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - symbol(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - decimals(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; - tokenColor(context: __compactRuntime.CircuitContext): __compactRuntime.CircuitResults; + name(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + symbol(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + decimals(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; + tokenColor(context: __compactRuntime.CircuitContext): Promise<__compactRuntime.CircuitResults>; depositUnshielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, - amount_0: bigint): __compactRuntime.CircuitResults; + amount_0: bigint): Promise<__compactRuntime.CircuitResults>; depositShielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, coin_0: { nonce: Uint8Array, color: Uint8Array, value: bigint - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; withdrawUnshielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, amount_0: bigint, recipient_0: { is_left: boolean, left: { bytes: Uint8Array }, right: { bytes: Uint8Array } - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; withdrawShielded(context: __compactRuntime.CircuitContext, secret_0: Uint8Array, amount_0: bigint, recipient_0: { bytes: Uint8Array }, - nonce_0: Uint8Array): __compactRuntime.CircuitResults; - getBalance(context: __compactRuntime.CircuitContext, secret_0: Uint8Array): __compactRuntime.CircuitResults; + nonce_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; + getBalance(context: __compactRuntime.CircuitContext, secret_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; convertToShielded(context: __compactRuntime.CircuitContext, amount_0: bigint, recipient_0: { bytes: Uint8Array }, - nonce_0: Uint8Array): __compactRuntime.CircuitResults; + nonce_0: Uint8Array): Promise<__compactRuntime.CircuitResults>; convertToUnshielded(context: __compactRuntime.CircuitContext, coin_0: { nonce: Uint8Array, color: Uint8Array, @@ -141,7 +141,7 @@ export type Circuits = { recipient_0: { is_left: boolean, left: { bytes: Uint8Array }, right: { bytes: Uint8Array } - }): __compactRuntime.CircuitResults; + }): Promise<__compactRuntime.CircuitResults>; } export type Ledger = { @@ -170,8 +170,9 @@ export declare class Contract = Witnesses> initialState(context: __compactRuntime.ConstructorContext, name__0: string, symbol__0: string, - decimals__0: bigint): __compactRuntime.ConstructorResult; + decimals__0: bigint): Promise<__compactRuntime.ConstructorResult>; } export declare function ledger(state: __compactRuntime.StateValue | __compactRuntime.ChargedState): Ledger; export declare const pureCircuits: PureCircuits; +export declare const expectedVk: Record; diff --git a/src/managed/contract/index.js b/src/managed/contract/index.js index 41ddefb..4ad29e6 100644 --- a/src/managed/contract/index.js +++ b/src/managed/contract/index.js @@ -1,5 +1,5 @@ import * as __compactRuntime from '@midnight-ntwrk/compact-runtime'; -__compactRuntime.checkRuntimeVersion('0.16.0'); +__compactRuntime.checkRuntimeVersion('0.19.0'); const _descriptor_0 = new __compactRuntime.CompactTypeUnsignedInteger(18446744073709551615n, 8); @@ -213,6 +213,8 @@ class _ShieldedSendResult_0 { const _descriptor_20 = new _ShieldedSendResult_0(); +const _descriptor_21 = new __compactRuntime.CompactTypeUnsignedInteger(4294967295n, 4); + export class Contract { witnesses; constructor(...args_0) { @@ -225,127 +227,131 @@ export class Contract { } this.witnesses = witnesses_0; this.circuits = { - name: (...args_1) => { + name: async (...args_1) => { if (args_1.length !== 1) { throw new __compactRuntime.CompactError(`name: expected 1 argument (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('name', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 121 char 1', + 'shielded-night.compact line 123 char 1', 'CircuitContext', contextOrig_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: [], alignment: [] }, output: undefined, publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._name_0(context, partialProofData); + const result_0 = await this._name_0(context, partialProofData); partialProofData.output = { value: _descriptor_10.toValue(result_0), alignment: _descriptor_10.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - symbol: (...args_1) => { + symbol: async (...args_1) => { if (args_1.length !== 1) { throw new __compactRuntime.CompactError(`symbol: expected 1 argument (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('symbol', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 127 char 1', + 'shielded-night.compact line 129 char 1', 'CircuitContext', contextOrig_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: [], alignment: [] }, output: undefined, publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._symbol_0(context, partialProofData); + const result_0 = await this._symbol_0(context, partialProofData); partialProofData.output = { value: _descriptor_10.toValue(result_0), alignment: _descriptor_10.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - decimals: (...args_1) => { + decimals: async (...args_1) => { if (args_1.length !== 1) { throw new __compactRuntime.CompactError(`decimals: expected 1 argument (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('decimals', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 133 char 1', + 'shielded-night.compact line 135 char 1', 'CircuitContext', contextOrig_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: [], alignment: [] }, output: undefined, publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._decimals_0(context, partialProofData); + const result_0 = await this._decimals_0(context, partialProofData); partialProofData.output = { value: _descriptor_9.toValue(result_0), alignment: _descriptor_9.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - tokenColor: (...args_1) => { + tokenColor: async (...args_1) => { if (args_1.length !== 1) { throw new __compactRuntime.CompactError(`tokenColor: expected 1 argument (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('tokenColor', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 139 char 1', + 'shielded-night.compact line 141 char 1', 'CircuitContext', contextOrig_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: [], alignment: [] }, output: undefined, publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._tokenColor_0(context, partialProofData); + const result_0 = await this._tokenColor_0(context, partialProofData); partialProofData.output = { value: _descriptor_1.toValue(result_0), alignment: _descriptor_1.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - depositUnshielded: (...args_1) => { + depositUnshielded: async (...args_1) => { if (args_1.length !== 3) { throw new __compactRuntime.CompactError(`depositUnshielded: expected 3 arguments (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; const secret_0 = args_1[1]; const amount_0 = args_1[2]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('depositUnshielded', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 207 char 1', + 'shielded-night.compact line 209 char 1', 'CircuitContext', contextOrig_0) } if (!(secret_0.buffer instanceof ArrayBuffer && secret_0.BYTES_PER_ELEMENT === 1 && secret_0.length === 32)) { __compactRuntime.typeError('depositUnshielded', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 207 char 1', + 'shielded-night.compact line 209 char 1', 'Bytes<32>', secret_0) } if (!(typeof(amount_0) === 'bigint' && amount_0 >= 0n && amount_0 <= 18446744073709551615n)) { __compactRuntime.typeError('depositUnshielded', 'argument 2 (argument 3 as invoked from Typescript)', - 'shielded-night.compact line 207 char 1', + 'shielded-night.compact line 209 char 1', 'Uint<0..18446744073709551616>', amount_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_1.toValue(secret_0).concat(_descriptor_0.toValue(amount_0)), @@ -355,42 +361,43 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._depositUnshielded_0(context, - partialProofData, - secret_0, - amount_0); + const result_0 = await this._depositUnshielded_0(context, + partialProofData, + secret_0, + amount_0); partialProofData.output = { value: [], alignment: [] }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - depositShielded: (...args_1) => { + depositShielded: async (...args_1) => { if (args_1.length !== 3) { throw new __compactRuntime.CompactError(`depositShielded: expected 3 arguments (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; const secret_0 = args_1[1]; const coin_0 = args_1[2]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('depositShielded', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 237 char 1', + 'shielded-night.compact line 240 char 1', 'CircuitContext', contextOrig_0) } if (!(secret_0.buffer instanceof ArrayBuffer && secret_0.BYTES_PER_ELEMENT === 1 && secret_0.length === 32)) { __compactRuntime.typeError('depositShielded', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 237 char 1', + 'shielded-night.compact line 240 char 1', 'Bytes<32>', secret_0) } if (!(typeof(coin_0) === 'object' && coin_0.nonce.buffer instanceof ArrayBuffer && coin_0.nonce.BYTES_PER_ELEMENT === 1 && coin_0.nonce.length === 32 && coin_0.color.buffer instanceof ArrayBuffer && coin_0.color.BYTES_PER_ELEMENT === 1 && coin_0.color.length === 32 && typeof(coin_0.value) === 'bigint' && coin_0.value >= 0n && coin_0.value <= 340282366920938463463374607431768211455n)) { __compactRuntime.typeError('depositShielded', 'argument 2 (argument 3 as invoked from Typescript)', - 'shielded-night.compact line 237 char 1', + 'shielded-night.compact line 240 char 1', 'struct ShieldedCoinInfo, color: Bytes<32>, value: Uint<0..340282366920938463463374607431768211456>>', coin_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_1.toValue(secret_0).concat(_descriptor_4.toValue(coin_0)), @@ -400,14 +407,15 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._depositShielded_0(context, - partialProofData, - secret_0, - coin_0); + const result_0 = await this._depositShielded_0(context, + partialProofData, + secret_0, + coin_0); partialProofData.output = { value: [], alignment: [] }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - withdrawUnshielded: (...args_1) => { + withdrawUnshielded: async (...args_1) => { if (args_1.length !== 4) { throw new __compactRuntime.CompactError(`withdrawUnshielded: expected 4 arguments (as invoked from Typescript), received ${args_1.length}`); } @@ -415,35 +423,35 @@ export class Contract { const secret_0 = args_1[1]; const amount_0 = args_1[2]; const recipient_0 = args_1[3]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('withdrawUnshielded', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 269 char 1', + 'shielded-night.compact line 272 char 1', 'CircuitContext', contextOrig_0) } if (!(secret_0.buffer instanceof ArrayBuffer && secret_0.BYTES_PER_ELEMENT === 1 && secret_0.length === 32)) { __compactRuntime.typeError('withdrawUnshielded', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 269 char 1', + 'shielded-night.compact line 272 char 1', 'Bytes<32>', secret_0) } if (!(typeof(amount_0) === 'bigint' && amount_0 >= 0n && amount_0 <= 18446744073709551615n)) { __compactRuntime.typeError('withdrawUnshielded', 'argument 2 (argument 3 as invoked from Typescript)', - 'shielded-night.compact line 269 char 1', + 'shielded-night.compact line 272 char 1', 'Uint<0..18446744073709551616>', amount_0) } if (!(typeof(recipient_0) === 'object' && typeof(recipient_0.is_left) === 'boolean' && typeof(recipient_0.left) === 'object' && recipient_0.left.bytes.buffer instanceof ArrayBuffer && recipient_0.left.bytes.BYTES_PER_ELEMENT === 1 && recipient_0.left.bytes.length === 32 && typeof(recipient_0.right) === 'object' && recipient_0.right.bytes.buffer instanceof ArrayBuffer && recipient_0.right.bytes.BYTES_PER_ELEMENT === 1 && recipient_0.right.bytes.length === 32)) { __compactRuntime.typeError('withdrawUnshielded', 'argument 3 (argument 4 as invoked from Typescript)', - 'shielded-night.compact line 269 char 1', + 'shielded-night.compact line 272 char 1', 'struct Either>, right: struct UserAddress>>', recipient_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_1.toValue(secret_0).concat(_descriptor_0.toValue(amount_0).concat(_descriptor_8.toValue(recipient_0))), @@ -453,15 +461,16 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._withdrawUnshielded_0(context, - partialProofData, - secret_0, - amount_0, - recipient_0); + const result_0 = await this._withdrawUnshielded_0(context, + partialProofData, + secret_0, + amount_0, + recipient_0); partialProofData.output = { value: [], alignment: [] }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - withdrawShielded: (...args_1) => { + withdrawShielded: async (...args_1) => { if (args_1.length !== 5) { throw new __compactRuntime.CompactError(`withdrawShielded: expected 5 arguments (as invoked from Typescript), received ${args_1.length}`); } @@ -470,42 +479,42 @@ export class Contract { const amount_0 = args_1[2]; const recipient_0 = args_1[3]; const nonce_0 = args_1[4]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('withdrawShielded', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 317 char 1', + 'shielded-night.compact line 320 char 1', 'CircuitContext', contextOrig_0) } if (!(secret_0.buffer instanceof ArrayBuffer && secret_0.BYTES_PER_ELEMENT === 1 && secret_0.length === 32)) { __compactRuntime.typeError('withdrawShielded', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 317 char 1', + 'shielded-night.compact line 320 char 1', 'Bytes<32>', secret_0) } if (!(typeof(amount_0) === 'bigint' && amount_0 >= 0n && amount_0 <= 18446744073709551615n)) { __compactRuntime.typeError('withdrawShielded', 'argument 2 (argument 3 as invoked from Typescript)', - 'shielded-night.compact line 317 char 1', + 'shielded-night.compact line 320 char 1', 'Uint<0..18446744073709551616>', amount_0) } if (!(typeof(recipient_0) === 'object' && recipient_0.bytes.buffer instanceof ArrayBuffer && recipient_0.bytes.BYTES_PER_ELEMENT === 1 && recipient_0.bytes.length === 32)) { __compactRuntime.typeError('withdrawShielded', 'argument 3 (argument 4 as invoked from Typescript)', - 'shielded-night.compact line 317 char 1', + 'shielded-night.compact line 320 char 1', 'struct ZswapCoinPublicKey>', recipient_0) } if (!(nonce_0.buffer instanceof ArrayBuffer && nonce_0.BYTES_PER_ELEMENT === 1 && nonce_0.length === 32)) { __compactRuntime.typeError('withdrawShielded', 'argument 4 (argument 5 as invoked from Typescript)', - 'shielded-night.compact line 317 char 1', + 'shielded-night.compact line 320 char 1', 'Bytes<32>', nonce_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_1.toValue(secret_0).concat(_descriptor_0.toValue(amount_0).concat(_descriptor_2.toValue(recipient_0).concat(_descriptor_1.toValue(nonce_0)))), @@ -515,36 +524,37 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._withdrawShielded_0(context, - partialProofData, - secret_0, - amount_0, - recipient_0, - nonce_0); + const result_0 = await this._withdrawShielded_0(context, + partialProofData, + secret_0, + amount_0, + recipient_0, + nonce_0); partialProofData.output = { value: _descriptor_4.toValue(result_0), alignment: _descriptor_4.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - getBalance: (...args_1) => { + getBalance: async (...args_1) => { if (args_1.length !== 2) { throw new __compactRuntime.CompactError(`getBalance: expected 2 arguments (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; const secret_0 = args_1[1]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('getBalance', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 344 char 1', + 'shielded-night.compact line 347 char 1', 'CircuitContext', contextOrig_0) } if (!(secret_0.buffer instanceof ArrayBuffer && secret_0.BYTES_PER_ELEMENT === 1 && secret_0.length === 32)) { __compactRuntime.typeError('getBalance', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 344 char 1', + 'shielded-night.compact line 347 char 1', 'Bytes<32>', secret_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_1.toValue(secret_0), @@ -554,11 +564,14 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._getBalance_0(context, partialProofData, secret_0); + const result_0 = await this._getBalance_0(context, + partialProofData, + secret_0); partialProofData.output = { value: _descriptor_3.toValue(result_0), alignment: _descriptor_3.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - convertToShielded: (...args_1) => { + convertToShielded: async (...args_1) => { if (args_1.length !== 4) { throw new __compactRuntime.CompactError(`convertToShielded: expected 4 arguments (as invoked from Typescript), received ${args_1.length}`); } @@ -566,35 +579,35 @@ export class Contract { const amount_0 = args_1[1]; const recipient_0 = args_1[2]; const nonce_0 = args_1[3]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('convertToShielded', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 370 char 1', + 'shielded-night.compact line 373 char 1', 'CircuitContext', contextOrig_0) } if (!(typeof(amount_0) === 'bigint' && amount_0 >= 0n && amount_0 <= 18446744073709551615n)) { __compactRuntime.typeError('convertToShielded', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 370 char 1', + 'shielded-night.compact line 373 char 1', 'Uint<0..18446744073709551616>', amount_0) } if (!(typeof(recipient_0) === 'object' && recipient_0.bytes.buffer instanceof ArrayBuffer && recipient_0.bytes.BYTES_PER_ELEMENT === 1 && recipient_0.bytes.length === 32)) { __compactRuntime.typeError('convertToShielded', 'argument 2 (argument 3 as invoked from Typescript)', - 'shielded-night.compact line 370 char 1', + 'shielded-night.compact line 373 char 1', 'struct ZswapCoinPublicKey>', recipient_0) } if (!(nonce_0.buffer instanceof ArrayBuffer && nonce_0.BYTES_PER_ELEMENT === 1 && nonce_0.length === 32)) { __compactRuntime.typeError('convertToShielded', 'argument 3 (argument 4 as invoked from Typescript)', - 'shielded-night.compact line 370 char 1', + 'shielded-night.compact line 373 char 1', 'Bytes<32>', nonce_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_0.toValue(amount_0).concat(_descriptor_2.toValue(recipient_0).concat(_descriptor_1.toValue(nonce_0))), @@ -604,43 +617,44 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._convertToShielded_0(context, - partialProofData, - amount_0, - recipient_0, - nonce_0); + const result_0 = await this._convertToShielded_0(context, + partialProofData, + amount_0, + recipient_0, + nonce_0); partialProofData.output = { value: _descriptor_4.toValue(result_0), alignment: _descriptor_4.alignment() }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; }, - convertToUnshielded: (...args_1) => { + convertToUnshielded: async (...args_1) => { if (args_1.length !== 3) { throw new __compactRuntime.CompactError(`convertToUnshielded: expected 3 arguments (as invoked from Typescript), received ${args_1.length}`); } const contextOrig_0 = args_1[0]; const coin_0 = args_1[1]; const recipient_0 = args_1[2]; - if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.currentQueryContext != undefined)) { + if (!(typeof(contextOrig_0) === 'object' && contextOrig_0.callContext.currentQueryContext != undefined)) { __compactRuntime.typeError('convertToUnshielded', 'argument 1 (as invoked from Typescript)', - 'shielded-night.compact line 405 char 1', + 'shielded-night.compact line 408 char 1', 'CircuitContext', contextOrig_0) } if (!(typeof(coin_0) === 'object' && coin_0.nonce.buffer instanceof ArrayBuffer && coin_0.nonce.BYTES_PER_ELEMENT === 1 && coin_0.nonce.length === 32 && coin_0.color.buffer instanceof ArrayBuffer && coin_0.color.BYTES_PER_ELEMENT === 1 && coin_0.color.length === 32 && typeof(coin_0.value) === 'bigint' && coin_0.value >= 0n && coin_0.value <= 340282366920938463463374607431768211455n)) { __compactRuntime.typeError('convertToUnshielded', 'argument 1 (argument 2 as invoked from Typescript)', - 'shielded-night.compact line 405 char 1', + 'shielded-night.compact line 408 char 1', 'struct ShieldedCoinInfo, color: Bytes<32>, value: Uint<0..340282366920938463463374607431768211456>>', coin_0) } if (!(typeof(recipient_0) === 'object' && typeof(recipient_0.is_left) === 'boolean' && typeof(recipient_0.left) === 'object' && recipient_0.left.bytes.buffer instanceof ArrayBuffer && recipient_0.left.bytes.BYTES_PER_ELEMENT === 1 && recipient_0.left.bytes.length === 32 && typeof(recipient_0.right) === 'object' && recipient_0.right.bytes.buffer instanceof ArrayBuffer && recipient_0.right.bytes.BYTES_PER_ELEMENT === 1 && recipient_0.right.bytes.length === 32)) { __compactRuntime.typeError('convertToUnshielded', 'argument 2 (argument 3 as invoked from Typescript)', - 'shielded-night.compact line 405 char 1', + 'shielded-night.compact line 408 char 1', 'struct Either>, right: struct UserAddress>>', recipient_0) } - const context = { ...contextOrig_0, gasCost: __compactRuntime.emptyRunningCost() }; + const context = __compactRuntime.copyCircuitContext(contextOrig_0); const partialProofData = { input: { value: _descriptor_4.toValue(coin_0).concat(_descriptor_8.toValue(recipient_0)), @@ -650,12 +664,13 @@ export class Contract { publicTranscript: [], privateTranscriptOutputs: [] }; - const result_0 = this._convertToUnshielded_0(context, - partialProofData, - coin_0, - recipient_0); + const result_0 = await this._convertToUnshielded_0(context, + partialProofData, + coin_0, + recipient_0); partialProofData.output = { value: [], alignment: [] }; - return { result: result_0, context: context, proofData: partialProofData, gasCost: context.gasCost }; + __compactRuntime.finalizeCallProofData(context, partialProofData); + return { result: result_0, context: context, gasCost: context.callContext.currentGasCost }; } }; this.impureCircuits = { @@ -685,7 +700,7 @@ export class Contract { convertToUnshielded: this.circuits.convertToUnshielded }; } - initialState(...args_0) { + async initialState(...args_0) { if (args_0.length !== 4) { throw new __compactRuntime.CompactError(`Contract state constructor: expected 4 arguments (as invoked from Typescript), received ${args_0.length}`); } @@ -702,10 +717,24 @@ export class Contract { if (typeof(constructorContext_0.initialZswapLocalState) !== 'object') { throw new __compactRuntime.CompactError(`Contract state constructor: expected 'initialZswapLocalState' in argument 1 (as invoked from Typescript) to be an object`); } + if (!(typeof (name__0) === 'string')) { + __compactRuntime.typeError('Contract state constructor', + 'argument 1 (argument 2 as invoked from Typescript)', + 'shielded-night.compact line 113 char 1', + 'Opaque<"string">', + name__0) + } + if (!(typeof (symbol__0) === 'string')) { + __compactRuntime.typeError('Contract state constructor', + 'argument 2 (argument 3 as invoked from Typescript)', + 'shielded-night.compact line 113 char 1', + 'Opaque<"string">', + symbol__0) + } if (!(typeof(decimals__0) === 'bigint' && decimals__0 >= 0n && decimals__0 <= 255n)) { __compactRuntime.typeError('Contract state constructor', 'argument 3 (argument 4 as invoked from Typescript)', - 'shielded-night.compact line 111 char 1', + 'shielded-night.compact line 113 char 1', 'Uint<0..256>', decimals__0) } @@ -727,7 +756,7 @@ export class Contract { state_0.setOperation('getBalance', new __compactRuntime.ContractOperation()); state_0.setOperation('convertToShielded', new __compactRuntime.ContractOperation()); state_0.setOperation('convertToUnshielded', new __compactRuntime.ContractOperation()); - const context = __compactRuntime.createCircuitContext(__compactRuntime.dummyContractAddress(), constructorContext_0.initialZswapLocalState.coinPublicKey, state_0.data, constructorContext_0.initialPrivateState); + const context = __compactRuntime.createCircuitContext('constructor', __compactRuntime.dummyContractAddress(), constructorContext_0.initialZswapLocalState.coinPublicKey, state_0.data, constructorContext_0.initialPrivateState); const partialProofData = { input: { value: [], alignment: [] }, output: undefined, @@ -805,11 +834,11 @@ export class Contract { value: __compactRuntime.StateValue.newCell({ value: _descriptor_9.toValue(decimals__0), alignment: _descriptor_9.alignment() }).encode() } }, { ins: { cached: false, n: 1 } }]); - state_0.data = new __compactRuntime.ChargedState(context.currentQueryContext.state.state); + state_0.data = new __compactRuntime.ChargedState(context.callContext.currentQueryContext.state.state); return { currentContractState: state_0, - currentPrivateState: context.currentPrivateState, - currentZswapLocalState: context.currentZswapLocalState + currentPrivateState: context.callContext.currentPrivateState, + currentZswapLocalState: context.callContext.currentZswapLocalState } } _some_0(value_0) { return { is_some: true, value: value_0 }; } @@ -834,12 +863,12 @@ export class Contract { return this._persistentCommit_0([domain_sep_0, contractAddress_0.bytes], new Uint8Array([109, 105, 100, 110, 105, 103, 104, 116, 58, 100, 101, 114, 105, 118, 101, 95, 116, 111, 107, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])); } - _mintShieldedToken_0(context, - partialProofData, - domain_sep_0, - value_0, - nonce_0, - recipient_0) + async _mintShieldedToken_0(context, + partialProofData, + domain_sep_0, + value_0, + nonce_0, + recipient_0) { const coin_0 = { nonce: nonce_0, color: @@ -945,7 +974,7 @@ export class Contract { _shieldedBurnAddress_0() { return this._left_0({ bytes: new Uint8Array(32) }); } - _receiveShielded_0(context, partialProofData, coin_0) { + async _receiveShielded_0(context, partialProofData, coin_0) { const recipient_0 = this._right_0(_descriptor_6.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, [ @@ -979,7 +1008,8 @@ export class Contract { { swap: { n: 0 } }]); return []; } - _sendShielded_0(context, partialProofData, input_0, recipient_0, value_0) { + async _sendShielded_0(context, partialProofData, input_0, recipient_0, value_0) + { const selfAddr_0 = _descriptor_6.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, [ @@ -1018,9 +1048,11 @@ export class Contract { 'result of subtraction would be negative'), t_0 - value_0)); const output_0 = { nonce: - this._upgradeFromTransient_0(this._transientHash_0([__compactRuntime.convertBytesToField(28, - new Uint8Array([109, 105, 100, 110, 105, 103, 104, 116, 58, 107, 101, 114, 110, 101, 108, 58, 110, 111, 110, 99, 101, 95, 101, 118, 111, 108, 118, 101]), - ''), + this._upgradeFromTransient_0(this._transientHash_0([__compactRuntime.convertBytesToUint(52435875175126190479447740508185965837690552500527637822603658699938581184512n, + 28, + new Uint8Array([109, 105, 100, 110, 105, 103, 104, 116, 58, 107, 101, 114, 110, 101, 108, 58, 110, 111, 110, 99, 101, 95, 101, 118, 111, 108, 118, 101]), + 'Field', + ''), this._degradeToTransient_0(input_0.nonce)])), color: input_0.color, value: value_0 }; @@ -1066,13 +1098,15 @@ export class Contract { { ins: { cached: true, n: 2 } }, { swap: { n: 0 } }]); } - if (this._equal_2(change_0, 0n)) { + if (change_0 === 0n) { return { change: this._none_0(), sent: output_0 }; } else { const changeCoin_0 = { nonce: - this._upgradeFromTransient_0(this._transientHash_0([__compactRuntime.convertBytesToField(30, - new Uint8Array([109, 105, 100, 110, 105, 103, 104, 116, 58, 107, 101, 114, 110, 101, 108, 58, 110, 111, 110, 99, 101, 95, 101, 118, 111, 108, 118, 101, 47, 50]), - ''), + this._upgradeFromTransient_0(this._transientHash_0([__compactRuntime.convertBytesToUint(52435875175126190479447740508185965837690552500527637822603658699938581184512n, + 30, + new Uint8Array([109, 105, 100, 110, 105, 103, 104, 116, 58, 107, 101, 114, 110, 101, 108, 58, 110, 111, 110, 99, 101, 95, 101, 118, 111, 108, 118, 101, 47, 50]), + 'Field', + ''), this._degradeToTransient_0(input_0.nonce)])), color: input_0.color, value: change_0 }; @@ -1119,13 +1153,17 @@ export class Contract { return { change: this._some_0(changeCoin_0), sent: output_0 }; } } - _sendImmediateShielded_0(context, partialProofData, input_0, target_0, value_0) + async _sendImmediateShielded_0(context, + partialProofData, + input_0, + target_0, + value_0) { - return this._sendShielded_0(context, - partialProofData, - this._upcastQualifiedCoin_0(input_0), - target_0, - value_0); + return await this._sendShielded_0(context, + partialProofData, + this._upcastQualifiedCoin_0(input_0), + target_0, + value_0); } _downcastQualifiedCoin_0(coin_0) { return { nonce: coin_0.nonce, color: coin_0.color, value: coin_0.value }; @@ -1153,7 +1191,12 @@ export class Contract { dataType: false, data: addr_0.bytes }); } - _sendUnshielded_0(context, partialProofData, color_0, amount_0, recipient_0) { + async _sendUnshielded_0(context, + partialProofData, + color_0, + amount_0, + recipient_0) + { const tmp_0 = this._left_1(color_0); __compactRuntime.queryLedgerState(context, partialProofData, @@ -1222,7 +1265,7 @@ export class Contract { { swap: { n: 0 } }]); if (recipient_0.is_left && - this._equal_3(recipient_0.left.bytes, + this._equal_2(recipient_0.left.bytes, _descriptor_6.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, [ @@ -1270,7 +1313,7 @@ export class Contract { } return []; } - _receiveUnshielded_0(context, partialProofData, color_0, amount_0) { + async _receiveUnshielded_0(context, partialProofData, color_0, amount_0) { const tmp_0 = this._left_1(color_0); __compactRuntime.queryLedgerState(context, partialProofData, @@ -1351,7 +1394,7 @@ export class Contract { _wrapDomain_0() { return new Uint8Array([115, 104, 105, 101, 108, 100, 101, 100, 45, 110, 105, 103, 104, 116, 58, 119, 114, 97, 112, 112, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]); } - _wrapColor_0(context, partialProofData) { + async _wrapColor_0(context, partialProofData) { return this._tokenType_0(this._wrapDomain_0(), _descriptor_6.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, @@ -1366,7 +1409,7 @@ export class Contract { { popeq: { cached: true, result: undefined } }]).value)); } - _name_0(context, partialProofData) { + async _name_0(context, partialProofData) { return _descriptor_10.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, [ @@ -1380,7 +1423,7 @@ export class Contract { { popeq: { cached: false, result: undefined } }]).value); } - _symbol_0(context, partialProofData) { + async _symbol_0(context, partialProofData) { return _descriptor_10.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, [ @@ -1394,7 +1437,7 @@ export class Contract { { popeq: { cached: false, result: undefined } }]).value); } - _decimals_0(context, partialProofData) { + async _decimals_0(context, partialProofData) { return _descriptor_9.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, [ @@ -1408,14 +1451,14 @@ export class Contract { { popeq: { cached: false, result: undefined } }]).value); } - _tokenColor_0(context, partialProofData) { - return this._wrapColor_0(context, partialProofData); + async _tokenColor_0(context, partialProofData) { + return await this._wrapColor_0(context, partialProofData); } _getBalanceKey_0(secret_0) { return this._persistentHash_0([new Uint8Array([115, 104, 105, 101, 108, 100, 101, 100, 45, 110, 105, 103, 104, 116, 58, 98, 97, 108, 97, 110, 99, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), secret_0]); } - _creditKey_0(context, partialProofData, balanceKey_0, amount_0) { + async _creditKey_0(context, partialProofData, balanceKey_0, amount_0) { __compactRuntime.assert(amount_0 > 0n, 'amount must be positive'); if (!_descriptor_5.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, @@ -1455,7 +1498,7 @@ export class Contract { } const tmp_1 = ((t1) => { if (t1 > 340282366920938463463374607431768211455n) { - throw new __compactRuntime.CompactError('shielded-night.compact line 170 char 31: cast from Field or Uint value to smaller Uint value failed: ' + t1 + ' is greater than 340282366920938463463374607431768211455'); + throw new __compactRuntime.CompactError('shielded-night.compact line 172 char 31: cast from Field or Uint value to smaller Uint value failed: ' + t1 + ' is greater than 340282366920938463463374607431768211455'); } return t1; })(_descriptor_3.fromValue(__compactRuntime.queryLedgerState(context, @@ -1497,7 +1540,7 @@ export class Contract { { ins: { cached: true, n: 1 } }]); return []; } - _debitKey_0(context, partialProofData, balanceKey_0, amount_0) { + async _debitKey_0(context, partialProofData, balanceKey_0, amount_0) { __compactRuntime.assert(amount_0 > 0n, 'amount must be positive'); __compactRuntime.assert(_descriptor_5.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, @@ -1557,90 +1600,90 @@ export class Contract { { ins: { cached: true, n: 1 } }]); return []; } - _depositUnshielded_0(context, partialProofData, secret_0, amount_0) { + async _depositUnshielded_0(context, partialProofData, secret_0, amount_0) { __compactRuntime.assert(amount_0 > 0n, 'amount must be positive'); const amt_0 = amount_0; - this._receiveUnshielded_0(context, - partialProofData, - this._nativeToken_0(), - amt_0); - this._creditKey_0(context, - partialProofData, - this._getBalanceKey_0(secret_0), - amt_0); + await this._receiveUnshielded_0(context, + partialProofData, + this._nativeToken_0(), + amt_0); + await this._creditKey_0(context, + partialProofData, + this._getBalanceKey_0(secret_0), + amt_0); return []; } - _depositShielded_0(context, partialProofData, secret_0, coin_0) { + async _depositShielded_0(context, partialProofData, secret_0, coin_0) { const c_0 = coin_0; let t_0; __compactRuntime.assert((t_0 = c_0.value, t_0 > 0n), 'coin value must be positive'); - __compactRuntime.assert(this._equal_4(c_0.color, - this._wrapColor_0(context, - partialProofData)), + __compactRuntime.assert(this._equal_3(c_0.color, + await this._wrapColor_0(context, + partialProofData)), "not this contract's shielded wrapper"); - this._receiveShielded_0(context, partialProofData, c_0); - this._sendImmediateShielded_0(context, - partialProofData, - c_0, - this._shieldedBurnAddress_0(), - c_0.value); - this._creditKey_0(context, - partialProofData, - this._getBalanceKey_0(secret_0), - c_0.value); + await this._receiveShielded_0(context, partialProofData, c_0); + await this._sendImmediateShielded_0(context, + partialProofData, + c_0, + this._shieldedBurnAddress_0(), + c_0.value); + await this._creditKey_0(context, + partialProofData, + this._getBalanceKey_0(secret_0), + c_0.value); return []; } - _withdrawUnshielded_0(context, - partialProofData, - secret_0, - amount_0, - recipient_0) + async _withdrawUnshielded_0(context, + partialProofData, + secret_0, + amount_0, + recipient_0) { __compactRuntime.assert(amount_0 > 0n, 'amount must be positive'); __compactRuntime.assert(recipient_0.is_left ? - !this._equal_5({ bytes: new Uint8Array(32) }, + !this._equal_4({ bytes: new Uint8Array(32) }, recipient_0.left) : - !this._equal_6({ bytes: new Uint8Array(32) }, + !this._equal_5({ bytes: new Uint8Array(32) }, recipient_0.right), 'invalid recipient'); const _amount_0 = amount_0; - this._debitKey_0(context, - partialProofData, - this._getBalanceKey_0(secret_0), - _amount_0); - this._sendUnshielded_0(context, + await this._debitKey_0(context, partialProofData, - this._nativeToken_0(), - _amount_0, - recipient_0); + this._getBalanceKey_0(secret_0), + _amount_0); + await this._sendUnshielded_0(context, + partialProofData, + this._nativeToken_0(), + _amount_0, + recipient_0); return []; } - _withdrawShielded_0(context, - partialProofData, - secret_0, - amount_0, - recipient_0, - nonce_0) + async _withdrawShielded_0(context, + partialProofData, + secret_0, + amount_0, + recipient_0, + nonce_0) { __compactRuntime.assert(amount_0 > 0n, 'amount must be positive'); - __compactRuntime.assert(!this._equal_7({ bytes: new Uint8Array(32) }, + __compactRuntime.assert(!this._equal_6({ bytes: new Uint8Array(32) }, recipient_0), 'invalid recipient'); const _amount_0 = amount_0; - this._debitKey_0(context, - partialProofData, - this._getBalanceKey_0(secret_0), - _amount_0); - return this._mintShieldedToken_0(context, - partialProofData, - this._wrapDomain_0(), - _amount_0, - nonce_0, - this._left_0(recipient_0)); - } - _getBalance_0(context, partialProofData, secret_0) { + await this._debitKey_0(context, + partialProofData, + this._getBalanceKey_0(secret_0), + _amount_0); + return await this._mintShieldedToken_0(context, + partialProofData, + this._wrapDomain_0(), + _amount_0, + nonce_0, + this._left_0(recipient_0)); + } + async _getBalance_0(context, partialProofData, secret_0) { const tmp_0 = this._getBalanceKey_0(secret_0); return _descriptor_3.fromValue(__compactRuntime.queryLedgerState(context, partialProofData, @@ -1661,46 +1704,50 @@ export class Contract { { popeq: { cached: false, result: undefined } }]).value); } - _convertToShielded_0(context, partialProofData, amount_0, recipient_0, nonce_0) + async _convertToShielded_0(context, + partialProofData, + amount_0, + recipient_0, + nonce_0) { __compactRuntime.assert(amount_0 > 0n, 'amount must be positive'); - __compactRuntime.assert(!this._equal_8({ bytes: new Uint8Array(32) }, + __compactRuntime.assert(!this._equal_7({ bytes: new Uint8Array(32) }, recipient_0), 'invalid recipient'); const amt_0 = amount_0; - this._receiveUnshielded_0(context, - partialProofData, - this._nativeToken_0(), - amt_0); - return this._mintShieldedToken_0(context, - partialProofData, - this._wrapDomain_0(), - amt_0, - nonce_0, - this._left_0(recipient_0)); - } - _convertToUnshielded_0(context, partialProofData, coin_0, recipient_0) { + await this._receiveUnshielded_0(context, + partialProofData, + this._nativeToken_0(), + amt_0); + return await this._mintShieldedToken_0(context, + partialProofData, + this._wrapDomain_0(), + amt_0, + nonce_0, + this._left_0(recipient_0)); + } + async _convertToUnshielded_0(context, partialProofData, coin_0, recipient_0) { const c_0 = coin_0; let t_0; __compactRuntime.assert((t_0 = c_0.value, t_0 > 0n), 'coin value must be positive'); - __compactRuntime.assert(this._equal_9(c_0.color, - this._wrapColor_0(context, - partialProofData)), + __compactRuntime.assert(this._equal_8(c_0.color, + await this._wrapColor_0(context, + partialProofData)), "not this contract's shielded wrapper"); __compactRuntime.assert(recipient_0.is_left ? - !this._equal_10({ bytes: new Uint8Array(32) }, - recipient_0.left) + !this._equal_9({ bytes: new Uint8Array(32) }, + recipient_0.left) : - !this._equal_11({ bytes: new Uint8Array(32) }, + !this._equal_10({ bytes: new Uint8Array(32) }, recipient_0.right), 'invalid recipient'); - this._receiveShielded_0(context, partialProofData, c_0); - this._sendUnshielded_0(context, - partialProofData, - this._nativeToken_0(), - c_0.value, - recipient_0); + await this._receiveShielded_0(context, partialProofData, c_0); + await this._sendUnshielded_0(context, + partialProofData, + this._nativeToken_0(), + c_0.value, + recipient_0); return []; } _equal_0(x0, y0) { @@ -1712,7 +1759,7 @@ export class Contract { return true; } _equal_2(x0, y0) { - if (x0 !== y0) { return false; } + if (!x0.every((x, i) => y0[i] === x)) { return false; } return true; } _equal_3(x0, y0) { @@ -1720,10 +1767,6 @@ export class Contract { return true; } _equal_4(x0, y0) { - if (!x0.every((x, i) => y0[i] === x)) { return false; } - return true; - } - _equal_5(x0, y0) { { let x1 = x0.bytes; let y1 = y0.bytes; @@ -1731,7 +1774,7 @@ export class Contract { } return true; } - _equal_6(x0, y0) { + _equal_5(x0, y0) { { let x1 = x0.bytes; let y1 = y0.bytes; @@ -1739,7 +1782,7 @@ export class Contract { } return true; } - _equal_7(x0, y0) { + _equal_6(x0, y0) { { let x1 = x0.bytes; let y1 = y0.bytes; @@ -1747,7 +1790,7 @@ export class Contract { } return true; } - _equal_8(x0, y0) { + _equal_7(x0, y0) { { let x1 = x0.bytes; let y1 = y0.bytes; @@ -1755,11 +1798,11 @@ export class Contract { } return true; } - _equal_9(x0, y0) { + _equal_8(x0, y0) { if (!x0.every((x, i) => y0[i] === x)) { return false; } return true; } - _equal_10(x0, y0) { + _equal_9(x0, y0) { { let x1 = x0.bytes; let y1 = y0.bytes; @@ -1767,7 +1810,7 @@ export class Contract { } return true; } - _equal_11(x0, y0) { + _equal_10(x0, y0) { { let x1 = x0.bytes; let y1 = y0.bytes; @@ -1780,7 +1823,7 @@ export function ledger(stateOrChargedState) { const state = stateOrChargedState instanceof __compactRuntime.StateValue ? stateOrChargedState : stateOrChargedState.state; const chargedState = stateOrChargedState instanceof __compactRuntime.StateValue ? new __compactRuntime.ChargedState(stateOrChargedState) : stateOrChargedState; const context = { - currentQueryContext: new __compactRuntime.QueryContext(chargedState, __compactRuntime.dummyContractAddress()), + callContext: { currentQueryContext: new __compactRuntime.QueryContext(chargedState, __compactRuntime.dummyContractAddress()), currentGasCost: __compactRuntime.emptyRunningCost() }, costModel: __compactRuntime.CostModel.initialCostModel() }; const partialProofData = { @@ -1839,7 +1882,7 @@ export function ledger(stateOrChargedState) { if (!(key_0.buffer instanceof ArrayBuffer && key_0.BYTES_PER_ELEMENT === 1 && key_0.length === 32)) { __compactRuntime.typeError('member', 'argument 1', - 'shielded-night.compact line 53 char 1', + 'shielded-night.compact line 55 char 1', 'Bytes<32>', key_0) } @@ -1868,7 +1911,7 @@ export function ledger(stateOrChargedState) { if (!(key_0.buffer instanceof ArrayBuffer && key_0.BYTES_PER_ELEMENT === 1 && key_0.length === 32)) { __compactRuntime.typeError('lookup', 'argument 1', - 'shielded-night.compact line 53 char 1', + 'shielded-night.compact line 55 char 1', 'Bytes<32>', key_0) } @@ -1944,10 +1987,24 @@ export function ledger(stateOrChargedState) { }; } const _emptyContext = { - currentQueryContext: new __compactRuntime.QueryContext(new __compactRuntime.ContractState().data, __compactRuntime.dummyContractAddress()) + callContext: { currentQueryContext: new __compactRuntime.QueryContext(new __compactRuntime.ContractState().data, __compactRuntime.dummyContractAddress()), currentGasCost: __compactRuntime.emptyRunningCost() } }; const _dummyContract = new Contract({ }); export const pureCircuits = {}; export const contractReferenceLocations = { tag: 'publicLedgerArray', indices: { } }; +export const expectedVk = { + 'convertToShielded': 'ceb794f4a07d5d0f4a200a364cc6334f6b3a8f08fa5a37ba3c99edac4da968eb', + 'convertToUnshielded': '527e93c8b02cc14d86c625834d874556183d5e45ea615338bbe4966fb503eb4d', + 'decimals': '95a209a810ddd347aa984bb6c6a5c57ba66ef29b4221f1fafd3f04e1fa4fdec9', + 'depositShielded': '50ec1aa10bc46a20ecfdaae1fb3354cff6c33dc61fa5c97b3e49e87878cba46c', + 'depositUnshielded': '72e482e604354b866f7cab1852144c091d06bd913e9a5bd8979046275d88fdc2', + 'getBalance': '7981e85490a0d425652636da8c3b5aa9a3d998ce72ef04c16d3524dba08416bf', + 'name': 'b36a8137f9cb7bce5546e12d5194c5e72a8caa1b11441c35a0f2379246e04387', + 'symbol': '21005ce77566c9a7f5fed12b07c79796abd19b6d6afbc6553ae6aeb9e908b6d9', + 'tokenColor': '904cecd3fab66d4f598eee1d90709771e735695cff5344c71cf8afc31a319b5d', + 'withdrawShielded': '71019ebd128964628325541c6a14db941c2dbf024689525132a1e13dff457b42', + 'withdrawUnshielded': 'b04e3748e1b1146648f490531eabf874f6fa8bb1331680c458b234125a590a37', +}; + //# sourceMappingURL=index.js.map diff --git a/src/managed/contract/index.js.map b/src/managed/contract/index.js.map index 6a49d9a..bc4c27b 100644 --- a/src/managed/contract/index.js.map +++ b/src/managed/contract/index.js.map @@ -2,7 +2,7 @@ "version": 3, "file": "index.js", "sourceRoot": "../../../", - "sources": ["src/shielded-night.compact", "compiler/standard-library.compact"], + "sources": ["src/shielded-night.compact", "compiler/standard-library.compact", "compiler/zkir-v3-library.compact"], "names": [], - "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8GA;;;;;;;;;;MAUA,AAAA,IAAyD;;;;;;;;;;;;;;;;;;;;;;OAAA;MAMzD,AAAA,MAA6D;;;;;;;;;;;;;;;;;;;;;;OAAA;MAM7D,AAAA,QAAwD;;;;;;;;;;;;;;;;;;;;;;OAAA;MAMxD,AAAA,UAA8D;;;;;;;;;;;;;;;;;;;;;;OAAA;MAoE9D,AAAA,iBAKC;;;;;cALgC,QAAiB;cAAE,QAAgB;;;;;;;;;;;;;;;;;;;;;;;;;yCAAnC,QAAiB,+BAAE,QAAgB;;;;;;;;;mDAAnC,QAAiB;mDAAE,QAAgB;;;OAKnE;MAyBD,AAAA,eAUC;;;;;cATC,QAAiB;cACjB,MAAsB;;;;;;;;;;;;;;;;;;;;;;;;;yCADtB,QAAiB,+BACjB,MAAsB;;;;;;;;;iDADtB,QAAiB;iDACjB,MAAsB;;;OAQvB;MAsBD,AAAA,kBAiBC;;;;;cAhBC,QAAiB;cACjB,QAAgB;cAChB,WAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAF/C,QAAiB,+BACjB,QAAgB,+BAChB,WAA+C;;;;;;;;;oDAF/C,QAAiB;oDACjB,QAAgB;oDAChB,WAA+C;;;OAchD;MA+BD,AAAA,gBAmBC;;;;;cAlBC,QAAiB;cACjB,QAAgB;cAChB,WAA6B;cAC7B,OAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAHhB,QAAiB,+BACjB,QAAgB,+BAChB,WAA6B,+BAC7B,OAAgB;;;;;;;;;kDAHhB,QAAiB;kDACjB,QAAgB;kDAChB,WAA6B;kDAC7B,OAAgB;;;OAejB;MAQD,AAAA,UAEC;;;;;cAFyB,QAAiB;;;;;;;;;;;;;;;;;;yCAAjB,QAAiB;;;;;;;uEAAjB,QAAiB;;;OAE1C;MAwBD,AAAA,iBAeC;;;;;cAdC,QAAgB;cAChB,WAA6B;cAC7B,OAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAFhB,QAAgB,+BAChB,WAA6B,+BAC7B,OAAgB;;;;;;;;;mDAFhB,QAAgB;mDAChB,WAA6B;mDAC7B,OAAgB;;;OAYjB;MAoBD,AAAA,mBAeC;;;;;cAdC,MAAsB;cACtB,WAA+C;;;;;;;;;;;;;;;;;;;;;;;;;yCAD/C,MAAsB,+BACtB,WAA+C;;;;;;;;;qDAD/C,MAAsB;qDACtB,WAA+C;;;OAahD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAjTA;EAJD;;;;;UAAY,OAAuB;UAAE,SAAyB;UAAE,WAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA1DlF;;;;;;;;;;yEAAkD;IAWlD;;;;;;;;;yEAA6C;IAM7C;;;;;;;;;yEAA+C;IAM/C;;;;;;;;;yEAAwC;IAoCtC;;;;;;;4HAAiB,OAAK;;yEAAjB;IACL;;;;;;;4HAAmB,SAAO;;yEAAnB;IACP;;;;;;;2HAAqB,WAAS;;yEAArB;;;;;;;GACV;EC3FD,AAAA,QAAuB,0CACkB;EAGzC,AAAA;;;;;EAUA,AAAA,QAA0B;kCACkB;;EAD5C,AAAA,QAA0B;kCACkB;;EAG5C,AAAA,SAA2B;yEACqC;;EAyEhE,AAAA;;;EAKA,AAAA,aAAyB,cAAuB;qCACC,cAAY;;;EAG7D,AAAA;;uBACE;uBACA;uBACA;uBACA;;UAEM,kBAAiC;;yCAAwB;iEAAY;;;;;;;;;;;;4BAAuB;IAClG;;;;;;;;;;;2HAAoB;;;;;;2HAAY;;;;;;;;;;;;;yDACd,QAAM;UAClB,8BAAoB,QAAM;IAChC;;;;;;;;;;;2HAA2B;;;;;;SAEtB;;sBAAqB;8CAAyB;;;;;;;;;;;;;MACjD;;;;;;;;;;;6HAA6B;;;;;;;WAExB;;EAWT,AAAA;;;EAIA,AAAA,8CAA+B;UACvB,oDAAuD;;;;;;;;;;;;yDAC3C,QAAM;UACxB,+BAA4C,QAAM;IAAlD;;;;;;;;;;;2HAAA;;;;;;;;EAGF,AAAA,2CACE,SACA,aACA;UAEM,qCAAW;;;;;;;;;;;;wDACA;UACjB,4DAA+D;wCAAQ;IAAvE;;;;;;;;;;;2HAAA;;;;;;QACe;UAAT,kBAAS;+CAAA,OAAc;;uBAAd,MAAc;UACvB;;;;wGACoI;8BAClH;8BACA;yDAEN,UAAQ;UAC1B,+BAA0C,UAAQ;IAAlD;;;;;;;;;;;2HAAA;;;;;;SAGK;;sBAAqB,yBAAyB;;YACjD,+BAA4C,UAAQ;MAApD;;;;;;;;;;;6HAAA;;;;;;;sBAGE;6CACiE;;YAE7D;;;;8GAC0I;oCACpH;oCACA;;;gCAEV;8CAAuD;YACnE,8BAAoB;wDAAuD;MACjF;;;;;;;;;;;6HAA2B;;;;;;MAC3B;;;;;;;;;;;6HAA6B;;;;;;oCAC6B,qBAAmB;;;EAIjF,AAAA,oDACE,SACA,UACA;;;;4DAEwC;gCAAQ;gCAAQ;;EAgC1D,AAAA,yBAA8B;oBACI,qBAAmB,qBAAmB;;EAGxE,AAAA,uBAA4B;oBACe;oBAAmB;oBAAmB;;;EAWjF,AAAA,kBACE,QACA;;;0CAKU;8CACI;;sCACJ;sCAAoB;sCAAuB;;EAIvD,AAAA,iBACE,QACA;;;0CAKU;;0CAEA;;EAwCZ,AAAA,6CAA8B,SAAkB,UAAmB;UACjE,qBAAuD;IAAvD;;;;;;;;;;;4HAAA;;;;;;2HAA+D;;;;;;;;;;;;;UAC/D,qBAA2D;IAA3D;;;;;;;;;;;;8HAAA;;6HAAmE;;;;;;;2HAAW;;;;;;;;;;;;;QAE1E;;sBAAqB;8CAAwB;;;;;;;;;;;;;YAC/C,qBAAsD;MAAtD;;;;;;;;;;;8HAAA;;;;;;6HAA8D;;;;;;;;;;;;;;;;EAIlE,AAAA,gDAAiC,SAAkB;UACjD,qBAAsD;IAAtD;;;;;;;;;;;4HAAA;;;;;;2HAA8D;;;;;;;;;;;;;;;EAnUhE,AAAA,iBAAA;oEAAA;;;EAAA,AAAA,kBAAA;qEAAA;;;EAAA,AAAA,kBAAA;qEAAA;;;EAAA,AAAA,oBAAA,SAAA;;uDAAA;uDAAA;;;EAAA,AAAA,sBAAA;yDAAA;;;EAAA,AAAA,wBAAA;2DAAA;;;EAAA,AAAA,+CAAA;gEAAA;;;;;;;EAAA,AAAA,gDAAA,QAAA;;wDAAA;wDAAA;;;;;;;EDiFA,AAAA,aAEC;;GAAA;EAaD,AAAA,YAEC;;qDADgC;;;;;;;;;;;0HAAM;GACtC;EAsBD,AAAA,OAAyD;oCAAR;;;;;;;;;;;yGAAK;GAAG;EAMzD,AAAA,SAA6D;oCAAV;;;;;;;;;;;yGAAO;GAAG;EAM7D,AAAA,WAAwD;mCAAZ;;;;;;;;;;;wGAAS;GAAG;EAMxD,AAAA,aAA8D;;GAAA;EAY9D,AAAA,gBAEC,CAFqB,QAAiB;;mCACoD,QAAM;GAChG;EAYD,AAAA,YAMC,4BANiB,YAAqB,EAAE,QAAiB;4BACjD,QAAM;iCACR;;;;;;;;;;;wJAAgB,YAAU;;;;sGAAlB;;YACX,KAAQ;MAAR;;;;;;;;;;6HAAgB,YAAU;;;6HAA1B,KAAQ;;;0EAAA;;UAEV,KAAQ;;;;;6CAAqB;;;;;;;;;;;;;;wIAAgB,YAAU;;;kHAAlB;;qBAAsB,QAAM;IAAjE;;;;;;;;;;2HAAgB,YAAU;;;2HAA1B,KAAQ;;;wEAAA;;GACT;EAcD,AAAA,WAMC,4BANgB,YAAqB,EAAE,QAAiB;4BAChD,QAAM;oDACN;;;;;;;;;;;2KAAgB,YAAU;;;;yHAAlB;;UACT,KAAiC,2BAA3B;;;;;;;;;;;;;;qIAAgB,YAAU;;;+GAAlB;4BACb,KAAG,IAAI,QAAM;UACpB,KAAQ,4BAAqB,KAAG,IAAG,QAAM;;mBAAZ,KAAG,GAAG,QAAM;IAAzC;;;;;;;;;;2HAAgB,YAAU;;;2HAA1B,KAAQ;;;wEAAA;;GACT;EAgBD,AAAA,oBAKC,4BALgC,QAAiB,EAAE,QAAgB;4BAC3D,QAAM;UACP,KAAmC,GAApB,QAAM;;;;8BACM,KAAG;;;4CACZ,QAAM;sBAAG,KAAG;;GACrC;EAyBD,AAAA,kBAUC,4BATC,QAAiB,EACjB,MAAsB;UAEhB,GAAkB,GAAL,MAAI;QAChB,GAAW;mCAAX,GAAC,QAAD,GAAW;;0CACX,GAAC;;;;uDACQ,GAAC;;;kCACK,GAAC;;kCAAyB,GAAC;;;4CACzB,QAAM;sBAAG,GAAC;;GACnC;EAsBD,AAAA,qBAiBC;;wBAhBC,QAAiB;wBACjB,QAAgB;wBAChB,WAA+C;;4BAExC,QAAM;4BAIX,WAAS;;2CACyB,WAAS;;;2CACb,WAAS;;UAGnC,SAAuC,GAApB,QAAM;;;2CACR,QAAM;qBAAG,SAAO;;;;2BACT,SAAO;2BAAW,WAAS;;GAC1D;EA+BD,AAAA,mBAmBC;;sBAlBC,QAAiB;sBACjB,QAAgB;sBAChB,WAA6B;sBAC7B,OAAgB;;4BAET,QAAM;;2CAI2B,WAAS;;UAC3C,SAA0B,GAAP,QAAM;;;2CACR,QAAM;qBAAG,SAAO;;;;qCAGrC,SAAO;qCACE,OAAK;kDACqC,WAAS;GAE/D;EAQD,AAAA,aAEC,4BAFyB,QAAiB;UAClC,KAAQ,yBAAsB,QAAM;mCAApC;;;;;;;;;;;;;;8HAAA,KAAQ;;;wGAAA;GAChB;EAwBD,AAAA,oBAeC,4BAdC,QAAgB,EAChB,WAA6B,EAC7B,OAAgB;;4BAET,QAAM;;2CAC2B,WAAS;;UAC3C,KAAsB,GAAP,QAAM;;;;8BACM,KAAG;;;;qCAGlC,KAAG;qCACM,OAAK;kDACqC,WAAS;GAE/D;EAoBD,AAAA,sBAeC,4BAdC,MAAsB,EACtB,WAA+C;UAEzC,GAAkB,GAAL,MAAI;QAChB,GAAW;mCAAX,GAAC,QAAD,GAAW;;0CACX,GAAC;;;;4BAEN,WAAS;;4CACyB,WAAS;;;4CACb,WAAS;;uDAGzB,GAAC;;;;2BACa,GAAC;2BAAiB,WAAS;;GAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA/WD;;;;;uCAAA;;;;;;;;;;;;;;;;4GAAkD;;;;;;uCAAlD;;;;;;;;;;;;4GAAkD;;;;;;;;;;;;;;uCAAlD;;;;;;;;;;;;;;;4GAAkD;;;;;;;;;;;;;;uCAAlD;;;;;;;;;;;;;;;;;4GAAkD;;;;;;;;;KAAA;IAWlD;sCAAA;;;;;;;;;;;2GAA6C;KAAA;IAM7C;sCAAA;;;;;;;;;;;2GAA+C;KAAA;IAM/C;qCAAA;;;;;;;;;;;0GAAwC;KAAA;;;;;;;;;;" + "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgHA;;;;;;;;;;MAUA,AAAA,IAAyD;;;;;;;;;;;;;;;;;;;;;;;OAAA;MAMzD,AAAA,MAA6D;;;;;;;;;;;;;;;;;;;;;;;OAAA;MAM7D,AAAA,QAAwD;;;;;;;;;;;;;;;;;;;;;;;OAAA;MAMxD,AAAA,UAA8D;;;;;;;;;;;;;;;;;;;;;;;OAAA;MAoE9D,AAAA,iBAKC;;;;;cALgC,QAAiB;cAAE,QAAgB;;;;;;;;;;;;;;;;;;;;;;;;;yCAAnC,QAAiB,+BAAE,QAAgB;;;;;;;;;yDAAnC,QAAiB;yDAAE,QAAgB;;;;OAKnE;MA0BD,AAAA,eAUC;;;;;cATC,QAAiB;cACjB,MAAsB;;;;;;;;;;;;;;;;;;;;;;;;;yCADtB,QAAiB,+BACjB,MAAsB;;;;;;;;;uDADtB,QAAiB;uDACjB,MAAsB;;;;OAQvB;MAsBD,AAAA,kBAiBC;;;;;cAhBC,QAAiB;cACjB,QAAgB;cAChB,WAA+C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAF/C,QAAiB,+BACjB,QAAgB,+BAChB,WAA+C;;;;;;;;;0DAF/C,QAAiB;0DACjB,QAAgB;0DAChB,WAA+C;;;;OAchD;MA+BD,AAAA,gBAmBC;;;;;cAlBC,QAAiB;cACjB,QAAgB;cAChB,WAA6B;cAC7B,OAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAHhB,QAAiB,+BACjB,QAAgB,+BAChB,WAA6B,+BAC7B,OAAgB;;;;;;;;;wDAHhB,QAAiB;wDACjB,QAAgB;wDAChB,WAA6B;wDAC7B,OAAgB;;;;OAejB;MAQD,AAAA,UAEC;;;;;cAFyB,QAAiB;;;;;;;;;;;;;;;;;;yCAAjB,QAAiB;;;;;;;;;kDAAjB,QAAiB;;;;OAE1C;MAwBD,AAAA,iBAeC;;;;;cAdC,QAAgB;cAChB,WAA6B;cAC7B,OAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yCAFhB,QAAgB,+BAChB,WAA6B,+BAC7B,OAAgB;;;;;;;;;yDAFhB,QAAgB;yDAChB,WAA6B;yDAC7B,OAAgB;;;;OAYjB;MAoBD,AAAA,mBAeC;;;;;cAdC,MAAsB;cACtB,WAA+C;;;;;;;;;;;;;;;;;;;;;;;;;yCAD/C,MAAsB,+BACtB,WAA+C;;;;;;;;;2DAD/C,MAAsB;2DACtB,WAA+C;;;;OAahD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAlTA;EAJD;;;;;UAAY,OAAuB;UAAE,SAAyB;UAAE,WAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA1DlF;;;;;;;;;;yEAAkD;IAWlD;;;;;;;;;yEAA6C;IAM7C;;;;;;;;;yEAA+C;IAM/C;;;;;;;;;yEAAwC;IAoCtC;;;;;;;4HAAiB,OAAK;;yEAAjB;IACL;;;;;;;4HAAmB,SAAO;;yEAAnB;IACP;;;;;;;2HAAqB,WAAS;;yEAArB;;;;;;;GACV;EC7FD,AAAA,QAAuB,0CACkB;EAGzC,AAAA;;;;;EAUA,AAAA,QAA0B;kCACkB;;EAD5C,AAAA,QAA0B;kCACkB;;EAG5C,AAAA,SAA2B;yEACqC;;EAsEhE,AAAA;;;EAKA,AAAA,aAAyB,cAAuB;qCACC,cAAY;;;EAG7D,AAAA;;6BACE;6BACA;6BACA;6BACA;;UAEM,kBAAiC;;yCAAwB;iEAAY;;;;;;;;;;;;4BAAuB;IAClG;;;;;;;;;;;2HAAoB;;;;;;2HAAY;;;;;;;;;;;;;yDACd,QAAM;UAClB,8BAAoB,QAAM;IAChC;;;;;;;;;;;2HAA2B;;;;;;SAEtB;;sBAAqB;8CAAyB;;;;;;;;;;;;;MACjD;;;;;;;;;;;6HAA6B;;;;;;;WAExB;;EAWT,AAAA;;;EAIA,AAAA,oDAA+B;UACvB,oDAAuD;;;;;;;;;;;;yDAC3C,QAAM;UACxB,+BAA4C,QAAM;IAAlD;;;;;;;;;;;2HAAA;;;;;;;;EAGF,AAAA,iDACE,SACA,aACA;;UAEM,qCAAW;;;;;;;;;;;;wDACA;UACjB,4DAA+D;wCAAQ;IAAvE;;;;;;;;;;;2HAAA;;;;;;QACe;UAAT,kBAAS;+CAAA,OAAc;;uBAAd,MAAc;UACvB;;;;;;wGACoI;8BAClH;8BACA;yDAEN,UAAQ;UAC1B,+BAA0C,UAAQ;IAAlD;;;;;;;;;;;2HAAA;;;;;;SAGK;;sBAAqB,yBAAyB;;YACjD,+BAA4C,UAAQ;MAApD;;;;;;;;;;;6HAAA;;;;;;;QAGE;6CACiE;;YAE7D;;;;;;8GAC0I;oCACpH;oCACA;;;gCAEV;8CAAuD;YACnE,8BAAoB;wDAAuD;MACjF;;;;;;;;;;;6HAA2B;;;;;;MAC3B;;;;;;;;;;;6HAA6B;;;;;;oCAC6B,qBAAmB;;;EAIjF,AAAA;;iCACE;iCACA;iCACA;;;;kEAEwC;sCAAQ;sCAAQ;;EAgC1D,AAAA,yBAA8B;oBACI,qBAAmB,qBAAmB;;EAGxE,AAAA,uBAA4B;oBACe;oBAAmB;oBAAmB;;;EAWjF,AAAA,kBACE,QACA;;;0CAKU;8CACI;;sCACJ;sCAAoB;sCAAuB;;EAIvD,AAAA,iBACE,QACA;;;0CAKU;;0CAEA;;EAwCZ,AAAA;;0BAA8B;0BAAkB;0BAAmB;;UACjE,qBAAuD;IAAvD;;;;;;;;;;;4HAAA;;;;;;2HAA+D;;;;;;;;;;;;;UAC/D,qBAA2D;IAA3D;;;;;;;;;;;;8HAAA;;6HAAmE;;;;;;;2HAAW;;;;;;;;;;;;;QAE1E;;sBAAqB;8CAAwB;;;;;;;;;;;;;YAC/C,qBAAsD;MAAtD;;;;;;;;;;;8HAAA;;;;;;6HAA8D;;;;;;;;;;;;;;;;EAIlE,AAAA,sDAAiC,SAAkB;UACjD,qBAAsD;IAAtD;;;;;;;;;;;4HAAA;;;;;;2HAA8D;;;;;;;;;;;;;;;EChUhE,AAAA,iBAAA;oEAAA;;;EAAA,AAAA,kBAAA;qEAAA;;;EAAA,AAAA,kBAAA;qEAAA;;;EAAA,AAAA,oBAAA,SAAA;;uDAAA;uDAAA;;;EAAA,AAAA,sBAAA;yDAAA;;;EAAA,AAAA,wBAAA;2DAAA;;;EAAA,AAAA,+CAAA;gEAAA;;;;;;;EAAA,AAAA,gDAAA,QAAA;;wDAAA;wDAAA;;;;;;;EFmFA,AAAA,aAEC;;GAAA;EAaD,AAAA,kBAEC;;qDADgC;;;;;;;;;;;0HAAM;GACtC;EAsBD,AAAA,aAAyD;oCAAR;;;;;;;;;;;yGAAK;GAAG;EAMzD,AAAA,eAA6D;oCAAV;;;;;;;;;;;yGAAO;GAAG;EAM7D,AAAA,iBAAwD;mCAAZ;;;;;;;;;;;wGAAS;GAAG;EAMxD,AAAA,mBAA8D;;GAAA;EAY9D,AAAA,gBAEC,CAFqB,QAAiB;;mCACoD,QAAM;GAChG;EAYD,AAAA,kBAMC,4BANiB,YAAqB,EAAE,QAAiB;4BACjD,QAAM;iCACR;;;;;;;;;;;wJAAgB,YAAU;;;;sGAAlB;;YACX,KAAQ;MAAR;;;;;;;;;;6HAAgB,YAAU;;;6HAA1B,KAAQ;;;0EAAA;;UAEV,KAAQ;;;;;6CAAqB;;;;;;;;;;;;;;wIAAgB,YAAU;;;kHAAlB;;qBAAsB,QAAM;IAAjE;;;;;;;;;;2HAAgB,YAAU;;;2HAA1B,KAAQ;;;wEAAA;;GACT;EAcD,AAAA,iBAMC,4BANgB,YAAqB,EAAE,QAAiB;4BAChD,QAAM;oDACN;;;;;;;;;;;2KAAgB,YAAU;;;;yHAAlB;;UACT,KAAiC,2BAA3B;;;;;;;;;;;;;;qIAAgB,YAAU;;;+GAAlB;4BACb,KAAG,IAAI,QAAM;UACpB,KAAQ,4BAAqB,KAAG,IAAG,QAAM;;mBAAZ,KAAG,GAAG,QAAM;IAAzC;;;;;;;;;;2HAAgB,YAAU;;;2HAA1B,KAAQ;;;wEAAA;;GACT;EAgBD,AAAA,0BAKC,4BALgC,QAAiB,EAAE,QAAgB;4BAC3D,QAAM;UACP,KAAmC,GAApB,QAAM;;;;oCACM,KAAG;;;kDACZ,QAAM;4BAAG,KAAG;;GACrC;EA0BD,AAAA,wBAUC,4BATC,QAAiB,EACjB,MAAsB;UAEhB,GAAkB,GAAL,MAAI;QAChB,GAAW;mCAAX,GAAC,QAAD,GAAW;;0CACX,GAAC;;;;6DACQ,GAAC;;;wCACK,GAAC;;wCAAyB,GAAC;;;kDACzB,QAAM;4BAAG,GAAC;;GACnC;EAsBD,AAAA,2BAiBC;;8BAhBC,QAAiB;8BACjB,QAAgB;8BAChB,WAA+C;;4BAExC,QAAM;4BAIX,WAAS;;2CACyB,WAAS;;;2CACb,WAAS;;UAGnC,SAAuC,GAApB,QAAM;;;iDACR,QAAM;2BAAG,SAAO;;;;iCACT,SAAO;iCAAW,WAAS;;GAC1D;EA+BD,AAAA,yBAmBC;;4BAlBC,QAAiB;4BACjB,QAAgB;4BAChB,WAA6B;4BAC7B,OAAgB;;4BAET,QAAM;;2CAI2B,WAAS;;UAC3C,SAA0B,GAAP,QAAM;;;iDACR,QAAM;2BAAG,SAAO;;;;2CAGrC,SAAO;2CACE,OAAK;wDACqC,WAAS;GAE/D;EAQD,AAAA,mBAEC,4BAFyB,QAAiB;UAClC,KAAQ,yBAAsB,QAAM;mCAApC;;;;;;;;;;;;;;8HAAA,KAAQ;;;wGAAA;GAChB;EAwBD,AAAA,0BAeC;;6BAdC,QAAgB;6BAChB,WAA6B;6BAC7B,OAAgB;;4BAET,QAAM;;2CAC2B,WAAS;;UAC3C,KAAsB,GAAP,QAAM;;;;oCACM,KAAG;;;;2CAGlC,KAAG;2CACM,OAAK;wDACqC,WAAS;GAE/D;EAoBD,AAAA,4BAeC,4BAdC,MAAsB,EACtB,WAA+C;UAEzC,GAAkB,GAAL,MAAI;QAChB,GAAW;mCAAX,GAAC,QAAD,GAAW;;0CACX,GAAC;;;;4BAEN,WAAS;;2CACyB,WAAS;;;4CACb,WAAS;;6DAGzB,GAAC;;;;iCACa,GAAC;iCAAiB,WAAS;;GAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAhXD;;;;;uCAAA;;;;;;;;;;;;;;;;4GAAkD;;;;;;uCAAlD;;;;;;;;;;;;4GAAkD;;;;;;;;;;;;;;uCAAlD;;;;;;;;;;;;;;;4GAAkD;;;;;;;;;;;;;;uCAAlD;;;;;;;;;;;;;;;;;4GAAkD;;;;;;;;;KAAA;IAWlD;sCAAA;;;;;;;;;;;2GAA6C;KAAA;IAM7C;sCAAA;;;;;;;;;;;2GAA+C;KAAA;IAM/C;qCAAA;;;;;;;;;;;0GAAwC;KAAA;;;;;;;;;;;;;;;;;;;;;;;;" } diff --git a/src/shielded-night.compact b/src/shielded-night.compact index c41e0f2..4210ab1 100644 --- a/src/shielded-night.compact +++ b/src/shielded-night.compact @@ -1,10 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 -// Pinned to the exact language version the deployed build was compiled with -// (toolchain 0.31.1 = compactc 0.31.101, language 0.23.101). An exact pin is -// what makes the byte-exact reproduction in README "Verifying the deployment" -// meaningful: a different language version would refuse to compile rather than -// silently emit different artifacts. -pragma language_version 0.23; +// Pinned to the exact language version the deployed build was compiled with. +// On this branch (`ledger-v9`) that is toolchain 0.34.0 = compactc 0.34.0, +// language 0.26.0, runtime 0.19.0, ledger 9. (`main` stays on toolchain 0.31.1 +// = language 0.23 for the 1.x/preview line.) An exact pin is what makes the +// byte-exact reproduction in README "Verifying the deployment" meaningful: a +// different language version would refuse to compile rather than silently emit +// different artifacts. +pragma language_version 0.26; import CompactStandardLibrary; @@ -224,7 +226,8 @@ export circuit depositUnshielded(secret: Bytes<32>, amount: Uint<64>): [] { * returned. * * @dev The burn transient requires a wallet on toolchain 0.31.101+ / ledger-v8 - * 8.1.0; older wallets failed to mark the spent input UTXO as spent. + * 8.1.0 (or, on this `ledger-v9` branch, toolchain 0.34.0 / ledger-v9 1.0.0-rc.3); + * older wallets failed to mark the spent input UTXO as spent. * * Requirements: * diff --git a/test/integration/shielded-night.combined.test.ts b/test/integration/shielded-night.combined.test.ts index a672706..a3b1def 100644 --- a/test/integration/shielded-night.combined.test.ts +++ b/test/integration/shielded-night.combined.test.ts @@ -1,4 +1,4 @@ -import * as ledgerV8 from '@midnight-ntwrk/ledger-v8'; +import * as ledgerV9 from '@midnightntwrk/ledger-v9'; import { describe, expect } from 'vitest'; import * as contract from '../support/shielded-night.js'; import { describeContract } from '../support/describe-contract.js'; @@ -14,7 +14,7 @@ import { } from '../support/wallet-observations.js'; const N = 1_000_000n; // 1 NIGHT -const NIGHT_HEX = ledgerV8.unshieldedToken().raw; +const NIGHT_HEX = ledgerV9.unshieldedToken().raw; /** * The decisive experiment: can a SINGLE transaction both receive unshielded diff --git a/test/integration/shielded-night.multiparty.test.ts b/test/integration/shielded-night.multiparty.test.ts index 6e84c3b..e1ed97e 100644 --- a/test/integration/shielded-night.multiparty.test.ts +++ b/test/integration/shielded-night.multiparty.test.ts @@ -16,9 +16,9 @@ import { waitForShieldedBalance, waitForUnshieldedBalance, } from '../support/wallet-observations.js'; -import * as ledgerV8 from '@midnight-ntwrk/ledger-v8'; +import * as ledgerV9 from '@midnightntwrk/ledger-v9'; -const NIGHT_HEX = ledgerV8.unshieldedToken().raw; +const NIGHT_HEX = ledgerV9.unshieldedToken().raw; const A_DEPOSIT = 1_000_000n; // A deposits this much native NIGHT const A_MINT = 200_000n; // A withdraws this much as the shielded wrapper diff --git a/test/integration/shielded-night.security.test.ts b/test/integration/shielded-night.security.test.ts index 6958c05..103ead0 100644 --- a/test/integration/shielded-night.security.test.ts +++ b/test/integration/shielded-night.security.test.ts @@ -1,4 +1,4 @@ -import * as ledgerV8 from '@midnight-ntwrk/ledger-v8'; +import * as ledgerV9 from '@midnightntwrk/ledger-v9'; import { describe, expect, test } from 'vitest'; import * as contract from '../support/shielded-night.js'; import { describeContract, describeContractWithWallets } from '../support/describe-contract.js'; @@ -13,7 +13,7 @@ import { waitForUnshieldedBalance, } from '../support/wallet-observations.js'; -const NIGHT_HEX = ledgerV8.unshieldedToken().raw; +const NIGHT_HEX = ledgerV9.unshieldedToken().raw; /** * On-chain attack scenarios. These need a real ledger: the properties under diff --git a/test/integration/shielded-night.test.ts b/test/integration/shielded-night.test.ts index 13c075e..9f1ac15 100644 --- a/test/integration/shielded-night.test.ts +++ b/test/integration/shielded-night.test.ts @@ -1,4 +1,4 @@ -import * as ledgerV8 from '@midnight-ntwrk/ledger-v8'; +import * as ledgerV9 from '@midnightntwrk/ledger-v9'; import { describe, expect, test } from 'vitest'; import * as contract from '../support/shielded-night.js'; import { describeContract, describeContractWithWallets } from '../support/describe-contract.js'; @@ -17,7 +17,7 @@ import { const N = 10_000_000n; // 10 NIGHT at 6 decimals /** Hex key of native NIGHT in the wallet's unshielded balance map. */ -const NIGHT_HEX = ledgerV8.unshieldedToken().raw; +const NIGHT_HEX = ledgerV9.unshieldedToken().raw; /** Flatten an error chain (Effect wrappers, causes) into searchable text. */ const errText = (err: unknown): string => { diff --git a/test/integration/shielded-night.transient.test.ts b/test/integration/shielded-night.transient.test.ts index 2fc7029..248d850 100644 --- a/test/integration/shielded-night.transient.test.ts +++ b/test/integration/shielded-night.transient.test.ts @@ -12,7 +12,7 @@ import { /** * `depositShielded` burns the received coin via `sendImmediateShielded` — a * same-transaction transient. Older wallet stacks mis-listed the result (the - * spent input UTXO still showed as spendable); toolchain 0.31.101 / ledger-v8 + * spent input UTXO still showed as spendable); toolchain 0.31.101 / ledger-v8 (v9 branch: 0.34.0 / ledger-v9) * 8.1.0 fixed that. These tests pin the fix, separating three questions: * * 1. Does the transaction build, balance, and apply on the current stack? diff --git a/test/support/contract-factory.ts b/test/support/contract-factory.ts index c5a0765..1157d84 100644 --- a/test/support/contract-factory.ts +++ b/test/support/contract-factory.ts @@ -1,7 +1,7 @@ import { type ContractAddress } from '@midnight-ntwrk/compact-runtime'; import { CompiledContract, type ProvableCircuitId } from '@midnight-ntwrk/compact-js'; import type { Contract } from '@midnight-ntwrk/compact-js/effect/Contract'; -import type { ChargedState } from '@midnight-ntwrk/ledger-v8'; +import type { ChargedState } from '@midnightntwrk/ledger-v9'; import type { Types } from 'effect'; import { deployContract, diff --git a/test/support/governance.ts b/test/support/governance.ts index facf26d..948a0f4 100644 --- a/test/support/governance.ts +++ b/test/support/governance.ts @@ -6,7 +6,7 @@ import { ReplaceAuthority, signData, Transaction, -} from '@midnight-ntwrk/ledger-v8'; +} from '@midnightntwrk/ledger-v9'; import { submitTx } from '@midnight-ntwrk/midnight-js/contracts'; import { getNetworkId } from '@midnight-ntwrk/midnight-js/network-id'; import { asContractAddress } from '@midnight-ntwrk/midnight-js/types'; diff --git a/test/support/provider-wiring.ts b/test/support/provider-wiring.ts index 7a46ced..4385804 100644 --- a/test/support/provider-wiring.ts +++ b/test/support/provider-wiring.ts @@ -1,4 +1,4 @@ -import { type FinalizedTransaction } from '@midnight-ntwrk/ledger-v8'; +import { type FinalizedTransaction } from '@midnightntwrk/ledger-v9'; import { httpClientProofProvider } from '@midnight-ntwrk/midnight-js-http-client-proof-provider'; import { indexerPublicDataProvider } from '@midnight-ntwrk/midnight-js-indexer-public-data-provider'; import { levelPrivateStateProvider } from '@midnight-ntwrk/midnight-js-level-private-state-provider'; @@ -26,9 +26,9 @@ export const createWalletAndMidnightProvider = async ( { shieldedSecretKeys: ctx.shieldedSecretKeys, dustSecretKey: ctx.dustSecretKey }, { ttl: ttl ?? new Date(Date.now() + 30 * 60 * 1000) }, ); - const signed = await ctx.wallet.signRecipe(recipe, (payload: Uint8Array) => - ctx.unshieldedKeystore.signData(payload), - ); + // ledger-v9: `SignSegment` is `(data) => Promise`; the keystore's own + // `signDataAsync` is the sanctioned adapter over the synchronous `signData`. + const signed = await ctx.wallet.signRecipe(recipe, ctx.unshieldedKeystore.signDataAsync); return ctx.wallet.finalizeRecipe(signed); }, submitTx(tx: FinalizedTransaction) { diff --git a/test/support/wallet-builder.ts b/test/support/wallet-builder.ts index 93f3d1c..7ab0d12 100644 --- a/test/support/wallet-builder.ts +++ b/test/support/wallet-builder.ts @@ -1,5 +1,5 @@ -import * as ledger from '@midnight-ntwrk/ledger-v8'; -import { unshieldedToken } from '@midnight-ntwrk/ledger-v8'; +import * as ledger from '@midnightntwrk/ledger-v9'; +import { unshieldedToken } from '@midnightntwrk/ledger-v9'; import { getNetworkId, setNetworkId } from '@midnight-ntwrk/midnight-js/network-id'; import { toHex } from '@midnight-ntwrk/midnight-js/utils'; // Single coherent wallet SDK via the barrel package — it re-exports the whole version-locked family, so we avoid @@ -21,6 +21,7 @@ import { TransactionHistoryStorage, UnshieldedAddress, type UnshieldedKeystore, + type UnshieldedSecretKey, UnshieldedWallet, WalletFacade, } from '@midnightntwrk/wallet-sdk'; @@ -115,6 +116,17 @@ const deriveKeysFromSeed = (seed: string) => { return result.keys; }; +/** + * Wrap a raw 32-byte NIGHT secret in the `UnshieldedSecretKey` envelope the ledger-v9 keystore takes. + * + * @dev ledger-v9 turned `SigningKey`/`SignatureVerifyingKey`/`Signature` from bare hex strings into + * `{ tag: SignatureKind, value: string }`, so `createKeystore` no longer accepts raw bytes. `schnorr` + * (BIP-340) is the kind ledger-v8 signed with implicitly, so it is what reproduces the SAME addresses + * this repo's `undeployed` seeds derived on the v8 line — anything else would silently derive a + * different, unfunded wallet. + */ +const unshieldedSecretKey = (secret: Uint8Array): UnshieldedSecretKey => ({ kind: 'schnorr', secret }); + const buildShieldedConfig = (cfg: NetworkConfig) => ({ networkId: getNetworkId(), indexerClientConnection: { indexerHttpUrl: cfg.indexer, indexerWsUrl: cfg.indexerWS }, @@ -125,7 +137,7 @@ const buildShieldedConfig = (cfg: NetworkConfig) => ({ const buildUnshieldedConfig = (cfg: NetworkConfig) => ({ networkId: getNetworkId(), indexerClientConnection: { indexerHttpUrl: cfg.indexer, indexerWsUrl: cfg.indexerWS }, - txHistoryStorage: new InMemoryTransactionHistoryStorage(TransactionHistoryStorage.TransactionHistoryCommonSchema), + txHistoryStorage: new InMemoryTransactionHistoryStorage(TransactionHistoryStorage.TransactionHistoryEntryCommonSchema), }); const buildDustConfig = (cfg: NetworkConfig) => ({ @@ -316,7 +328,7 @@ const registerForDustGeneration = async ( const recipe = await wallet.registerNightUtxosForDustGeneration( nightUtxos, unshieldedKeystore.getPublicKey(), - (payload) => unshieldedKeystore.signData(payload), + unshieldedKeystore.signDataAsync, ); const finalized = await wallet.finalizeRecipe(recipe); await wallet.submitTransaction(finalized); @@ -345,7 +357,7 @@ export const buildWallet = async ( const keys = deriveKeysFromSeed(seed); const shieldedSecretKeys = ledger.ZswapSecretKeys.fromSeed(keys[Roles.Zswap]); const dustSecretKey = ledger.DustSecretKey.fromSeed(keys[Roles.Dust]); - const unshieldedKeystore = createKeystore(keys[Roles.NightExternal], getNetworkId()); + const unshieldedKeystore = createKeystore(unshieldedSecretKey(keys[Roles.NightExternal]), getNetworkId()); const walletConfig = { ...buildShieldedConfig(cfg), @@ -564,7 +576,7 @@ export const deriveUnshieldedAddressFromSeed = ( seed: string, ): { readonly encoded: string; readonly bytes: Uint8Array } => { const keys = deriveKeysFromSeed(seed); - const keystore = createKeystore(keys[Roles.NightExternal], getNetworkId()); + const keystore = createKeystore(unshieldedSecretKey(keys[Roles.NightExternal]), getNetworkId()); const bech = keystore.getBech32Address(); return { encoded: bech.asString(), bytes: bech.data }; }; diff --git a/test/support/wallet-observations.ts b/test/support/wallet-observations.ts index cd0511c..01753fb 100644 --- a/test/support/wallet-observations.ts +++ b/test/support/wallet-observations.ts @@ -1,4 +1,4 @@ -import * as ledger from '@midnight-ntwrk/ledger-v8'; +import * as ledger from '@midnightntwrk/ledger-v9'; import { type FacadeState, type WalletFacade } from '@midnightntwrk/wallet-sdk'; import * as Rx from 'rxjs'; import { firstSyncedState, type WalletContext } from './wallet-builder.js'; diff --git a/test/support/wallet-transfer.ts b/test/support/wallet-transfer.ts index b3ab15e..d04320a 100644 --- a/test/support/wallet-transfer.ts +++ b/test/support/wallet-transfer.ts @@ -1,4 +1,4 @@ -import * as ledger from '@midnight-ntwrk/ledger-v8'; +import * as ledger from '@midnightntwrk/ledger-v9'; import { ShieldedAddress, ShieldedCoinPublicKey, @@ -105,7 +105,7 @@ export const transferShielded = async ( { shieldedSecretKeys: from.shieldedSecretKeys, dustSecretKey: from.dustSecretKey }, { ttl: new Date(Date.now() + DEFAULT_TTL_MS) }, ); - const signed = await wallet.signRecipe(recipe, (p: Uint8Array) => from.unshieldedKeystore.signData(p)); + const signed = await wallet.signRecipe(recipe, from.unshieldedKeystore.signDataAsync); const finalized = await wallet.finalizeRecipe(signed); return wallet.submitTransaction(finalized); }; diff --git a/test/unit/shielded-night.combined.unit.test.ts b/test/unit/shielded-night.combined.unit.test.ts index a412c99..36abe41 100644 --- a/test/unit/shielded-night.combined.unit.test.ts +++ b/test/unit/shielded-night.combined.unit.test.ts @@ -26,55 +26,55 @@ const ZERO32 = new Uint8Array(32); describe('ShieldedNight combined circuits (simulator)', () => { let contract: ShieldedNightSimulator; - beforeEach(() => { - contract = new ShieldedNightSimulator('Shielded Night', 'sNight', 6n); + beforeEach(async () => { + contract = await ShieldedNightSimulator.create('Shielded Night', 'sNight', 6n); }); describe('convertToShielded', () => { - it('mints a wrapper coin of the exact amount with the contract color', () => { - const coin = contract.convertToShielded(N, RECIPIENT, b32('n')); + it('mints a wrapper coin of the exact amount with the contract color', async () => { + const coin = await contract.convertToShielded(N, RECIPIENT, b32('n')); expect(coin.value).toBe(N); - expect(coin.color).toEqual(contract.tokenColor()); + expect(coin.color).toEqual(await contract.tokenColor()); expect(coin.nonce).toEqual(b32('n')); }); - it('does not touch the credit map (no secret, atomic)', () => { - contract.convertToShielded(N, RECIPIENT, b32('n')); + it('does not touch the credit map (no secret, atomic)', async () => { + await contract.convertToShielded(N, RECIPIENT, b32('n')); expect(contract.getLedger().balances.isEmpty()).toBe(true); }); - it('rejects a zero amount', () => { - expect(() => contract.convertToShielded(0n, RECIPIENT, b32('n'))).toThrow('amount must be positive'); + it('rejects a zero amount', async () => { + await expect(contract.convertToShielded(0n, RECIPIENT, b32('n'))).rejects.toThrow('amount must be positive'); }); - it('rejects the zero recipient (burn address)', () => { - expect(() => contract.convertToShielded(N, { bytes: ZERO32 }, b32('n'))).toThrow('invalid recipient'); + it('rejects the zero recipient (burn address)', async () => { + await expect(contract.convertToShielded(N, { bytes: ZERO32 }, b32('n'))).rejects.toThrow('invalid recipient'); }); }); describe('convertToUnshielded', () => { let coin: ShieldedCoin; - beforeEach(() => { - coin = contract.convertToShielded(N, RECIPIENT, b32('n')); + beforeEach(async () => { + coin = await contract.convertToShielded(N, RECIPIENT, b32('n')); }); - it('accepts a wrapper coin and releases NIGHT (no throw, no credit touched)', () => { - expect(() => contract.convertToUnshielded(coin, USER)).not.toThrow(); + it('accepts a wrapper coin and releases NIGHT (no throw, no credit touched)', async () => { + await expect(contract.convertToUnshielded(coin, USER)).resolves.not.toThrow(); expect(contract.getLedger().balances.isEmpty()).toBe(true); }); - it('rejects a coin that is not the contract wrapper', () => { + it('rejects a coin that is not the contract wrapper', async () => { const foreign = { ...coin, color: coin.color.slice() }; foreign.color[0] ^= 0xff; - expect(() => contract.convertToUnshielded(foreign, USER)).toThrow("not this contract's shielded wrapper"); + await expect(contract.convertToUnshielded(foreign, USER)).rejects.toThrow("not this contract's shielded wrapper"); }); - it('rejects a zero-value coin', () => { - expect(() => contract.convertToUnshielded({ ...coin, value: 0n }, USER)).toThrow('coin value must be positive'); + it('rejects a zero-value coin', async () => { + await expect(contract.convertToUnshielded({ ...coin, value: 0n }, USER)).rejects.toThrow('coin value must be positive'); }); - it('rejects the zero unshielded recipient', () => { - expect(() => contract.convertToUnshielded(coin, rightUserAddress(ZERO32))).toThrow('invalid recipient'); + it('rejects the zero unshielded recipient', async () => { + await expect(contract.convertToUnshielded(coin, rightUserAddress(ZERO32))).rejects.toThrow('invalid recipient'); }); }); }); diff --git a/test/unit/shielded-night.security.unit.test.ts b/test/unit/shielded-night.security.unit.test.ts index ae25563..13592fc 100644 --- a/test/unit/shielded-night.security.unit.test.ts +++ b/test/unit/shielded-night.security.unit.test.ts @@ -38,154 +38,140 @@ const ZERO32 = new Uint8Array(32); describe('ShieldedNight security / border cases (simulator)', () => { let contract: ShieldedNightSimulator; - beforeEach(() => { - contract = new ShieldedNightSimulator(NAME, SYMBOL, DECIMALS); + beforeEach(async () => { + contract = await ShieldedNightSimulator.create(NAME, SYMBOL, DECIMALS); }); describe('value ranges and overflow', () => { - it('accepts the maximum single unshielded deposit (2^64 - 1)', () => { - contract.depositUnshielded(SECRET, MAX64); - expect(contract.getBalance(SECRET)).toBe(MAX64); + it('accepts the maximum single unshielded deposit (2^64 - 1)', async () => { + await contract.depositUnshielded(SECRET, MAX64); + expect(await contract.getBalance(SECRET)).toBe(MAX64); }); - it('rejects out-of-range circuit arguments at the encoding layer', () => { + it('rejects out-of-range circuit arguments at the encoding layer', async () => { // Uint<64> args: negative and > 2^64-1 never reach the circuit body. - expect(() => contract.depositUnshielded(SECRET, -1n)).toThrow(/expected value of type/); - expect(() => contract.depositUnshielded(SECRET, MAX64 + 1n)).toThrow(/expected value of type/); - expect(() => - contract.withdrawShielded(SECRET, MAX64 + 1n, RECIPIENT, b32('n')), - ).toThrow(/expected value of type/); + await expect(contract.depositUnshielded(SECRET, -1n)).rejects.toThrow(/expected value of type/); + await expect(contract.depositUnshielded(SECRET, MAX64 + 1n)).rejects.toThrow(/expected value of type/); + await expect(contract.withdrawShielded(SECRET, MAX64 + 1n, RECIPIENT, b32('n'))).rejects.toThrow(/expected value of type/); }); - it('caps shielded coin values at 2^64 - 1 (zswap layer), despite the Uint<128> field', () => { - const color = contract.tokenColor(); + it('caps shielded coin values at 2^64 - 1 (zswap layer), despite the Uint<128> field', async () => { + const color = await contract.tokenColor(); // At the cap: accepted and credited in full. - contract.depositShielded(SECRET, { nonce: b32('n1'), color, value: MAX64 }); - expect(contract.getBalance(SECRET)).toBe(MAX64); + await contract.depositShielded(SECRET, { nonce: b32('n1'), color, value: MAX64 }); + expect(await contract.getBalance(SECRET)).toBe(MAX64); // One past the cap: rejected before any state change. - expect(() => - contract.depositShielded(SECRET, { nonce: b32('n2'), color, value: MAX64 + 1n }), - ).toThrow(); - expect(contract.getBalance(SECRET)).toBe(MAX64); + await expect(contract.depositShielded(SECRET, { nonce: b32('n2'), color, value: MAX64 + 1n })).rejects.toThrow(); + expect(await contract.getBalance(SECRET)).toBe(MAX64); }); - it('accumulates a credit balance beyond 2^64 without wrapping', () => { + it('accumulates a credit balance beyond 2^64 without wrapping', async () => { // The Uint<128> balance must keep counting where a 64-bit field would // wrap to zero (which would silently erase deposits). - const color = contract.tokenColor(); - contract.depositShielded(SECRET, { nonce: b32('n1'), color, value: MAX64 }); - contract.depositShielded(SECRET, { nonce: b32('n2'), color, value: MAX64 }); - expect(contract.getBalance(SECRET)).toBe(2n * MAX64); + const color = await contract.tokenColor(); + await contract.depositShielded(SECRET, { nonce: b32('n1'), color, value: MAX64 }); + await contract.depositShielded(SECRET, { nonce: b32('n2'), color, value: MAX64 }); + expect(await contract.getBalance(SECRET)).toBe(2n * MAX64); // Note: overflowing the Uint<128> credit itself would take ~2^64 // max-value operations — unreachable given the zswap 2^64 coin cap. }); }); describe('withdrawal boundaries', () => { - beforeEach(() => { - contract.depositUnshielded(SECRET, 100n); + beforeEach(async () => { + await contract.depositUnshielded(SECRET, 100n); }); - it('allows withdrawing the exact balance, then nothing more', () => { - contract.withdrawUnshielded(SECRET, 100n, USER); - expect(contract.getBalance(SECRET)).toBe(0n); - expect(() => contract.withdrawUnshielded(SECRET, 1n, USER)).toThrow( + it('allows withdrawing the exact balance, then nothing more', async () => { + await contract.withdrawUnshielded(SECRET, 100n, USER); + expect(await contract.getBalance(SECRET)).toBe(0n); + await expect(contract.withdrawUnshielded(SECRET, 1n, USER)).rejects.toThrow( 'insufficient pool balance', ); }); - it('rejects overdrawing by exactly one unit', () => { - expect(() => contract.withdrawUnshielded(SECRET, 101n, USER)).toThrow( + it('rejects overdrawing by exactly one unit', async () => { + await expect(contract.withdrawUnshielded(SECRET, 101n, USER)).rejects.toThrow( 'insufficient pool balance', ); }); - it('keeps a drained key readable as zero (distinct from never-used)', () => { - contract.withdrawUnshielded(SECRET, 100n, USER); - expect(contract.getBalance(SECRET)).toBe(0n); // drained: entry exists at 0 - expect(() => contract.getBalance(b32('never-used'))).toThrow(); // never-used: reverts + it('keeps a drained key readable as zero (distinct from never-used)', async () => { + await contract.withdrawUnshielded(SECRET, 100n, USER); + expect(await contract.getBalance(SECRET)).toBe(0n); // drained: entry exists at 0 + await expect(contract.getBalance(b32('never-used'))).rejects.toThrow(); // never-used: reverts }); - it('leaves the balance untouched after a failed withdrawal', () => { - expect(() => contract.withdrawUnshielded(SECRET, 101n, USER)).toThrow(); - expect(() => - contract.withdrawShielded(SECRET, 101n, RECIPIENT, b32('n')), - ).toThrow(); - expect(contract.getBalance(SECRET)).toBe(100n); + it('leaves the balance untouched after a failed withdrawal', async () => { + await expect(contract.withdrawUnshielded(SECRET, 101n, USER)).rejects.toThrow(); + await expect(contract.withdrawShielded(SECRET, 101n, RECIPIENT, b32('n'))).rejects.toThrow(); + expect(await contract.getBalance(SECRET)).toBe(100n); }); }); describe('balance-key isolation', () => { - it('treats the all-zero secret as a valid, independent key', () => { - contract.depositUnshielded(ZERO32, 7n); - contract.depositUnshielded(SECRET, 9n); - expect(contract.getBalance(ZERO32)).toBe(7n); - expect(contract.getBalance(SECRET)).toBe(9n); + it('treats the all-zero secret as a valid, independent key', async () => { + await contract.depositUnshielded(ZERO32, 7n); + await contract.depositUnshielded(SECRET, 9n); + expect(await contract.getBalance(ZERO32)).toBe(7n); + expect(await contract.getBalance(SECRET)).toBe(9n); }); - it('separates secrets that differ by a single bit', () => { + it('separates secrets that differ by a single bit', async () => { const a = b32('twin'); const b = a.slice(); b[31] ^= 0x01; - contract.depositUnshielded(a, 11n); - expect(contract.getBalance(a)).toBe(11n); - expect(() => contract.getBalance(b)).toThrow(); // sibling key never credited - expect(() => contract.withdrawUnshielded(b, 11n, USER)).toThrow( + await contract.depositUnshielded(a, 11n); + expect(await contract.getBalance(a)).toBe(11n); + await expect(contract.getBalance(b)).rejects.toThrow(); // sibling key never credited + await expect(contract.withdrawUnshielded(b, 11n, USER)).rejects.toThrow( 'no balance for this secret', ); }); }); describe('loss guards: zero recipients (Midnight burn address)', () => { - beforeEach(() => { - contract.depositUnshielded(SECRET, 100n); + beforeEach(async () => { + await contract.depositUnshielded(SECRET, 100n); }); - it('refuses to mint the wrapper to the zero coin public key', () => { - expect(() => - contract.withdrawShielded(SECRET, 50n, { bytes: ZERO32 }, b32('n')), - ).toThrow('invalid recipient'); - expect(contract.getBalance(SECRET)).toBe(100n); + it('refuses to mint the wrapper to the zero coin public key', async () => { + await expect(contract.withdrawShielded(SECRET, 50n, { bytes: ZERO32 }, b32('n'))).rejects.toThrow('invalid recipient'); + expect(await contract.getBalance(SECRET)).toBe(100n); }); - it('refuses to release NIGHT to the zero user address', () => { - expect(() => - contract.withdrawUnshielded(SECRET, 50n, rightUserAddress(ZERO32)), - ).toThrow('invalid recipient'); - expect(contract.getBalance(SECRET)).toBe(100n); + it('refuses to release NIGHT to the zero user address', async () => { + await expect(contract.withdrawUnshielded(SECRET, 50n, rightUserAddress(ZERO32))).rejects.toThrow('invalid recipient'); + expect(await contract.getBalance(SECRET)).toBe(100n); }); - it('refuses to release NIGHT to the zero contract address', () => { - expect(() => - contract.withdrawUnshielded(SECRET, 50n, { + it('refuses to release NIGHT to the zero contract address', async () => { + await expect(contract.withdrawUnshielded(SECRET, 50n, { is_left: true, left: { bytes: ZERO32 }, right: { bytes: ZERO32 }, - }), - ).toThrow('invalid recipient'); + })).rejects.toThrow('invalid recipient'); }); - it('still allows non-zero contract recipients', () => { - contract.withdrawUnshielded(SECRET, 50n, { + it('still allows non-zero contract recipients', async () => { + await contract.withdrawUnshielded(SECRET, 50n, { is_left: true, left: { bytes: b32('some-contract') }, right: { bytes: ZERO32 }, }); - expect(contract.getBalance(SECRET)).toBe(50n); + expect(await contract.getBalance(SECRET)).toBe(50n); }); }); describe('deposit guards', () => { - it('rejects a shielded coin whose color differs from the wrapper in one byte', () => { - const color = contract.tokenColor().slice(); + it('rejects a shielded coin whose color differs from the wrapper in one byte', async () => { + const color = (await contract.tokenColor()).slice(); color[31] ^= 0x01; - expect(() => - contract.depositShielded(SECRET, { nonce: b32('n'), color, value: 5n }), - ).toThrow("not this contract's shielded wrapper"); + await expect(contract.depositShielded(SECRET, { nonce: b32('n'), color, value: 5n })).rejects.toThrow("not this contract's shielded wrapper"); }); - it('keeps metadata immutable across state-changing calls', () => { - contract.depositUnshielded(SECRET, 5n); + it('keeps metadata immutable across state-changing calls', async () => { + await contract.depositUnshielded(SECRET, 5n); const l = contract.getLedger(); expect(l._name).toBe(NAME); expect(l._symbol).toBe(SYMBOL); @@ -194,29 +180,27 @@ describe('ShieldedNight security / border cases (simulator)', () => { }); describe('combined circuits: value ranges', () => { - it('convertToShielded mints the maximum single amount (2^64 - 1)', () => { - const coin = contract.convertToShielded(MAX64, RECIPIENT, b32('n')); + it('convertToShielded mints the maximum single amount (2^64 - 1)', async () => { + const coin = await contract.convertToShielded(MAX64, RECIPIENT, b32('n')); expect(coin.value).toBe(MAX64); - expect(coin.color).toEqual(contract.tokenColor()); + expect(coin.color).toEqual(await contract.tokenColor()); }); - it('convertToShielded rejects out-of-range amounts at the encoding layer', () => { - expect(() => contract.convertToShielded(-1n, RECIPIENT, b32('n'))).toThrow( + it('convertToShielded rejects out-of-range amounts at the encoding layer', async () => { + await expect(contract.convertToShielded(-1n, RECIPIENT, b32('n'))).rejects.toThrow( /expected value of type/, ); - expect(() => contract.convertToShielded(MAX64 + 1n, RECIPIENT, b32('n'))).toThrow( + await expect(contract.convertToShielded(MAX64 + 1n, RECIPIENT, b32('n'))).rejects.toThrow( /expected value of type/, ); }); - it('convertToUnshielded releases the maximum coin value and rejects one past the zswap cap', () => { - const color = contract.tokenColor(); + it('convertToUnshielded releases the maximum coin value and rejects one past the zswap cap', async () => { + const color = await contract.tokenColor(); // At the cap: accepted (the Uint<128> field notwithstanding, zswap coins top out at 2^64-1). - contract.convertToUnshielded({ nonce: b32('n1'), color, value: MAX64 }, USER); + await contract.convertToUnshielded({ nonce: b32('n1'), color, value: MAX64 }, USER); // One past the cap: rejected before any state change. - expect(() => - contract.convertToUnshielded({ nonce: b32('n2'), color, value: MAX64 + 1n }, USER), - ).toThrow(); + await expect(contract.convertToUnshielded({ nonce: b32('n2'), color, value: MAX64 + 1n }, USER)).rejects.toThrow(); }); }); @@ -224,20 +208,18 @@ describe('ShieldedNight security / border cases (simulator)', () => { // The combined suite covers the zero USER address; these pin the other // Either branch — releasing NIGHT to the zero CONTRACT address would // strand it just as irrecoverably. - it('convertToUnshielded refuses the zero contract recipient (left branch)', () => { - const coin = contract.convertToShielded(100n, RECIPIENT, b32('n')); - expect(() => - contract.convertToUnshielded(coin, { + it('convertToUnshielded refuses the zero contract recipient (left branch)', async () => { + const coin = await contract.convertToShielded(100n, RECIPIENT, b32('n')); + await expect(contract.convertToUnshielded(coin, { is_left: true, left: { bytes: ZERO32 }, right: { bytes: ZERO32 }, - }), - ).toThrow('invalid recipient'); + })).rejects.toThrow('invalid recipient'); }); - it('convertToUnshielded still allows non-zero contract recipients', () => { - const coin = contract.convertToShielded(100n, RECIPIENT, b32('n')); - contract.convertToUnshielded(coin, { + it('convertToUnshielded still allows non-zero contract recipients', async () => { + const coin = await contract.convertToShielded(100n, RECIPIENT, b32('n')); + await contract.convertToUnshielded(coin, { is_left: true, left: { bytes: b32('some-contract') }, right: { bytes: ZERO32 }, @@ -249,32 +231,30 @@ describe('ShieldedNight security / border cases (simulator)', () => { // Both models mint the SAME wrapper color, so coins are interchangeable // across them. Users will mix frontends/flows; a color split between the // mint paths would strand one side's coins. - it('redeems a two-step-minted coin through the atomic path', () => { - contract.depositUnshielded(SECRET, 100n); - const twoStep = contract.withdrawShielded(SECRET, 100n, RECIPIENT, b32('n1')); - const atomic = contract.convertToShielded(100n, RECIPIENT, b32('n2')); + it('redeems a two-step-minted coin through the atomic path', async () => { + await contract.depositUnshielded(SECRET, 100n); + const twoStep = await contract.withdrawShielded(SECRET, 100n, RECIPIENT, b32('n1')); + const atomic = await contract.convertToShielded(100n, RECIPIENT, b32('n2')); expect(atomic.color).toEqual(twoStep.color); // one color across both mint paths - contract.convertToUnshielded(twoStep, USER); - expect(contract.getBalance(SECRET)).toBe(0n); // drained credit untouched by the convert + await contract.convertToUnshielded(twoStep, USER); + expect(await contract.getBalance(SECRET)).toBe(0n); // drained credit untouched by the convert }); - it('burns an atomically-minted coin through the two-step credit path', () => { - const coin = contract.convertToShielded(100n, RECIPIENT, b32('n')); - contract.depositShielded(SECRET, coin); - expect(contract.getBalance(SECRET)).toBe(100n); - contract.withdrawUnshielded(SECRET, 100n, USER); - expect(contract.getBalance(SECRET)).toBe(0n); + it('burns an atomically-minted coin through the two-step credit path', async () => { + const coin = await contract.convertToShielded(100n, RECIPIENT, b32('n')); + await contract.depositShielded(SECRET, coin); + expect(await contract.getBalance(SECRET)).toBe(100n); + await contract.withdrawUnshielded(SECRET, 100n, USER); + expect(await contract.getBalance(SECRET)).toBe(0n); }); - it('failed converts leave existing credits untouched', () => { - contract.depositUnshielded(SECRET, 100n); - expect(() => - contract.convertToUnshielded({ nonce: b32('n'), color: b32('foreign'), value: 5n }, USER), - ).toThrow("not this contract's shielded wrapper"); - expect(() => contract.convertToShielded(0n, RECIPIENT, b32('n'))).toThrow( + it('failed converts leave existing credits untouched', async () => { + await contract.depositUnshielded(SECRET, 100n); + await expect(contract.convertToUnshielded({ nonce: b32('n'), color: b32('foreign'), value: 5n }, USER)).rejects.toThrow("not this contract's shielded wrapper"); + await expect(contract.convertToShielded(0n, RECIPIENT, b32('n'))).rejects.toThrow( 'amount must be positive', ); - expect(contract.getBalance(SECRET)).toBe(100n); + expect(await contract.getBalance(SECRET)).toBe(100n); expect(contract.getLedger().balances.size()).toBe(1n); }); }); diff --git a/test/unit/shielded-night.unit.test.ts b/test/unit/shielded-night.unit.test.ts index 1946e04..b32596b 100644 --- a/test/unit/shielded-night.unit.test.ts +++ b/test/unit/shielded-night.unit.test.ts @@ -25,15 +25,15 @@ const USER = rightUserAddress(b32('user-address')); describe('ShieldedNight (simulator)', () => { let contract: ShieldedNightSimulator; - beforeEach(() => { - contract = new ShieldedNightSimulator(NAME, SYMBOL, DECIMALS); + beforeEach(async () => { + contract = await ShieldedNightSimulator.create(NAME, SYMBOL, DECIMALS); }); describe('metadata', () => { - it('echoes constructor args through the metadata circuits', () => { - expect(contract.name()).toBe(NAME); - expect(contract.symbol()).toBe(SYMBOL); - expect(contract.decimals()).toBe(DECIMALS); + it('echoes constructor args through the metadata circuits', async () => { + expect(await contract.name()).toBe(NAME); + expect(await contract.symbol()).toBe(SYMBOL); + expect(await contract.decimals()).toBe(DECIMALS); }); it('exposes the sealed metadata directly on the ledger', () => { @@ -47,9 +47,9 @@ describe('ShieldedNight (simulator)', () => { expect(contract.getLedger().balances.isEmpty()).toBe(true); }); - it('returns a stable 32-byte wrapper color', () => { - const c1 = contract.tokenColor(); - const c2 = contract.tokenColor(); + it('returns a stable 32-byte wrapper color', async () => { + const c1 = await contract.tokenColor(); + const c2 = await contract.tokenColor(); expect(c1).toHaveLength(32); expect(c1).toEqual(c2); expect(c1.some((b) => b !== 0)).toBe(true); @@ -57,152 +57,144 @@ describe('ShieldedNight (simulator)', () => { }); describe('depositUnshielded', () => { - it('credits the balance under hash(secret)', () => { - contract.depositUnshielded(SECRET_A, N); - expect(contract.getBalance(SECRET_A)).toBe(N); + it('credits the balance under hash(secret)', async () => { + await contract.depositUnshielded(SECRET_A, N); + expect(await contract.getBalance(SECRET_A)).toBe(N); }); - it('accumulates across deposits', () => { - contract.depositUnshielded(SECRET_A, N); - contract.depositUnshielded(SECRET_A, 5n); - expect(contract.getBalance(SECRET_A)).toBe(N + 5n); + it('accumulates across deposits', async () => { + await contract.depositUnshielded(SECRET_A, N); + await contract.depositUnshielded(SECRET_A, 5n); + expect(await contract.getBalance(SECRET_A)).toBe(N + 5n); }); - it('keeps balances of distinct secrets independent', () => { - contract.depositUnshielded(SECRET_A, N); - contract.depositUnshielded(SECRET_B, 7n); - expect(contract.getBalance(SECRET_A)).toBe(N); - expect(contract.getBalance(SECRET_B)).toBe(7n); + it('keeps balances of distinct secrets independent', async () => { + await contract.depositUnshielded(SECRET_A, N); + await contract.depositUnshielded(SECRET_B, 7n); + expect(await contract.getBalance(SECRET_A)).toBe(N); + expect(await contract.getBalance(SECRET_B)).toBe(7n); expect(contract.getLedger().balances.size()).toBe(2n); }); - it('rejects a zero amount', () => { - expect(() => contract.depositUnshielded(SECRET_A, 0n)).toThrow( + it('rejects a zero amount', async () => { + await expect(contract.depositUnshielded(SECRET_A, 0n)).rejects.toThrow( 'amount must be positive', ); }); }); describe('withdrawShielded', () => { - beforeEach(() => { - contract.depositUnshielded(SECRET_A, N); + beforeEach(async () => { + await contract.depositUnshielded(SECRET_A, N); }); - it('debits the balance and mints a wrapper coin with the given nonce', () => { + it('debits the balance and mints a wrapper coin with the given nonce', async () => { const nonce = b32('mint-nonce'); - const coin = contract.withdrawShielded(SECRET_A, N, RECIPIENT, nonce); + const coin = await contract.withdrawShielded(SECRET_A, N, RECIPIENT, nonce); expect(coin.value).toBe(N); expect(coin.nonce).toEqual(nonce); - expect(coin.color).toEqual(contract.tokenColor()); - expect(contract.getBalance(SECRET_A)).toBe(0n); + expect(coin.color).toEqual(await contract.tokenColor()); + expect(await contract.getBalance(SECRET_A)).toBe(0n); }); - it('supports partial withdrawal', () => { - contract.withdrawShielded(SECRET_A, N / 2n, RECIPIENT, b32('n1')); - expect(contract.getBalance(SECRET_A)).toBe(N - N / 2n); + it('supports partial withdrawal', async () => { + await contract.withdrawShielded(SECRET_A, N / 2n, RECIPIENT, b32('n1')); + expect(await contract.getBalance(SECRET_A)).toBe(N - N / 2n); }); - it('rejects a zero amount', () => { - expect(() => - contract.withdrawShielded(SECRET_A, 0n, RECIPIENT, b32('n')), - ).toThrow('amount must be positive'); + it('rejects a zero amount', async () => { + await expect(contract.withdrawShielded(SECRET_A, 0n, RECIPIENT, b32('n'))).rejects.toThrow('amount must be positive'); }); - it('rejects an unknown secret', () => { - expect(() => - contract.withdrawShielded(SECRET_B, 1n, RECIPIENT, b32('n')), - ).toThrow('no balance for this secret'); + it('rejects an unknown secret', async () => { + await expect(contract.withdrawShielded(SECRET_B, 1n, RECIPIENT, b32('n'))).rejects.toThrow('no balance for this secret'); }); - it('rejects withdrawing more than the balance', () => { - expect(() => - contract.withdrawShielded(SECRET_A, N + 1n, RECIPIENT, b32('n')), - ).toThrow('insufficient pool balance'); + it('rejects withdrawing more than the balance', async () => { + await expect(contract.withdrawShielded(SECRET_A, N + 1n, RECIPIENT, b32('n'))).rejects.toThrow('insufficient pool balance'); }); }); describe('depositShielded', () => { let coin: ShieldedCoin; - beforeEach(() => { - contract.depositUnshielded(SECRET_A, N); - coin = contract.withdrawShielded(SECRET_A, N, RECIPIENT, b32('n')); + beforeEach(async () => { + await contract.depositUnshielded(SECRET_A, N); + coin = await contract.withdrawShielded(SECRET_A, N, RECIPIENT, b32('n')); }); - it('credits the balance by the full coin value', () => { - contract.depositShielded(SECRET_A, coin); - expect(contract.getBalance(SECRET_A)).toBe(N); + it('credits the balance by the full coin value', async () => { + await contract.depositShielded(SECRET_A, coin); + expect(await contract.getBalance(SECRET_A)).toBe(N); }); - it('credits a different secret than the one that minted', () => { - contract.depositShielded(SECRET_B, coin); - expect(contract.getBalance(SECRET_B)).toBe(N); + it('credits a different secret than the one that minted', async () => { + await contract.depositShielded(SECRET_B, coin); + expect(await contract.getBalance(SECRET_B)).toBe(N); }); - it('rejects a coin that is not the contract wrapper', () => { + it('rejects a coin that is not the contract wrapper', async () => { const foreign = { ...coin, color: coin.color.slice() }; foreign.color[0] ^= 0xff; - expect(() => contract.depositShielded(SECRET_A, foreign)).toThrow( + await expect(contract.depositShielded(SECRET_A, foreign)).rejects.toThrow( "not this contract's shielded wrapper", ); }); - it('rejects a zero-value coin', () => { - expect(() => - contract.depositShielded(SECRET_A, { ...coin, value: 0n }), - ).toThrow('coin value must be positive'); + it('rejects a zero-value coin', async () => { + await expect(contract.depositShielded(SECRET_A, { ...coin, value: 0n })).rejects.toThrow('coin value must be positive'); }); }); describe('withdrawUnshielded', () => { - beforeEach(() => { - contract.depositUnshielded(SECRET_A, N); + beforeEach(async () => { + await contract.depositUnshielded(SECRET_A, N); }); - it('debits the balance', () => { - contract.withdrawUnshielded(SECRET_A, N / 2n, USER); - expect(contract.getBalance(SECRET_A)).toBe(N - N / 2n); + it('debits the balance', async () => { + await contract.withdrawUnshielded(SECRET_A, N / 2n, USER); + expect(await contract.getBalance(SECRET_A)).toBe(N - N / 2n); }); - it('rejects a zero amount', () => { - expect(() => contract.withdrawUnshielded(SECRET_A, 0n, USER)).toThrow( + it('rejects a zero amount', async () => { + await expect(contract.withdrawUnshielded(SECRET_A, 0n, USER)).rejects.toThrow( 'amount must be positive', ); }); - it('rejects an unknown secret', () => { - expect(() => contract.withdrawUnshielded(SECRET_B, 1n, USER)).toThrow( + it('rejects an unknown secret', async () => { + await expect(contract.withdrawUnshielded(SECRET_B, 1n, USER)).rejects.toThrow( 'no balance for this secret', ); }); - it('rejects withdrawing more than the balance', () => { - expect(() => contract.withdrawUnshielded(SECRET_A, N + 1n, USER)).toThrow( + it('rejects withdrawing more than the balance', async () => { + await expect(contract.withdrawUnshielded(SECRET_A, N + 1n, USER)).rejects.toThrow( 'insufficient pool balance', ); }); }); describe('round trip', () => { - it('unshielded -> shielded -> unshielded leaves a zero balance', () => { - contract.depositUnshielded(SECRET_A, N); - const coin = contract.withdrawShielded(SECRET_A, N, RECIPIENT, b32('rt')); - expect(contract.getBalance(SECRET_A)).toBe(0n); + it('unshielded -> shielded -> unshielded leaves a zero balance', async () => { + await contract.depositUnshielded(SECRET_A, N); + const coin = await contract.withdrawShielded(SECRET_A, N, RECIPIENT, b32('rt')); + expect(await contract.getBalance(SECRET_A)).toBe(0n); - contract.depositShielded(SECRET_A, coin); - expect(contract.getBalance(SECRET_A)).toBe(N); + await contract.depositShielded(SECRET_A, coin); + expect(await contract.getBalance(SECRET_A)).toBe(N); - contract.withdrawUnshielded(SECRET_A, N, USER); - expect(contract.getBalance(SECRET_A)).toBe(0n); + await contract.withdrawUnshielded(SECRET_A, N, USER); + expect(await contract.getBalance(SECRET_A)).toBe(0n); expect(contract.getLedger().balances.lookup(contractKeyOf(SECRET_A))).toBe(0n); }); }); describe('getBalance', () => { - it('throws for a never-used secret (lookup without member guard)', () => { + it('throws for a never-used secret (lookup without member guard)', async () => { // Pins current behavior: reads for unknown keys revert instead of // returning 0. Off-chain callers must probe `balances.member` first. - expect(() => contract.getBalance(b32('never-used'))).toThrow(); + await expect(contract.getBalance(b32('never-used'))).rejects.toThrow(); }); }); diff --git a/test/unit/simulators/ShieldedNightSimulator.ts b/test/unit/simulators/ShieldedNightSimulator.ts index 29feb2b..26f163d 100644 --- a/test/unit/simulators/ShieldedNightSimulator.ts +++ b/test/unit/simulators/ShieldedNightSimulator.ts @@ -1,5 +1,6 @@ import { type CircuitContext, + type CircuitId, type CircuitResults, createCircuitContext, createConstructorContext, @@ -41,95 +42,129 @@ export const rightUserAddress = (bytes: Uint8Array): EitherContractOrUser => ({ * OpenZeppelin compact-contracts simulator pattern: the compiled contract's * impure circuits run against a locally held CircuitContext, and each * successful call threads the updated context back so ledger state advances - * across calls. Failed calls throw before the context is replaced, so state + * across calls. Failed calls reject before the context is replaced, so state * is untouched — matching on-chain semantics. + * + * @dev ASYNC ON THE LEDGER-V9 LINE. compact-runtime 0.19 makes every generated + * circuit — and `Contract.initialState` — return a Promise (it has to: a circuit + * may perform a cross-contract call, which fetches state). Construction therefore + * moves to the static `create()` factory and every circuit accessor is async. + * `getLedger()` stays synchronous: it only reads the context this simulator holds. + * + * @dev The runtime-0.19 `CircuitContext` also collapsed `currentQueryContext`, + * `currentPrivateState`, `currentZswapLocalState` and `gasCost` under a single + * `callContext`, and `createCircuitContext` gained the executing circuit's id as + * its first argument — so each call builds its context with its own id. */ export class ShieldedNightSimulator { readonly contract: Contract; readonly contractAddress: string; private ctx: CircuitContext; - constructor(name: string, symbol: string, decimals: bigint) { - this.contract = new Contract({}); - const init = this.contract.initialState( + private constructor( + contract: Contract, + contractAddress: string, + ctx: CircuitContext, + ) { + this.contract = contract; + this.contractAddress = contractAddress; + this.ctx = ctx; + } + + static async create( + name: string, + symbol: string, + decimals: bigint, + ): Promise { + const contract = new Contract({}); + const init = await contract.initialState( createConstructorContext({}, COIN_PK), name, symbol, decimals, ); - this.contractAddress = sampleContractAddress(); - this.ctx = createCircuitContext( - this.contractAddress, + const contractAddress = sampleContractAddress(); + const ctx = createCircuitContext( + 'constructor', + contractAddress, COIN_PK, init.currentContractState, {}, ); + return new ShieldedNightSimulator(contract, contractAddress, ctx); } /** Read the public ledger state (balances map + sealed metadata). */ getLedger(): Ledger { - return ledger(this.ctx.currentQueryContext.state); + return ledger(this.ctx.callContext.currentQueryContext.state); } - private advance(res: CircuitResults): R { - // Each simulator call models its own transaction: keep the updated ledger - // state but discard the accumulated Zswap local state (coin receives/sends - // recorded by the previous call). Without this, successive deposits share - // one transaction-level receive accumulator and large amounts trip its - // Uint<64> overflow instead of exercising the contract's own logic. - this.ctx = createCircuitContext( + /** + * A fresh context for `circuitId` carrying the current ledger and private + * state. Each simulator call models its own transaction: keep the updated + * ledger state but discard the accumulated Zswap local state (coin + * receives/sends recorded by the previous call). Without this, successive + * deposits share one transaction-level receive accumulator and large amounts + * trip its Uint<64> overflow instead of exercising the contract's own logic. + */ + private contextFor(circuitId: CircuitId): CircuitContext { + return createCircuitContext( + circuitId, this.contractAddress, COIN_PK, - res.context.currentQueryContext.state, - res.context.currentPrivateState, + this.ctx.callContext.currentQueryContext.state, + this.ctx.callContext.currentPrivateState ?? ({} as ShieldedNightPrivateState), ); + } + + private async run( + circuitId: CircuitId, + call: (ctx: CircuitContext) => Promise>, + ): Promise { + const res = await call(this.contextFor(circuitId)); + this.ctx = res.context; return res.result; } - name(): string { - return this.advance(this.contract.impureCircuits.name(this.ctx)); + name(): Promise { + return this.run('name', (c) => this.contract.impureCircuits.name(c)); } - symbol(): string { - return this.advance(this.contract.impureCircuits.symbol(this.ctx)); + symbol(): Promise { + return this.run('symbol', (c) => this.contract.impureCircuits.symbol(c)); } - decimals(): bigint { - return this.advance(this.contract.impureCircuits.decimals(this.ctx)); + decimals(): Promise { + return this.run('decimals', (c) => this.contract.impureCircuits.decimals(c)); } - tokenColor(): Uint8Array { - return this.advance(this.contract.impureCircuits.tokenColor(this.ctx)); + tokenColor(): Promise { + return this.run('tokenColor', (c) => this.contract.impureCircuits.tokenColor(c)); } - getBalance(secret: Uint8Array): bigint { - return this.advance(this.contract.impureCircuits.getBalance(this.ctx, secret)); + getBalance(secret: Uint8Array): Promise { + return this.run('getBalance', (c) => this.contract.impureCircuits.getBalance(c, secret)); } - depositUnshielded(secret: Uint8Array, amount: bigint): void { - this.advance( - this.contract.impureCircuits.depositUnshielded(this.ctx, secret, amount), + async depositUnshielded(secret: Uint8Array, amount: bigint): Promise { + await this.run('depositUnshielded', (c) => + this.contract.impureCircuits.depositUnshielded(c, secret, amount), ); } - depositShielded(secret: Uint8Array, coin: ShieldedCoin): void { - this.advance( - this.contract.impureCircuits.depositShielded(this.ctx, secret, coin), + async depositShielded(secret: Uint8Array, coin: ShieldedCoin): Promise { + await this.run('depositShielded', (c) => + this.contract.impureCircuits.depositShielded(c, secret, coin), ); } - withdrawUnshielded( + async withdrawUnshielded( secret: Uint8Array, amount: bigint, recipient: EitherContractOrUser, - ): void { - this.advance( - this.contract.impureCircuits.withdrawUnshielded( - this.ctx, - secret, - amount, - recipient, - ), + ): Promise { + await this.run('withdrawUnshielded', (c) => + this.contract.impureCircuits.withdrawUnshielded(c, secret, amount, recipient), ); } @@ -138,27 +173,27 @@ export class ShieldedNightSimulator { amount: bigint, recipient: { bytes: Uint8Array }, nonce: Uint8Array, - ): ShieldedCoin { - return this.advance( - this.contract.impureCircuits.withdrawShielded( - this.ctx, - secret, - amount, - recipient, - nonce, - ), + ): Promise { + return this.run('withdrawShielded', (c) => + this.contract.impureCircuits.withdrawShielded(c, secret, amount, recipient, nonce), ); } /** Atomic NIGHT -> sNight (no secret): lock NIGHT and mint the wrapper. */ - convertToShielded(amount: bigint, recipient: { bytes: Uint8Array }, nonce: Uint8Array): ShieldedCoin { - return this.advance( - this.contract.impureCircuits.convertToShielded(this.ctx, amount, recipient, nonce), + convertToShielded( + amount: bigint, + recipient: { bytes: Uint8Array }, + nonce: Uint8Array, + ): Promise { + return this.run('convertToShielded', (c) => + this.contract.impureCircuits.convertToShielded(c, amount, recipient, nonce), ); } /** Atomic sNight -> NIGHT (no secret): burn the wrapper coin and release NIGHT. */ - convertToUnshielded(coin: ShieldedCoin, recipient: EitherContractOrUser): void { - this.advance(this.contract.impureCircuits.convertToUnshielded(this.ctx, coin, recipient)); + async convertToUnshielded(coin: ShieldedCoin, recipient: EitherContractOrUser): Promise { + await this.run('convertToUnshielded', (c) => + this.contract.impureCircuits.convertToUnshielded(c, coin, recipient), + ); } } From 34ef9296e39a42766e1c0d3570f995af0f08c717 Mon Sep 17 00:00:00 2001 From: Eddie Date: Wed, 2 Sep 2026 19:20:40 -0400 Subject: [PATCH 2/5] Resolve ZK key locations the way midnight-js does, not by string-slicing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first cut of `withLookupKey` derived a circuit id with `keyLocation.split('/').pop()` and let any failure propagate. Both halves were wrong at the edges that matter, and midnight-js already exports the pieces to do it properly (`ZKConfigRegistry`, `zkConfigToProvingKeyMaterial`): - a canonical contract key location resolves through the registry's verifier-key join, not by slicing the string; - a protocol builtin (`midnight/...`) must resolve to `undefined` so the prover supplies it, while a `ZkArtifactIntegrityError` must still THROW — "the artifact is present but stale or tampered with" cannot be masked as "no key material". `makeKeyMaterialResolver` here is transcribed from midnight-js 5's own resolver in midnight-js-http-client-proof-provider so both behave identically. Also delegate `check`/`prove` explicitly instead of object-spreading the wallet's provider, which would drop prototype methods if a connector ever returns a class instance rather than a plain object. --- frontend/src/lib/providers.ts | 62 ++++++++++++++++++++++++----------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/frontend/src/lib/providers.ts b/frontend/src/lib/providers.ts index f2d4a53..b6e97a6 100644 --- a/frontend/src/lib/providers.ts +++ b/frontend/src/lib/providers.ts @@ -1,9 +1,10 @@ import { levelPrivateStateProvider } from '@midnight-ntwrk/midnight-js-level-private-state-provider'; import { indexerPublicDataProvider } from '@midnight-ntwrk/midnight-js-indexer-public-data-provider'; import { FetchZkConfigProvider } from '@midnight-ntwrk/midnight-js-fetch-zk-config-provider'; -import { createProofProvider } from '@midnight-ntwrk/midnight-js/types'; +import { createProofProvider, zkConfigToProvingKeyMaterial, ZKConfigRegistry } from '@midnight-ntwrk/midnight-js/types'; +import { ZkArtifactIntegrityError } from '@midnight-ntwrk/midnight-js/utils'; import type { ProvingProvider as LedgerProvingProvider } from '@midnightntwrk/ledger-v9'; -import type { ConnectedAPI } from '@midnight-ntwrk/dapp-connector-api'; +import type { ConnectedAPI, ProvingProvider as ConnectorProvingProvider } from '@midnight-ntwrk/dapp-connector-api'; import type { BlockHashConfig, BlockHeightConfig } from '@midnight-ntwrk/midnight-js/types'; import type { ContractAddress } from '@midnightntwrk/ledger-v9'; @@ -109,31 +110,54 @@ const ZSWAP_MERKLE_ROOT_RETENTION_SECONDS = 3600n; * dApp's own `zkConfigProvider` — the identical artifacts the dApp already served and already * handed the wallet through `asKeyMaterialProvider()` above. Nothing private crosses the * boundary and nothing moves proving out of the wallet: `check` and `prove` are still the - * wallet's. Which lane was taken is logged, never silent. + * wallet's, and they are delegated explicitly rather than spread, so a connector that returns a + * class instance keeps working. Which lane was taken is logged, never silent. */ function withLookupKey( - provider: unknown, + provider: ConnectorProvingProvider, zkConfigProvider: FetchZkConfigProvider, ): LedgerProvingProvider { - const p = provider as Partial; - if (typeof p.lookupKey === 'function') { + const maybe = provider as Partial; + if (typeof maybe.lookupKey === 'function') { console.info('[providers] wallet proving provider implements lookupKey (ledger-v9 native)'); - return p as LedgerProvingProvider; + return maybe as LedgerProvingProvider; } console.info( - '[providers] wallet proving provider has no lookupKey; serving key material from the dApp\'s ' + + "[providers] wallet proving provider has no lookupKey; serving key material from the dApp's " + 'own zkConfigProvider (same public artifacts already passed to getProvingProvider)', ); + const lookupKey = makeKeyMaterialResolver(zkConfigProvider); return { - ...(p as LedgerProvingProvider), - async lookupKey(keyLocation: string) { - const circuitId = keyLocation.split('/').pop() as ShieldedNightCircuits; - const [proverKey, verifierKey, ir] = await Promise.all([ - zkConfigProvider.getProverKey(circuitId), - zkConfigProvider.getVerifierKey(circuitId), - zkConfigProvider.getZKIR(circuitId), - ]); - return { proverKey, verifierKey, ir }; - }, - } as LedgerProvingProvider; + check: (preimage, keyLocation) => provider.check(preimage, keyLocation), + prove: (preimage, keyLocation, overwriteBindingInput) => + provider.prove(preimage, keyLocation, overwriteBindingInput), + lookupKey, + }; +} + +/** + * The dApp-side key-material resolver, transcribed from midnight-js 5's own + * `makeKeyMaterialResolver` (`midnight-js-http-client-proof-provider`) so it behaves + * identically at the two edges that matter: + * + * - a CANONICAL contract key location resolves through the registry's verifier-key join, + * not by string-slicing the location; + * - a protocol builtin (`midnight/...`) resolves to `undefined` — the prover supplies those — + * while an integrity violation still THROWS, because "the artifact is present but stale or + * tampered with" must never be masked as "no key material". + */ +function makeKeyMaterialResolver( + zkConfigProvider: FetchZkConfigProvider, +): LedgerProvingProvider['lookupKey'] { + const registry = new ZKConfigRegistry([zkConfigProvider]); + return async (keyLocation: string) => { + const resolved = await registry.resolveKeyLocation(keyLocation); + if (resolved !== undefined) return zkConfigToProvingKeyMaterial(resolved); + try { + return zkConfigToProvingKeyMaterial(await zkConfigProvider.get(keyLocation as ShieldedNightCircuits)); + } catch (error) { + if (error instanceof ZkArtifactIntegrityError) throw error; + return undefined; + } + }; } From 0ff6ae1414f0e60156514c1529cad5b91e246638 Mon Sep 17 00:00:00 2001 From: Eddie Date: Wed, 2 Sep 2026 20:07:51 -0400 Subject: [PATCH 3/5] Give the integration job the time the 2.x stack actually needs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first CI run on this branch was killed by `timeout-minutes: 60` partway through transient.test.ts. It was not stuck — it had passed 15 of the 17 tests and was still going. 60 was already thin on `main`: its last green run spent 50.3 of its 60 minutes inside vitest. Measured per-file, 1.x vs this branch: security.test.ts (5) 1078.7 s -> 1373.4 s 1.27x shielded-night.test.ts (8) 885.7 s -> 1101.2 s 1.24x multiparty.test.ts (1) 471.8 s -> 753.9 s 1.60x maintenance-authority (1) 153.8 s -> 153.8 s 1.00x (fixed waits, no proving) Only the proving-bound files stretched; the fixed-wait one did not move at all, which is what says this is proving/settlement cost on the 2.x triple rather than something hanging. Projected total is ~66 minutes of test time, so 150 covers it plus the `retry: 2` tail while still being short enough to catch a genuine hang. --- .github/workflows/ci.yml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cad4269..f60891b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -133,7 +133,23 @@ jobs: integration: name: Integration tests (docker stack) runs-on: ubuntu-latest - timeout-minutes: 60 + # 150, not the 60 `main` uses. MEASURED, not guessed: the suite is 1.2-1.6x + # slower per file on the 2.x triple than on 1.x, and 60 was already thin on + # `main` (its last green run spent 50.3 min of its 60 inside vitest). + # + # file main (1.x) ledger-v9 (2.x) + # security.test.ts (5) 1078.7 s 1373.4 s 1.27x + # shielded-night.test.ts (8) 885.7 s 1101.2 s 1.24x + # multiparty.test.ts (1) 471.8 s 753.9 s 1.60x + # maintenance-authority (1) 153.8 s 153.8 s 1.00x (fixed waits) + # transient.test.ts (1) 249.8 s -- + # combined.test.ts (1) 180.2 s -- + # + # The first run on this branch (33693462975) was PASSING every test and was + # killed by the 60-minute cap partway through transient.test.ts, having + # finished 15 of the 17 tests. Projected total here is ~66 min of test time, + # so 150 leaves room for the `retry: 2` tail without hiding a real hang. + timeout-minutes: 150 steps: - uses: actions/checkout@v4 From bc483aeb61e1cc9c789be83ca2d1f43ec24ec979 Mon Sep 17 00:00:00 2001 From: Eddie Date: Thu, 3 Sep 2026 14:57:58 -0400 Subject: [PATCH 4/5] Fix MN_EXTERNAL_STACK=1 import crash: inline graphql/graphql-tag/@apollo/client + the indexer provider Every integration test file crashed at import time under MN_EXTERNAL_STACK=1 (vitest's SSR loader, i.e. anyone proving this branch against a real deployed stack instead of vitest's own testcontainers): "require() async module '.../graphql/__dev__/index.mjs' is unsupported". graphql@17's package.json exports map lists Bun's own "bun" condition before "require" in every branch, both pointing at an ESM-only .mjs; Bun always activates its "bun" condition, so any resolution of the bare specifier "graphql" -- including graphql-tag's plain CJS require('graphql') -- lands on the async file, and Bun refuses to require() it synchronously. Plain `bun run` of the same dependency chain (e.g. scripts/verify-deployment.ts) is unaffected because it never goes through vitest's SSR module runner. The fix is not just inlining the leaf packages. Under `pool: 'forks'`, vitest loads an externalized (non-inlined) module wholesale via a plain runtime import()/require(), and from that point on every one of that module's own internal requires is a native Bun require with zero further Vite involvement -- so inlining only graphql/graphql-tag/@apollo/client did nothing while @midnight-ntwrk/midnight-js-indexer-public-data-provider itself stayed externalized (its own require('graphql-tag') still resolved natively and still crashed). Inlining the indexer provider too routes its whole module graph through Vite's SSR transform, which resolves the nested graphql/graphql-tag specifiers itself instead of leaving a raw externalized require() for Bun to resolve on its own. vitest.unit.config.ts is untouched: no unit test imports this chain. Measured (bun 1.4.0, oven/bun:1.4 containers, git-archive export, no root .env read): - bun run test:unit: 95/95 passing (--no-file-parallelism; the default parallel mode has a pre-existing flaky tail on this host's bind mount, unrelated to this change and already noted in the F2.1 log) - MN_EXTERNAL_STACK=1 against literally dead URLs (http://127.0.0.1:1): fails at the global-setup preflight naming the unreachable URLs, same as before this change -- the preflight runs before file collection either way - MN_EXTERNAL_STACK=1 against reachable-but-fake stub endpoints (so the preflight passes and collection is actually reached), unfiltered across all six integration files, matching CI's own invocation shape: all 6 files collect cleanly, 17/17 tests discovered, zero crashes. The same stub setup against the pre-fix config crashed on 5 of 6 files with the exact require() error above. --- vitest.integration.config.ts | 42 ++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/vitest.integration.config.ts b/vitest.integration.config.ts index d38c331..dcd635d 100644 --- a/vitest.integration.config.ts +++ b/vitest.integration.config.ts @@ -22,5 +22,47 @@ export default defineConfig({ ['json', { outputFile: 'reports/vitest-results.json' }], ...(process.env.GITHUB_ACTIONS === 'true' ? (['github-actions'] as const) : []), ], + server: { + deps: { + // graphql@17's package.json `exports` map lists Bun's own "bun" + // condition before "require" in every branch, both pointing at an + // ESM-only .mjs. Bun always activates its "bun" condition, so any + // resolution of the bare specifier `graphql` — including + // graphql-tag's plain CJS `require('graphql')` — lands on the async + // ESM file, and Bun refuses to require() an async ES module. + // + // The chain is test/support/provider-wiring.ts -> + // @midnight-ntwrk/midnight-js-indexer-public-data-provider@5.0.0-beta.7 + // -> graphql-tag -> graphql. Only reachable via MN_EXTERNAL_STACK=1 + // (the normal testcontainers path never imports provider-wiring.ts + // through this loader in a way that triggers it — see below); plain + // `bun run` of the same chain (e.g. scripts/verify-deployment.ts) is + // unaffected because it never goes through vitest's SSR module + // runner at all. + // + // `graphql`/`graphql-tag`/`@apollo/client` alone are NOT enough: + // vitest's `pool: 'forks'` loads an externalized (non-inlined) + // module wholesale via a plain runtime `import()`/`require()`, and + // from that point on ALL of that module's own internal requires are + // native Bun requires with zero further Vite involvement — so + // inlining only the leaf graphql packages does nothing while + // `midnight-js-indexer-public-data-provider` itself stays + // externalized (its own `require('graphql-tag')` still resolves + // natively). Inlining the indexer provider TOO routes its module + // graph through Vite's SSR transform, which resolves the nested + // `graphql`/`graphql-tag` specifiers itself (SSR resolution defaults + // to node-oriented conditions, not Bun's) instead of leaving a raw + // externalized require() for Bun to resolve on its own. Measured: + // with only the three leaf packages inlined, all 6 integration + // files still crash at import under MN_EXTERNAL_STACK=1; adding the + // indexer provider makes all 6 collect cleanly (17 tests). + inline: [ + 'graphql', + 'graphql-tag', + '@apollo/client', + '@midnight-ntwrk/midnight-js-indexer-public-data-provider', + ], + }, + }, }, }); From 30af63f3865d0bc5d5331ae32a7891ad48818303 Mon Sep 17 00:00:00 2001 From: Eddie Date: Thu, 3 Sep 2026 16:28:12 -0400 Subject: [PATCH 5/5] Fix plain-bun require() async-module crash in verify-deployment.ts (same Q15 mechanism) scripts/verify-deployment.ts crashed at import time under plain `bun run` (no vitest involved at all): "require() async module '.../graphql/index.mjs' is unsupported". This is the SAME underlying hazard as the vitest-driven round-trip crash fixed in the previous commit (graphql@17's package.json exports map lists Bun's "bun" condition before "require" in every branch, both pointing at an ESM-only .mjs), but through a DIFFERENT code path: when @midnight-ntwrk/midnight-js-indexer-public-data-provider (an ESM module, imported directly by this script) is the first thing to resolve "graphql" -- via its own `import ... from '@apollo/client/core'`, which internally does a plain CJS require('graphql') inside graphql-tag's UMD bundle -- Bun refuses to require() the async ES module. Isolated by direct experiment, deterministically reproduced 5/5 runs on both the pre- and post- previous-commit heads (confirming this is unrelated to that fix and pre-existing): a bare `import { indexerPublicDataProvider } from '@midnight-ntwrk/midnight-js-indexer-public-data-provider'` with no other code crashes every time; `import { ApolloClient } from '@apollo/client/core'` alone crashes identically, isolating the mechanism to apollo-client's own resolution of graphql-tag. Statically importing "graphql" FIRST resolves it through Bun's ESM path (which handles an async module natively) and caches that resolution, so the later CJS require() inside graphql-tag's UMD wrapper reuses the cache instead of re-resolving via the broken exports-map ordering -- measured to fix the crash deterministically (3/3 runs), with typecheck and all 95 unit tests still passing. Scope: scripts/verify-deployment.ts is the only script outside the vitest suite that imports this chain (deploy.ts / deploy-and-lock.ts / lock.ts do not touch @midnight-ntwrk/midnight-js-indexer-public-data-provider at all, confirmed by grep, and deploy.ts already runs successfully in this same live environment). The vitest integration suite's own instance of this hazard is unaffected by/unrelated to this change -- it is already fixed via vitest.integration.config.ts's server.deps.inline in the previous commit. This was discovered live: project 00007's midnight-2-offers re-pin to this branch's HEAD^ found the on-chain-verifier-key check (`verify-deployment.ts -- --allow-unlocked`, run directly, no vitest) failing with this exact crash, contradicting an earlier claim in the same project that this exact invocation "works perfectly" against a prior head of this branch. Direct testing here shows the crash is 100% reproducible against BOTH the prior head and this one, with or without this fix's predecessor commit -- so the earlier claim was not accurate, not something either commit introduced. --- scripts/verify-deployment.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/scripts/verify-deployment.ts b/scripts/verify-deployment.ts index 71356ab..e155a7a 100644 --- a/scripts/verify-deployment.ts +++ b/scripts/verify-deployment.ts @@ -25,6 +25,24 @@ * only the CODE check decides the exit code. It never weakens CODE: a key * mismatch or a missing/extra circuit still exits 1. See scripts/verify-args.ts. */ +// Bun-under-ESM interop hazard, not a style choice: graphql@17's package.json +// exports map lists Bun's own "bun" condition before "require" in every +// branch, both pointing at an ESM-only .mjs. When +// @midnight-ntwrk/midnight-js-indexer-public-data-provider (an ESM module) +// is the FIRST thing to resolve "graphql" -- via its own `import ... from +// '@apollo/client/core'`, which internally does a plain CJS +// `require('graphql')` inside graphql-tag's UMD bundle -- Bun refuses to +// require() the async ES module and this script crashes at import time, +// before a single line of its own code runs. Statically importing "graphql" +// first, here, resolves it through Bun's ESM path (which handles an async +// module fine) and caches that resolution, so the later CJS require() inside +// graphql-tag reuses the cached module instead of re-resolving via the +// broken exports-map ordering. Measured: this exact crash reproduces via a +// bare `import { indexerPublicDataProvider } from +// '@midnight-ntwrk/midnight-js-indexer-public-data-provider'` with no other +// code, deterministically, 100% of runs; prepending `import 'graphql'` +// resolves it, also deterministically. Project 00007, question Q15/Q16. +import 'graphql'; import { indexerPublicDataProvider } from '@midnight-ntwrk/midnight-js-indexer-public-data-provider'; import { setNetworkId } from '@midnight-ntwrk/midnight-js/network-id'; import { createHash } from 'node:crypto';