From 36b20ee652c404a846d250c51dff952038b735ae Mon Sep 17 00:00:00 2001 From: jasspreetbawa13 Date: Wed, 9 Sep 2026 13:52:59 +0530 Subject: [PATCH 1/5] chore: migrate integration example to miden 0.16 --- README.md | 9 +- package.json | 8 +- pnpm-lock.yaml | 765 +++++++++---------- src/App.tsx | 42 +- src/components/crosschain/IntentForm.tsx | 4 +- src/components/crosschain/IntentStatus.tsx | 8 +- src/components/crosschain/WithdrawForm.tsx | 5 +- src/components/layout/Header.tsx | 41 +- src/components/providers/MidenNetworkApp.tsx | 62 ++ src/config/miden.ts | 17 + src/constants/miden-tokens.ts | 7 +- src/hooks/useMidenNetwork.ts | 18 + src/hooks/useMidenP2IDNoteFactory.ts | 1 + src/hooks/useMidenWalletAdapter.ts | 48 +- src/lib/explorers.ts | 18 +- src/main.tsx | 23 +- 16 files changed, 635 insertions(+), 441 deletions(-) create mode 100644 src/components/providers/MidenNetworkApp.tsx create mode 100644 src/config/miden.ts create mode 100644 src/hooks/useMidenNetwork.ts diff --git a/README.md b/README.md index f09298d..089f394 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,10 @@ Testnet tokens (USDC, DAI, USDT, etc.) share the same contract addresses across ``` `.env`: ``` - VITE_ALLOCATOR_URL=https://testnet-dev.epochprotocol.xyz + # Select Devnet or Testnet from the app header. The allocator must use the + # same network. + # Run the devnet-compatible smallocator locally. + VITE_ALLOCATOR_URL=http://localhost:3000 ``` 2. Install + start: ```bash @@ -49,7 +52,7 @@ 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. Use the Devnet/Testnet selector in the app header to choose the matching Miden network. - **EVM testnet tokens**: ping Epoch team with your Ethereum address; team will send testnet USDC. ## Key Files diff --git a/package.json b/package.json index c956fd1..93aded1 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-rc.5", + "@miden-sdk/miden-wallet-adapter-base": "0.16.0-rc.5", + "@miden-sdk/miden-wallet-adapter-react": "0.16.0-rc.5", + "@miden-sdk/react": "0.16.0-rc.5", "@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..58b2585 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-rc.5 + version: 0.16.0-rc.5 '@miden-sdk/miden-wallet-adapter-base': - specifier: ^0.15.1 - version: 0.15.1 + specifier: 0.16.0-rc.5 + version: 0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5) '@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-rc.5 + version: 0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@miden-sdk/react@0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@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-rc.5 + version: 0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@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,45 +757,52 @@ 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-rc.5': + resolution: {integrity: sha512-VjGWkQu/gvg4q7/+lTMbdmpiKr5p1qw6aveqq5ZWKAON2dz1m84Nz6JnKIqhyGP6FSsHOS+dePPw8Q+SpNisnQ==} - '@miden-sdk/miden-wallet-adapter-base@0.15.1': - resolution: {integrity: sha512-7CjpJyvEUtXh3KmjBzRQEgQqPjGhGc0FOr3fWOFwIHprQNdKxEpo3i6l208y6qOO/OK+SikKqxj9dlmHXkcmwQ==} + '@miden-sdk/miden-wallet-adapter-base@0.16.0-rc.5': + resolution: {integrity: sha512-1xH94sFeSkfmnR4pW1Kh3RO880iqJ5ADn/adLGcRqmLXZpyYpwcf1IiuYx+WofhgVCtktXW+1dgauZh/bxMa8A==} + peerDependencies: + '@miden-sdk/miden-sdk': ^0.16.0-rc.5 - '@miden-sdk/miden-wallet-adapter-miden@0.15.1': - resolution: {integrity: sha512-IpmJJh3vF1xfYaqRwt4b+JHIcgxCQQt2UvVcFsBFgUnRl6VQrUBpTI4RCuEga/MxdQXaZNMtSI4S1NweSNdDOA==} + '@miden-sdk/miden-wallet-adapter-miden@0.16.0-rc.5': + resolution: {integrity: sha512-qySThOuXEXFvoG8heiAucbH22/Ec88mqCk3EK/Zd0+eAts9YFWg9/cYtkK7uGMVp8acMoHTfMO7tGu3VXPrrVA==} peerDependencies: + '@miden-sdk/miden-sdk': ^0.16.0-rc.5 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-rc.5': + resolution: {integrity: sha512-jNOru5BZv4ix4o5FFBVDbyTnBbIZzNAZS23u4lpjc7SW3gW2oZFTAy+YgUija1XVeg4aNcsqYqleqSMQFCVsSQ==} peerDependencies: - '@miden-sdk/react': ^0.15.1 + '@miden-sdk/miden-sdk': ^0.16.0-rc.5 + '@miden-sdk/react': ^0.16.0-rc.5 + '@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-rc.5': + resolution: {integrity: sha512-GjVzfdGquyoiHwOrUU9EU4sKihAvVYc3ZtbjYt2dReumlYwj+LzhLUu3vu1mepmGuvWFqaTKub5jkou8dkaUMQ==} 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-rc.5': + resolution: {integrity: sha512-i4oIV0MwOf2AK3b4EaL3yPWNfD8+sgfMo/61TK1Y1IBnFStAc9sv7EroeVQT0s+qKlnecq/U7VlN6wxQfvKXew==} 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-rc.5': + resolution: {integrity: sha512-Qjm0SCRoe61PgixxhzMoGZxv/u5zyU7epUtJKrsQlhDvTWhWvN3KWLlNj583B60321XR3AbIcTXbZHu9YUAYlw==} cpu: [x64] os: [linux] - '@miden-sdk/react@0.15.2': - resolution: {integrity: sha512-L3vxV2QRE+qQ9YPo4VIsCfQ7u12oN0fGp8oRnUGAgSwT1oztHx/rOku02ggAdy1SWQnpe8AiUGiFfC9lNoXkqg==} + '@miden-sdk/react@0.16.0-rc.5': + resolution: {integrity: sha512-zuGbnYqHIqC8CpbIpcsSvJR/tGSrHtPF/FBo+40FVQzh6bW4aPig3KfANDVSM3LsSDclPx/XeLht86ssvRBUMg==} peerDependencies: - '@miden-sdk/miden-sdk': ^0.15.2 + '@miden-sdk/miden-sdk': ^0.16.0-rc.5 react: '>=18.0.0' '@modelcontextprotocol/sdk@1.29.0': @@ -3989,11 +3996,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 +5451,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 +5491,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 +5535,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 +5566,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 +5624,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 +5632,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 +5641,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 +5664,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 +5684,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 +5698,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 +5737,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 +5837,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 +5860,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 +5922,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 +6004,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 +6072,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 +6089,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 +6111,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 +6131,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 +6159,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 +6187,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 +6204,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 +6212,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,85 +6220,88 @@ 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-rc.5': 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-rc.5 + '@miden-sdk/node-darwin-x64': 0.16.0-rc.5 + '@miden-sdk/node-linux-x64-gnu': 0.16.0-rc.5 - '@miden-sdk/miden-wallet-adapter-base@0.15.1': + '@miden-sdk/miden-wallet-adapter-base@0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)': dependencies: + '@miden-sdk/miden-sdk': 0.16.0-rc.5 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-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(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-rc.5 + '@miden-sdk/miden-wallet-adapter-base': 0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5) 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-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@miden-sdk/react@0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@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-rc.5 + '@miden-sdk/miden-wallet-adapter-base': 0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5) + '@miden-sdk/miden-wallet-adapter-miden': 0.16.0-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(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-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@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-rc.5': optional: true - '@miden-sdk/node-darwin-x64@0.15.2': + '@miden-sdk/node-darwin-x64@0.16.0-rc.5': optional: true - '@miden-sdk/node-linux-x64-gnu@0.15.2': + '@miden-sdk/node-linux-x64-gnu@0.16.0-rc.5': 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-rc.5(@miden-sdk/miden-sdk@0.16.0-rc.5)(@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-rc.5 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)) transitivePeerDependencies: @@ -6304,7 +6309,7 @@ snapshots: - 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 +6319,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 +7155,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 +7168,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 +7185,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 +7231,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 +7271,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 +7308,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 +7343,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 +7392,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 +7516,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 +7526,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 +8147,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 +8163,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 +8193,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 +8207,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 +8222,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 +8265,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 +8277,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 +8345,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 +8359,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 +8389,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 +8403,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 +8437,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 +8571,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 +8607,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 +8705,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 +8714,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 +8745,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 +8754,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 +8785,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 +8803,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 +8829,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 +8847,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 +8887,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 +9014,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 +9043,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 +9282,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 +9381,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 +9455,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 +9481,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 +9498,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 +9544,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 +9632,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 +9661,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 +9732,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 +9760,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 +9915,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 +10295,6 @@ snapshots: nanoid@3.3.12: {} - nanoid@5.1.11: {} - natural-compare@1.4.0: {} negotiator@1.0.0: {} @@ -10456,28 +10453,14 @@ snapshots: transitivePeerDependencies: - zod - ox@0.6.7(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) - eventemitter3: 5.0.1 - optionalDependencies: - typescript: 5.9.3 - transitivePeerDependencies: - - zod - - ox@0.6.9(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) + abitype: 1.2.4(typescript@5.9.3)(zod@4.4.2) eventemitter3: 5.0.1 optionalDependencies: typescript: 5.9.3 @@ -10498,7 +10481,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 +10489,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 +10511,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 +10519,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 +10621,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 +10635,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 +10962,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 +10998,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 +11014,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 +11044,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 +11063,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 +11137,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 +11370,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 +11490,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 +11507,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 +11604,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..602c368 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 { @@ -57,6 +58,7 @@ export function IntentForm({ intentNonce, intentUserAddress, }: Props) { + const { network } = useMidenNetwork(); const { address } = useAccount(); const walletChainId = useChainId(); @@ -292,7 +294,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/layout/Header.tsx b/src/components/layout/Header.tsx index c23600a..643df2f 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -1,4 +1,11 @@ +import { MIDEN_SDK_VERSION, type MidenNetwork } from "../../config/miden"; +import { useMidenNetwork } from "../../hooks/useMidenNetwork"; + +const NETWORKS: MidenNetwork[] = ["devnet", "testnet"]; + export function Header() { + const { network, setNetwork } = useMidenNetwork(); + return (
@@ -11,7 +18,39 @@ export function Header() {

Miden × Epoch

- Testnet +
+
+ {NETWORKS.map((option) => { + const active = network === option; + return ( + + ); + })} +
+
+ {network === "devnet" ? "Devnet" : "Testnet"} · Miden SDK{" "} + {MIDEN_SDK_VERSION} +
+
); diff --git a/src/components/providers/MidenNetworkApp.tsx b/src/components/providers/MidenNetworkApp.tsx new file mode 100644 index 0000000..c921033 --- /dev/null +++ b/src/components/providers/MidenNetworkApp.tsx @@ -0,0 +1,62 @@ +import { useCallback, useState } from "react"; +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, + MIDEN_NETWORK_STORAGE_KEY, + type MidenNetwork, +} from "../../config/miden"; +import { MidenNetworkContext } from "../../hooks/useMidenNetwork"; + +function initialMidenNetwork(): MidenNetwork { + const stored = window.localStorage.getItem(MIDEN_NETWORK_STORAGE_KEY); + return stored === "testnet" || stored === "devnet" + ? stored + : DEFAULT_MIDEN_NETWORK; +} + +export function MidenNetworkApp() { + const [network, setNetworkState] = + useState(initialMidenNetwork); + const networkConfig = getMidenNetworkConfig(network); + const setNetwork = useCallback((next: MidenNetwork) => { + window.localStorage.setItem(MIDEN_NETWORK_STORAGE_KEY, next); + setNetworkState(next); + }, []); + + return ( + + + + + + + + + ); +} diff --git a/src/config/miden.ts b/src/config/miden.ts new file mode 100644 index 0000000..80a0c3e --- /dev/null +++ b/src/config/miden.ts @@ -0,0 +1,17 @@ +export type MidenNetwork = "devnet" | "testnet"; + +// Keep this in lockstep with the pinned @miden-sdk/* packages in package.json. +export const MIDEN_SDK_VERSION = "0.16.0-rc.5"; +export const DEFAULT_MIDEN_NETWORK: MidenNetwork = "devnet"; +export const MIDEN_NETWORK_STORAGE_KEY = "miden-integration-network"; + +export function getMidenNetworkConfig(network: MidenNetwork) { + return { + rpcUrl: network, + defaultFaucetId: + network === "devnet" + ? "0x157e8ac22390f771044593acdc153f" + : "0xfc90f0f4da30e51168453b60eafed7", + midenscanBase: `https://${network}.midenscan.com`, + }; +} diff --git a/src/constants/miden-tokens.ts b/src/constants/miden-tokens.ts index 375ef1b..129b768 100644 --- a/src/constants/miden-tokens.ts +++ b/src/constants/miden-tokens.ts @@ -1,7 +1,7 @@ import { normalizeMidenIdToHex } from "../services/epoch-bridge"; /** - * 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,9 +10,12 @@ 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 = { + // Devnet native faucet from https://faucet.devnet.miden.io/get_metadata. + "157e8ac22390f771044593acdc153f": 6, + // Testnet faucets. fc90f0f4da30e51168453b60eafed7: 6, // USDC "176275876f2fd41103257e341832b9": 6, // DAI "7725b0e9bb9406912d2ebeaeb05f4d": 6, // USDT diff --git a/src/hooks/useMidenNetwork.ts b/src/hooks/useMidenNetwork.ts new file mode 100644 index 0000000..abaeaf9 --- /dev/null +++ b/src/hooks/useMidenNetwork.ts @@ -0,0 +1,18 @@ +import { createContext, useContext } from "react"; +import type { MidenNetwork } from "../config/miden"; + +export interface MidenNetworkContextValue { + network: MidenNetwork; + setNetwork: (network: MidenNetwork) => void; +} + +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..5d96aa6 100644 --- a/src/hooks/useMidenP2IDNoteFactory.ts +++ b/src/hooks/useMidenP2IDNoteFactory.ts @@ -2,6 +2,7 @@ import { useCallback } 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, diff --git a/src/hooks/useMidenWalletAdapter.ts b/src/hooks/useMidenWalletAdapter.ts index 62dd1f1..32ff638 100644 --- a/src/hooks/useMidenWalletAdapter.ts +++ b/src/hooks/useMidenWalletAdapter.ts @@ -1,6 +1,7 @@ -import { useCallback, useMemo } from "react"; +import { useCallback, useEffect, 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"; @@ -21,6 +22,9 @@ export interface UseMidenWalletAdapterOptions { export interface UseMidenWalletAdapterResult { connected: boolean; + connecting: boolean; + walletDetected: boolean; + walletReady: boolean; connect: () => Promise; address: string | null; accountId: NormalizedMidenAccountId | null; @@ -90,8 +94,37 @@ export function useMidenWalletAdapter( connect: adapterConnect, address, requestAssets, + connecting, + wallet, + wallets, + select, } = useMidenFiWallet(); + const detectedWallet = useMemo( + () => + wallets.find( + ({ readyState }) => + readyState === WalletReadyState.Installed || + readyState === WalletReadyState.Loadable, + ), + [wallets], + ); + + // The adapter provider selects its single default wallet in an effect. Until + // that effect has completed, calling connect() throws WalletNotSelectedError. + // Selecting it here too makes the dependency explicit and lets the UI wait + // for the provider's selected-adapter state before enabling the button. + useEffect(() => { + if (!wallet && detectedWallet) { + select(detectedWallet.adapter.name); + } + }, [detectedWallet, select, wallet]); + + 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. @@ -153,11 +186,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/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. */} - - - - - + From d03b51896d23c1704782714a78f4a2d0bed54d5b Mon Sep 17 00:00:00 2001 From: jasspreetbawa13 Date: Wed, 9 Sep 2026 19:55:05 +0530 Subject: [PATCH 2/5] fix: isolate miden client initialization --- .env.example | 8 ++- README.md | 33 +++++----- src/components/crosschain/IntentForm.tsx | 6 +- src/components/layout/Header.tsx | 11 +++- src/components/providers/MidenNetworkApp.tsx | 42 ++++++------ src/config/miden.ts | 50 ++++++++++++--- src/hooks/useEpochIntent.ts | 4 +- src/hooks/useMidenP2IDNoteFactory.ts | 4 +- src/hooks/useMidenTransfer.ts | 67 -------------------- src/hooks/useMidenWalletAdapter.ts | 17 ++--- src/lib/epoch-sdk.ts | 20 ++++-- src/services/epoch-bridge.ts | 4 +- 12 files changed, 123 insertions(+), 143 deletions(-) delete mode 100644 src/hooks/useMidenTransfer.ts diff --git a/.env.example b/.env.example index 800598f..1ff7fb3 100644 --- a/.env.example +++ b/.env.example @@ -1 +1,7 @@ -VITE_ALLOCATOR_URL=https://testnet-dev.epochprotocol.xyz +# Devnet allocator. VITE_ALLOCATOR_URL remains supported for existing setups. +VITE_DEVNET_ALLOCATOR_URL=https://testnet-dev.epochprotocol.xyz + +# Testnet is intentionally disabled until these two endpoints point at the +# same Miden testnet deployment. +# VITE_MIDEN_TESTNET_RPC_URL=https://your-testnet-rpc.example +# VITE_TESTNET_ALLOCATOR_URL=https://your-testnet-allocator.example diff --git a/README.md b/README.md index 089f394..c547a6e 100644 --- a/README.md +++ b/README.md @@ -33,10 +33,13 @@ Testnet tokens (USDC, DAI, USDT, etc.) share the same contract addresses across ``` `.env`: ``` - # Select Devnet or Testnet from the app header. The allocator must use the - # same network. # Run the devnet-compatible smallocator locally. - VITE_ALLOCATOR_URL=http://localhost:3000 + 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 @@ -52,24 +55,24 @@ Testnet tokens (USDC, DAI, USDT, etc.) share the same contract addresses across ## Test Funds -- **Miden devnet tokens**: claim from the [official devnet faucet](https://faucet.devnet.miden.io/) in a devnet Miden wallet. Use the Devnet/Testnet selector in the app header to choose the matching Miden network. +- **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/src/components/crosschain/IntentForm.tsx b/src/components/crosschain/IntentForm.tsx index 602c368..a19cede 100644 --- a/src/components/crosschain/IntentForm.tsx +++ b/src/components/crosschain/IntentForm.tsx @@ -37,7 +37,7 @@ interface Props { isLoadingMidenAssets: boolean; onFetchQuote: (params: CrossChainIntentParams) => Promise; onConfirmIntent: ( - createMidenP2IDNote: SolveIntentParams["createMidenP2IDNote"], + createMidenP2IDENote: SolveIntentParams["createMidenP2IDENote"], ) => Promise; onClearQuote: () => void; quotePhase: IntentQuotePhase; @@ -116,7 +116,7 @@ export function IntentForm({ hasValidDestinationChainId ? destinationChainIdNum : undefined, ); - const createMidenP2IDNote = useMidenP2IDNoteFactory({ + const createMidenP2IDENote = useMidenP2IDNoteFactory({ midenAccountId, onStatus: setConfirmStatus, onNoteCreated: setLocalMidenNoteId, @@ -182,7 +182,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); diff --git a/src/components/layout/Header.tsx b/src/components/layout/Header.tsx index 643df2f..ac2957d 100644 --- a/src/components/layout/Header.tsx +++ b/src/components/layout/Header.tsx @@ -1,4 +1,8 @@ -import { MIDEN_SDK_VERSION, type MidenNetwork } from "../../config/miden"; +import { + getMidenNetworkConfig, + MIDEN_SDK_VERSION, + type MidenNetwork, +} from "../../config/miden"; import { useMidenNetwork } from "../../hooks/useMidenNetwork"; const NETWORKS: MidenNetwork[] = ["devnet", "testnet"]; @@ -26,12 +30,15 @@ export function Header() { > {NETWORKS.map((option) => { const active = network === option; + const config = getMidenNetworkConfig(option); return ( - ); - })} -
-
- {network === "devnet" ? "Devnet" : "Testnet"} · Miden SDK{" "} - {MIDEN_SDK_VERSION} -
- ); diff --git a/src/components/providers/MidenNetworkApp.tsx b/src/components/providers/MidenNetworkApp.tsx index a2f6a1e..765983f 100644 --- a/src/components/providers/MidenNetworkApp.tsx +++ b/src/components/providers/MidenNetworkApp.tsx @@ -1,4 +1,3 @@ -import { useCallback, useState } from "react"; import { Toaster } from "sonner"; import { MidenFiSignerProvider } from "@miden-sdk/miden-wallet-adapter-react"; import { MidenProvider } from "@miden-sdk/react"; @@ -10,48 +9,23 @@ import App from "../../App"; import { DEFAULT_MIDEN_NETWORK, getMidenNetworkConfig, - MIDEN_NETWORK_STORAGE_KEY, - type MidenNetwork, } from "../../config/miden"; import { MidenNetworkContext } from "../../hooks/useMidenNetwork"; -function initialMidenNetwork(): MidenNetwork { - const stored = window.localStorage.getItem(MIDEN_NETWORK_STORAGE_KEY); - return (stored === "testnet" || stored === "devnet") && - getMidenNetworkConfig(stored).enabled - ? stored - : DEFAULT_MIDEN_NETWORK; -} - export function MidenNetworkApp() { - const [network, setNetworkState] = - useState(initialMidenNetwork); + const network = DEFAULT_MIDEN_NETWORK; const networkConfig = getMidenNetworkConfig(network); - const setNetwork = useCallback((next: MidenNetwork) => { - if (!getMidenNetworkConfig(next).enabled) return; - window.localStorage.setItem(MIDEN_NETWORK_STORAGE_KEY, next); - setNetworkState(next); - }, []); return ( - + diff --git a/src/config/miden.ts b/src/config/miden.ts index f308e92..ae063cd 100644 --- a/src/config/miden.ts +++ b/src/config/miden.ts @@ -1,9 +1,6 @@ export type MidenNetwork = "devnet" | "testnet"; -// Keep this in lockstep with the pinned @miden-sdk/* packages in package.json. -export const MIDEN_SDK_VERSION = "0.16.0-rc.5"; -export const DEFAULT_MIDEN_NETWORK: MidenNetwork = "devnet"; -export const MIDEN_NETWORK_STORAGE_KEY = "miden-integration-network"; +export const DEFAULT_MIDEN_NETWORK: MidenNetwork = "testnet"; export interface MidenNetworkConfig { rpcUrl: string; @@ -14,31 +11,29 @@ export interface MidenNetworkConfig { unavailableReason?: string; } -const devnetAllocatorUrl = - import.meta.env.VITE_DEVNET_ALLOCATOR_URL ?? - import.meta.env.VITE_ALLOCATOR_URL ?? - "http://localhost:3000"; +const devnetRpcUrl = import.meta.env.VITE_MIDEN_DEVNET_RPC_URL?.trim(); +const devnetAllocatorUrl = import.meta.env.VITE_DEVNET_ALLOCATOR_URL?.trim(); const testnetRpcUrl = import.meta.env.VITE_MIDEN_TESTNET_RPC_URL?.trim(); const testnetAllocatorUrl = import.meta.env.VITE_TESTNET_ALLOCATOR_URL?.trim(); const networkConfigs: Record = { devnet: { - rpcUrl: "devnet", - allocatorUrl: devnetAllocatorUrl, + rpcUrl: devnetRpcUrl ?? "", + allocatorUrl: devnetAllocatorUrl ?? null, defaultFaucetId: "0x157e8ac22390f771044593acdc153f", midenscanBase: "https://devnet.midenscan.com", - enabled: true, + enabled: Boolean(devnetRpcUrl && devnetAllocatorUrl), + unavailableReason: + "Configure VITE_MIDEN_DEVNET_RPC_URL and VITE_DEVNET_ALLOCATOR_URL.", }, testnet: { - // Testnet must be configured as a complete pair. Using its SDK alias with - // a devnet allocator would create a note the allocator cannot consume. - rpcUrl: testnetRpcUrl ?? "testnet", + rpcUrl: testnetRpcUrl ?? "", allocatorUrl: testnetAllocatorUrl ?? null, - defaultFaucetId: "0xfc90f0f4da30e51168453b60eafed7", + defaultFaucetId: "0x18101fa522c174b165efd4f70a0385", midenscanBase: "https://testnet.midenscan.com", enabled: Boolean(testnetRpcUrl && testnetAllocatorUrl), unavailableReason: - "Configure VITE_MIDEN_TESTNET_RPC_URL and VITE_TESTNET_ALLOCATOR_URL to enable Testnet.", + "Configure VITE_MIDEN_TESTNET_RPC_URL and VITE_TESTNET_ALLOCATOR_URL.", }, }; diff --git a/src/constants/miden-tokens.ts b/src/constants/miden-tokens.ts index 129b768..3ca23f4 100644 --- a/src/constants/miden-tokens.ts +++ b/src/constants/miden-tokens.ts @@ -15,13 +15,8 @@ import { normalizeMidenIdToHex } from "../services/epoch-bridge"; const MIDEN_FAUCET_DECIMALS: Record = { // Devnet native faucet from https://faucet.devnet.miden.io/get_metadata. "157e8ac22390f771044593acdc153f": 6, - // Testnet faucets. - fc90f0f4da30e51168453b60eafed7: 6, // USDC - "176275876f2fd41103257e341832b9": 6, // DAI - "7725b0e9bb9406912d2ebeaeb05f4d": 6, // USDT - a54717f6bd3210d128aeeaa8a2b7f3: 6, // WETH - "151823cde4b7bd91352617729d7614": 6, // WBTC - "2458e5446128e6b150b75b8ebd9ce1": 6, // MIDEN + // Testnet faucet. + "18101fa522c174b165efd4f70a0385": 6, }; function toMapKey(faucetId: string): string { diff --git a/src/hooks/useMidenNetwork.ts b/src/hooks/useMidenNetwork.ts index abaeaf9..9f81ed6 100644 --- a/src/hooks/useMidenNetwork.ts +++ b/src/hooks/useMidenNetwork.ts @@ -3,7 +3,6 @@ import type { MidenNetwork } from "../config/miden"; export interface MidenNetworkContextValue { network: MidenNetwork; - setNetwork: (network: MidenNetwork) => void; } export const MidenNetworkContext = diff --git a/src/hooks/useMidenP2IDNoteFactory.ts b/src/hooks/useMidenP2IDNoteFactory.ts index be1571f..c14de36 100644 --- a/src/hooks/useMidenP2IDNoteFactory.ts +++ b/src/hooks/useMidenP2IDNoteFactory.ts @@ -1,4 +1,4 @@ -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"; @@ -12,6 +12,7 @@ import { NoteArray, NoteAttachment, TransactionRequestBuilder, + Word, } from "@miden-sdk/miden-sdk"; import type { SolveIntentParams } from "@epoch-protocol/epoch-intents-sdk"; @@ -29,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). @@ -47,9 +56,17 @@ export function useMidenP2IDNoteFactory({ onNoteCreated, }: 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>( async ( @@ -106,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(); From b9ffd0ab2d34c62d8b0036b484a4142aaccb8b6d Mon Sep 17 00:00:00 2001 From: jasspreetbawa13 Date: Fri, 11 Sep 2026 12:33:17 +0530 Subject: [PATCH 4/5] feat(miden): configure testnet dummy faucets --- src/config/miden.ts | 2 +- src/constants/miden-tokens.ts | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/config/miden.ts b/src/config/miden.ts index ae063cd..fc41f92 100644 --- a/src/config/miden.ts +++ b/src/config/miden.ts @@ -29,7 +29,7 @@ const networkConfigs: Record = { testnet: { rpcUrl: testnetRpcUrl ?? "", allocatorUrl: testnetAllocatorUrl ?? null, - defaultFaucetId: "0x18101fa522c174b165efd4f70a0385", + defaultFaucetId: "0x537c15a622074e91188aa894456c52", midenscanBase: "https://testnet.midenscan.com", enabled: Boolean(testnetRpcUrl && testnetAllocatorUrl), unavailableReason: diff --git a/src/constants/miden-tokens.ts b/src/constants/miden-tokens.ts index 3ca23f4..a7a6c9c 100644 --- a/src/constants/miden-tokens.ts +++ b/src/constants/miden-tokens.ts @@ -15,8 +15,12 @@ import { normalizeMidenIdToHex } from "../services/epoch-bridge"; const MIDEN_FAUCET_DECIMALS: Record = { // Devnet native faucet from https://faucet.devnet.miden.io/get_metadata. "157e8ac22390f771044593acdc153f": 6, - // Testnet faucet. - "18101fa522c174b165efd4f70a0385": 6, + // Testnet dummy faucets. + "537c15a622074e91188aa894456c52": 6, + "6500ca8c2dd69e9147ab7eafad162c": 6, + d17976f0809a8191412f2a126625df: 6, + "4a09f13153d9cd114c078bfb62a7ec": 6, + "5fd2e6fd17712c51404d09c2b847f7": 6, }; function toMapKey(faucetId: string): string { From 63a65fd8b640e93ac423ab65757b0ddb3ab90daa Mon Sep 17 00:00:00 2001 From: jasspreetbawa13 Date: Fri, 11 Sep 2026 21:23:28 +0530 Subject: [PATCH 5/5] fix(miden): limit intents to supported faucets --- src/components/crosschain/IntentForm.tsx | 20 ++++++++----- .../intent/IntentSourceAssetField.tsx | 6 ++++ src/components/tabs/CrosschainTab.tsx | 13 ++++++++- src/constants/miden-tokens.ts | 28 +++++++++++-------- 4 files changed, 48 insertions(+), 19 deletions(-) diff --git a/src/components/crosschain/IntentForm.tsx b/src/components/crosschain/IntentForm.tsx index a19cede..b828932 100644 --- a/src/components/crosschain/IntentForm.tsx +++ b/src/components/crosschain/IntentForm.tsx @@ -63,6 +63,12 @@ export function IntentForm({ 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. @@ -101,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( @@ -139,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, @@ -155,7 +161,7 @@ export function IntentForm({ const canFetch = isSDKReady && !!midenAccountId && - !!selectedAssetId && + !!resolvedSelectedAssetId && hasValidEvmRecipient && !!destination.outputToken && hasValidDestinationChainId && @@ -231,7 +237,7 @@ export function IntentForm({
{ 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/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 native faucet from https://faucet.devnet.miden.io/get_metadata. - "157e8ac22390f771044593acdc153f": 6, - // Testnet dummy faucets. - "537c15a622074e91188aa894456c52": 6, - "6500ca8c2dd69e9147ab7eafad162c": 6, - d17976f0809a8191412f2a126625df: 6, - "4a09f13153d9cd114c078bfb62a7ec": 6, - "5fd2e6fd17712c51404d09c2b847f7": 6, +const MIDEN_FAUCET_DECIMALS: Record> = { + devnet: { + "157e8ac22390f771044593acdc153f": 6, + }, + testnet: { + "537c15a622074e91188aa894456c52": 6, + "6500ca8c2dd69e9147ab7eafad162c": 6, + d17976f0809a8191412f2a126625df: 6, + "4a09f13153d9cd114c078bfb62a7ec": 6, + "5fd2e6fd17712c51404d09c2b847f7": 6, + }, }; function toMapKey(faucetId: string): string { @@ -30,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; }