diff --git a/.env.example b/.env.example index 800598f..399b31d 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,7 @@ -VITE_ALLOCATOR_URL=https://testnet-dev.epochprotocol.xyz +# Testnet +VITE_MIDEN_TESTNET_RPC_URL=https://rpc.testnet.miden.io +VITE_TESTNET_ALLOCATOR_URL=http://localhost:3000 + +# Devnet (optional) +# VITE_MIDEN_DEVNET_RPC_URL=https://rpc.devnet.miden.io +# VITE_DEVNET_ALLOCATOR_URL=http://localhost:3000 diff --git a/README.md b/README.md index f09298d..c547a6e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Miden ⇄ EVM Epoch Integration Example -Reference dapp showing how to use [`@epoch-protocol/epoch-intents-sdk`](https://www.npmjs.com/package/@epoch-protocol/epoch-intents-sdk) to move value between Epoch testnet EVM chains and Miden testnet via Epoch intents. +Reference dapp showing how to use [`@epoch-protocol/epoch-intents-sdk`](https://www.npmjs.com/package/@epoch-protocol/epoch-intents-sdk) to move value between Epoch testnet EVM chains and Miden devnet or testnet via Epoch intents. Two flows: @@ -33,7 +33,13 @@ Testnet tokens (USDC, DAI, USDT, etc.) share the same contract addresses across ``` `.env`: ``` - VITE_ALLOCATOR_URL=https://testnet-dev.epochprotocol.xyz + # Run the devnet-compatible smallocator locally. + VITE_DEVNET_ALLOCATOR_URL=http://localhost:3000 + + # Testnet stays disabled until both endpoints are configured for the same + # network. Do not point either value at a devnet service. + # VITE_MIDEN_TESTNET_RPC_URL=https://your-testnet-rpc.example + # VITE_TESTNET_ALLOCATOR_URL=https://your-testnet-allocator.example ``` 2. Install + start: ```bash @@ -49,24 +55,24 @@ Testnet tokens (USDC, DAI, USDT, etc.) share the same contract addresses across ## Test Funds -- **Miden testnet tokens**: claim from official Miden faucet in Miden Wallet. +- **Miden devnet tokens**: claim from the [official devnet faucet](https://faucet.devnet.miden.io/) in a devnet Miden wallet. Testnet becomes selectable only after its RPC and Epoch allocator have both been configured. - **EVM testnet tokens**: ping Epoch team with your Ethereum address; team will send testnet USDC. ## Key Files -| Path | Purpose | -| ------------------------------------ | --------------------------------------------------------- | -| `src/services/epoch-bridge.ts` | Epoch SDK wrapper (intent build / submit / poll) | -| `src/hooks/useEpochIntent.ts` | Miden→EVM intent submission flow | -| `src/hooks/useWithdrawIntent.ts` | EVM→Miden withdraw flow | -| `src/hooks/useMidenWalletAdapter.ts` | Miden wallet connect/state | -| `src/hooks/useMidenTransfer.ts` | P2IDE note creation on Miden | -| `src/hooks/useIntentFlowStatus.ts` | Intent lifecycle polling | -| `src/constants/chains.ts` | Testnet EVM chains + Miden virtual chain id (`999999999`) | -| `src/config/wagmi.ts` | wagmi/RainbowKit config | +| Path | Purpose | +| -------------------------------------- | --------------------------------------------------------- | +| `src/services/epoch-bridge.ts` | Epoch SDK wrapper (intent build / submit / poll) | +| `src/hooks/useEpochIntent.ts` | Miden→EVM intent submission flow | +| `src/hooks/useWithdrawIntent.ts` | EVM→Miden withdraw flow | +| `src/hooks/useMidenWalletAdapter.ts` | Miden wallet connect/state | +| `src/hooks/useMidenP2IDNoteFactory.ts` | Wallet-submitted P2IDE collateral-note creation | +| `src/hooks/useIntentFlowStatus.ts` | Intent lifecycle polling | +| `src/constants/chains.ts` | Testnet EVM chains + Miden virtual chain id (`999999999`) | +| `src/config/wagmi.ts` | wagmi/RainbowKit config | ## Notes - `MIDEN_DESTINATION_CHAIN_ID = 999999999` is the virtual chain id used as `tokenOut.chainId` when Miden is the intent output. Do not set this to a real EVM chain id. -- Allocator URL is configurable via `VITE_ALLOCATOR_URL`. Default points at Epoch testnet-dev. +- Devnet allocator URL is configurable via `VITE_DEVNET_ALLOCATOR_URL` (with `VITE_ALLOCATOR_URL` retained as a compatibility fallback). Testnet requires both `VITE_MIDEN_TESTNET_RPC_URL` and `VITE_TESTNET_ALLOCATOR_URL`. - Build: `pnpm build` (`tsc -b && vite build`). Lint: `pnpm lint`. diff --git a/package.json b/package.json index c956fd1..18f665d 100644 --- a/package.json +++ b/package.json @@ -18,10 +18,10 @@ "@epoch-protocol/epoch-intents-sdk": "^1.0.38", "@fontsource-variable/jetbrains-mono": "^5.2.8", "@metamask/sdk": "^0.34.0", - "@miden-sdk/miden-sdk": "^0.15.2", - "@miden-sdk/miden-wallet-adapter-base": "^0.15.1", - "@miden-sdk/miden-wallet-adapter-react": "^0.15.1", - "@miden-sdk/react": "^0.15.2", + "@miden-sdk/miden-sdk": "0.16.0", + "@miden-sdk/miden-wallet-adapter-base": "0.16.0", + "@miden-sdk/miden-wallet-adapter-react": "0.16.0", + "@miden-sdk/react": "0.16.0", "@phosphor-icons/react": "^2.1.10", "@rainbow-me/rainbowkit": "^2.2.10", "@tanstack/react-query": "^5.90.20", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc33500..65c2950 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,31 +10,31 @@ importers: dependencies: '@epoch-protocol/epoch-intents-sdk': specifier: ^1.0.38 - version: 1.0.38(bufferutil@4.1.0)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76) + version: 1.0.38(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2) '@fontsource-variable/jetbrains-mono': specifier: ^5.2.8 version: 5.2.8 '@metamask/sdk': specifier: ^0.34.0 - version: 0.34.0(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10) + version: 0.34.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) '@miden-sdk/miden-sdk': - specifier: ^0.15.2 - version: 0.15.2 + specifier: 0.16.0 + version: 0.16.0 '@miden-sdk/miden-wallet-adapter-base': - specifier: ^0.15.1 - version: 0.15.1 + specifier: 0.16.0 + version: 0.16.0(@miden-sdk/miden-sdk@0.16.0) '@miden-sdk/miden-wallet-adapter-react': - specifier: ^0.15.1 - version: 0.15.1(@miden-sdk/react@0.15.2(@miden-sdk/miden-sdk@0.15.2)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)))(react@19.2.5)(typescript@5.9.3) + specifier: 0.16.0 + version: 0.16.0(@miden-sdk/miden-sdk@0.16.0)(@miden-sdk/react@0.16.0(@miden-sdk/miden-sdk@0.16.0)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)))(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3) '@miden-sdk/react': - specifier: ^0.15.2 - version: 0.15.2(@miden-sdk/miden-sdk@0.15.2)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) + specifier: 0.16.0 + version: 0.16.0(@miden-sdk/miden-sdk@0.16.0)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) '@phosphor-icons/react': specifier: ^2.1.10 version: 2.1.10(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@rainbow-me/rainbowkit': specifier: ^2.2.10 - version: 2.2.10(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76)) + version: 2.2.10(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2)) '@tanstack/react-query': specifier: ^5.90.20 version: 5.100.8(react@19.2.5) @@ -55,7 +55,7 @@ importers: version: 19.2.5(react@19.2.5) shadcn: specifier: ^4.1.2 - version: 4.6.0(@types/node@24.12.2)(supports-color@7.2.0)(typescript@5.9.3) + version: 4.6.0(@types/node@24.12.2)(typescript@5.9.3) sonner: specifier: ^2.0.3 version: 2.0.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -70,7 +70,7 @@ importers: version: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) wagmi: specifier: ^2.14.0 - version: 2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76) + version: 2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2) devDependencies: '@eslint/js': specifier: ^9.39.1 @@ -86,19 +86,19 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^5.1.1 - version: 5.2.0(supports-color@7.2.0)(vite@7.3.2(@types/node@24.12.2)(jiti@1.21.7)(yaml@2.9.0)) + version: 5.2.0(vite@7.3.2(@types/node@24.12.2)(jiti@1.21.7)(yaml@2.9.0)) autoprefixer: specifier: ^10.4.24 version: 10.5.0(postcss@8.5.13) eslint: specifier: ^9.39.1 - version: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + version: 9.39.4(jiti@1.21.7) eslint-plugin-react-hooks: specifier: ^7.0.1 - version: 7.1.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0) + version: 7.1.1(eslint@9.39.4(jiti@1.21.7)) eslint-plugin-react-refresh: specifier: ^0.4.24 - version: 0.4.26(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0)) + version: 0.4.26(eslint@9.39.4(jiti@1.21.7)) globals: specifier: ^16.5.0 version: 16.5.0 @@ -122,7 +122,7 @@ importers: version: 5.9.3 typescript-eslint: specifier: ^8.48.0 - version: 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) + version: 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) vite: specifier: ^7.3.1 version: 7.3.2(@types/node@24.12.2)(jiti@1.21.7)(yaml@2.9.0) @@ -757,46 +757,57 @@ packages: resolution: {integrity: sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==} engines: {node: '>=16.0.0'} - '@miden-sdk/miden-sdk@0.15.2': - resolution: {integrity: sha512-0ww0aKrTZlLOpn9TbPnYg5erqE+j5QOqqGBn1ki/ku6iJRvkHyZquQPIz2CWi76AOAnUt+OZLKoMNEZ0X2RFww==} + '@miden-sdk/miden-sdk@0.16.0': + resolution: {integrity: sha512-APdct6zmuoGRPQaZ3kf2ovpUQ1a9C8VxV2MrJcGS3DelupiV34WBNNvIXhGE+I6DnSV9t2NzAHvokPVYhUq+kQ==} - '@miden-sdk/miden-wallet-adapter-base@0.15.1': - resolution: {integrity: sha512-7CjpJyvEUtXh3KmjBzRQEgQqPjGhGc0FOr3fWOFwIHprQNdKxEpo3i6l208y6qOO/OK+SikKqxj9dlmHXkcmwQ==} + '@miden-sdk/miden-wallet-adapter-base@0.16.0': + resolution: {integrity: sha512-rQF/eaRL2bfQTV5C8p7TRo2vMzkUeViQ77/gczWEuXaWrKh7qIxQEhIo3ksQGAQhMFt1tix985cjZg+rmc/okQ==} + peerDependencies: + '@miden-sdk/miden-sdk': ^0.16.0 - '@miden-sdk/miden-wallet-adapter-miden@0.15.1': - resolution: {integrity: sha512-IpmJJh3vF1xfYaqRwt4b+JHIcgxCQQt2UvVcFsBFgUnRl6VQrUBpTI4RCuEga/MxdQXaZNMtSI4S1NweSNdDOA==} + '@miden-sdk/miden-wallet-adapter-miden@0.16.0': + resolution: {integrity: sha512-UlTh2ycLCgL1fDJH5FZ1PweErtMvPDMUvKoO7HYWnP0TZmoNUmmG2ptROEukOKznAP+fJXrY1Iqwl+K2YDOI2Q==} peerDependencies: + '@miden-sdk/miden-sdk': ^0.16.0 typescript: ^5.0.0 - '@miden-sdk/miden-wallet-adapter-react@0.15.1': - resolution: {integrity: sha512-29rgc/N6PIkv8w6U4Ld1RFRDDRMavzypW5sxHDFwGDQ3+Fb/sio9Yh6wKqIGo0JN9M+aG31G0C66/VWZ/sqTiw==} + '@miden-sdk/miden-wallet-adapter-react@0.16.0': + resolution: {integrity: sha512-Ev1FpBd8MGUPqX74LT7BoMxt8oXCC3virhHxy9p418bMD+eBK7jji32u91wdLWc3XiCHIcTXSeO9AGRNwdMBlg==} peerDependencies: - '@miden-sdk/react': ^0.15.1 + '@miden-sdk/miden-sdk': ^0.16.0 + '@miden-sdk/react': ^0.16.0 + '@types/react': ^18.0.0 || ^19.0.0 react: ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@miden-sdk/react': optional: true + '@types/react': + optional: true - '@miden-sdk/node-darwin-arm64@0.15.2': - resolution: {integrity: sha512-Y4cZjjSImHC1AwAlk+xWp661+3LIIzlHB/1saDCSr4pAvufoMCou2vRRP+l4vwAT+9iDvLwi1iSw2qfybCORiA==} + '@miden-sdk/node-darwin-arm64@0.16.0': + resolution: {integrity: sha512-uxwzouQkVG91/pU9o0wajLqzq2yqdZSttzzHmQtpl2hlpyFZJ8lucMwMFKOLCzU04+87PutBiUQ18Xfir2et6w==} cpu: [arm64] os: [darwin] - '@miden-sdk/node-darwin-x64@0.15.2': - resolution: {integrity: sha512-pxUZpHWCNjClEcEVPDLF4HsFqAQMzoA2PjSjVHSUK8xdcD3F/fiRNIuW+3pYD9gDkvNPGRsJtPLO21R2Rmvskg==} + '@miden-sdk/node-darwin-x64@0.16.0': + resolution: {integrity: sha512-vqKtB5xw8iE5OkmEE31KMVuTWxJ006EwrFFSBFEsZNuGGWHyZXlpSqCA3y3azstu2RX3FEYoViBFPwu0fLJVzg==} cpu: [x64] os: [darwin] - '@miden-sdk/node-linux-x64-gnu@0.15.2': - resolution: {integrity: sha512-7ndNrEg+xSmcGb8lDcD/MAYKwXAzjlB6tfL/8fsUvZVgJ5h6ijDIhNCt4JMA40SS736mU7JHlzbTy8uPBwxqFA==} + '@miden-sdk/node-linux-x64-gnu@0.16.0': + resolution: {integrity: sha512-+gFdLiRcAcv77QX3n4/0BoAecho9lbMxQR87sKH8oIIwP70+1ux0DFCE2Uf1nR8RK/rsbSSk/57R+0QBRY1kgw==} cpu: [x64] os: [linux] - '@miden-sdk/react@0.15.2': - resolution: {integrity: sha512-L3vxV2QRE+qQ9YPo4VIsCfQ7u12oN0fGp8oRnUGAgSwT1oztHx/rOku02ggAdy1SWQnpe8AiUGiFfC9lNoXkqg==} + '@miden-sdk/react@0.16.0': + resolution: {integrity: sha512-p4Blni66CPcZnyt1GNGh2I+OfbmIBQPSOqahsEzjfaZcP6P6k3XhhNt/sqxsoTr08QvVoxpwhXyosKyJNLQBvA==} peerDependencies: - '@miden-sdk/miden-sdk': ^0.15.2 + '@miden-sdk/miden-sdk': ^0.16.0 + '@types/react': '>=18.0.0' react: '>=18.0.0' + peerDependenciesMeta: + '@types/react': + optional: true '@modelcontextprotocol/sdk@1.29.0': resolution: {integrity: sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ==} @@ -3989,11 +4000,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.11: - resolution: {integrity: sha512-v+KEsUv2ps74PaSKv0gHTxTCgMXOIfBEbaqa6w6ISIGC7ZsvHN4N9oJ8d4cmf0n5oTzQz2SLmThbQWhjd/8eKg==} - engines: {node: ^18 || >=20} - hasBin: true - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -5449,20 +5455,20 @@ snapshots: '@babel/compat-data@7.29.3': {} - '@babel/core@7.29.0(supports-color@7.2.0)': + '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.29.2 '@babel/parser': 7.29.3 '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 '@jridgewell/remapping': 2.3.5 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -5489,41 +5495,41 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0)': + '@babel/helper-create-class-features-plugin@7.29.3(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@7.2.0) + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@7.2.0) - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/helper-replace-supers': 7.28.6(@babel/core@7.29.0) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.29.0 semver: 6.3.1 transitivePeerDependencies: - supports-color '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.28.5(supports-color@7.2.0)': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-imports@7.28.6(supports-color@7.2.0)': + '@babel/helper-module-imports@7.28.6': dependencies: - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0)': + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/helper-module-imports': 7.28.6(supports-color@7.2.0) + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color @@ -5533,18 +5539,18 @@ snapshots: '@babel/helper-plugin-utils@7.28.6': {} - '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0)': + '@babel/helper-replace-supers@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/helper-member-expression-to-functions': 7.28.5(supports-color@7.2.0) + '@babel/core': 7.29.0 + '@babel/helper-member-expression-to-functions': 7.28.5 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/traverse': 7.29.0 transitivePeerDependencies: - supports-color - '@babel/helper-skip-transparent-expression-wrappers@7.27.1(supports-color@7.2.0)': + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.29.0(supports-color@7.2.0) + '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -5564,53 +5570,53 @@ snapshots: dependencies: '@babel/types': 7.29.0 - '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0(supports-color@7.2.0))': + '@babel/plugin-syntax-jsx@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0(supports-color@7.2.0))': + '@babel/plugin-syntax-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0)': + '@babel/plugin-transform-modules-commonjs@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) + '@babel/core': 7.29.0 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0(supports-color@7.2.0))': + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0(supports-color@7.2.0))': + '@babel/plugin-transform-react-jsx-source@7.27.1(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 - '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0)': + '@babel/plugin-transform-typescript@7.28.6(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) + '@babel/helper-create-class-features-plugin': 7.29.3(@babel/core@7.29.0) '@babel/helper-plugin-utils': 7.28.6 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1(supports-color@7.2.0) - '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0)) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color - '@babel/preset-typescript@7.28.5(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0)': + '@babel/preset-typescript@7.28.5(@babel/core@7.29.0)': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/helper-plugin-utils': 7.28.6 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0)) - '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) + '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-modules-commonjs': 7.28.6(@babel/core@7.29.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) transitivePeerDependencies: - supports-color @@ -5622,7 +5628,7 @@ snapshots: '@babel/parser': 7.29.3 '@babel/types': 7.29.0 - '@babel/traverse@7.29.0(supports-color@7.2.0)': + '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 @@ -5630,7 +5636,7 @@ snapshots: '@babel/parser': 7.29.3 '@babel/template': 7.28.6 '@babel/types': 7.29.0 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -5639,16 +5645,16 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@4.4.2)': + '@base-org/account@2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@coinbase/cdp-sdk': 1.48.2(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(typescript@5.9.3)(utf-8-validate@5.0.10) + '@coinbase/cdp-sdk': 1.48.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 ox: 0.6.9(typescript@5.9.3)(zod@4.4.2) preact: 10.24.2 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) zustand: 5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' @@ -5662,14 +5668,14 @@ snapshots: - utf-8-validate - zod - '@coinbase/cdp-sdk@1.48.2(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(typescript@5.9.3)(utf-8-validate@5.0.10)': + '@coinbase/cdp-sdk@1.48.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: '@solana-program/system': 0.10.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) '@solana-program/token': 0.9.0(@solana/kit@5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) '@solana/kit': 5.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76) - axios: 1.13.6(debug@4.4.3(supports-color@7.2.0)) - axios-retry: 4.5.0(axios@1.13.6(debug@4.4.3(supports-color@7.2.0))) + axios: 1.13.6 + axios-retry: 4.5.0(axios@1.13.6) jose: 6.2.3 md5: 2.3.0 uncrypto: 0.1.3 @@ -5682,12 +5688,12 @@ snapshots: - typescript - utf-8-validate - '@coinbase/wallet-sdk@3.9.3(supports-color@7.2.0)': + '@coinbase/wallet-sdk@3.9.3': dependencies: bn.js: 5.2.3 buffer: 6.0.3 clsx: 1.2.1 - eth-block-tracker: 7.1.0(supports-color@7.2.0) + eth-block-tracker: 7.1.0 eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.4 keccak: 3.0.4 @@ -5696,15 +5702,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@3.25.76)': + '@coinbase/wallet-sdk@4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@noble/hashes': 1.4.0 clsx: 1.2.1 eventemitter3: 5.0.1 idb-keyval: 6.2.1 - ox: 0.6.9(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.9(typescript@5.9.3)(zod@4.4.2) preact: 10.24.2 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) zustand: 5.0.3(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) transitivePeerDependencies: - '@types/react' @@ -5735,20 +5741,20 @@ snapshots: '@emotion/hash@0.9.2': {} - '@epoch-protocol/epoch-commons-sdk@0.1.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@epoch-protocol/epoch-commons-sdk@0.1.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: ethers: 6.16.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) - viem: 2.42.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.42.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@epoch-protocol/epoch-intents-sdk@1.0.38(bufferutil@4.1.0)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76)': + '@epoch-protocol/epoch-intents-sdk@1.0.38(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2)': dependencies: - '@epoch-protocol/epoch-commons-sdk': 0.1.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@metamask/smart-accounts-kit': 1.7.0(supports-color@7.2.0)(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76) + '@epoch-protocol/epoch-commons-sdk': 0.1.19(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@metamask/smart-accounts-kit': 1.7.0(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2) viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - bufferutil @@ -5835,17 +5841,17 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@1.21.7))': dependencies: - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + eslint: 9.39.4(jiti@1.21.7) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.2(supports-color@7.2.0)': + '@eslint/config-array@0.21.2': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -5858,10 +5864,10 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5(supports-color@7.2.0)': + '@eslint/eslintrc@3.3.5': dependencies: ajv: 6.15.0 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -5920,9 +5926,9 @@ snapshots: '@fontsource-variable/jetbrains-mono@5.2.8': {} - '@gemini-wallet/core@0.3.2(supports-color@7.2.0)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))': + '@gemini-wallet/core@0.3.2(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))': dependencies: - '@metamask/rpc-errors': 7.0.2(supports-color@7.2.0) + '@metamask/rpc-errors': 7.0.2 eventemitter3: 5.0.1 viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: @@ -6002,61 +6008,61 @@ snapshots: dependencies: '@lit-labs/ssr-dom-shim': 1.5.1 - '@metamask/7715-permission-types@1.0.0(supports-color@7.2.0)': + '@metamask/7715-permission-types@1.0.0': dependencies: - '@metamask/delegation-core': 2.2.1(supports-color@7.2.0) - '@metamask/utils': 11.11.0(supports-color@7.2.0) + '@metamask/delegation-core': 2.2.1 + '@metamask/utils': 11.11.0 transitivePeerDependencies: - supports-color - '@metamask/abi-utils@3.0.0(supports-color@7.2.0)': + '@metamask/abi-utils@3.0.0': dependencies: '@metamask/superstruct': 3.2.1 - '@metamask/utils': 11.11.0(supports-color@7.2.0) + '@metamask/utils': 11.11.0 transitivePeerDependencies: - supports-color '@metamask/delegation-abis@1.1.0': {} - '@metamask/delegation-core@2.2.1(supports-color@7.2.0)': + '@metamask/delegation-core@2.2.1': dependencies: - '@metamask/abi-utils': 3.0.0(supports-color@7.2.0) - '@metamask/utils': 11.11.0(supports-color@7.2.0) + '@metamask/abi-utils': 3.0.0 + '@metamask/utils': 11.11.0 '@noble/hashes': 1.8.0 transitivePeerDependencies: - supports-color '@metamask/delegation-deployments@1.4.0': {} - '@metamask/eth-json-rpc-provider@1.0.1(supports-color@7.2.0)': + '@metamask/eth-json-rpc-provider@1.0.1': dependencies: - '@metamask/json-rpc-engine': 7.3.3(supports-color@7.2.0) + '@metamask/json-rpc-engine': 7.3.3 '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 5.0.2(supports-color@7.2.0) + '@metamask/utils': 5.0.2 transitivePeerDependencies: - supports-color - '@metamask/json-rpc-engine@7.3.3(supports-color@7.2.0)': + '@metamask/json-rpc-engine@7.3.3': dependencies: - '@metamask/rpc-errors': 6.4.0(supports-color@7.2.0) + '@metamask/rpc-errors': 6.4.0 '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0(supports-color@7.2.0) + '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color - '@metamask/json-rpc-engine@8.0.2(supports-color@7.2.0)': + '@metamask/json-rpc-engine@8.0.2': dependencies: - '@metamask/rpc-errors': 6.4.0(supports-color@7.2.0) + '@metamask/rpc-errors': 6.4.0 '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0(supports-color@7.2.0) + '@metamask/utils': 8.5.0 transitivePeerDependencies: - supports-color - '@metamask/json-rpc-middleware-stream@7.0.2(supports-color@7.2.0)': + '@metamask/json-rpc-middleware-stream@7.0.2': dependencies: - '@metamask/json-rpc-engine': 8.0.2(supports-color@7.2.0) + '@metamask/json-rpc-engine': 8.0.2 '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0(supports-color@7.2.0) + '@metamask/utils': 8.5.0 readable-stream: 3.6.2 transitivePeerDependencies: - supports-color @@ -6070,14 +6076,14 @@ snapshots: dependencies: bowser: 2.14.1 - '@metamask/providers@16.1.0(supports-color@7.2.0)': + '@metamask/providers@16.1.0': dependencies: - '@metamask/json-rpc-engine': 8.0.2(supports-color@7.2.0) - '@metamask/json-rpc-middleware-stream': 7.0.2(supports-color@7.2.0) + '@metamask/json-rpc-engine': 8.0.2 + '@metamask/json-rpc-middleware-stream': 7.0.2 '@metamask/object-multiplex': 2.1.0 - '@metamask/rpc-errors': 6.4.0(supports-color@7.2.0) + '@metamask/rpc-errors': 6.4.0 '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 8.5.0(supports-color@7.2.0) + '@metamask/utils': 8.5.0 detect-browser: 5.3.0 extension-port-stream: 3.0.0 fast-deep-equal: 3.1.3 @@ -6087,16 +6093,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/rpc-errors@6.4.0(supports-color@7.2.0)': + '@metamask/rpc-errors@6.4.0': dependencies: - '@metamask/utils': 9.3.0(supports-color@7.2.0) + '@metamask/utils': 9.3.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color - '@metamask/rpc-errors@7.0.2(supports-color@7.2.0)': + '@metamask/rpc-errors@7.0.2': dependencies: - '@metamask/utils': 11.11.0(supports-color@7.2.0) + '@metamask/utils': 11.11.0 fast-safe-stringify: 2.1.1 transitivePeerDependencies: - supports-color @@ -6109,17 +6115,17 @@ snapshots: dependencies: openapi-fetch: 0.13.8 - '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10))(supports-color@7.2.0)': + '@metamask/sdk-communication-layer@0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10))': dependencies: '@metamask/sdk-analytics': 0.0.5 bufferutil: 4.1.0 cross-fetch: 4.1.0 date-fns: 2.30.0 - debug: 4.3.4(supports-color@7.2.0) + debug: 4.3.4 eciesjs: 0.4.18 eventemitter2: 6.4.9 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) utf-8-validate: 5.0.10 uuid: 8.3.2 transitivePeerDependencies: @@ -6129,25 +6135,25 @@ snapshots: dependencies: '@paulmillr/qr': 0.2.1 - '@metamask/sdk@0.33.1(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.29.2 '@metamask/onboarding': 1.0.1 - '@metamask/providers': 16.1.0(supports-color@7.2.0) + '@metamask/providers': 16.1.0 '@metamask/sdk-analytics': 0.0.5 - '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10))(supports-color@7.2.0) + '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@metamask/sdk-install-modal-web': 0.32.1 '@paulmillr/qr': 0.2.1 bowser: 2.14.1 cross-fetch: 4.1.0 - debug: 4.3.4(supports-color@7.2.0) + debug: 4.3.4 eciesjs: 0.4.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 obj-multiplex: 1.0.0 pump: 3.0.4 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) tslib: 2.8.1 util: 0.12.5 uuid: 8.3.2 @@ -6157,25 +6163,25 @@ snapshots: - supports-color - utf-8-validate - '@metamask/sdk@0.34.0(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10)': + '@metamask/sdk@0.34.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)': dependencies: '@babel/runtime': 7.29.2 '@metamask/onboarding': 1.0.1 - '@metamask/providers': 16.1.0(supports-color@7.2.0) + '@metamask/providers': 16.1.0 '@metamask/sdk-analytics': 0.0.5 - '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10))(supports-color@7.2.0) + '@metamask/sdk-communication-layer': 0.33.1(cross-fetch@4.1.0)(eciesjs@0.4.18)(eventemitter2@6.4.9)(readable-stream@3.6.2)(socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) '@metamask/sdk-install-modal-web': 0.32.1 '@paulmillr/qr': 0.2.1 bowser: 2.14.1 cross-fetch: 4.1.0 - debug: 4.3.4(supports-color@7.2.0) + debug: 4.3.4 eciesjs: 0.4.18 eth-rpc-errors: 4.0.3 eventemitter2: 6.4.9 obj-multiplex: 1.0.0 pump: 3.0.4 readable-stream: 3.6.2 - socket.io-client: 4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10) + socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) tslib: 2.8.1 util: 0.12.5 uuid: 8.3.2 @@ -6185,15 +6191,15 @@ snapshots: - supports-color - utf-8-validate - '@metamask/smart-accounts-kit@1.7.0(supports-color@7.2.0)(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76)': + '@metamask/smart-accounts-kit@1.7.0(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2)': dependencies: - '@metamask/7715-permission-types': 1.0.0(supports-color@7.2.0) + '@metamask/7715-permission-types': 1.0.0 '@metamask/delegation-abis': 1.1.0 - '@metamask/delegation-core': 2.2.1(supports-color@7.2.0) + '@metamask/delegation-core': 2.2.1 '@metamask/delegation-deployments': 1.4.0 - '@metamask/utils': 11.11.0(supports-color@7.2.0) + '@metamask/utils': 11.11.0 openapi-fetch: 0.13.8 - ox: 0.8.1(typescript@5.9.3)(zod@3.25.76) + ox: 0.8.1(typescript@5.9.3)(zod@4.4.2) viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - supports-color @@ -6202,7 +6208,7 @@ snapshots: '@metamask/superstruct@3.2.1': {} - '@metamask/utils@11.11.0(supports-color@7.2.0)': + '@metamask/utils@11.11.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.2.1 @@ -6210,7 +6216,7 @@ snapshots: '@scure/base': 1.2.6 '@types/debug': 4.1.13 '@types/lodash': 4.17.24 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 lodash: 4.18.1 pony-cause: 2.1.11 semver: 7.7.4 @@ -6218,93 +6224,97 @@ snapshots: transitivePeerDependencies: - supports-color - '@metamask/utils@5.0.2(supports-color@7.2.0)': + '@metamask/utils@5.0.2': dependencies: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.13 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 semver: 7.7.4 superstruct: 1.0.4 transitivePeerDependencies: - supports-color - '@metamask/utils@8.5.0(supports-color@7.2.0)': + '@metamask/utils@8.5.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.2.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.13 - debug: 4.3.4(supports-color@7.2.0) + debug: 4.3.4 pony-cause: 2.1.11 semver: 7.7.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color - '@metamask/utils@9.3.0(supports-color@7.2.0)': + '@metamask/utils@9.3.0': dependencies: '@ethereumjs/tx': 4.2.0 '@metamask/superstruct': 3.2.1 '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 '@types/debug': 4.1.13 - debug: 4.3.4(supports-color@7.2.0) + debug: 4.3.4 pony-cause: 2.1.11 semver: 7.7.4 uuid: 9.0.1 transitivePeerDependencies: - supports-color - '@miden-sdk/miden-sdk@0.15.2': + '@miden-sdk/miden-sdk@0.16.0': dependencies: dexie: 4.4.2 glob: 11.1.0 optionalDependencies: - '@miden-sdk/node-darwin-arm64': 0.15.2 - '@miden-sdk/node-darwin-x64': 0.15.2 - '@miden-sdk/node-linux-x64-gnu': 0.15.2 + '@miden-sdk/node-darwin-arm64': 0.16.0 + '@miden-sdk/node-darwin-x64': 0.16.0 + '@miden-sdk/node-linux-x64-gnu': 0.16.0 - '@miden-sdk/miden-wallet-adapter-base@0.15.1': + '@miden-sdk/miden-wallet-adapter-base@0.16.0(@miden-sdk/miden-sdk@0.16.0)': dependencies: + '@miden-sdk/miden-sdk': 0.16.0 eventemitter3: 5.0.4 - '@miden-sdk/miden-wallet-adapter-miden@0.15.1(typescript@5.9.3)': + '@miden-sdk/miden-wallet-adapter-miden@0.16.0(@miden-sdk/miden-sdk@0.16.0)(typescript@5.9.3)': dependencies: - '@miden-sdk/miden-wallet-adapter-base': 0.15.1 - nanoid: 5.1.11 + '@miden-sdk/miden-sdk': 0.16.0 + '@miden-sdk/miden-wallet-adapter-base': 0.16.0(@miden-sdk/miden-sdk@0.16.0) typescript: 5.9.3 - '@miden-sdk/miden-wallet-adapter-react@0.15.1(@miden-sdk/react@0.15.2(@miden-sdk/miden-sdk@0.15.2)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)))(react@19.2.5)(typescript@5.9.3)': + '@miden-sdk/miden-wallet-adapter-react@0.16.0(@miden-sdk/miden-sdk@0.16.0)(@miden-sdk/react@0.16.0(@miden-sdk/miden-sdk@0.16.0)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)))(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)': dependencies: - '@miden-sdk/miden-wallet-adapter-base': 0.15.1 - '@miden-sdk/miden-wallet-adapter-miden': 0.15.1(typescript@5.9.3) + '@miden-sdk/miden-sdk': 0.16.0 + '@miden-sdk/miden-wallet-adapter-base': 0.16.0(@miden-sdk/miden-sdk@0.16.0) + '@miden-sdk/miden-wallet-adapter-miden': 0.16.0(@miden-sdk/miden-sdk@0.16.0)(typescript@5.9.3) react: 19.2.5 optionalDependencies: - '@miden-sdk/react': 0.15.2(@miden-sdk/miden-sdk@0.15.2)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) + '@miden-sdk/react': 0.16.0(@miden-sdk/miden-sdk@0.16.0)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) + '@types/react': 19.2.14 transitivePeerDependencies: - typescript - '@miden-sdk/node-darwin-arm64@0.15.2': + '@miden-sdk/node-darwin-arm64@0.16.0': optional: true - '@miden-sdk/node-darwin-x64@0.15.2': + '@miden-sdk/node-darwin-x64@0.16.0': optional: true - '@miden-sdk/node-linux-x64-gnu@0.15.2': + '@miden-sdk/node-linux-x64-gnu@0.16.0': optional: true - '@miden-sdk/react@0.15.2(@miden-sdk/miden-sdk@0.15.2)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5))': + '@miden-sdk/react@0.16.0(@miden-sdk/miden-sdk@0.16.0)(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5))': dependencies: - '@miden-sdk/miden-sdk': 0.15.2 + '@miden-sdk/miden-sdk': 0.16.0 react: 19.2.5 zustand: 5.0.12(@types/react@19.2.14)(react@19.2.5)(use-sync-external-store@1.4.0(react@19.2.5)) + optionalDependencies: + '@types/react': 19.2.14 transitivePeerDependencies: - - '@types/react' - immer - use-sync-external-store - '@modelcontextprotocol/sdk@1.29.0(supports-color@7.2.0)(zod@3.25.76)': + '@modelcontextprotocol/sdk@1.29.0(zod@3.25.76)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.16) ajv: 8.20.0 @@ -6314,8 +6324,8 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.0.8 - express: 5.2.1(supports-color@7.2.0) - express-rate-limit: 8.4.1(express@5.2.1(supports-color@7.2.0)) + express: 5.2.1 + express-rate-limit: 8.4.1(express@5.2.1) hono: 4.12.16 jose: 6.2.3 json-schema-typed: 8.0.2 @@ -7150,7 +7160,7 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76))': + '@rainbow-me/rainbowkit@2.2.10(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2))': dependencies: '@tanstack/react-query': 5.100.8(react@19.2.5) '@vanilla-extract/css': 1.17.3 @@ -7163,7 +7173,7 @@ snapshots: react-remove-scroll: 2.6.2(@types/react@19.2.14)(react@19.2.5) ua-parser-js: 1.0.41 viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) - wagmi: 2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2) transitivePeerDependencies: - '@types/react' - babel-plugin-macros @@ -7180,24 +7190,24 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-common@1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: big.js: 6.2.2 dayjs: 1.11.13 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - bufferutil - typescript - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-controllers@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7226,12 +7236,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-pay@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.2) lit: 3.3.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: @@ -7266,12 +7276,12 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76)': + '@reown/appkit-scaffold-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.2)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.2) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 transitivePeerDependencies: @@ -7303,10 +7313,10 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit-ui@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) lit: 3.3.0 qrcode: 1.5.3 @@ -7338,16 +7348,16 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76)': + '@reown/appkit-utils@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.2)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@reown/appkit-polyfills': 1.7.8 '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7387,21 +7397,21 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@reown/appkit@1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-controllers': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-pay': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) - '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@3.25.76) + '@reown/appkit-scaffold-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.2) + '@reown/appkit-ui': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@reown/appkit-utils': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.2) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) '@walletconnect/types': 2.21.0 - '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -7511,9 +7521,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc@4.60.2': optional: true - '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-provider@0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) events: 3.3.0 transitivePeerDependencies: - bufferutil @@ -7521,10 +7531,10 @@ snapshots: - utf-8-validate - zod - '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@safe-global/safe-apps-sdk@9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@safe-global/safe-gateway-typescript-sdk': 3.23.1 - viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - bufferutil - typescript @@ -8142,15 +8152,15 @@ snapshots: '@types/validate-npm-package-name@4.0.2': {} - '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.59.1 - '@typescript-eslint/type-utils': 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.59.1 - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + eslint: 9.39.4(jiti@1.21.7) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -8158,23 +8168,23 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': + '@typescript-eslint/parser@8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.59.1 '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(supports-color@7.2.0)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.59.1 - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + debug: 4.4.3 + eslint: 9.39.4(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.1(supports-color@7.2.0)(typescript@5.9.3)': + '@typescript-eslint/project-service@8.59.1(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3) '@typescript-eslint/types': 8.59.1 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8188,13 +8198,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - debug: 4.4.3(supports-color@7.2.0) - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4(jiti@1.21.7) ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -8202,13 +8212,13 @@ snapshots: '@typescript-eslint/types@8.59.1': {} - '@typescript-eslint/typescript-estree@8.59.1(supports-color@7.2.0)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.59.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.59.1(supports-color@7.2.0)(typescript@5.9.3) + '@typescript-eslint/project-service': 8.59.1(typescript@5.9.3) '@typescript-eslint/tsconfig-utils': 8.59.1(typescript@5.9.3) '@typescript-eslint/types': 8.59.1 '@typescript-eslint/visitor-keys': 8.59.1 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.16 @@ -8217,13 +8227,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3)': + '@typescript-eslint/utils@8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)) '@typescript-eslint/scope-manager': 8.59.1 '@typescript-eslint/types': 8.59.1 - '@typescript-eslint/typescript-estree': 8.59.1(supports-color@7.2.0)(typescript@5.9.3) - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) + eslint: 9.39.4(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8260,11 +8270,11 @@ snapshots: dependencies: '@vanilla-extract/css': 1.17.3 - '@vitejs/plugin-react@5.2.0(supports-color@7.2.0)(vite@7.3.2(@types/node@24.12.2)(jiti@1.21.7)(yaml@2.9.0))': + '@vitejs/plugin-react@5.2.0(vite@7.3.2(@types/node@24.12.2)(jiti@1.21.7)(yaml@2.9.0))': dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0(supports-color@7.2.0)) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0(supports-color@7.2.0)) + '@babel/core': 7.29.0 + '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) + '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) '@rolldown/pluginutils': 1.0.0-rc.3 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 @@ -8272,18 +8282,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@wagmi/connectors@6.2.0(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76))(zod@3.25.76)': + '@wagmi/connectors@6.2.0(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2))(zod@4.4.2)': dependencies: - '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@4.4.2) - '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@3.25.76) - '@gemini-wallet/core': 0.3.2(supports-color@7.2.0)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)) - '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10) - '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@base-org/account': 2.4.0(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@4.4.2) + '@coinbase/wallet-sdk': 4.3.6(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(zod@4.4.2) + '@gemini-wallet/core': 0.3.2(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)) + '@metamask/sdk': 0.33.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@wagmi/core': 2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)) - '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - cbw-sdk: '@coinbase/wallet-sdk@3.9.3(supports-color@7.2.0)' - porto: 0.2.35(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76)) + '@walletconnect/ethereum-provider': 2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + cbw-sdk: '@coinbase/wallet-sdk@3.9.3' + porto: 0.2.35(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2)) viem: 2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) optionalDependencies: typescript: 5.9.3 @@ -8340,7 +8350,7 @@ snapshots: - react - use-sync-external-store - '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -8354,7 +8364,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -8384,7 +8394,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/core@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 @@ -8398,7 +8408,7 @@ snapshots: '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -8432,18 +8442,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/ethereum-provider@2.21.1(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@reown/appkit': 1.7.8(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/jsonrpc-http-connection': 1.0.8 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/types': 2.21.1 - '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/universal-provider': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -8566,16 +8576,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -8602,16 +8612,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/sign-client@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: - '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/core': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.1.2 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -8700,7 +8710,7 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -8709,9 +8719,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/types': 2.21.0 - '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -8740,7 +8750,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/universal-provider@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/jsonrpc-http-connection': 1.0.8 @@ -8749,9 +8759,9 @@ snapshots: '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/keyvaluestorage': 1.1.1 '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/sign-client': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) '@walletconnect/types': 2.21.1 - '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + '@walletconnect/utils': 2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -8780,7 +8790,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -8798,7 +8808,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -8824,7 +8834,7 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)': + '@walletconnect/utils@2.21.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 @@ -8842,7 +8852,7 @@ snapshots: detect-browser: 5.3.0 query-string: 7.1.3 uint8arrays: 3.1.0 - viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76) + viem: 2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -8882,15 +8892,15 @@ snapshots: typescript: 5.9.3 zod: 3.25.76 - abitype@1.0.8(typescript@5.9.3)(zod@3.25.76): + abitype@1.0.8(typescript@5.9.3)(zod@4.4.2): optionalDependencies: typescript: 5.9.3 - zod: 3.25.76 + zod: 4.4.2 - abitype@1.1.0(typescript@5.9.3)(zod@3.25.76): + abitype@1.1.0(typescript@5.9.3)(zod@4.4.2): optionalDependencies: typescript: 5.9.3 - zod: 3.25.76 + zod: 4.4.2 abitype@1.2.3(typescript@5.9.3)(zod@3.22.4): optionalDependencies: @@ -9009,14 +9019,14 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios-retry@4.5.0(axios@1.13.6(debug@4.4.3(supports-color@7.2.0))): + axios-retry@4.5.0(axios@1.13.6): dependencies: - axios: 1.13.6(debug@4.4.3(supports-color@7.2.0)) + axios: 1.13.6 is-retry-allowed: 2.2.0 - axios@1.13.6(debug@4.4.3(supports-color@7.2.0)): + axios@1.13.6: dependencies: - follow-redirects: 1.16.0(debug@4.4.3(supports-color@7.2.0)) + follow-redirects: 1.16.0 form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -9038,11 +9048,11 @@ snapshots: bn.js@5.2.3: {} - body-parser@2.2.2(supports-color@7.2.0): + body-parser@2.2.2: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 http-errors: 2.0.1 iconv-lite: 0.7.2 on-finished: 2.4.1 @@ -9277,17 +9287,13 @@ snapshots: dayjs@1.11.13: {} - debug@4.3.4(supports-color@7.2.0): + debug@4.3.4: dependencies: ms: 2.1.2 - optionalDependencies: - supports-color: 7.2.0 - debug@4.4.3(supports-color@7.2.0): + debug@4.4.3: dependencies: ms: 2.1.3 - optionalDependencies: - supports-color: 7.2.0 decamelize@1.2.0: {} @@ -9380,10 +9386,10 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.4(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10): + engine.io-client@6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 engine.io-parser: 5.2.3 ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) xmlhttprequest-ssl: 2.1.2 @@ -9454,20 +9460,20 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-plugin-react-hooks@7.1.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0): + eslint-plugin-react-hooks@7.1.1(eslint@9.39.4(jiti@1.21.7)): dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/parser': 7.29.3 - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + eslint: 9.39.4(jiti@1.21.7) hermes-parser: 0.25.1 zod: 4.4.2 zod-validation-error: 4.0.2(zod@4.4.2) transitivePeerDependencies: - supports-color - eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0)): + eslint-plugin-react-refresh@0.4.26(eslint@9.39.4(jiti@1.21.7)): dependencies: - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + eslint: 9.39.4(jiti@1.21.7) eslint-scope@8.4.0: dependencies: @@ -9480,14 +9486,14 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0): + eslint@9.39.4(jiti@1.21.7): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@1.21.7)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2(supports-color@7.2.0) + '@eslint/config-array': 0.21.2 '@eslint/config-helpers': 0.4.2 '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.5(supports-color@7.2.0) + '@eslint/eslintrc': 3.3.5 '@eslint/js': 9.39.4 '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.8 @@ -9497,7 +9503,7 @@ snapshots: ajv: 6.15.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -9543,11 +9549,11 @@ snapshots: etag@1.8.1: {} - eth-block-tracker@7.1.0(supports-color@7.2.0): + eth-block-tracker@7.1.0: dependencies: - '@metamask/eth-json-rpc-provider': 1.0.1(supports-color@7.2.0) + '@metamask/eth-json-rpc-provider': 1.0.1 '@metamask/safe-event-emitter': 3.1.2 - '@metamask/utils': 5.0.2(supports-color@7.2.0) + '@metamask/utils': 5.0.2 json-rpc-random-id: 1.0.1 pify: 3.0.0 transitivePeerDependencies: @@ -9631,25 +9637,25 @@ snapshots: strip-final-newline: 4.0.0 yoctocolors: 2.1.2 - express-rate-limit@8.4.1(express@5.2.1(supports-color@7.2.0)): + express-rate-limit@8.4.1(express@5.2.1): dependencies: - express: 5.2.1(supports-color@7.2.0) + express: 5.2.1 ip-address: 10.1.0 - express@5.2.1(supports-color@7.2.0): + express@5.2.1: dependencies: accepts: 2.0.0 - body-parser: 2.2.2(supports-color@7.2.0) + body-parser: 2.2.2 content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 depd: 2.0.0 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1(supports-color@7.2.0) + finalhandler: 2.1.1 fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -9660,9 +9666,9 @@ snapshots: proxy-addr: 2.0.7 qs: 6.15.1 range-parser: 1.2.1 - router: 2.2.0(supports-color@7.2.0) - send: 1.2.1(supports-color@7.2.0) - serve-static: 2.2.1(supports-color@7.2.0) + router: 2.2.0 + send: 1.2.1 + serve-static: 2.2.1 statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 @@ -9731,9 +9737,9 @@ snapshots: filter-obj@1.1.0: {} - finalhandler@2.1.1(supports-color@7.2.0): + finalhandler@2.1.1: dependencies: - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -9759,9 +9765,7 @@ snapshots: flatted@3.4.2: {} - follow-redirects@1.16.0(debug@4.4.3(supports-color@7.2.0)): - optionalDependencies: - debug: 4.4.3(supports-color@7.2.0) + follow-redirects@1.16.0: {} for-each@0.3.5: dependencies: @@ -9916,10 +9920,10 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - https-proxy-agent@7.0.6(supports-color@7.2.0): + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -10296,8 +10300,6 @@ snapshots: nanoid@3.3.12: {} - nanoid@5.1.11: {} - natural-compare@1.4.0: {} negotiator@1.0.0: {} @@ -10456,28 +10458,14 @@ snapshots: transitivePeerDependencies: - zod - ox@0.6.7(typescript@5.9.3)(zod@3.25.76): + ox@0.6.7(typescript@5.9.3)(zod@4.4.2): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/curves': 1.9.7 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.4(typescript@5.9.3)(zod@3.25.76) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - zod - - ox@0.6.9(typescript@5.9.3)(zod@3.25.76): - dependencies: - '@adraffy/ens-normalize': 1.11.1 - '@noble/curves': 1.9.7 - '@noble/hashes': 1.8.0 - '@scure/bip32': 1.7.0 - '@scure/bip39': 1.6.0 - abitype: 1.2.4(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.4(typescript@5.9.3)(zod@4.4.2) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -10498,7 +10486,7 @@ snapshots: transitivePeerDependencies: - zod - ox@0.8.1(typescript@5.9.3)(zod@3.25.76): + ox@0.8.1(typescript@5.9.3)(zod@4.4.2): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -10506,7 +10494,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.4(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.4(typescript@5.9.3)(zod@4.4.2) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -10528,7 +10516,7 @@ snapshots: transitivePeerDependencies: - zod - ox@0.9.6(typescript@5.9.3)(zod@3.25.76): + ox@0.9.6(typescript@5.9.3)(zod@4.4.2): dependencies: '@adraffy/ens-normalize': 1.11.1 '@noble/ciphers': 1.3.0 @@ -10536,7 +10524,7 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.2.4(typescript@5.9.3)(zod@3.25.76) + abitype: 1.2.4(typescript@5.9.3)(zod@4.4.2) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -10638,7 +10626,7 @@ snapshots: pony-cause@2.1.11: {} - porto@0.2.35(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76)): + porto@0.2.35(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2)): dependencies: '@wagmi/core': 2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)) hono: 4.12.16 @@ -10652,7 +10640,7 @@ snapshots: '@tanstack/react-query': 5.100.8(react@19.2.5) react: 19.2.5 typescript: 5.9.3 - wagmi: 2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76) + wagmi: 2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2) transitivePeerDependencies: - '@types/react' - immer @@ -10979,9 +10967,9 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.60.2 fsevents: 2.3.3 - router@2.2.0(supports-color@7.2.0): + router@2.2.0: dependencies: - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -11015,9 +11003,9 @@ snapshots: semver@7.7.4: {} - send@1.2.1(supports-color@7.2.0): + send@1.2.1: dependencies: - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -11031,12 +11019,12 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@2.2.1(supports-color@7.2.0): + serve-static@2.2.1: dependencies: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.1(supports-color@7.2.0) + send: 1.2.1 transitivePeerDependencies: - supports-color @@ -11061,14 +11049,14 @@ snapshots: safe-buffer: 5.2.1 to-buffer: 1.2.2 - shadcn@4.6.0(@types/node@24.12.2)(supports-color@7.2.0)(typescript@5.9.3): + shadcn@4.6.0(@types/node@24.12.2)(typescript@5.9.3): dependencies: - '@babel/core': 7.29.0(supports-color@7.2.0) + '@babel/core': 7.29.0 '@babel/parser': 7.29.3 - '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) - '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0(supports-color@7.2.0))(supports-color@7.2.0) + '@babel/plugin-transform-typescript': 7.28.6(@babel/core@7.29.0) + '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@dotenvx/dotenvx': 1.64.0 - '@modelcontextprotocol/sdk': 1.29.0(supports-color@7.2.0)(zod@3.25.76) + '@modelcontextprotocol/sdk': 1.29.0(zod@3.25.76) '@types/validate-npm-package-name': 4.0.2 browserslist: 4.28.2 commander: 14.0.3 @@ -11080,7 +11068,7 @@ snapshots: fast-glob: 3.3.3 fs-extra: 11.3.4 fuzzysort: 3.1.0 - https-proxy-agent: 7.0.6(supports-color@7.2.0) + https-proxy-agent: 7.0.6 kleur: 4.1.5 msw: 2.14.2(@types/node@24.12.2)(typescript@5.9.3) node-fetch: 3.3.2 @@ -11154,21 +11142,21 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - socket.io-client@4.8.3(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10): + socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@5.0.10): dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.4.3(supports-color@7.2.0) - engine.io-client: 6.6.4(bufferutil@4.1.0)(supports-color@7.2.0)(utf-8-validate@5.0.10) - socket.io-parser: 4.2.6(supports-color@7.2.0) + debug: 4.4.3 + engine.io-client: 6.6.4(bufferutil@4.1.0)(utf-8-validate@5.0.10) + socket.io-parser: 4.2.6 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.6(supports-color@7.2.0): + socket.io-parser@4.2.6: dependencies: '@socket.io/component-emitter': 3.1.2 - debug: 4.4.3(supports-color@7.2.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11387,13 +11375,13 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typescript-eslint@8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3): + typescript-eslint@8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/parser': 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.59.1(supports-color@7.2.0)(typescript@5.9.3) - '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0)(typescript@5.9.3) - eslint: 9.39.4(jiti@1.21.7)(supports-color@7.2.0) + '@typescript-eslint/eslint-plugin': 8.59.1(@typescript-eslint/parser@8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/parser': 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.59.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.59.1(eslint@9.39.4(jiti@1.21.7))(typescript@5.9.3) + eslint: 9.39.4(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -11507,15 +11495,15 @@ snapshots: vary@1.1.2: {} - viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.23.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2): dependencies: '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@scure/bip32': 1.6.2 '@scure/bip39': 1.5.4 - abitype: 1.0.8(typescript@5.9.3)(zod@3.25.76) + abitype: 1.0.8(typescript@5.9.3)(zod@4.4.2) isows: 1.0.6(ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.6.7(typescript@5.9.3)(zod@3.25.76) + ox: 0.6.7(typescript@5.9.3)(zod@4.4.2) ws: 8.18.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.9.3 @@ -11524,15 +11512,15 @@ snapshots: - utf-8-validate - zod - viem@2.42.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76): + viem@2.42.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2): dependencies: '@noble/curves': 1.9.1 '@noble/hashes': 1.8.0 '@scure/bip32': 1.7.0 '@scure/bip39': 1.6.0 - abitype: 1.1.0(typescript@5.9.3)(zod@3.25.76) + abitype: 1.1.0(typescript@5.9.3)(zod@4.4.2) isows: 1.0.7(ws@8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10)) - ox: 0.9.6(typescript@5.9.3)(zod@3.25.76) + ox: 0.9.6(typescript@5.9.3)(zod@4.4.2) ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@5.0.10) optionalDependencies: typescript: 5.9.3 @@ -11621,10 +11609,10 @@ snapshots: jiti: 1.21.7 yaml: 2.9.0 - wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76): + wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2): dependencies: '@tanstack/react-query': 5.100.8(react@19.2.5) - '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(debug@4.4.3(supports-color@7.2.0))(react@19.2.5)(supports-color@7.2.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@3.25.76))(zod@3.25.76) + '@wagmi/connectors': 6.2.0(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(@wagmi/core@2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)))(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(wagmi@2.19.5(@tanstack/query-core@5.100.8)(@tanstack/react-query@5.100.8(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2))(zod@4.4.2))(zod@4.4.2) '@wagmi/core': 2.22.1(@tanstack/query-core@5.100.8)(@types/react@19.2.14)(react@19.2.5)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.5))(viem@2.48.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@4.4.2)) react: 19.2.5 use-sync-external-store: 1.4.0(react@19.2.5) diff --git a/src/App.tsx b/src/App.tsx index 60b0b39..8c49e6b 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -9,8 +9,24 @@ import { ConnectButton } from "@rainbow-me/rainbowkit"; function App() { const [activeTab, setActiveTab] = useState("crosschain"); + const [midenConnectError, setMidenConnectError] = useState( + null, + ); const midenWallet = useMidenWalletAdapter({ enabled: true }); + const connectMidenWallet = async () => { + setMidenConnectError(null); + try { + await midenWallet.connect(); + } catch (error) { + setMidenConnectError( + error instanceof Error + ? error.message + : "Unable to connect Miden wallet.", + ); + } + }; + return (
@@ -65,16 +81,32 @@ function App() {
{!midenWallet.connected && (
- Required for Withdraw and for creating P2IDE notes on - Cross-chain. + {midenWallet.walletDetected + ? "Preparing the Miden wallet connection…" + : "Miden wallet extension not detected. Unlock or refresh the extension, then reload this page."} +
+ )} + {midenConnectError && ( +
+ {midenConnectError}
)} diff --git a/src/components/crosschain/IntentForm.tsx b/src/components/crosschain/IntentForm.tsx index 42a7b7a..b828932 100644 --- a/src/components/crosschain/IntentForm.tsx +++ b/src/components/crosschain/IntentForm.tsx @@ -20,6 +20,7 @@ import { } from "../../lib/intent-result"; import { useIntentSettlementView } from "../../hooks/useIntentSettlementView"; import { useMidenP2IDNoteFactory } from "../../hooks/useMidenP2IDNoteFactory"; +import { useMidenNetwork } from "../../hooks/useMidenNetwork"; import { Button } from "@/components/ui/button"; import { IntentSourceAssetField } from "./intent/IntentSourceAssetField"; import { @@ -36,7 +37,7 @@ interface Props { isLoadingMidenAssets: boolean; onFetchQuote: (params: CrossChainIntentParams) => Promise; onConfirmIntent: ( - createMidenP2IDNote: SolveIntentParams["createMidenP2IDNote"], + createMidenP2IDENote: SolveIntentParams["createMidenP2IDENote"], ) => Promise; onClearQuote: () => void; quotePhase: IntentQuotePhase; @@ -57,10 +58,17 @@ export function IntentForm({ intentNonce, intentUserAddress, }: Props) { + const { network } = useMidenNetwork(); const { address } = useAccount(); const walletChainId = useChainId(); const [selectedAssetId, setSelectedAssetId] = useState(""); + const selectedAssetIdIsAvailable = midenAssets.some( + (asset) => asset.assetId === selectedAssetId, + ); + const resolvedSelectedAssetId = selectedAssetIdIsAvailable + ? selectedAssetId + : (midenAssets[0]?.assetId ?? ""); // Follows the connected wallet until the user overrides a field. Not // useState defaults: the wallet connects after this mounts. @@ -99,13 +107,13 @@ export function IntentForm({ ); const selectedAsset = midenAssets.find( - (a) => a.assetId.toLowerCase() === selectedAssetId.toLowerCase(), + (a) => a.assetId.toLowerCase() === resolvedSelectedAssetId.toLowerCase(), ); // Use the hardcoded faucet→decimals map. Do NOT fall back to the wallet // adapter's reported decimals (often defaults to 8 and silently mis-scales). // `undefined` here gates the form via `Number.isFinite` below. - const midenFaucetDecimals = selectedAssetId - ? getMidenFaucetDecimals(selectedAssetId) + const midenFaucetDecimals = resolvedSelectedAssetId + ? getMidenFaucetDecimals(resolvedSelectedAssetId, network) : undefined; const settlement = useIntentSettlementView( @@ -114,7 +122,7 @@ export function IntentForm({ hasValidDestinationChainId ? destinationChainIdNum : undefined, ); - const createMidenP2IDNote = useMidenP2IDNoteFactory({ + const createMidenP2IDENote = useMidenP2IDNoteFactory({ midenAccountId, onStatus: setConfirmStatus, onNoteCreated: setLocalMidenNoteId, @@ -137,12 +145,12 @@ export function IntentForm({ } if (midenFaucetDecimals === undefined) { throw new Error( - `Unknown Miden faucet ${selectedAssetId} — add it to miden-tokens.ts before sending.`, + `Unknown Miden faucet ${resolvedSelectedAssetId} — add it to miden-tokens.ts before sending.`, ); } return { midenAccountId, - midenFaucetId: selectedAssetId, + midenFaucetId: resolvedSelectedAssetId, evmRecipient: destination.evmAddress.trim(), destinationChainId: destinationChainIdNum, outputTokenAddress: destination.outputToken, @@ -153,7 +161,7 @@ export function IntentForm({ const canFetch = isSDKReady && !!midenAccountId && - !!selectedAssetId && + !!resolvedSelectedAssetId && hasValidEvmRecipient && !!destination.outputToken && hasValidDestinationChainId && @@ -180,7 +188,7 @@ export function IntentForm({ void toast.promise( (async () => { setConfirmStatus("Submitting intent…"); - const result = await onConfirmIntent(createMidenP2IDNote); + const result = await onConfirmIntent(createMidenP2IDENote); const solverError = readIntentError(result); if (solverError) throw new Error(solverError); @@ -229,7 +237,7 @@ export function IntentForm({
{ @@ -292,7 +300,7 @@ export function IntentForm({ diff --git a/src/components/crosschain/IntentStatus.tsx b/src/components/crosschain/IntentStatus.tsx index 9970627..588439b 100644 --- a/src/components/crosschain/IntentStatus.tsx +++ b/src/components/crosschain/IntentStatus.tsx @@ -6,6 +6,7 @@ import { truncateHash, } from "../../lib/explorers"; import { readMidenNoteId } from "../../lib/intent-result"; +import { useMidenNetwork } from "../../hooks/useMidenNetwork"; export interface IntentFlowStatus { evmCompleted: boolean; @@ -117,6 +118,7 @@ function StatusRow({ } export function IntentStatus({ result, error, flowStatus, isPolling }: Props) { + const { network } = useMidenNetwork(); if (error) { return (
@@ -143,12 +145,12 @@ export function IntentStatus({ result, error, flowStatus, isPolling }: Props) { const depositTxUrl = depositChainId != null && depositTxHash - ? explorerTxUrl(Number(depositChainId), depositTxHash) + ? explorerTxUrl(Number(depositChainId), depositTxHash, network) : null; const midenTxUrl = midenTxId - ? explorerTxUrl(MIDEN_VIRTUAL_CHAIN_ID, midenTxId) + ? explorerTxUrl(MIDEN_VIRTUAL_CHAIN_ID, midenTxId, network) : null; - const noteUrl = midenNoteId ? midenscanNoteUrl(midenNoteId) : null; + const noteUrl = midenNoteId ? midenscanNoteUrl(midenNoteId, network) : null; const stillWaiting = isPolling && !evmCompleted && !midenTxId; diff --git a/src/components/crosschain/WithdrawForm.tsx b/src/components/crosschain/WithdrawForm.tsx index 47bfbe0..ebf794d 100644 --- a/src/components/crosschain/WithdrawForm.tsx +++ b/src/components/crosschain/WithdrawForm.tsx @@ -7,6 +7,8 @@ import type { EVMToMidenQuote } from "../../services/epoch-bridge"; import { truncateHash } from "../../lib/explorers"; import { readDepositHash, readIntentError } from "../../lib/intent-result"; import { findEvmToken } from "../../constants/evm-tokens"; +import { getMidenNetworkConfig } from "../../config/miden"; +import { useMidenNetwork } from "../../hooks/useMidenNetwork"; import { Button } from "@/components/ui/button"; import { CUSTOM_TOKEN_DEFAULT_DECIMALS, @@ -41,12 +43,13 @@ export function WithdrawForm({ isLoading, isSDKReady, }: Props) { + const { network } = useMidenNetwork(); const [evmToken, setEvmToken] = useState(WITHDRAW_TOKENS[0].address); const [customToken, setCustomToken] = useState(""); const [minTokenOut, setMinTokenOut] = useState("1000000"); const [midenRecipientInput, setMidenRecipientInput] = useState(""); const [midenFaucetId, setMidenFaucetId] = useState( - "0xfc90f0f4da30e51168453b60eafed7", + () => getMidenNetworkConfig(network).defaultFaucetId, ); const [status, setStatus] = useState(""); diff --git a/src/components/crosschain/intent/IntentSourceAssetField.tsx b/src/components/crosschain/intent/IntentSourceAssetField.tsx index cfc7c29..91790a8 100644 --- a/src/components/crosschain/intent/IntentSourceAssetField.tsx +++ b/src/components/crosschain/intent/IntentSourceAssetField.tsx @@ -46,6 +46,12 @@ export function IntentSourceAssetField({ {selectedAsset?.amount?.toString() ?? "—"}

+ {!isLoadingAssets && assets.length === 0 && ( +

+ No Epoch-supported Miden assets found. Fund this wallet with a + configured testnet faucet before bridging. +

+ )}
); } diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index c23600a..650a08c 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -11,7 +11,6 @@ export function Header() {

Miden × Epoch

- Testnet
); diff --git a/src/components/providers/MidenNetworkApp.tsx b/src/components/providers/MidenNetworkApp.tsx new file mode 100644 index 0000000..765983f --- /dev/null +++ b/src/components/providers/MidenNetworkApp.tsx @@ -0,0 +1,38 @@ +import { Toaster } from "sonner"; +import { MidenFiSignerProvider } from "@miden-sdk/miden-wallet-adapter-react"; +import { MidenProvider } from "@miden-sdk/react"; +import { + AllowedPrivateData, + WalletAdapterNetwork, +} from "@miden-sdk/miden-wallet-adapter-base"; +import App from "../../App"; +import { + DEFAULT_MIDEN_NETWORK, + getMidenNetworkConfig, +} from "../../config/miden"; +import { MidenNetworkContext } from "../../hooks/useMidenNetwork"; + +export function MidenNetworkApp() { + const network = DEFAULT_MIDEN_NETWORK; + const networkConfig = getMidenNetworkConfig(network); + + return ( + + + + + + + + + ); +} diff --git a/src/components/tabs/CrosschainTab.tsx b/src/components/tabs/CrosschainTab.tsx index 7274faf..e1bdeff 100644 --- a/src/components/tabs/CrosschainTab.tsx +++ b/src/components/tabs/CrosschainTab.tsx @@ -1,11 +1,22 @@ +import { useMemo } from "react"; import { IntentForm } from "../crosschain/IntentForm"; import { IntentStatus } from "../crosschain/IntentStatus"; import { useEpochIntent } from "../../hooks/useEpochIntent"; import { useIntentFlowStatus } from "../../hooks/useIntentFlowStatus"; import { useMidenWalletAdapter } from "../../hooks/useMidenWalletAdapter"; +import { getMidenFaucetDecimals } from "../../constants/miden-tokens"; +import { useMidenNetwork } from "../../hooks/useMidenNetwork"; export function CrosschainTab() { const midenWallet = useMidenWalletAdapter({ enabled: true }); + const { network } = useMidenNetwork(); + const bridgeableMidenAssets = useMemo( + () => + midenWallet.assets.filter( + ({ assetId }) => getMidenFaucetDecimals(assetId, network) !== undefined, + ), + [midenWallet.assets, network], + ); const epoch = useEpochIntent(); const intentNonce = epoch.intentResult?.intentNonce; @@ -38,7 +49,7 @@ export function CrosschainTab() { = { + devnet: { + rpcUrl: devnetRpcUrl ?? "", + allocatorUrl: devnetAllocatorUrl ?? null, + defaultFaucetId: "0x157e8ac22390f771044593acdc153f", + midenscanBase: "https://devnet.midenscan.com", + enabled: Boolean(devnetRpcUrl && devnetAllocatorUrl), + unavailableReason: + "Configure VITE_MIDEN_DEVNET_RPC_URL and VITE_DEVNET_ALLOCATOR_URL.", + }, + testnet: { + rpcUrl: testnetRpcUrl ?? "", + allocatorUrl: testnetAllocatorUrl ?? null, + defaultFaucetId: "0x537c15a622074e91188aa894456c52", + midenscanBase: "https://testnet.midenscan.com", + enabled: Boolean(testnetRpcUrl && testnetAllocatorUrl), + unavailableReason: + "Configure VITE_MIDEN_TESTNET_RPC_URL and VITE_TESTNET_ALLOCATOR_URL.", + }, +}; + +export function getMidenNetworkConfig( + network: MidenNetwork, +): MidenNetworkConfig { + return networkConfigs[network]; +} diff --git a/src/constants/miden-tokens.ts b/src/constants/miden-tokens.ts index 375ef1b..0594e87 100644 --- a/src/constants/miden-tokens.ts +++ b/src/constants/miden-tokens.ts @@ -1,7 +1,8 @@ import { normalizeMidenIdToHex } from "../services/epoch-bridge"; +import type { MidenNetwork } from "../config/miden"; /** - * Hardcoded Miden faucet → decimals map. + * Hardcoded Miden testnet/devnet faucet → decimals map. * * Backend (sio/dex-solver/inventory) does not surface faucet decimals to the * frontend; relying on the wallet adapter's reported `decimals` is unreliable @@ -10,15 +11,19 @@ import { normalizeMidenIdToHex } from "../services/epoch-bridge"; * * Keys are normalized to lowercase hex without `0x` prefix. Lookups go through * `normalizeMidenIdToHex` first so bech32 faucet ids from the wallet adapter - * (e.g. `mtst1qxxxxxxxxxxxxx_xxxxxx`) resolve correctly. + * (e.g. `mtst1...` or `mdev1...`) resolve correctly. */ -const MIDEN_FAUCET_DECIMALS: Record = { - fc90f0f4da30e51168453b60eafed7: 6, // USDC - "176275876f2fd41103257e341832b9": 6, // DAI - "7725b0e9bb9406912d2ebeaeb05f4d": 6, // USDT - a54717f6bd3210d128aeeaa8a2b7f3: 6, // WETH - "151823cde4b7bd91352617729d7614": 6, // WBTC - "2458e5446128e6b150b75b8ebd9ce1": 6, // MIDEN +const MIDEN_FAUCET_DECIMALS: Record> = { + devnet: { + "157e8ac22390f771044593acdc153f": 6, + }, + testnet: { + "537c15a622074e91188aa894456c52": 6, + "6500ca8c2dd69e9147ab7eafad162c": 6, + d17976f0809a8191412f2a126625df: 6, + "4a09f13153d9cd114c078bfb62a7ec": 6, + "5fd2e6fd17712c51404d09c2b847f7": 6, + }, }; function toMapKey(faucetId: string): string { @@ -28,10 +33,13 @@ function toMapKey(faucetId: string): string { } /** Returns Miden faucet decimals, or `undefined` if the faucet is unknown. */ -export function getMidenFaucetDecimals(faucetId: string): number | undefined { +export function getMidenFaucetDecimals( + faucetId: string, + network: MidenNetwork, +): number | undefined { if (!faucetId) return undefined; try { - return MIDEN_FAUCET_DECIMALS[toMapKey(faucetId)]; + return MIDEN_FAUCET_DECIMALS[network][toMapKey(faucetId)]; } catch { return undefined; } diff --git a/src/hooks/useEpochIntent.ts b/src/hooks/useEpochIntent.ts index 1794e17..f14c103 100644 --- a/src/hooks/useEpochIntent.ts +++ b/src/hooks/useEpochIntent.ts @@ -61,7 +61,7 @@ export function useEpochIntent() { error: confirmError, } = useMutation({ mutationFn: async ( - createMidenP2IDNote: SolveIntentParams["createMidenP2IDNote"], + createMidenP2IDENote: SolveIntentParams["createMidenP2IDENote"], ) => { if (!sdk) throw new Error("Epoch SDK not ready"); if (!pendingQuote) throw new Error("Fetch a quote first"); @@ -71,7 +71,7 @@ export function useEpochIntent() { ...pendingQuote.params, collateralType: CollateralType.Miden, midenSourceAccount: pendingQuote.params.midenAccountId, - createMidenP2IDNote, + createMidenP2IDENote, preFetchedQuote: pendingQuote, }); // Set before throwing: an in-band failure still has a result worth showing. diff --git a/src/hooks/useMidenNetwork.ts b/src/hooks/useMidenNetwork.ts new file mode 100644 index 0000000..9f81ed6 --- /dev/null +++ b/src/hooks/useMidenNetwork.ts @@ -0,0 +1,17 @@ +import { createContext, useContext } from "react"; +import type { MidenNetwork } from "../config/miden"; + +export interface MidenNetworkContextValue { + network: MidenNetwork; +} + +export const MidenNetworkContext = + createContext(null); + +export function useMidenNetwork(): MidenNetworkContextValue { + const value = useContext(MidenNetworkContext); + if (!value) { + throw new Error("useMidenNetwork must be used inside MidenNetworkContext"); + } + return value; +} diff --git a/src/hooks/useMidenP2IDNoteFactory.ts b/src/hooks/useMidenP2IDNoteFactory.ts index 535b155..c14de36 100644 --- a/src/hooks/useMidenP2IDNoteFactory.ts +++ b/src/hooks/useMidenP2IDNoteFactory.ts @@ -1,7 +1,8 @@ -import { useCallback } from "react"; +import { useCallback, useEffect, useRef } from "react"; import { useMidenFiWallet } from "@miden-sdk/miden-wallet-adapter-react"; import { Transaction } from "@miden-sdk/miden-wallet-adapter-base"; import { useMiden } from "@miden-sdk/react"; + import { Note, NoteType, @@ -11,6 +12,7 @@ import { NoteArray, NoteAttachment, TransactionRequestBuilder, + Word, } from "@miden-sdk/miden-sdk"; import type { SolveIntentParams } from "@epoch-protocol/epoch-intents-sdk"; @@ -28,6 +30,14 @@ function toAccountId(id: string): AccountId { return s.startsWith("0x") ? AccountId.fromHex(s) : AccountId.fromBech32(s); } +function createFeeConversionSalt(): Word { + // Each 32-bit limb is a valid Miden field element. Four independent limbs + // give the Guarded Multisig account a fresh replay guard for this request. + return new Word( + BigUint64Array.from(crypto.getRandomValues(new Uint32Array(4)), BigInt), + ); +} + /** * Mints the recallable P2IDE collateral note, binding it to the intent's mandate * via the attachment felts the SDK computed (Compact-equivalent witness hash). @@ -44,13 +54,21 @@ export function useMidenP2IDNoteFactory({ midenAccountId, onStatus, onNoteCreated, -}: Options): SolveIntentParams["createMidenP2IDNote"] { +}: Options): SolveIntentParams["createMidenP2IDENote"] { const { requestTransaction, waitForTransaction } = useMidenFiWallet(); - // useMiden() is non-throwing (unlike useMidenClient, which throws before the - // client initializes); we gate on readiness inside the callback instead. + // The app-owned client is used only for the public chain tip required to + // calculate the absolute reclaim height. The wallet owns the account and + // signs/submits the custom transaction below. const { client, isReady } = useMiden(); + const hasLoggedClientReady = useRef(false); + + useEffect(() => { + if (!isReady || !client || hasLoggedClientReady.current) return; + console.info("[Miden] App client initialized"); + hasLoggedClientReady.current = true; + }, [client, isReady]); - return useCallback>( + return useCallback>( async ( faucetIdParam, amountParam, @@ -105,7 +123,11 @@ export function useMidenP2IDNoteFactory({ ); const noteId = note.id().toString(); + // This request crosses into the wallet, so it must carry its own fresh + // replay guard instead of asking this app-owned client to inspect the + // wallet account. const txRequest = new TransactionRequestBuilder() + .withFeeConversionSalt(createFeeConversionSalt()) .withOwnOutputNotes(new NoteArray([note])) .build(); diff --git a/src/hooks/useMidenTransfer.ts b/src/hooks/useMidenTransfer.ts deleted file mode 100644 index 87dc978..0000000 --- a/src/hooks/useMidenTransfer.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { useAccounts, useSend, useSyncState } from "@miden-sdk/react"; -import { useCallback, useMemo } from "react"; - -interface UseMidenTransferReturn { - sendTokens: ( - senderId: string, - receiverId: string, - faucetId: string, - amount: bigint, - recallHeight?: number, - ) => Promise< - { success: boolean; noteId?: string; txId?: string } | undefined - >; - isSending: boolean; - error: string | null; -} - -/** P2ID / P2IDE send for `IntentForm` and any caller that needs `useSend` with a stable callback shape. */ -export function useMidenTransfer(): UseMidenTransferReturn { - const { send, isLoading: isSending, error: sendError } = useSend(); - const { sync } = useSyncState(); - const { refetch: refetchAccounts } = useAccounts(); - - const sendTokens = useCallback( - async ( - senderId: string, - receiverId: string, - faucetId: string, - amount: bigint, - recallHeight?: number, - ) => { - try { - const out = await send({ - from: senderId, - to: receiverId, - assetId: faucetId, - amount, - noteType: recallHeight != null ? "public" : "private", - recallHeight: recallHeight ?? undefined, - }); - let noteId: string | undefined; - if (out.note) { - try { - noteId = out.note.id().toString(); - } catch { - /* optional */ - } - } - await sync(); - await refetchAccounts(); - return { success: true, noteId, txId: out.txId }; - } catch (err) { - console.error("[Miden] Send error:", err); - throw err; - } - }, - [send, sync, refetchAccounts], - ); - - const error = useMemo(() => sendError?.message ?? null, [sendError]); - - return { - sendTokens, - isSending, - error, - }; -} diff --git a/src/hooks/useMidenWalletAdapter.ts b/src/hooks/useMidenWalletAdapter.ts index 62dd1f1..54f09bb 100644 --- a/src/hooks/useMidenWalletAdapter.ts +++ b/src/hooks/useMidenWalletAdapter.ts @@ -1,8 +1,10 @@ import { useCallback, useMemo } from "react"; import { useQuery } from "@tanstack/react-query"; import { useMidenFiWallet } from "@miden-sdk/miden-wallet-adapter-react"; +import { WalletReadyState } from "@miden-sdk/miden-wallet-adapter-base"; import { useAssetMetadata } from "@miden-sdk/react"; import { AccountId, Address } from "@miden-sdk/miden-sdk"; +import { useMidenNetwork } from "./useMidenNetwork"; export interface NormalizedMidenAccountId { hex: string; @@ -21,6 +23,9 @@ export interface UseMidenWalletAdapterOptions { export interface UseMidenWalletAdapterResult { connected: boolean; + connecting: boolean; + walletDetected: boolean; + walletReady: boolean; connect: () => Promise; address: string | null; accountId: NormalizedMidenAccountId | null; @@ -85,13 +90,32 @@ export function useMidenWalletAdapter( options: UseMidenWalletAdapterOptions = {}, ): UseMidenWalletAdapterResult { const { enabled = true } = options; + const { network } = useMidenNetwork(); const { connected, connect: adapterConnect, address, requestAssets, + connecting, + wallet, + wallets, } = useMidenFiWallet(); + const detectedWallet = useMemo( + () => + wallets.find( + ({ readyState }) => + readyState === WalletReadyState.Installed || + readyState === WalletReadyState.Loadable, + ), + [wallets], + ); + + const walletReady = + !!wallet && + (wallet.readyState === WalletReadyState.Installed || + wallet.readyState === WalletReadyState.Loadable); + const accountId = useMemo(() => normalizeAccountId(address), [address]); // Keyed on address so App + the active tab share one requestAssets() call. @@ -101,7 +125,7 @@ export function useMidenWalletAdapter( error, refetch, } = useQuery({ - queryKey: ["midenAssets", address], + queryKey: ["midenAssets", network, address], queryFn: async () => (await requestAssets!()) ?? [], enabled: enabled && connected && !!address && !!requestAssets, // requestAssets() opens the wallet's approval prompt, so it must never @@ -153,11 +177,20 @@ export function useMidenWalletAdapter( ); const connect = useCallback(async () => { - if (!connected) await adapterConnect(); - }, [connected, adapterConnect]); + if (connected || connecting) return; + if (!walletReady) { + throw new Error( + "Miden wallet is still initializing. Wait a moment and try again.", + ); + } + await adapterConnect(); + }, [adapterConnect, connected, connecting, walletReady]); return { connected, + connecting, + walletDetected: !!detectedWallet, + walletReady, connect, address, accountId, diff --git a/src/lib/epoch-sdk.ts b/src/lib/epoch-sdk.ts index 84abbdb..a99f2a0 100644 --- a/src/lib/epoch-sdk.ts +++ b/src/lib/epoch-sdk.ts @@ -2,13 +2,13 @@ import { useEffect, useState } from "react"; import { useWalletClient } from "wagmi"; import type { WalletClient } from "viem"; import type { EpochIntentSDK } from "@epoch-protocol/epoch-intents-sdk"; - -export const EPOCH_API_BASE_URL: string = - import.meta.env.VITE_ALLOCATOR_URL || "http://localhost:3000"; +import { getMidenNetworkConfig } from "../config/miden"; +import { useMidenNetwork } from "../hooks/useMidenNetwork"; interface SdkEntry { client: WalletClient; chainIdOverride?: number; + apiBaseUrl: string; sdk: EpochIntentSDK; } @@ -23,9 +23,13 @@ interface SdkEntry { export function useEpochSdk(chainIdOverride?: number): EpochIntentSDK | null { const [entry, setEntry] = useState(null); const { data: walletClient } = useWalletClient(); + const { network } = useMidenNetwork(); + const apiBaseUrl = getMidenNetworkConfig(network).allocatorUrl; useEffect(() => { - if (!walletClient) return; + if (!walletClient || !apiBaseUrl) { + return; + } let cancelled = false; void import("@epoch-protocol/epoch-intents-sdk") @@ -41,8 +45,9 @@ export function useEpochSdk(chainIdOverride?: number): EpochIntentSDK | null { setEntry({ client: walletClient, chainIdOverride, + apiBaseUrl, sdk: new SDK({ - apiBaseUrl: EPOCH_API_BASE_URL, + apiBaseUrl, walletClient: client, }), }); @@ -56,13 +61,14 @@ export function useEpochSdk(chainIdOverride?: number): EpochIntentSDK | null { return () => { cancelled = true; }; - }, [walletClient, chainIdOverride]); + }, [walletClient, chainIdOverride, apiBaseUrl]); // An SDK is only valid for the client and chain it was built from; returning // it after either changes would hand callers the previous wallet's SDK. return entry && entry.client === walletClient && - entry.chainIdOverride === chainIdOverride + entry.chainIdOverride === chainIdOverride && + entry.apiBaseUrl === apiBaseUrl ? entry.sdk : null; } diff --git a/src/lib/explorers.ts b/src/lib/explorers.ts index 5c895fa..860f872 100644 --- a/src/lib/explorers.ts +++ b/src/lib/explorers.ts @@ -3,8 +3,7 @@ // chain mapped here. import { MIDEN_VIRTUAL_CHAIN_ID } from "@epoch-protocol/epoch-intents-sdk"; - -export const MIDENSCAN_BASE = "https://testnet.midenscan.com"; +import { getMidenNetworkConfig, type MidenNetwork } from "../config/miden"; const EVM_EXPLORERS: Record = { 1: "https://etherscan.io", @@ -17,14 +16,21 @@ const EVM_EXPLORERS: Record = { 84532: "https://sepolia.basescan.org", }; -export const explorerTxUrl = (chainId: number, hash: string): string | null => { - if (chainId === MIDEN_VIRTUAL_CHAIN_ID) return `${MIDENSCAN_BASE}/tx/${hash}`; +export const explorerTxUrl = ( + chainId: number, + hash: string, + network: MidenNetwork = "devnet", +): string | null => { + if (chainId === MIDEN_VIRTUAL_CHAIN_ID) + return `${getMidenNetworkConfig(network).midenscanBase}/tx/${hash}`; const base = EVM_EXPLORERS[chainId]; return base ? `${base}/tx/${hash}` : null; }; -export const midenscanNoteUrl = (noteId: string): string => - `${MIDENSCAN_BASE}/note/${noteId}`; +export const midenscanNoteUrl = ( + noteId: string, + network: MidenNetwork = "devnet", +): string => `${getMidenNetworkConfig(network).midenscanBase}/note/${noteId}`; export const truncateHash = ( hash: string | null | undefined, diff --git a/src/main.tsx b/src/main.tsx index 2666aa6..2ed4bde 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -6,15 +6,8 @@ import { RainbowKitProvider, lightTheme } from "@rainbow-me/rainbowkit"; import "@rainbow-me/rainbowkit/styles.css"; import "sonner/dist/styles.css"; import "./index.css"; -import { Toaster } from "sonner"; -import App from "./App"; import { config } from "./config/wagmi"; -import { MidenFiSignerProvider } from "@miden-sdk/miden-wallet-adapter-react"; -import { MidenProvider } from "@miden-sdk/react"; -import { - AllowedPrivateData, - WalletAdapterNetwork, -} from "@miden-sdk/miden-wallet-adapter-base"; +import { MidenNetworkApp } from "./components/providers/MidenNetworkApp"; const queryClient = new QueryClient(); @@ -30,19 +23,7 @@ createRoot(document.getElementById("root")!).render( - - {/* MidenProvider powers the @miden-sdk/react hooks (useSend / - useSyncState) that the P2IDE note factory uses to write the F-01 - recipient-binding attachment. */} - - - - - + diff --git a/src/services/epoch-bridge.ts b/src/services/epoch-bridge.ts index 193c4b1..11a623d 100644 --- a/src/services/epoch-bridge.ts +++ b/src/services/epoch-bridge.ts @@ -302,7 +302,7 @@ export async function buildCrossChainIntent( params: CrossChainIntentParams & { collateralType?: CollateralType; midenSourceAccount?: string; - createMidenP2IDNote?: SolveIntentParams["createMidenP2IDNote"]; + createMidenP2IDENote?: SolveIntentParams["createMidenP2IDENote"]; /** Pre-fetched quote from getCrossChainQuote — skips getTaskData step. */ preFetchedQuote?: CrossChainQuote; }, @@ -332,7 +332,7 @@ export async function buildCrossChainIntent( collateralType: (params.collateralType ?? "miden") as CollateralType, midenFaucetId: midenFaucetIdHex, midenSourceAccount: midenSourceHex, - createMidenP2IDNote: params.createMidenP2IDNote, + createMidenP2IDENote: params.createMidenP2IDENote, }); return {