From ef17e27224d6c8ea1ab6b1992eabc8a11516f90a Mon Sep 17 00:00:00 2001 From: signor1 Date: Fri, 29 May 2026 02:41:36 +0100 Subject: [PATCH 1/9] chore(deps): bump @circle-fin/app-kit to 1.6.1 --- packages/core/package.json | 2 +- packages/react/package.json | 4 +- pnpm-lock.yaml | 921 +++++++++++++++++++++++++++--------- 3 files changed, 696 insertions(+), 231 deletions(-) diff --git a/packages/core/package.json b/packages/core/package.json index 5b11da0..f11e801 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -69,7 +69,7 @@ "access": "public" }, "dependencies": { - "@circle-fin/app-kit": "^1.5.1", + "@circle-fin/app-kit": "^1.6.1", "nanoevents": "^9.0.0" }, "devDependencies": { diff --git a/packages/react/package.json b/packages/react/package.json index 68f30bf..c18fbd7 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -77,16 +77,16 @@ "dependencies": { "@circle-fin/adapter-solana-kit": "^1.4.9", "@circle-fin/adapter-viem-v2": "^1.11.0", - "@circle-fin/app-kit": "^1.5.1", + "@circle-fin/app-kit": "^1.6.1", "@radix-ui/react-dialog": "^1.1.0", "@radix-ui/react-dropdown-menu": "^2.1.0", "@radix-ui/react-select": "^2.1.0", "@radix-ui/react-tabs": "^1.1.0", - "@usewhisk/core": "workspace:*", "@solana/kit": "^5.0.0", "@solana/wallet-adapter-base": "^0.9.23", "@solana/wallet-adapter-react": "^0.15.35", "@solana/web3.js": "^1.95.0", + "@usewhisk/core": "workspace:*", "@web3icons/react": "^4.1.17", "clsx": "^2.1.1", "lucide-react": "^0.460.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6da545a..952f652 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -34,7 +34,7 @@ importers: version: 5.9.3 vitest: specifier: ^2.1.5 - version: 2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1) + version: 2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0) apps/docs: dependencies: @@ -73,7 +73,7 @@ importers: version: 2.1.0 fumadocs-mdx: specifier: ^13.0.2 - version: 13.0.8(fumadocs-core@16.8.9(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.460.0(react@19.2.5))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.4.1))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0)) + version: 13.0.8(fumadocs-core@16.8.9(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.460.0(react@19.2.5))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.4.1))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) fumadocs-ui: specifier: ^16.0.5 version: 16.8.9(@tailwindcss/oxide@4.3.0)(@types/mdx@2.0.13)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(fumadocs-core@16.8.9(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.460.0(react@19.2.5))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.4.1))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.3.0) @@ -126,6 +126,9 @@ importers: '@usewhisk/react': specifier: workspace:* version: link:../../packages/react + buffer: + specifier: ^6.0.3 + version: 6.0.3 react: specifier: ^19.0.0 version: 19.2.5 @@ -135,7 +138,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.3.0 - version: 4.3.0(vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0)) + version: 4.3.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) '@types/react': specifier: ^19.0.0 version: 19.2.14 @@ -144,7 +147,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.7.0(vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0)) + version: 4.7.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) tailwindcss: specifier: ^4.3.0 version: 4.3.0 @@ -153,7 +156,7 @@ importers: version: 5.9.3 vite: specifier: ^6.0.0 - version: 6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0) + version: 6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) examples/ecommerce-checkout: dependencies: @@ -246,6 +249,9 @@ importers: '@usewhisk/react': specifier: workspace:* version: link:../../packages/react + buffer: + specifier: ^6.0.3 + version: 6.0.3 react: specifier: ^19.0.0 version: 19.2.5 @@ -255,7 +261,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.3.0 - version: 4.3.0(vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0)) + version: 4.3.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) '@types/react': specifier: ^19.0.0 version: 19.2.14 @@ -264,7 +270,7 @@ importers: version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': specifier: ^4.3.4 - version: 4.7.0(vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0)) + version: 4.7.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)) tailwindcss: specifier: ^4.3.0 version: 4.3.0 @@ -273,7 +279,7 @@ importers: version: 5.9.3 vite: specifier: ^6.0.0 - version: 6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0) + version: 6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) examples/playground: dependencies: @@ -352,8 +358,8 @@ importers: packages/core: dependencies: '@circle-fin/app-kit': - specifier: ^1.5.1 - version: 1.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + specifier: ^1.6.1 + version: 1.6.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) nanoevents: specifier: ^9.0.0 version: 9.1.0 @@ -366,7 +372,7 @@ importers: version: 5.9.3 vitest: specifier: ^2.1.5 - version: 2.1.9(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1) + version: 2.1.9(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0) packages/react: dependencies: @@ -377,8 +383,8 @@ importers: specifier: ^1.11.0 version: 1.11.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)) '@circle-fin/app-kit': - specifier: ^1.5.1 - version: 1.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + specifier: ^1.6.1 + version: 1.6.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@radix-ui/react-dialog': specifier: ^1.1.0 version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -399,7 +405,7 @@ importers: version: 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)) '@solana/wallet-adapter-react': specifier: ^0.15.35 - version: 0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bs58@6.0.0)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3) + version: 0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bs58@6.0.0)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3) '@solana/web3.js': specifier: ^1.95.0 version: 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) @@ -420,7 +426,7 @@ importers: version: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) wagmi: specifier: ^2.13.0 - version: 2.19.5(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@tanstack/query-core@5.100.6)(@tanstack/react-query@5.100.6(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1))(zod@4.4.1) + version: 2.19.5(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@tanstack/query-core@5.100.6)(@tanstack/react-query@5.100.6(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1))(zod@4.4.1) devDependencies: '@tanstack/react-query': specifier: ^5.59.0 @@ -445,7 +451,7 @@ importers: version: 5.9.3 vitest: specifier: ^2.1.5 - version: 2.1.9(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1) + version: 2.1.9(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0) packages: @@ -460,36 +466,70 @@ packages: resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.3': resolution: {integrity: sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.29.0': resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.29.1': resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.28.6': resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils@7.28.6': resolution: {integrity: sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==} engines: {node: '>=6.9.0'} @@ -498,23 +538,44 @@ packages: resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + '@babel/helpers@7.29.2': resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.29.3': resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-transform-react-jsx-self@7.27.1': resolution: {integrity: sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==} engines: {node: '>=6.9.0'} @@ -531,18 +592,34 @@ packages: resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} engines: {node: '>=6.9.0'} + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.29.0': resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.29.0': resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + '@base-org/account@2.4.0': resolution: {integrity: sha512-A4Umpi8B9/pqR78D1Yoze4xHyQaujioVRqqO3d6xuDFw9VRtjg6tK3bPlwE0aW+nVH/ntllCpPa2PbI8Rnjcug==} @@ -612,34 +689,41 @@ packages: peerDependencies: viem: ^2.30.0 - '@circle-fin/app-kit@1.5.1': - resolution: {integrity: sha512-pZTslncL7PeOc1jOZE+4PmG/ivhfn58LJaichLOo+BDQkAD7Ko5s9jfg/qv2ve3kBVaF+krsi4bp+tPT2WiWHg==} + '@circle-fin/app-kit@1.6.1': + resolution: {integrity: sha512-R7WOBBfhcQhGSC/4NjpzOy/VGaobpj8oCzg+wUMn6uNVveNqFbzsdKbywo+Zf3JLdlyHkEzeACEnb6hwl7ijLg==} engines: {node: '>=16.0.0'} - '@circle-fin/bridge-kit@1.10.0': - resolution: {integrity: sha512-rmWzMM/ZsGzt1/jDkWOCKSubfTApX56hoSTmmw9U0+UATAJSoQKsk5cU8gL7FZNhp7Vg5RWj1mNHkvpPC7yVxA==} + '@circle-fin/bridge-kit@1.10.1': + resolution: {integrity: sha512-mPSnbzU5DWkasQBrVZVw2VNZdee0dQIaIH2MqnNZUyQAgSTnreR2AcPsc4MMmxLMy/63waSugVEJrGowcuKfhw==} engines: {node: '>=16.0.0'} - '@circle-fin/provider-cctp-v2@1.8.1': - resolution: {integrity: sha512-aPbIwzJ7cvzyIbpsOf3tVGT6FxtSWslwg+4n/bNHBJnDUpFEKN18Spn+onvFQAZafh44EHTevEGsw2YnhbZDTw==} + '@circle-fin/earn-kit@1.0.1': + resolution: {integrity: sha512-Usmh7+uNPj3VLaHofmPcxLrxFZPmURLs+vusGcw/j4txhYr8WudOFReaBXBxj32FlTvGJGbP+SvGDPwx+IzT2g==} + engines: {node: '>=16.0.0'} + + '@circle-fin/provider-cctp-v2@1.8.2': + resolution: {integrity: sha512-LteANKMrDBpglyyr3qv39z/amwTUqZcMOx1Njn4aGioTeheyCqNEkr+wwAzoGT236APWjXkPfyjVKYNq6GTyyw==} peerDependencies: '@solana/web3.js': ^1.98.2 peerDependenciesMeta: '@solana/web3.js': optional: true - '@circle-fin/provider-gateway-v1@1.0.4': - resolution: {integrity: sha512-5zMB3DjAQpLghW9gNgmqnSJ1ctufZSKsyGG/1bZxVwbeYH4Clsq9csTzja/kUVy+DyCwkTZvHxa3iBVdTI0LKQ==} + '@circle-fin/provider-earn-service@1.0.0': + resolution: {integrity: sha512-HwUMndejHPOoXwneu5aJLAzSAzOjL1vdd5Q1bQg33KN3Py5oQq3l2NedlN/zk4ytSwyzZVOcTQ83fYbw9csaGg==} + + '@circle-fin/provider-gateway-v1@1.0.5': + resolution: {integrity: sha512-mn7Ru5j+rVKlgsnW43B/2HgQxRBLE1Ic10unJhMfKWHnQhnA/1MPgc50OQPAPiZFbGSHPvZ+ir4ABTM1lF+EgQ==} - '@circle-fin/provider-stablecoin-service-swap@1.1.3': - resolution: {integrity: sha512-fnu6c9aqLdKAqYVIVwG7qoHe+fooNVR8mc4MvN90TYRa3pwgusWe3tAhpKNiPFFJX4sdWZ0fNvzWJXVVZmxw5w==} + '@circle-fin/provider-stablecoin-service-swap@1.1.4': + resolution: {integrity: sha512-i2eE88btNqN9FDEgHFDQ8ghxXyA77zBh7sCQhH8ozcdh6io6eU2TijasQbLKmeIKmxtPrVEGpejc9E8WvWrLIw==} - '@circle-fin/swap-kit@1.2.1': - resolution: {integrity: sha512-znPlYycF/F/kXh8BAO0DQ5EifPfWb2Hq+e5JZUFML/6q9m7AyXduPy/UfG/7Y+rgphO1JwbSG7xXTVcVQkD8sw==} + '@circle-fin/swap-kit@1.2.2': + resolution: {integrity: sha512-Abr6D1vWqz71lxihvClWV0vhNsIk4y2nuwR7UG/S8cNV831rMrKRWznPfcJ5vSZsgJHOYuO/FLCvL3J5jnl3LQ==} engines: {node: '>=16.0.0'} - '@circle-fin/unified-balance-kit@1.1.1': - resolution: {integrity: sha512-+ySFsdi+xoFHEuqNmFHUmbTtcKiliVadfUAki3D3IQP6pnKEZgPSsxhyqjoUDGwwKrH6HEJSoX6py9IrJ2Ue7A==} + '@circle-fin/unified-balance-kit@1.1.2': + resolution: {integrity: sha512-DFrGsiJrv0hpjPOnSaSyfBnVBGoJOlaM8VyWfGvYkJifBxCk/QRdeePKapnCz3reRBhWDgQSVzDfHxevbNK0gA==} engines: {node: '>=16.0.0'} '@coinbase/cdp-sdk@1.48.2': @@ -3142,8 +3226,8 @@ packages: '@types/node@22.19.17': resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} - '@types/node@25.8.0': - resolution: {integrity: sha512-TCFSk8IZh+iLX1xtksoBVtdmgL+1IX0fC9BeU4QqFSuNdN/K+HUlhqOzEmSYYpZUVsLYcPqc9KX+60iDuninSQ==} + '@types/node@25.9.1': + resolution: {integrity: sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==} '@types/react-dom@19.2.3': resolution: {integrity: sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==} @@ -5579,8 +5663,8 @@ packages: preact@10.24.2: resolution: {integrity: sha512-1cSoF0aCC8uaARATfrlz4VCBqE8LwZwRfLgkxJOQwAlQt6ayTmi0D9OF7nXid1POI5SZidFuG9CnlXbDfLqY/Q==} - preact@10.29.1: - resolution: {integrity: sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==} + preact@10.29.2: + resolution: {integrity: sha512-7tNmwg/7mzzAoB/8kSg6Hl37JraAZw3Z3A0JSY7VXlZwo82Xn0G7wKbNNs2qoF4ZEEsQGTwDAroNdqKs1ofJxQ==} prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} @@ -5863,8 +5947,8 @@ packages: engines: {node: '>=10'} hasBin: true - semver@7.8.0: - resolution: {integrity: sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==} + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} engines: {node: '>=10'} hasBin: true @@ -5907,8 +5991,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.3: - resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} + shell-quote@1.8.4: + resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==} engines: {node: '>= 0.4'} shiki@4.0.2: @@ -6112,8 +6196,8 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} - terser@5.47.1: - resolution: {integrity: sha512-tPbLXTI6ohPASb/1YViL428oEHu6/qv1OxqYnfaonVCFHqx4+wCd95pHrQWsL5X4pl90CTyW9piSAsS2L0VoMw==} + terser@5.48.0: + resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} hasBin: true @@ -6632,6 +6716,18 @@ packages: utf-8-validate: optional: true + ws@7.5.11: + resolution: {integrity: sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@8.18.0: resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} engines: {node: '>=10.0.0'} @@ -6788,8 +6884,16 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.29.3': {} + '@babel/compat-data@7.29.7': {} + '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 @@ -6810,6 +6914,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.3 @@ -6818,6 +6942,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.28.6': dependencies: '@babel/compat-data': 7.29.3 @@ -6826,8 +6958,18 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-globals@7.28.0': {} + '@babel/helper-globals@7.29.7': {} + '@babel/helper-module-imports@7.28.6': dependencies: '@babel/traverse': 7.29.0 @@ -6835,6 +6977,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -6844,23 +6993,47 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + '@babel/helper-plugin-utils@7.28.6': {} '@babel/helper-string-parser@7.27.1': {} + '@babel/helper-string-parser@7.29.7': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-identifier@7.29.7': {} + '@babel/helper-validator-option@7.27.1': {} + '@babel/helper-validator-option@7.29.7': {} + '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + '@babel/parser@7.29.3': dependencies: '@babel/types': 7.29.0 + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + '@babel/plugin-transform-react-jsx-self@7.27.1(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -6873,12 +7046,20 @@ snapshots: '@babel/runtime@7.29.2': {} + '@babel/runtime@7.29.7': {} + '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 '@babel/parser': 7.29.3 '@babel/types': 7.29.0 + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 @@ -6891,11 +7072,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.29.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@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@6.0.6)(zod@4.4.1)': dependencies: '@coinbase/cdp-sdk': 1.48.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) @@ -7096,12 +7294,33 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/app-kit@1.5.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/app-kit@1.6.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@circle-fin/bridge-kit': 1.10.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@circle-fin/earn-kit': 1.0.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@circle-fin/provider-gateway-v1': 1.0.5(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@circle-fin/swap-kit': 1.2.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@circle-fin/unified-balance-kit': 1.1.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/app-kit@1.6.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@circle-fin/bridge-kit': 1.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) - '@circle-fin/provider-gateway-v1': 1.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) - '@circle-fin/swap-kit': 1.2.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) - '@circle-fin/unified-balance-kit': 1.1.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/bridge-kit': 1.10.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/earn-kit': 1.0.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/provider-gateway-v1': 1.0.5(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/swap-kit': 1.2.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/unified-balance-kit': 1.1.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 '@ethersproject/units': 5.8.0 @@ -7115,9 +7334,26 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/bridge-kit@1.10.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/bridge-kit@1.10.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@circle-fin/provider-cctp-v2': 1.8.2(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + pino: 10.1.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/bridge-kit@1.10.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@circle-fin/provider-cctp-v2': 1.8.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/provider-cctp-v2': 1.8.2(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 '@ethersproject/units': 5.8.0 @@ -7132,7 +7368,58 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/provider-cctp-v2@1.8.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/earn-kit@1.0.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@circle-fin/provider-earn-service': 1.0.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/earn-kit@1.0.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@circle-fin/provider-earn-service': 1.0.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/provider-cctp-v2@1.8.2(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor': 0.31.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@noble/curves': 1.4.2 + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + buffer: 6.0.3 + zod: 3.25.67 + optionalDependencies: + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/provider-cctp-v2@1.8.2(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@coral-xyz/anchor': 0.31.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@ethersproject/address': 5.8.0 @@ -7151,7 +7438,53 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/provider-gateway-v1@1.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/provider-earn-service@1.0.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/provider-earn-service@1.0.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/provider-gateway-v1@1.0.5(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@noble/curves': 1.4.2 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/provider-gateway-v1@1.0.5(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 @@ -7167,7 +7500,18 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/provider-stablecoin-service-swap@1.1.3(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/provider-stablecoin-service-swap@1.1.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/provider-stablecoin-service-swap@1.1.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) @@ -7178,9 +7522,26 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/swap-kit@1.2.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/swap-kit@1.2.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': dependencies: - '@circle-fin/provider-stablecoin-service-swap': 1.1.3(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/provider-stablecoin-service-swap': 1.1.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@noble/curves': 1.4.2 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/swap-kit@1.2.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + dependencies: + '@circle-fin/provider-stablecoin-service-swap': 1.1.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 '@ethersproject/units': 5.8.0 @@ -7195,9 +7556,25 @@ snapshots: - typescript - utf-8-validate - '@circle-fin/unified-balance-kit@1.1.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': + '@circle-fin/unified-balance-kit@1.1.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@circle-fin/provider-gateway-v1': 1.0.5(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/units': 5.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + abitype: 1.2.4(typescript@5.9.3)(zod@3.25.67) + bs58: 6.0.0 + zod: 3.25.67 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@circle-fin/unified-balance-kit@1.1.2(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: - '@circle-fin/provider-gateway-v1': 1.0.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) + '@circle-fin/provider-gateway-v1': 1.0.5(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@ethersproject/address': 5.8.0 '@ethersproject/bytes': 5.8.0 '@ethersproject/units': 5.8.0 @@ -7240,7 +7617,7 @@ snapshots: eth-json-rpc-filters: 6.0.1 eventemitter3: 5.0.4 keccak: 3.0.4 - preact: 10.29.1 + preact: 10.29.2 sha.js: 2.4.12 transitivePeerDependencies: - supports-color @@ -7267,6 +7644,27 @@ snapshots: '@coral-xyz/anchor-errors@0.31.1': {} + '@coral-xyz/anchor@0.31.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@coral-xyz/anchor-errors': 0.31.1 + '@coral-xyz/borsh': 0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)) + '@noble/hashes': 1.8.0 + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + bn.js: 5.2.3 + bs58: 4.0.1 + buffer-layout: 1.2.2 + camelcase: 6.3.0 + cross-fetch: 3.2.0 + eventemitter3: 4.0.7 + pako: 2.1.0 + superstruct: 0.15.5 + toml: 3.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + '@coral-xyz/anchor@0.31.1(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@coral-xyz/anchor-errors': 0.31.1 @@ -7288,6 +7686,12 @@ snapshots: - typescript - utf-8-validate + '@coral-xyz/borsh@0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10))': + dependencies: + '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10) + bn.js: 5.2.3 + buffer-layout: 1.2.2 + '@coral-xyz/borsh@0.31.1(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))': dependencies: '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) @@ -7744,7 +8148,7 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.19.17 + '@types/node': 25.9.1 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -7976,7 +8380,7 @@ snapshots: '@ethereumjs/tx': 4.2.0 '@types/debug': 4.1.13 debug: 4.4.3 - semver: 7.8.0 + semver: 7.8.1 superstruct: 1.0.4 transitivePeerDependencies: - supports-color @@ -8608,18 +9012,18 @@ snapshots: '@radix-ui/rect@1.1.1': {} - '@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))': + '@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))': dependencies: merge-options: 3.0.4 - react-native: 0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) + react-native: 0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) optional: true '@react-native/assets-registry@0.85.2': {} - '@react-native/codegen@0.85.2(@babel/core@7.29.0)': + '@react-native/codegen@0.85.2(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.0 - '@babel/parser': 7.29.3 + '@babel/core': 7.29.7 + '@babel/parser': 7.29.7 hermes-parser: 0.33.3 invariant: 2.2.4 nullthrows: 1.1.1 @@ -8634,7 +9038,7 @@ snapshots: metro: 0.84.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) metro-config: 0.84.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) metro-core: 0.84.4 - semver: 7.8.0 + semver: 7.8.1 transitivePeerDependencies: - bufferutil - supports-color @@ -8663,7 +9067,7 @@ snapshots: nullthrows: 1.1.1 open: 7.4.2 serve-static: 1.16.3 - ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 7.5.11(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - supports-color @@ -8675,12 +9079,12 @@ snapshots: '@react-native/normalize-colors@0.85.2': {} - '@react-native/virtualized-lists@0.85.2(@types/react@19.2.14)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)': + '@react-native/virtualized-lists@0.85.2(@types/react@19.2.14)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 react: 19.2.5 - react-native: 0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) + react-native: 0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) optionalDependencies: '@types/react': 19.2.14 @@ -8706,11 +9110,11 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-controllers@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@reown/appkit-controllers@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) - '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) transitivePeerDependencies: @@ -8741,12 +9145,12 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-pay@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@reown/appkit-pay@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) lit: 3.3.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: @@ -8781,12 +9185,12 @@ snapshots: dependencies: buffer: 6.0.3 - '@reown/appkit-scaffold-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1)': + '@reown/appkit-scaffold-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) lit: 3.3.0 transitivePeerDependencies: @@ -8818,10 +9222,10 @@ snapshots: - valtio - zod - '@reown/appkit-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@reown/appkit-ui@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) lit: 3.3.0 qrcode: 1.5.3 @@ -8853,14 +9257,14 @@ snapshots: - utf-8-validate - zod - '@reown/appkit-utils@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1)': + '@reown/appkit-utils@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@reown/appkit-polyfills': 1.7.8 '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@walletconnect/logger': 2.1.2 - '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) transitivePeerDependencies: @@ -8902,18 +9306,18 @@ snapshots: - typescript - utf-8-validate - '@reown/appkit@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@reown/appkit@1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@reown/appkit-common': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-pay': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-controllers': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-pay': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@reown/appkit-polyfills': 1.7.8 - '@reown/appkit-scaffold-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) - '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) + '@reown/appkit-scaffold-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) + '@reown/appkit-ui': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit-utils': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(valtio@1.13.2(@types/react@19.2.14)(react@19.2.5))(zod@4.4.1) '@reown/appkit-wallet': 1.7.8(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/universal-provider': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) bs58: 6.0.0 valtio: 1.13.2(@types/react@19.2.14)(react@19.2.5) viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) @@ -9125,9 +9529,9 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': + '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.8(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.8(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) bs58: 6.0.0 js-base64: 3.7.8 @@ -9136,40 +9540,40 @@ snapshots: - react-native - typescript - '@solana-mobile/mobile-wallet-adapter-protocol@2.2.8(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': + '@solana-mobile/mobile-wallet-adapter-protocol@2.2.8(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': dependencies: '@solana/codecs-strings': 6.8.0(typescript@5.9.3) '@solana/wallet-standard-features': 1.3.0 '@solana/wallet-standard-util': 1.1.2 '@wallet-standard/core': 1.1.1 js-base64: 3.7.8 - react-native: 0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) + react-native: 0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana-mobile/wallet-adapter-mobile@2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': + '@solana-mobile/wallet-adapter-mobile@2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.8(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) - '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) - '@solana-mobile/wallet-standard-mobile': 0.5.2(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.8(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) + '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) + '@solana-mobile/wallet-standard-mobile': 0.5.2(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)) '@solana/wallet-standard-features': 1.3.0 '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) '@wallet-standard/core': 1.1.1 bs58: 6.0.0 js-base64: 3.7.8 - react-native: 0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) + react-native: 0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) tslib: 2.8.1 optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - typescript - '@solana-mobile/wallet-standard-mobile@0.5.2(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': + '@solana-mobile/wallet-standard-mobile@0.5.2(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.8(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.2.8(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) '@solana/wallet-standard-chains': 1.1.1 '@solana/wallet-standard-features': 1.3.0 '@wallet-standard/base': 1.1.0 @@ -9180,7 +9584,7 @@ snapshots: qrcode: 1.5.4 tslib: 2.8.1 optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)) transitivePeerDependencies: - fastestsmallesttextencoderdecoder - react-native @@ -9675,9 +10079,9 @@ snapshots: '@wallet-standard/features': 1.1.0 eventemitter3: 5.0.4 - '@solana/wallet-adapter-react@0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bs58@6.0.0)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)': + '@solana/wallet-adapter-react@0.15.39(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bs58@6.0.0)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)': dependencies: - '@solana-mobile/wallet-adapter-mobile': 2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) + '@solana-mobile/wallet-adapter-mobile': 2.2.8(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(typescript@5.9.3) '@solana/wallet-adapter-base': 0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)) '@solana/wallet-standard-wallet-adapter-react': 1.1.4(@solana/wallet-adapter-base@0.9.27(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)))(@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6))(bs58@6.0.0)(react@19.2.5) '@solana/web3.js': 1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6) @@ -9727,6 +10131,29 @@ snapshots: - '@solana/web3.js' - bs58 + '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.29.2 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@solana/buffer-layout': 4.0.1 + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + agentkeepalive: 4.6.0 + bn.js: 5.2.3 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10) + node-fetch: 2.7.0 + rpc-websockets: 9.3.8 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + '@solana/web3.js@1.98.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)': dependencies: '@babel/runtime': 7.29.2 @@ -9829,12 +10256,12 @@ snapshots: postcss: 8.5.12 tailwindcss: 4.3.0 - '@tailwindcss/vite@4.3.0(vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0))': + '@tailwindcss/vite@4.3.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0))': dependencies: '@tailwindcss/node': 4.3.0 '@tailwindcss/oxide': 4.3.0 tailwindcss: 4.3.0 - vite: 6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0) + vite: 6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) '@tanstack/query-core@5.100.6': {} @@ -9913,10 +10340,9 @@ snapshots: dependencies: undici-types: 6.21.0 - '@types/node@25.8.0': + '@types/node@25.9.1': dependencies: undici-types: 7.24.6 - optional: true '@types/react-dom@19.2.3(@types/react@19.2.14)': dependencies: @@ -9950,7 +10376,7 @@ snapshots: '@ungap/structured-clone@1.3.1': {} - '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0))': + '@vitejs/plugin-react@4.7.0(vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -9958,7 +10384,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0) + vite: 6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -9969,13 +10395,21 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1))': + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0))': + dependencies: + '@vitest/spy': 2.1.9 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0) + + '@vitest/mocker@2.1.9(vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1) + vite: 5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0) '@vitest/pretty-format@2.1.9': dependencies: @@ -10002,7 +10436,7 @@ snapshots: loupe: 3.2.1 tinyrainbow: 1.2.0 - '@wagmi/connectors@6.2.0(a159772a758af6f2b0c43404269665a6)': + '@wagmi/connectors@6.2.0(5d43b19c22b654870d5af7465701e9db)': dependencies: '@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@6.0.6)(zod@4.4.1) '@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@6.0.6)(zod@4.4.1) @@ -10011,9 +10445,9 @@ snapshots: '@safe-global/safe-apps-provider': 0.18.6(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@safe-global/safe-apps-sdk': 9.1.0(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@wagmi/core': 2.22.1(@tanstack/query-core@5.100.6)(@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.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)) - '@walletconnect/ethereum-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/ethereum-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) cbw-sdk: '@coinbase/wallet-sdk@3.9.3' - porto: 0.2.35(2188a960266bc61a44ddcd677a4ea681) + porto: 0.2.35(f9202662919aacbcaa6cea388ce7bace) viem: 2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) optionalDependencies: typescript: 5.9.3 @@ -10097,21 +10531,21 @@ snapshots: dependencies: '@wallet-standard/base': 1.1.0 - '@walletconnect/core@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/core@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -10141,21 +10575,21 @@ snapshots: - utf-8-validate - zod - '@walletconnect/core@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/core@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-provider': 1.0.14 '@walletconnect/jsonrpc-types': 1.0.4 '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/logger': 2.1.2 '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@walletconnect/window-getters': 1.0.1 es-toolkit: 1.33.0 events: 3.3.0 @@ -10189,18 +10623,18 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/ethereum-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: - '@reown/appkit': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@reown/appkit': 1.7.8(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@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(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/universal-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/universal-provider': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -10277,13 +10711,13 @@ snapshots: - bufferutil - utf-8-validate - '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))': + '@walletconnect/keyvaluestorage@1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))': dependencies: '@walletconnect/safe-json': 1.0.2 idb-keyval: 6.2.2 unstorage: 1.17.5(idb-keyval@6.2.2) optionalDependencies: - '@react-native-async-storage/async-storage': 1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)) + '@react-native-async-storage/async-storage': 1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -10325,16 +10759,16 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/sign-client@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/sign-client@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: - '@walletconnect/core': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/core': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@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(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -10361,16 +10795,16 @@ snapshots: - utf-8-validate - zod - '@walletconnect/sign-client@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/sign-client@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: - '@walletconnect/core': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/core': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) '@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(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) events: 3.3.0 transitivePeerDependencies: - '@azure/app-configuration' @@ -10401,12 +10835,12 @@ snapshots: dependencies: tslib: 1.14.1 - '@walletconnect/types@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))': + '@walletconnect/types@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -10430,12 +10864,12 @@ snapshots: - ioredis - uploadthing - '@walletconnect/types@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))': + '@walletconnect/types@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))': dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.2 '@walletconnect/jsonrpc-types': 1.0.4 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/logger': 2.1.2 events: 3.3.0 transitivePeerDependencies: @@ -10459,18 +10893,18 @@ snapshots: - ioredis - uploadthing - '@walletconnect/universal-provider@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/universal-provider@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@walletconnect/events': 1.0.1 '@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(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/sign-client': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/utils': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -10499,18 +10933,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/universal-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/universal-provider@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@walletconnect/events': 1.0.1 '@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(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/logger': 2.1.2 - '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) - '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/sign-client': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/utils': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1) es-toolkit: 1.33.0 events: 3.3.0 transitivePeerDependencies: @@ -10539,18 +10973,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/utils@2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/types': 2.21.0(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 @@ -10583,18 +11017,18 @@ snapshots: - utf-8-validate - zod - '@walletconnect/utils@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': + '@walletconnect/utils@2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)': dependencies: '@noble/ciphers': 1.2.1 '@noble/curves': 1.8.1 '@noble/hashes': 1.7.1 '@walletconnect/jsonrpc-utils': 1.0.8 - '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/keyvaluestorage': 1.1.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/relay-api': 1.0.11 '@walletconnect/relay-auth': 1.1.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) + '@walletconnect/types': 2.21.1(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))) '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 bs58: 6.0.0 @@ -10913,7 +11347,7 @@ snapshots: chrome-launcher@0.15.2: dependencies: - '@types/node': 22.19.17 + '@types/node': 25.9.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -10922,7 +11356,7 @@ snapshots: chromium-edge-launcher@0.3.0: dependencies: - '@types/node': 22.19.17 + '@types/node': 25.9.1 escape-string-regexp: 4.0.0 is-wsl: 2.2.0 lighthouse-logger: 1.4.2 @@ -11565,7 +11999,7 @@ snapshots: unist-util-visit: 5.1.0 zod: 3.25.76 - fumadocs-mdx@13.0.8(fumadocs-core@16.8.9(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.460.0(react@19.2.5))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.4.1))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0)): + fumadocs-mdx@13.0.8(fumadocs-core@16.8.9(@mdx-js/mdx@3.1.1)(@types/estree-jsx@1.0.5)(@types/hast@3.0.4)(@types/mdast@4.0.4)(@types/react@19.2.14)(lucide-react@0.460.0(react@19.2.5))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.4.1))(next@16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -11588,7 +12022,7 @@ snapshots: optionalDependencies: next: 16.2.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - vite: 6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0) + vite: 6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0) transitivePeerDependencies: - supports-color @@ -11960,6 +12394,10 @@ snapshots: isexe@2.0.0: {} + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)): + dependencies: + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6)): dependencies: ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -11972,6 +12410,24 @@ snapshots: dependencies: ws: 8.18.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@5.0.10): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10)) + json-stringify-safe: 5.0.1 + stream-json: 1.9.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + jayson@4.3.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: '@types/connect': 3.4.38 @@ -11995,7 +12451,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.19.17 + '@types/node': 25.9.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12012,7 +12468,7 @@ snapshots: jest-worker@29.7.0: dependencies: - '@types/node': 22.19.17 + '@types/node': 25.9.1 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -12400,7 +12856,7 @@ snapshots: metro-babel-transformer@0.84.4: dependencies: - '@babel/core': 7.29.0 + '@babel/core': 7.29.7 flow-enums-runtime: 0.0.6 hermes-parser: 0.35.0 metro-cache-key: 0.84.4 @@ -12459,7 +12915,7 @@ snapshots: metro-minify-terser@0.84.4: dependencies: flow-enums-runtime: 0.0.6 - terser: 5.47.1 + terser: 5.48.0 metro-resolver@0.84.4: dependencies: @@ -12467,13 +12923,13 @@ snapshots: metro-runtime@0.84.4: dependencies: - '@babel/runtime': 7.29.2 + '@babel/runtime': 7.29.7 flow-enums-runtime: 0.0.6 metro-source-map@0.84.4: dependencies: - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 flow-enums-runtime: 0.0.6 invariant: 2.2.4 metro-symbolicate: 0.84.4 @@ -12497,10 +12953,10 @@ snapshots: metro-transform-plugins@0.84.4: dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 flow-enums-runtime: 0.0.6 nullthrows: 1.1.1 transitivePeerDependencies: @@ -12508,10 +12964,10 @@ snapshots: metro-transform-worker@0.84.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.3 - '@babel/types': 7.29.0 + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 flow-enums-runtime: 0.0.6 metro: 0.84.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) metro-babel-transformer: 0.84.4 @@ -12528,13 +12984,13 @@ snapshots: metro@0.84.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: - '@babel/code-frame': 7.29.0 - '@babel/core': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/parser': 7.29.3 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 accepts: 2.0.0 ci-info: 2.0.0 connect: 3.7.0 @@ -12565,7 +13021,7 @@ snapshots: serialize-error: 2.1.0 source-map: 0.5.7 throat: 5.0.0 - ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 7.5.11(bufferutil@4.1.0)(utf-8-validate@6.0.6) yargs: 17.7.2 transitivePeerDependencies: - bufferutil @@ -13268,7 +13724,7 @@ snapshots: pony-cause@2.1.11: {} - porto@0.2.35(2188a960266bc61a44ddcd677a4ea681): + porto@0.2.35(f9202662919aacbcaa6cea388ce7bace): dependencies: '@wagmi/core': 2.22.1(@tanstack/query-core@5.100.6)(@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.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)) hono: 4.12.16 @@ -13281,9 +13737,9 @@ snapshots: optionalDependencies: '@tanstack/react-query': 5.100.6(react@19.2.5) react: 19.2.5 - react-native: 0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) + react-native: 0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6) typescript: 5.9.3 - wagmi: 2.19.5(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@tanstack/query-core@5.100.6)(@tanstack/react-query@5.100.6(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1))(zod@4.4.1) + wagmi: 2.19.5(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@tanstack/query-core@5.100.6)(@tanstack/react-query@5.100.6(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1))(zod@4.4.1) transitivePeerDependencies: - '@types/react' - immer @@ -13313,7 +13769,7 @@ snapshots: preact@10.24.2: {} - preact@10.29.1: {} + preact@10.29.2: {} prettier@2.8.8: {} @@ -13382,8 +13838,8 @@ snapshots: react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6): dependencies: - shell-quote: 1.8.3 - ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) + shell-quote: 1.8.4 + ws: 7.5.11(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate @@ -13395,15 +13851,15 @@ snapshots: react-is@18.3.1: {} - react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6): + react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6): dependencies: '@react-native/assets-registry': 0.85.2 - '@react-native/codegen': 0.85.2(@babel/core@7.29.0) + '@react-native/codegen': 0.85.2(@babel/core@7.29.7) '@react-native/community-cli-plugin': 0.85.2(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@react-native/gradle-plugin': 0.85.2 '@react-native/js-polyfills': 0.85.2 '@react-native/normalize-colors': 0.85.2 - '@react-native/virtualized-lists': 0.85.2(@types/react@19.2.14)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5) + '@react-native/virtualized-lists': 0.85.2(@types/react@19.2.14)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -13424,11 +13880,11 @@ snapshots: react-refresh: 0.14.2 regenerator-runtime: 0.13.11 scheduler: 0.27.0 - semver: 7.8.0 + semver: 7.8.1 stacktrace-parser: 0.1.11 tinyglobby: 0.2.16 whatwg-fetch: 3.6.20 - ws: 7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6) + ws: 7.5.11(bufferutil@4.1.0)(utf-8-validate@6.0.6) yargs: 17.7.2 optionalDependencies: '@types/react': 19.2.14 @@ -13696,7 +14152,7 @@ snapshots: semver@7.7.4: {} - semver@7.8.0: {} + semver@7.8.1: {} send@0.19.2: dependencies: @@ -13784,7 +14240,7 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.3: {} + shell-quote@1.8.4: {} shiki@4.0.2: dependencies: @@ -13976,7 +14432,7 @@ snapshots: term-size@2.2.1: {} - terser@5.47.1: + terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -14098,8 +14554,7 @@ snapshots: undici-types@6.21.0: {} - undici-types@7.24.6: - optional: true + undici-types@7.24.6: {} undici-types@7.25.0: {} @@ -14310,13 +14765,13 @@ snapshots: - utf-8-validate - zod - vite-node@2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1): + vite-node@2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1) + vite: 5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0) transitivePeerDependencies: - '@types/node' - less @@ -14328,13 +14783,13 @@ snapshots: - supports-color - terser - vite-node@2.1.9(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1): + vite-node@2.1.9(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.21(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1) + vite: 5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0) transitivePeerDependencies: - '@types/node' - less @@ -14346,7 +14801,7 @@ snapshots: - supports-color - terser - vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1): + vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0): dependencies: esbuild: 0.21.5 postcss: 8.5.12 @@ -14355,20 +14810,20 @@ snapshots: '@types/node': 22.19.17 fsevents: 2.3.3 lightningcss: 1.32.0 - terser: 5.47.1 + terser: 5.48.0 - vite@5.4.21(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1): + vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0): dependencies: esbuild: 0.21.5 postcss: 8.5.12 rollup: 4.60.2 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 fsevents: 2.3.3 lightningcss: 1.32.0 - terser: 5.47.1 + terser: 5.48.0 - vite@6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0): + vite@6.4.2(@types/node@22.19.17)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -14381,11 +14836,11 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - terser: 5.47.1 + terser: 5.48.0 yaml: 2.9.0 optional: true - vite@6.4.2(@types/node@25.8.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.47.1)(yaml@2.9.0): + vite@6.4.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.48.0)(yaml@2.9.0): dependencies: esbuild: 0.25.12 fdir: 6.5.0(picomatch@4.0.4) @@ -14394,17 +14849,17 @@ snapshots: rollup: 4.60.2 tinyglobby: 0.2.16 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 - terser: 5.47.1 + terser: 5.48.0 yaml: 2.9.0 - vitest@2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1): + vitest@2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -14420,8 +14875,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1) - vite-node: 2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1) + vite: 5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0) + vite-node: 2.1.9(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.48.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 22.19.17 @@ -14436,10 +14891,10 @@ snapshots: - supports-color - terser - vitest@2.1.9(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1): + vitest@2.1.9(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@22.19.17)(lightningcss@1.32.0)(terser@5.47.1)) + '@vitest/mocker': 2.1.9(vite@5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -14455,11 +14910,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.21(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1) - vite-node: 2.1.9(@types/node@25.8.0)(lightningcss@1.32.0)(terser@5.47.1) + vite: 5.4.21(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0) + vite-node: 2.1.9(@types/node@25.9.1)(lightningcss@1.32.0)(terser@5.48.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.8.0 + '@types/node': 25.9.1 transitivePeerDependencies: - less - lightningcss @@ -14473,10 +14928,10 @@ snapshots: vlq@1.0.1: {} - wagmi@2.19.5(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@tanstack/query-core@5.100.6)(@tanstack/react-query@5.100.6(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react-native@0.85.2(@babel/core@7.29.0)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1))(zod@4.4.1): + wagmi@2.19.5(@react-native-async-storage/async-storage@1.24.0(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6)))(@tanstack/query-core@5.100.6)(@tanstack/react-query@5.100.6(react@19.2.5))(@types/react@19.2.14)(bufferutil@4.1.0)(react-native@0.85.2(@babel/core@7.29.7)(@types/react@19.2.14)(bufferutil@4.1.0)(react@19.2.5)(utf-8-validate@6.0.6))(react@19.2.5)(typescript@5.9.3)(utf-8-validate@6.0.6)(viem@2.48.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1))(zod@4.4.1): dependencies: '@tanstack/react-query': 5.100.6(react@19.2.5) - '@wagmi/connectors': 6.2.0(a159772a758af6f2b0c43404269665a6) + '@wagmi/connectors': 6.2.0(5d43b19c22b654870d5af7465701e9db) '@wagmi/core': 2.22.1(@tanstack/query-core@5.100.6)(@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.4(bufferutil@4.1.0)(typescript@5.9.3)(utf-8-validate@6.0.6)(zod@4.4.1)) react: 19.2.5 use-sync-external-store: 1.4.0(react@19.2.5) @@ -14582,11 +15037,21 @@ snapshots: wrappy@1.0.2: {} + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 5.0.10 + ws@7.5.10(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 utf-8-validate: 6.0.6 + ws@7.5.11(bufferutil@4.1.0)(utf-8-validate@6.0.6): + optionalDependencies: + bufferutil: 4.1.0 + utf-8-validate: 6.0.6 + ws@8.18.0(bufferutil@4.1.0)(utf-8-validate@6.0.6): optionalDependencies: bufferutil: 4.1.0 From 3286812ca92e1ecbea2a67340f03329777e58a28 Mon Sep 17 00:00:00 2001 From: signor1 Date: Fri, 29 May 2026 02:42:51 +0100 Subject: [PATCH 2/9] feat: add feeBearer with a sender-paid fee cushion feeBearer: sender grosses up the burn so the recipient nets the exact amount; default receiver keeps fees deducted from the transfer. Quotes now expose amountBurned alongside amountIn/amountOut. In sender mode the forwarding portion is padded 2% to absorb gas drift between quote and mint, so the recipient reliably nets at least the requested amount. --- packages/core/src/engine/createWhisk.ts | 43 +++++++++++++++++++ packages/core/src/fees/calculate.test.ts | 27 ++++++++++++ packages/core/src/fees/calculate.ts | 40 ++++++++++++++++- packages/core/src/index.ts | 2 + packages/core/src/types/config.ts | 5 ++- packages/core/src/types/fee.ts | 12 ++++++ packages/core/src/types/index.ts | 8 +++- packages/core/src/types/quote.ts | 8 ++++ packages/react/src/config/types.ts | 3 ++ packages/react/src/hooks/useWhisk.ts | 3 +- packages/react/src/index.ts | 1 + packages/react/src/provider/WhiskProvider.tsx | 1 + 12 files changed, 149 insertions(+), 4 deletions(-) diff --git a/packages/core/src/engine/createWhisk.ts b/packages/core/src/engine/createWhisk.ts index 9457a5f..d79ead7 100644 --- a/packages/core/src/engine/createWhisk.ts +++ b/packages/core/src/engine/createWhisk.ts @@ -21,6 +21,8 @@ import { buildCustomFeeEntries, fromAppKitFees, sumFees, + sumForwarderFees, + sumProtocolFees, } from "../fees/calculate.js"; import { chainInfo, explorerTxUrl } from "../chains/registry.js"; import { @@ -93,11 +95,14 @@ export function createWhisk(config: WhiskConfig): WhiskEngine { }; await kit.estimateSend(appKitParams); const breakdown = sumFees([...customFees], effectiveToken); + // Same-chain sends don't deduct USDC fees (only native gas), so the + // recipient already nets the full amount — feeBearer is a no-op here. return { route, recipient: params.recipient, amountIn, amountOut: params.amount, + amountBurned: params.amount, token: effectiveToken, fees: breakdown, estimatedDurationMs: 15_000, @@ -121,11 +126,40 @@ export function createWhisk(config: WhiskConfig): WhiskEngine { [...customFees, ...protocolFees], effectiveToken, ); + + // "sender" grosses the burn up by the fees so the recipient nets the + // full amount; "receiver" lets the fees reduce the transfer instead. + const feeBearer = config.feeBearer ?? "receiver"; + if (feeBearer === "sender") { + const protocolFeeTotal = sumProtocolFees( + protocolFees, + effectiveToken, + ); + // Forwarder fee is re-priced from gas at mint time, so pad just that + // portion so the recipient nets at least `amount` despite drift. + const forwarderFee = sumForwarderFees(protocolFees, effectiveToken); + const base = parseFloat(params.amount) || 0; + const amountBurned = fmtUsdc( + base + protocolFeeTotal + forwarderFee * FORWARDER_FEE_CUSHION, + ); + return { + route, + recipient: params.recipient, + amountIn: addCustomFee(amountBurned, config.feePolicy?.value), + amountOut: params.amount, + amountBurned, + token: effectiveToken, + fees: breakdown, + estimatedDurationMs: 30_000, + }; + } + return { route, recipient: params.recipient, amountIn, amountOut: params.amount, + amountBurned: params.amount, token: effectiveToken, fees: breakdown, estimatedDurationMs: 30_000, @@ -282,6 +316,15 @@ function addCustomFee(amount: string, customFee?: string): string { return sum.toFixed(6).replace(/\.?0+$/, "") || "0"; } +/** Headroom on the forwarder fee in a `"sender"` gross-up. 2% absorbs normal + * gas drift between quote and mint while keeping overage sub-cent on L2s. */ +const FORWARDER_FEE_CUSHION = 0.02; + +/** Format a number as a USDC amount (6 dp, trailing zeros stripped). */ +function fmtUsdc(n: number): string { + return n.toFixed(6).replace(/\.?0+$/, "") || "0"; +} + type BridgeAction = "approve" | "burn" | "fetchAttestation" | "mint"; const BRIDGE_ACTIONS: ReadonlyArray = [ "approve", diff --git a/packages/core/src/fees/calculate.test.ts b/packages/core/src/fees/calculate.test.ts index bef4bf9..523af9d 100644 --- a/packages/core/src/fees/calculate.test.ts +++ b/packages/core/src/fees/calculate.test.ts @@ -3,8 +3,10 @@ import { buildCustomFeeEntries, fromAppKitFees, sumFees, + sumProtocolFees, type AppKitEstimateFee, } from "./calculate.js"; +import type { FeeEntry } from "../types/fee.js"; const HOST = "0xH00000000000000000000000000000000000000h"; @@ -126,3 +128,28 @@ describe("sumFees", () => { expect(breakdown.entries).toEqual([]); }); }); + +describe("sumProtocolFees", () => { + const entries: FeeEntry[] = [ + { kind: "provider", amount: "0.0007", token: "USDC" }, + { kind: "forwarder", amount: "2.43", token: "USDC" }, + { kind: "protocol", amount: "0.01", token: "USDC" }, + // Excluded: gas is paid in native token, not deducted from the transfer. + { kind: "gas", amount: "0.005", token: "NATIVE" }, + // Excluded: custom host fee is added on top, not deducted from the transfer. + { kind: "custom", amount: "0.9", token: "USDC" }, + ]; + + it("sums only the fees deducted from the bridged amount", () => { + // 0.0007 + 2.43 + 0.01 — excludes gas (native) and custom (added on top) + expect(sumProtocolFees(entries, "USDC")).toBeCloseTo(2.4407, 6); + }); + + it("ignores entries denominated in a different token", () => { + expect(sumProtocolFees(entries, "EURC")).toBe(0); + }); + + it("returns zero for an empty list", () => { + expect(sumProtocolFees([], "USDC")).toBe(0); + }); +}); diff --git a/packages/core/src/fees/calculate.ts b/packages/core/src/fees/calculate.ts index 0768755..f459885 100644 --- a/packages/core/src/fees/calculate.ts +++ b/packages/core/src/fees/calculate.ts @@ -1,4 +1,9 @@ -import type { FeeBreakdown, FeeEntry, FeePolicy } from "../types/fee.js"; +import type { + FeeBreakdown, + FeeEntry, + FeeEntryKind, + FeePolicy, +} from "../types/fee.js"; import type { Token } from "../types/token.js"; export type AppKitEstimateFee = { @@ -66,6 +71,39 @@ function mapAppKitFeeType(type: AppKitEstimateFee["type"]): FeeEntry["kind"] { } } +/** + * Fee kinds deducted from the bridged USDC, i.e. the ones that reduce what the + * recipient receives. Excludes `gas` (paid in the source chain's native token) + * and `custom` (the host fee, added on top of the transfer). + */ +const DEDUCTED_FROM_TRANSFER: ReadonlyArray = [ + "provider", + "forwarder", + "protocol", +]; + +/** + * Total of the fees deducted from the bridged amount, in the transfer token. + * Used to gross up the burn when `feeBearer` is `"sender"` so the recipient + * still nets the full amount. + */ +export function sumProtocolFees(entries: FeeEntry[], token: Token): number { + return entries + .filter((e) => e.token === token && DEDUCTED_FROM_TRANSFER.includes(e.kind)) + .reduce((acc, e) => acc + (parseFloat(e.amount || "0") || 0), 0); +} + +/** + * Just the Forwarding Service fee, in the transfer token. Isolated from the + * other deducted fees because it's gas-priced at mint time, so it's the only + * part the `"sender"` gross-up cushions against drift. + */ +export function sumForwarderFees(entries: FeeEntry[], token: Token): number { + return entries + .filter((e) => e.token === token && e.kind === "forwarder") + .reduce((acc, e) => acc + (parseFloat(e.amount || "0") || 0), 0); +} + /** Cross-token entries (e.g. gas in ETH) stay in `entries` but don't roll into `total`. */ export function sumFees(entries: FeeEntry[], token: Token): FeeBreakdown { const total = entries diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 52292c4..4b8983a 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -36,6 +36,7 @@ export type { ResolvedRecipient, Route, FeePolicy, + FeeBearer, FeeEntry, FeeEntryKind, FeeBreakdown, @@ -98,6 +99,7 @@ export { OnchainRevertError, ConfigError, toWhiskError, + cleanErrorMessage, } from "./errors/index.js"; export type { WhiskErrorCode, diff --git a/packages/core/src/types/config.ts b/packages/core/src/types/config.ts index aa6ff87..82e5a74 100644 --- a/packages/core/src/types/config.ts +++ b/packages/core/src/types/config.ts @@ -1,6 +1,6 @@ import type { Chain, ChainNetwork } from "./chain.js"; import type { Token } from "./token.js"; -import type { FeePolicy } from "./fee.js"; +import type { FeePolicy, FeeBearer } from "./fee.js"; import type { Resolver } from "./resolver.js"; export type WhiskMode = ChainNetwork; @@ -18,6 +18,9 @@ export type WhiskConfig = { feePolicy?: FeePolicy; + /** Who absorbs the bridge fees. Defaults to `"receiver"`. See {@link FeeBearer}. */ + feeBearer?: FeeBearer; + /** * Override App Kit's public RPC endpoints. Pass an array to install a * viem `fallback` transport that re-ranks by latency. diff --git a/packages/core/src/types/fee.ts b/packages/core/src/types/fee.ts index 0dc5a73..ee521f3 100644 --- a/packages/core/src/types/fee.ts +++ b/packages/core/src/types/fee.ts @@ -19,6 +19,18 @@ export type FeeEntryKind = | "forwarder" | "provider"; +/** + * Who absorbs the CCTP protocol + Forwarding Service fees on a bridge. + * + * - `"receiver"` (default): fees are deducted from the bridged amount, so the + * recipient nets `amount − fees`. The sender's debit equals `amount`. + * - `"sender"`: the burn is sized up by the estimated fees so the recipient + * receives the full `amount`. The sender's debit grows to cover the fees. + * Because fees are estimated at quote time, the delivered amount can differ + * by a few cents if destination gas shifts before the mint lands. + */ +export type FeeBearer = "sender" | "receiver"; + export type FeeEntry = { kind: FeeEntryKind; amount: string; diff --git a/packages/core/src/types/index.ts b/packages/core/src/types/index.ts index 1c1c1c2..07ebd59 100644 --- a/packages/core/src/types/index.ts +++ b/packages/core/src/types/index.ts @@ -8,7 +8,13 @@ export { DEFAULT_TOKEN } from "./token.js"; export type { ResolvedRecipient } from "./recipient.js"; export type { Route } from "./route.js"; export { isBridgeRoute, isSendRoute } from "./route.js"; -export type { FeePolicy, FeeEntry, FeeEntryKind, FeeBreakdown } from "./fee.js"; +export type { + FeePolicy, + FeeBearer, + FeeEntry, + FeeEntryKind, + FeeBreakdown, +} from "./fee.js"; export type { StepName, StepState, Step } from "./step.js"; export type { Quote } from "./quote.js"; export type { WhiskConfig, WhiskMode } from "./config.js"; diff --git a/packages/core/src/types/quote.ts b/packages/core/src/types/quote.ts index d756f9f..dfa4769 100644 --- a/packages/core/src/types/quote.ts +++ b/packages/core/src/types/quote.ts @@ -6,8 +6,16 @@ import type { Token } from "./token.js"; export type Quote = { route: Route; recipient: ResolvedRecipient; + /** Total debited from the sender (display "You pay"). */ amountIn: string; + /** What the recipient receives (display "Recipient gets"). */ amountOut: string; + /** + * On-chain transfer amount fed to App Kit. Equals `amountOut` in receiver + * mode, grossed up by estimated fees in sender mode. Optional so externally + * built quotes still type-check; consumers fall back to `amountOut`. + */ + amountBurned?: string; token: Token; fees: FeeBreakdown; estimatedDurationMs?: number; diff --git a/packages/react/src/config/types.ts b/packages/react/src/config/types.ts index b9d6494..88845d7 100644 --- a/packages/react/src/config/types.ts +++ b/packages/react/src/config/types.ts @@ -1,6 +1,7 @@ import type { Chain, FeePolicy, + FeeBearer, Resolver, Token, WhiskMode, @@ -27,6 +28,8 @@ export type WhiskClientConfig = { token?: Token; resolver?: Resolver; feePolicy?: FeePolicy; + /** Who pays bridge fees. Default `"receiver"`. Set `"sender"` so the recipient receives the full amount. */ + feeBearer?: FeeBearer; rpcUrls?: Partial>; useForwarder?: boolean; /** Inferred from `chains` when omitted. */ diff --git a/packages/react/src/hooks/useWhisk.ts b/packages/react/src/hooks/useWhisk.ts index f0c3269..de04c35 100644 --- a/packages/react/src/hooks/useWhisk.ts +++ b/packages/react/src/hooks/useWhisk.ts @@ -148,7 +148,8 @@ export function useWhisk(): UseWhiskResult { destinationChain: q.route.kind === "send" ? q.route.chain : q.route.destinationChain, recipient: q.recipient, - amount: q.amountOut, + // Fall back to amountOut for quotes built before amountBurned existed. + amount: q.amountBurned ?? q.amountOut, adapter, quote: q, }, diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 4c8ae8a..0c06d9f 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -163,6 +163,7 @@ export type { Quote, ResolvedRecipient, FeePolicy, + FeeBearer, FeeBreakdown, Resolver, WhiskState, diff --git a/packages/react/src/provider/WhiskProvider.tsx b/packages/react/src/provider/WhiskProvider.tsx index eec58e5..fd9ee02 100644 --- a/packages/react/src/provider/WhiskProvider.tsx +++ b/packages/react/src/provider/WhiskProvider.tsx @@ -43,6 +43,7 @@ export function WhiskProvider({ resolver: config.resolver ?? createDefaultResolver({ mode: config.mode }), feePolicy: config.feePolicy, + feeBearer: config.feeBearer, rpcUrls: config.rpcUrls, useForwarder: config.useForwarder, mode: config.mode, From 9f46ad2364059983aa809a858c56db5563ad26a0 Mon Sep 17 00:00:00 2001 From: signor1 Date: Fri, 29 May 2026 02:43:56 +0100 Subject: [PATCH 3/9] fix: re-resolve the recipient when the destination chain changes A host-pinned recipient was resolved once and the review gate ignored the chain, so switching destinations reused the stale resolution and bridged to the wrong chain. Auto-resolve is now keyed on recipient + destination. --- packages/react/src/components/WhiskSend.tsx | 26 +++++++++++++------ .../react/src/components/steps/InputStep.tsx | 5 +++- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/packages/react/src/components/WhiskSend.tsx b/packages/react/src/components/WhiskSend.tsx index bd008b0..37fddc8 100644 --- a/packages/react/src/components/WhiskSend.tsx +++ b/packages/react/src/components/WhiskSend.tsx @@ -177,18 +177,28 @@ export function WhiskSend({ } }, [state, onSuccess, onError]); - // Auto-resolve when `recipient` is host-pinned, so the user doesn't have to click Continue. - const autoResolvedRef = useRef(false); + // Auto-resolve a host-pinned `recipient` so the user doesn't have to click + // Continue. Keyed on recipient + destination, not a one-shot flag: the quote + // bridges to `recipient.chain`, so changing the destination has to re-resolve + // or the quote stays stuck on the original chain. Skipped mid-send and on + // terminal states so we don't interrupt or wipe a completed transfer. + const autoResolveKeyRef = useRef(null); useEffect(() => { if (!connected) return; - if (autoResolvedRef.current) return; - if (state.kind !== "idle") return; if (!recipient) return; - autoResolvedRef.current = true; - const target = destinationChain ?? sourceChain ?? undefined; - if (target) { - void actions.resolve(recipient, target); + if ( + state.kind === "sending" || + state.kind === "succeeded" || + state.kind === "failed" + ) { + return; } + const target = destinationChain ?? sourceChain ?? undefined; + if (!target) return; + const key = `${recipient}::${target}`; + if (autoResolveKeyRef.current === key) return; + autoResolveKeyRef.current = key; + void actions.resolve(recipient, target); }, [ connected, state.kind, diff --git a/packages/react/src/components/steps/InputStep.tsx b/packages/react/src/components/steps/InputStep.tsx index a7347b0..4f9fae7 100644 --- a/packages/react/src/components/steps/InputStep.tsx +++ b/packages/react/src/components/steps/InputStep.tsx @@ -179,9 +179,12 @@ export function InputStep({ const amountValid = !Number.isNaN(amountValue) && amountValue > 0; // Locked recipient counts as matched by construction — covers locked-ENS where - // input="vitalik.eth" never literal-matches the resolved 0x… address. + // input="vitalik.eth" never literal-matches the resolved 0x… address. The + // chain must also match: the quote bridges to `resolvedRecipient.chain`, so a + // resolution on a stale destination has to be redone before quoting. const recipientMatchesResolved = Boolean( resolvedRecipient && + resolvedRecipient.chain === destChain && (recipientLocked || resolvedRecipient.address === recipientInput.trim()), ); const recipientInvalid = Boolean( From df10d9b5ba4b88f8fb3de7071c9608e98af3efea Mon Sep 17 00:00:00 2001 From: signor1 Date: Fri, 29 May 2026 02:45:22 +0100 Subject: [PATCH 4/9] fix: clean every error surfaced to the UI --- packages/core/src/errors/errors.test.ts | 38 ++++++++++++ packages/core/src/errors/errors.ts | 61 ++++++++++++++++--- packages/core/src/errors/index.ts | 1 + .../react/src/components/steps/ResultStep.tsx | 3 +- .../react/src/components/ui/ConnectModal.tsx | 5 +- packages/react/src/hooks/useManualMint.ts | 3 +- packages/react/src/resolvers/ensResolver.ts | 11 +++- 7 files changed, 109 insertions(+), 13 deletions(-) diff --git a/packages/core/src/errors/errors.test.ts b/packages/core/src/errors/errors.test.ts index 691679a..7aff456 100644 --- a/packages/core/src/errors/errors.test.ts +++ b/packages/core/src/errors/errors.test.ts @@ -27,6 +27,44 @@ describe("toWhiskError", () => { expect(result.code).toBe("USER_REJECTED"); }); + it("shows a friendly message for a cancelled tx, keeping the raw dump on cause", () => { + const raw = new Error( + "Unknown blockchain error on Arc Testnet: User rejected the request. " + + "Request Arguments: chain: Arc Testnet (id: 5042002) from: 0xd9d… " + + "Details: MetaMask Tx Signature: User denied transaction signature. " + + "Version: viem@2.48.4", + ); + const result = toWhiskError(raw); + expect(result).toBeInstanceOf(UserRejectedError); + expect(result.message).toBe( + "You cancelled the transaction in your wallet.", + ); + expect(result.cause).toBe(raw); + }); + + it("strips the viem/App Kit boilerplate from unknown errors", () => { + const result = toWhiskError( + new Error( + "Unknown blockchain error on Base Sepolia: execution reverted. " + + "Request Arguments: chain: Base Sepolia data: 0x… Version: viem@2.48.4", + ), + ); + expect(result.code).toBe("UNKNOWN"); + expect(result.message).toBe("execution reverted."); + }); + + it("gives a friendly message when no swap route exists", () => { + const result = toWhiskError( + new Error( + "Stablecoin Service createSwap failed: Route or resource not found. " + + "Details: No route available", + ), + ); + expect(result.message).toBe( + "No quote available for this pair right now. Try again in a moment or use a different amount.", + ); + }); + it("classifies transient network failures", () => { for (const msg of [ "ECONNRESET", diff --git a/packages/core/src/errors/errors.ts b/packages/core/src/errors/errors.ts index 3cd4ad6..b4b2642 100644 --- a/packages/core/src/errors/errors.ts +++ b/packages/core/src/errors/errors.ts @@ -228,6 +228,37 @@ const TRANSIENT_PATTERNS = const REJECTION_PATTERNS = /user rejected|user denied|rejected by user/i; +/** Shown when the user declines the wallet prompt. The raw provider error + * (the full viem/App Kit dump) is kept on `cause` for debugging. */ +const REJECTION_MESSAGE = "You cancelled the transaction in your wallet."; + +/** + * App Kit's Swap (RFQ liquidity) and routing report this when no quote exists + * for the requested pair, direction, or size — common on testnet, where + * liquidity is sparse and often one-directional. + */ +const NO_ROUTE_PATTERNS = + /no route|route or resource not found|route not found/i; +const NO_ROUTE_MESSAGE = + "No quote available for this pair right now. Try again in a moment or use a different amount."; + +/** + * viem and App Kit errors append a verbose dump to a short first line + * ("Request Arguments: …", "Details: …", "Version: viem@x"). Surface only the + * human part: the first line, minus App Kit's "Unknown blockchain error on + * :" wrapper and any inline argument dump. The full text stays on + * `cause`, so nothing is lost for debugging. + */ +export function cleanErrorMessage(message: string): string { + const firstLine = message.split("\n")[0] ?? message; + const beforeArgs = firstLine.split(/\s*Request Arguments:/i)[0] ?? firstLine; + const unwrapped = beforeArgs.replace( + /^Unknown blockchain error on [^:]+:\s*/i, + "", + ); + return unwrapped.trim() || message.trim(); +} + /** Coerce an unknown thrown value into a `WhiskError`. Prefer `category` over heuristic message matching. */ export function toWhiskError( err: unknown, @@ -246,33 +277,49 @@ export function toWhiskError( if (category) { switch (category) { case "user_rejected": - return new UserRejectedError(message, err); + return new UserRejectedError(REJECTION_MESSAGE, err); case "failed_offchain": - return new NetworkError(message, err, category); + return new NetworkError(cleanErrorMessage(message), err, category); case "polling_timeout": case "atomic_unsupported": case "batch_too_large": case "duplicate_batch_id": case "unknown_bundle": - return new WalletCapabilityError(category, message, err); + return new WalletCapabilityError( + category, + cleanErrorMessage(message), + err, + ); case "reverted_onchain": case "partial_reverted": case "chain_revert": - return new OnchainRevertError(category, message, err); + return new OnchainRevertError( + category, + cleanErrorMessage(message), + err, + ); case "unknown": break; } } if (REJECTION_PATTERNS.test(message)) { - return new UserRejectedError(message, err); + return new UserRejectedError(REJECTION_MESSAGE, err); + } + if (NO_ROUTE_PATTERNS.test(message)) { + return new WhiskError({ + code: "UNKNOWN", + message: NO_ROUTE_MESSAGE, + retryable: false, + cause: err, + }); } if (TRANSIENT_PATTERNS.test(message)) { - return new NetworkError(message, err); + return new NetworkError(cleanErrorMessage(message), err); } return new WhiskError({ code: "UNKNOWN", - message, + message: cleanErrorMessage(message), retryable: false, cause: err, }); diff --git a/packages/core/src/errors/index.ts b/packages/core/src/errors/index.ts index 951b4ca..76c7c73 100644 --- a/packages/core/src/errors/index.ts +++ b/packages/core/src/errors/index.ts @@ -12,6 +12,7 @@ export { OnchainRevertError, ConfigError, toWhiskError, + cleanErrorMessage, } from "./errors.js"; export type { WhiskErrorCode, diff --git a/packages/react/src/components/steps/ResultStep.tsx b/packages/react/src/components/steps/ResultStep.tsx index 9363f85..3f8e947 100644 --- a/packages/react/src/components/steps/ResultStep.tsx +++ b/packages/react/src/components/steps/ResultStep.tsx @@ -8,6 +8,7 @@ import { ExternalLink, Wrench, } from "lucide-react"; +import { toWhiskError } from "@usewhisk/core"; import type { Quote, Step, WhiskError } from "@usewhisk/core"; import type { ManualMintResult } from "../../hooks/useManualMint.js"; import { Badge } from "../ui/Badge.js"; @@ -164,7 +165,7 @@ function ManualMintButton({ } catch (err) { setPhase({ kind: "failure", - message: err instanceof Error ? err.message : String(err), + message: toWhiskError(err, "Couldn't submit the mint.").message, }); } }; diff --git a/packages/react/src/components/ui/ConnectModal.tsx b/packages/react/src/components/ui/ConnectModal.tsx index 6933aaa..2910fae 100644 --- a/packages/react/src/components/ui/ConnectModal.tsx +++ b/packages/react/src/components/ui/ConnectModal.tsx @@ -6,6 +6,7 @@ import { ArrowLeft, ChevronRight, Wallet, X } from "lucide-react"; import { useAccount, useConnect, type Connector } from "wagmi"; import { type Wallet as SolanaWallet } from "@solana/wallet-adapter-react"; import type { WalletName } from "@solana/wallet-adapter-base"; +import { toWhiskError } from "@usewhisk/core"; import { Button } from "./Button.js"; import { WhiskScope } from "./WhiskScope.js"; import { safeUseWallet } from "../../hooks/internal/safeSolana.js"; @@ -56,7 +57,7 @@ export function ConnectModal({ open, onOpenChange }: ConnectModalProps) { .connect() .catch((err: unknown) => { setSolanaError( - err instanceof Error ? err.message : "Solana wallet connect failed.", + toWhiskError(err, "Solana wallet connect failed.").message, ); }) .finally(() => setPendingSolana(null)); @@ -232,7 +233,7 @@ export function ConnectModal({ open, onOpenChange }: ConnectModalProps) { {step === "evm" && error ? (
- {error.message} + {toWhiskError(error).message}
) : null} {step === "solana" && solanaError ? ( diff --git a/packages/react/src/hooks/useManualMint.ts b/packages/react/src/hooks/useManualMint.ts index 778f231..a5f6c5e 100644 --- a/packages/react/src/hooks/useManualMint.ts +++ b/packages/react/src/hooks/useManualMint.ts @@ -12,6 +12,7 @@ import { fetchAttestationOnce, manualMintExplorerUrl, pollAttestation, + toWhiskError, type Chain, type IrisMessage, } from "@usewhisk/core"; @@ -125,7 +126,7 @@ export function useManualMint(): UseManualMintResult { return { kind: "failure", reason: "submission-failed", - message: err instanceof Error ? err.message : String(err), + message: toWhiskError(err, "Couldn't submit the mint.").message, }; } }, diff --git a/packages/react/src/resolvers/ensResolver.ts b/packages/react/src/resolvers/ensResolver.ts index 2d16965..b338e03 100644 --- a/packages/react/src/resolvers/ensResolver.ts +++ b/packages/react/src/resolvers/ensResolver.ts @@ -3,7 +3,12 @@ import { createPublicClient, fallback, http, type PublicClient } from "viem"; import { mainnet, sepolia } from "viem/chains"; import { normalize } from "viem/ens"; -import { ResolverError, chainInfo, type Resolver } from "@usewhisk/core"; +import { + ResolverError, + chainInfo, + cleanErrorMessage, + type Resolver, +} from "@usewhisk/core"; export type EnsResolverChain = "mainnet" | "sepolia"; @@ -120,7 +125,9 @@ async function safeGetEnsAddress( } catch (err) { throw new ResolverError( "ens", - err instanceof Error ? err.message : "ENS lookup failed", + err instanceof Error + ? cleanErrorMessage(err.message) + : "ENS lookup failed", err, ); } From 8045f6b0f631d38decc02b3612aa9a1be76f54b2 Mon Sep 17 00:00:00 2001 From: signor1 Date: Fri, 29 May 2026 02:46:00 +0100 Subject: [PATCH 5/9] fix: let host theme overrides win in dark mode --- packages/react/src/styles.css | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/react/src/styles.css b/packages/react/src/styles.css index 4124c97..ec48dfc 100644 --- a/packages/react/src/styles.css +++ b/packages/react/src/styles.css @@ -93,10 +93,16 @@ win over the media query. Light is always the default; everything else opts in. + + The theme discriminators are wrapped in `:where()` so they add no + specificity — every block stays at `[data-whisk]` (0,1,0). That keeps + the host override contract intact: a recipe that re-themes `--whisk-*` + on `[data-whisk]` (loaded after this file) wins in light AND dark, + instead of being out-specified by the dark block. */ @media (prefers-color-scheme: dark) { - [data-whisk]:not([data-whisk-theme="light"]) { + [data-whisk]:where(:not([data-whisk-theme="light"])) { --whisk-bg: #2a1d21; /* deep wine */ --whisk-fg: #e4e2d4; /* cream becomes text */ --whisk-fg-muted: color-mix(in srgb, var(--whisk-fg) 75%, transparent); @@ -115,8 +121,7 @@ } } -[data-whisk][data-whisk-theme="dark"], -[data-whisk].dark { +[data-whisk]:where([data-whisk-theme="dark"], .dark) { --whisk-bg: #2a1d21; --whisk-fg: #e4e2d4; --whisk-fg-muted: color-mix(in srgb, var(--whisk-fg) 75%, transparent); From 0373fee468bdb1eb9930a727d3167defb6cdb248 Mon Sep 17 00:00:00 2001 From: signor1 Date: Fri, 29 May 2026 02:47:02 +0100 Subject: [PATCH 6/9] feat(examples): polish recipes + playground Per-recipe palettes and destination chains, real product imagery, a Vite Buffer polyfill for Solana, feeBearer: 'sender' across recipes, and a feeBearer toggle in the playground. --- examples/donate-button/README.md | 2 + examples/donate-button/package.json | 1 + .../src/components/donate-card.tsx | 24 ++++++----- examples/donate-button/src/data/tiers.ts | 2 +- examples/donate-button/src/main.tsx | 10 +++++ examples/donate-button/src/providers.tsx | 22 ++++++++-- examples/donate-button/src/styles.css | 28 ++++++++++++- examples/ecommerce-checkout/README.md | 2 + .../ecommerce-checkout/src/app/globals.css | 25 ++++++++++- examples/ecommerce-checkout/src/app/page.tsx | 39 +----------------- .../ecommerce-checkout/src/app/providers.tsx | 19 ++++++--- .../src/components/checkout/order-summary.tsx | 13 ++++-- .../src/components/checkout/payment-aside.tsx | 8 ++-- .../src/components/shop/product-card.tsx | 10 ++++- .../src/components/success/success-view.tsx | 13 ++++-- .../ecommerce-checkout/src/data/catalog.ts | 31 +++++++------- examples/invoice-link/README.md | 2 + examples/invoice-link/src/app/globals.css | 24 ++++++++++- examples/invoice-link/src/app/providers.tsx | 9 +++- .../invoice-link/src/components/pay-aside.tsx | 3 +- .../invoice-link/src/data/demo-invoices.ts | 2 +- examples/payroll-batch/README.md | 2 + examples/payroll-batch/package.json | 1 + .../src/components/paying-step.tsx | 3 +- examples/payroll-batch/src/data/payees.ts | 13 +++++- examples/payroll-batch/src/main.tsx | 11 +++++ examples/payroll-batch/src/providers.tsx | 29 ++++++++++--- examples/payroll-batch/src/styles.css | 24 ++++++++++- .../src/app/playground/controls.tsx | 41 ++++++++++++++++++- .../playground/src/app/playground/index.tsx | 5 ++- .../src/app/playground/providers.tsx | 18 +++++--- .../playground/src/app/playground/store.ts | 7 +++- examples/themed-saas/README.md | 2 + examples/themed-saas/src/app/globals.css | 24 ++++++++++- examples/themed-saas/src/app/page.tsx | 6 +-- examples/themed-saas/src/app/providers.tsx | 9 +++- .../themed-saas/src/components/quick-send.tsx | 3 +- 37 files changed, 370 insertions(+), 117 deletions(-) diff --git a/examples/donate-button/README.md b/examples/donate-button/README.md index b3244b5..e0248e6 100644 --- a/examples/donate-button/README.md +++ b/examples/donate-button/README.md @@ -22,6 +22,8 @@ with a locked recipient + soft-prefilled amount per tier. - Public donor wall, impact stats, and an active-projects grid with per-project progress. - `onSuccess` shows a tier-specific thank-you with a tx hash link. +- Runs `feeBearer: "sender"` so the donor covers the bridge fees and the + treasury receives the full tier amount ($25 lands as $25). ## Stack diff --git a/examples/donate-button/package.json b/examples/donate-button/package.json index c714e42..f51ae72 100644 --- a/examples/donate-button/package.json +++ b/examples/donate-button/package.json @@ -17,6 +17,7 @@ "@tanstack/react-query": "^5.59.0", "@usewhisk/core": "workspace:*", "@usewhisk/react": "workspace:*", + "buffer": "^6.0.3", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/donate-button/src/components/donate-card.tsx b/examples/donate-button/src/components/donate-card.tsx index 0f4fc4c..9c4a149 100644 --- a/examples/donate-button/src/components/donate-card.tsx +++ b/examples/donate-button/src/components/donate-card.tsx @@ -59,21 +59,23 @@ function WidgetSurface({ }) { return (
- - onPaid({ amount: quote.amountIn, txHash: finalTxHash }) - } - /> +
+ + onPaid({ amount: quote.amountIn, txHash: finalTxHash }) + } + /> +

{widgetAmount - ? `Tier locked — $${widgetAmount} · recipient pinned` - : "Custom amount · recipient pinned"} + ? `Tier locked — $${widgetAmount} · fees covered, OpenForest receives the full amount` + : "Custom amount · fees covered, OpenForest receives the full amount"}

); diff --git a/examples/donate-button/src/data/tiers.ts b/examples/donate-button/src/data/tiers.ts index 5f2cc72..cbdce27 100644 --- a/examples/donate-button/src/data/tiers.ts +++ b/examples/donate-button/src/data/tiers.ts @@ -5,7 +5,7 @@ export type Tier = { caption: string; }; -export const TREASURY_ADDRESS = "0xbFc6981dE968C96058932963e5d2B7621DEa8f59"; +export const TREASURY_ADDRESS = "0xbe03CE9d6001D27BE41fc87e3E3f777d04e70Fe2"; export const ANNUAL_GOAL = 250_000; export const RAISED = 187_420; diff --git a/examples/donate-button/src/main.tsx b/examples/donate-button/src/main.tsx index 401a69c..060bbf5 100644 --- a/examples/donate-button/src/main.tsx +++ b/examples/donate-button/src/main.tsx @@ -1,3 +1,13 @@ +// Polyfill Buffer for the browser before any Solana code loads. +// @solana/web3.js uses Node's `Buffer` global (for base58 encoding, +// transaction serialization, etc.). Next.js polyfills this automatically; +// Vite does not — so without this line, anything that touches Solana +// (e.g. CCTP cross-ecosystem bridges) throws "Buffer is not defined". +import { Buffer } from "buffer"; +if (typeof globalThis.Buffer === "undefined") { + globalThis.Buffer = Buffer; +} + import React from "react"; import ReactDOM from "react-dom/client"; import "@usewhisk/react/styles.css"; diff --git a/examples/donate-button/src/providers.tsx b/examples/donate-button/src/providers.tsx index 138d60c..abca754 100644 --- a/examples/donate-button/src/providers.tsx +++ b/examples/donate-button/src/providers.tsx @@ -15,9 +15,17 @@ export function Providers({ children }: { children: ReactNode }) { () => createWhiskConfig({ mode: "testnet", + // Donor covers the bridge fees so the treasury receives the full tier + // amount (a $25 donation lands as $25, not $25 minus fees). + feeBearer: "sender", wallets: [ evm({ - chains: ["Arc_Testnet", "Base_Sepolia", "Ethereum_Sepolia"], + chains: [ + "Arc_Testnet", + "Base_Sepolia", + "Ethereum_Sepolia", + "Optimism_Sepolia", + ], projectId: import.meta.env.VITE_WALLETCONNECT_PROJECT_ID, appName: "OpenForest", }), @@ -27,14 +35,22 @@ export function Providers({ children }: { children: ReactNode }) { "Arc_Testnet", "Base_Sepolia", "Ethereum_Sepolia", + "Optimism_Sepolia", "Solana_Devnet", ], + // Donors give from any chain (incl. Ethereum + Solana); the treasury + // receives on Optimism, an L2 where the Forwarder mint fee is cents, + // not the dollars it costs to mint on Ethereum L1. defaultSourceChain: "Arc_Testnet", - defaultDestinationChain: "Arc_Testnet", + defaultDestinationChain: "Optimism_Sepolia", appLabel: "whisk-example-donate", }), [], ); - return {children}; + return ( + + {children} + + ); } diff --git a/examples/donate-button/src/styles.css b/examples/donate-button/src/styles.css index 0355033..d657815 100644 --- a/examples/donate-button/src/styles.css +++ b/examples/donate-button/src/styles.css @@ -55,16 +55,42 @@ body { } /* Widget palette overrides inside .of-widget */ -.of-widget [data-whisk] { +/* ============================================================ + Widget theme — overrides every `--whisk-*` token to the OpenForest + palette. The selector is `[data-whisk]` (not `.of-widget [data-whisk]`) + because `` puts the `data-whisk` attribute on the + outer app wrapper — it's an ancestor of every recipe surface, and + CSS variables cascade through portals via WhiskScope. + ============================================================ */ +[data-whisk] { + /* surfaces */ --whisk-bg: var(--color-paper); --whisk-card: var(--color-paper); + --whisk-card-fg: var(--color-ink); --whisk-fg: var(--color-ink); --whisk-fg-muted: color-mix(in srgb, var(--color-ink) 65%, transparent); + /* lines */ --whisk-border: var(--color-line); --whisk-input: var(--color-line); + --whisk-border-w: 1px; + /* accent */ --whisk-primary: var(--color-moss); --whisk-primary-fg: var(--color-paper); + --whisk-ring: var(--color-fern); + /* semantic */ + --whisk-success: var(--color-moss); + --whisk-warning: var(--color-sun); + --whisk-destructive: var(--color-bark); + --whisk-destructive-fg: var(--color-paper); + /* radii */ --whisk-radius: 12px; + --whisk-radius-sm: 8px; + --whisk-radius-md: 12px; + --whisk-radius-lg: 16px; + /* fonts — inherit the recipe's stack so the widget reads native */ + --whisk-font: var(--font-sans); + --whisk-font-display: var(--font-display); + --whisk-font-mono: var(--font-mono); } @keyframes of-grow { diff --git a/examples/ecommerce-checkout/README.md b/examples/ecommerce-checkout/README.md index a96e04b..fb3dcb4 100644 --- a/examples/ecommerce-checkout/README.md +++ b/examples/ecommerce-checkout/README.md @@ -20,6 +20,8 @@ locked into a fixed price + merchant address at the payment step. - `onSuccess` flips state to an order confirmation with a tx hash, order ID, and itemized list. In a real app this is where your backend would catch a webhook and finalize the order. +- Runs `feeBearer: "sender"` so the customer covers the bridge fees and + the merchant receives the exact cart total. ## Stack diff --git a/examples/ecommerce-checkout/src/app/globals.css b/examples/ecommerce-checkout/src/app/globals.css index 8d51fee..a4ee277 100644 --- a/examples/ecommerce-checkout/src/app/globals.css +++ b/examples/ecommerce-checkout/src/app/globals.css @@ -48,16 +48,39 @@ body { widget reads as native to the store, not as a pasted-in card. Scoped to .ah-widget so other surfaces using (if any) stay on the widget's own brand. */ -.ah-widget [data-whisk] { +/* Widget theme — selector is `[data-whisk]` (set on the provider's outer + wrapper) so the cascade reaches every widget element including portals. + The host CSS loads after @usewhisk/react/styles.css in main entry, so + these rules win at equal specificity. */ +[data-whisk] { + /* surfaces */ --whisk-bg: var(--color-sand); --whisk-card: var(--color-paper); + --whisk-card-fg: var(--color-charcoal); --whisk-fg: var(--color-charcoal); --whisk-fg-muted: color-mix(in srgb, var(--color-charcoal) 70%, transparent); + /* lines */ --whisk-border: var(--color-line); --whisk-input: var(--color-line); + --whisk-border-w: 1px; + /* accent */ --whisk-primary: var(--color-charcoal); --whisk-primary-fg: var(--color-sand); + --whisk-ring: var(--color-tobacco); + /* semantic */ + --whisk-success: var(--color-leaf); + --whisk-warning: var(--color-tobacco); + --whisk-destructive: var(--color-tobacco-deep); + --whisk-destructive-fg: var(--color-sand); + /* radii */ --whisk-radius: 10px; + --whisk-radius-sm: 6px; + --whisk-radius-md: 10px; + --whisk-radius-lg: 14px; + /* fonts — serif display matches the editorial brand */ + --whisk-font: var(--font-sans); + --whisk-font-display: var(--font-display); + --whisk-font-mono: var(--font-mono); } @keyframes ah-pop { diff --git a/examples/ecommerce-checkout/src/app/page.tsx b/examples/ecommerce-checkout/src/app/page.tsx index f100621..9b9d663 100644 --- a/examples/ecommerce-checkout/src/app/page.tsx +++ b/examples/ecommerce-checkout/src/app/page.tsx @@ -1,42 +1,5 @@ import { ClientGate } from "./client-gate"; export default function Page() { - return ( -
-
- - - -
- -
-

Pay-with-USDC storefront, in production-shape.

-

- A real e-commerce flow built around <WhiskSend />. - Pick a product, confirm, settle on Arc Testnet — no card form, no - merchant gateway, no chargebacks. -

-
- -
- -
- -
- Demo only · merchant address + amount are pinned via - Whisk's controlled props -
-
- ); + return ; } diff --git a/examples/ecommerce-checkout/src/app/providers.tsx b/examples/ecommerce-checkout/src/app/providers.tsx index 5404a47..ffa6368 100644 --- a/examples/ecommerce-checkout/src/app/providers.tsx +++ b/examples/ecommerce-checkout/src/app/providers.tsx @@ -4,7 +4,7 @@ import { useMemo } from "react"; import { WhiskProvider, createWhiskConfig, evm } from "@usewhisk/react"; /** - * The merchant fixes a single chain (Arc Testnet here). The `chains` + * The merchant fixes a single chain (Base Sepolia here). The `chains` * array contains only that chain so the widget's pickers collapse to * a no-op — there's nothing to choose. In a real app you'd configure * whatever chain your back-office has settled on for receivables. @@ -14,20 +14,27 @@ export function Providers({ children }: { children: React.ReactNode }) { () => createWhiskConfig({ mode: "testnet", + // Customer covers the bridge fees so the merchant receives the exact + // cart total. Otherwise fees would be deducted from the price. + feeBearer: "sender", wallets: [ evm({ - chains: ["Arc_Testnet"], + chains: ["Base_Sepolia"], projectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID, appName: "Atelier Hibiscus", }), ], - chains: ["Arc_Testnet"], - defaultSourceChain: "Arc_Testnet", - defaultDestinationChain: "Arc_Testnet", + chains: ["Base_Sepolia"], + defaultSourceChain: "Base_Sepolia", + defaultDestinationChain: "Base_Sepolia", appLabel: "whisk-example-ecommerce", }), [], ); - return {children}; + return ( + + {children} + + ); } diff --git a/examples/ecommerce-checkout/src/components/checkout/order-summary.tsx b/examples/ecommerce-checkout/src/components/checkout/order-summary.tsx index 639dac2..e4c6769 100644 --- a/examples/ecommerce-checkout/src/components/checkout/order-summary.tsx +++ b/examples/ecommerce-checkout/src/components/checkout/order-summary.tsx @@ -47,9 +47,16 @@ function LineItemRow({
  • + className="h-14 w-14 shrink-0 overflow-hidden rounded-lg" + style={{ backgroundColor: line.product.fallbackColor }} + > + +
    {line.product.name} diff --git a/examples/ecommerce-checkout/src/components/checkout/payment-aside.tsx b/examples/ecommerce-checkout/src/components/checkout/payment-aside.tsx index 6319292..3e208a5 100644 --- a/examples/ecommerce-checkout/src/components/checkout/payment-aside.tsx +++ b/examples/ecommerce-checkout/src/components/checkout/payment-aside.tsx @@ -23,16 +23,16 @@ export function PaymentAside({ totalStr, onPaid }: PaymentAsideProps) {

    - Amount and merchant address are locked from the cart. Pick a chain in - the widget — settles in seconds. + Amount and merchant address are locked from the cart. Bridge fees are + added to your total, so Atelier Hibiscus receives the exact price.

    onPaid(finalTxHash)} />
    diff --git a/examples/ecommerce-checkout/src/components/shop/product-card.tsx b/examples/ecommerce-checkout/src/components/shop/product-card.tsx index 92148c1..6d54ee8 100644 --- a/examples/ecommerce-checkout/src/components/shop/product-card.tsx +++ b/examples/ecommerce-checkout/src/components/shop/product-card.tsx @@ -17,9 +17,15 @@ export function ProductCard({ product, inCart, onAdd }: ProductCardProps) { return (
    + {product.name} + className="h-[18px] w-[18px] shrink-0 overflow-hidden rounded-full" + style={{ backgroundColor: c.product.fallbackColor }} + > + + {c.qty}× {c.product.name} ))} diff --git a/examples/ecommerce-checkout/src/data/catalog.ts b/examples/ecommerce-checkout/src/data/catalog.ts index 3d6f8b5..2ffbfe7 100644 --- a/examples/ecommerce-checkout/src/data/catalog.ts +++ b/examples/ecommerce-checkout/src/data/catalog.ts @@ -8,8 +8,10 @@ export type Product = { caption: string; priceUsdc: number; variants: Variant[]; - /** Two-stop radial gradient composed to read as a product photograph. */ - art: string; + /** Product photo. Unsplash CDN — stable URLs, free commercial license. */ + image: string; + /** Solid fallback while the image loads, picked to match the photograph. */ + fallbackColor: string; category: "Apparel" | "Home" | "Stationery" | "Accessories"; }; @@ -29,25 +31,20 @@ export const CATALOG: Product[] = [ { id: "l", label: "L" }, { id: "xl", label: "XL" }, ], - art: "radial-gradient(120% 80% at 30% 25%, #d6c4a3 0%, #b89a72 55%, #8a6a48 100%)", + image: + "https://images.unsplash.com/photo-1620799140408-edc6dcb6d633?w=800&q=80&auto=format&fit=crop", + fallbackColor: "#b89a72", category: "Apparel", }, - { - id: "candle", - name: "Fig + cedar candle", - caption: "Ceramic vessel · 8oz · 45-hour burn", - priceUsdc: 32, - variants: [{ id: "8oz", label: "8oz" }], - art: "radial-gradient(120% 80% at 70% 30%, #f0e2c4 0%, #c69b6f 60%, #7a4f30 100%)", - category: "Home", - }, { id: "pin", name: "Tortoise reading glasses", caption: "Acetate · amber tortoise · neutral lens", priceUsdc: 29, variants: [{ id: "amber", label: "Amber" }], - art: "radial-gradient(120% 80% at 25% 30%, #b89160 0%, #6a4423 65%, #2a1a0c 100%)", + image: + "https://images.unsplash.com/photo-1574258495973-f010dfbb5371?w=800&q=80&auto=format&fit=crop", + fallbackColor: "#6a4423", category: "Accessories", }, { @@ -59,7 +56,9 @@ export const CATALOG: Product[] = [ { id: "natural", label: "Natural" }, { id: "umber", label: "Umber" }, ], - art: "radial-gradient(120% 80% at 65% 40%, #cdb094 0%, #94714d 60%, #5a3d23 100%)", + image: + "https://images.unsplash.com/photo-1591561954557-26941169b49e?w=800&q=80&auto=format&fit=crop", + fallbackColor: "#94714d", category: "Accessories", }, { @@ -71,7 +70,9 @@ export const CATALOG: Product[] = [ { id: "rust", label: "Rust" }, { id: "olive", label: "Olive" }, ], - art: "radial-gradient(120% 80% at 30% 25%, #c98c66 0%, #944c2e 65%, #4f1f0d 100%)", + image: + "https://images.unsplash.com/photo-1517842645767-c639042777db?w=800&q=80&auto=format&fit=crop", + fallbackColor: "#944c2e", category: "Stationery", }, ]; diff --git a/examples/invoice-link/README.md b/examples/invoice-link/README.md index 7fbc664..d7d5bfb 100644 --- a/examples/invoice-link/README.md +++ b/examples/invoice-link/README.md @@ -21,6 +21,8 @@ The whole integration is a URL. No SDK on the customer's side. and copy-to-clipboard. - Coral/sage palette (distinct from the Atelier Hibiscus ecommerce recipe — same "Hibiscus" mood, different studio). +- Runs `feeBearer: "sender"` so the payer covers the bridge fees and the + freelancer receives the exact invoiced amount. ## Stack diff --git a/examples/invoice-link/src/app/globals.css b/examples/invoice-link/src/app/globals.css index 52841b7..f1177df 100644 --- a/examples/invoice-link/src/app/globals.css +++ b/examples/invoice-link/src/app/globals.css @@ -53,16 +53,38 @@ body { -moz-osx-font-smoothing: grayscale; } -.sh-widget [data-whisk] { +/* Widget theme — set on the provider's `[data-whisk]` so the cascade + reaches portals. Loads after @usewhisk/react/styles.css → wins at + equal specificity. */ +[data-whisk] { + /* surfaces */ --whisk-bg: var(--color-paper); --whisk-card: var(--color-paper); + --whisk-card-fg: var(--color-ink); --whisk-fg: var(--color-ink); --whisk-fg-muted: var(--color-ink-muted); + /* lines */ --whisk-border: var(--color-line); --whisk-input: var(--color-line); + --whisk-border-w: 1px; + /* accent */ --whisk-primary: var(--color-coral); --whisk-primary-fg: var(--color-paper); + --whisk-ring: var(--color-coral-deep); + /* semantic */ + --whisk-success: var(--color-sage-deep); + --whisk-warning: var(--color-sunset); + --whisk-destructive: var(--color-coral-deep); + --whisk-destructive-fg: var(--color-paper); + /* radii */ --whisk-radius: 10px; + --whisk-radius-sm: 6px; + --whisk-radius-md: 10px; + --whisk-radius-lg: 14px; + /* fonts */ + --whisk-font: var(--font-sans); + --whisk-font-display: var(--font-display); + --whisk-font-mono: var(--font-mono); } @keyframes sh-rise { diff --git a/examples/invoice-link/src/app/providers.tsx b/examples/invoice-link/src/app/providers.tsx index 7335ab1..bf381d5 100644 --- a/examples/invoice-link/src/app/providers.tsx +++ b/examples/invoice-link/src/app/providers.tsx @@ -21,6 +21,9 @@ export function Providers({ children }: { children: React.ReactNode }) { () => createWhiskConfig({ mode: "testnet", + // Payer covers the bridge fees so the freelancer receives the exact + // invoiced amount. + feeBearer: "sender", wallets: [ evm({ chains: SUPPORTED, @@ -36,5 +39,9 @@ export function Providers({ children }: { children: React.ReactNode }) { [], ); - return {children}; + return ( + + {children} + + ); } diff --git a/examples/invoice-link/src/components/pay-aside.tsx b/examples/invoice-link/src/components/pay-aside.tsx index fd49b95..4659ad7 100644 --- a/examples/invoice-link/src/components/pay-aside.tsx +++ b/examples/invoice-link/src/components/pay-aside.tsx @@ -41,7 +41,8 @@ function PayPanel({ Settle in seconds with USDC.

    - Amount, recipient, and chain are pinned to this invoice. + Amount, recipient, and chain are pinned to this invoice. Bridge fees + are added to your total, so Studio Hibiscus receives the full amount.

    diff --git a/examples/invoice-link/src/data/demo-invoices.ts b/examples/invoice-link/src/data/demo-invoices.ts index 96860a8..cfbfd09 100644 --- a/examples/invoice-link/src/data/demo-invoices.ts +++ b/examples/invoice-link/src/data/demo-invoices.ts @@ -19,7 +19,7 @@ export const DEMO_INVOICES: DemoInvoice[] = [ label: "Photography · half-day shoot", memo: "Half-day editorial shoot", amount: "850", - chain: "Arc_Testnet", + chain: "Optimism_Sepolia", to: "0x5B8ecaB7096F8aBED873D246629ef9f05f467605", }, ]; diff --git a/examples/payroll-batch/README.md b/examples/payroll-batch/README.md index bac22c4..5804433 100644 --- a/examples/payroll-batch/README.md +++ b/examples/payroll-batch/README.md @@ -18,6 +18,8 @@ one-by-one through a single embedded widget. - `onSuccess` advances to the next payee automatically — no extra clicks between dispatches. - Editorial typography + serif display headers (Studio Fortune brand). +- Runs `feeBearer: "sender"` so the studio treasury covers the bridge + fees and each contractor is paid their exact salary. ## Stack diff --git a/examples/payroll-batch/package.json b/examples/payroll-batch/package.json index 2c614b6..1e86bed 100644 --- a/examples/payroll-batch/package.json +++ b/examples/payroll-batch/package.json @@ -17,6 +17,7 @@ "@tanstack/react-query": "^5.59.0", "@usewhisk/core": "workspace:*", "@usewhisk/react": "workspace:*", + "buffer": "^6.0.3", "react": "^19.0.0", "react-dom": "^19.0.0" }, diff --git a/examples/payroll-batch/src/components/paying-step.tsx b/examples/payroll-batch/src/components/paying-step.tsx index 65de578..431cb76 100644 --- a/examples/payroll-batch/src/components/paying-step.tsx +++ b/examples/payroll-batch/src/components/paying-step.tsx @@ -247,7 +247,7 @@ function ActivePayeeCard({
    - Locked + Locked · fees on the studio

    ${payee.amount.toLocaleString()} USDC →{" "} @@ -259,6 +259,7 @@ function ActivePayeeCard({ onPaid()} /> diff --git a/examples/payroll-batch/src/data/payees.ts b/examples/payroll-batch/src/data/payees.ts index c163043..a8d3c07 100644 --- a/examples/payroll-batch/src/data/payees.ts +++ b/examples/payroll-batch/src/data/payees.ts @@ -1,10 +1,15 @@ +import type { Chain } from "@usewhisk/react"; + export type Payee = { id: string; name: string; role: string; address: string; amount: number; + /** Display label for the chain. */ chain: string; + /** Typed Whisk chain identifier for ``. */ + chainCode: Chain; status: "pending" | "approved" | "sent" | "settled"; initials: string; hue: number; @@ -20,6 +25,7 @@ export const PAYEES: Payee[] = [ address: "0x5B8e…f7605", amount: 6400, chain: "Arc Testnet", + chainCode: "Arc_Testnet", status: "pending", initials: "MC", hue: 340, @@ -31,6 +37,7 @@ export const PAYEES: Payee[] = [ address: "0x9b21…ed12", amount: 4800, chain: "Base Sepolia", + chainCode: "Base_Sepolia", status: "pending", initials: "JH", hue: 12, @@ -42,6 +49,7 @@ export const PAYEES: Payee[] = [ address: "0x3f41…b9aa", amount: 5600, chain: "Arc Testnet", + chainCode: "Arc_Testnet", status: "pending", initials: "SA", hue: 280, @@ -53,6 +61,7 @@ export const PAYEES: Payee[] = [ address: "0x7a92…1cde", amount: 4200, chain: "OP Sepolia", + chainCode: "Optimism_Sepolia", status: "pending", initials: "YT", hue: 200, @@ -63,7 +72,8 @@ export const PAYEES: Payee[] = [ role: "Motion Designer", address: "0x2b11…cd54", amount: 3800, - chain: "Arc Testnet", + chain: "Arbitrum Sepolia", + chainCode: "Arbitrum_Sepolia", status: "pending", initials: "RM", hue: 50, @@ -75,6 +85,7 @@ export const PAYEES: Payee[] = [ address: "0xe4f0…77b1", amount: 5100, chain: "Base Sepolia", + chainCode: "Base_Sepolia", status: "pending", initials: "OP", hue: 320, diff --git a/examples/payroll-batch/src/main.tsx b/examples/payroll-batch/src/main.tsx index 401a69c..db2ae4c 100644 --- a/examples/payroll-batch/src/main.tsx +++ b/examples/payroll-batch/src/main.tsx @@ -1,3 +1,14 @@ +// Polyfill Buffer for the browser before any wallet code loads. +// Some wallet SDKs (and any Solana chain you add later) reach for Node's +// `Buffer` global, which Vite does not provide. Next.js polyfills it +// automatically; in a Vite app this one-liner prevents "Buffer is not +// defined". This recipe is EVM-only today, so it's defensive — but it +// costs nothing and removes the footgun if a Solana chain is added. +import { Buffer } from "buffer"; +if (typeof globalThis.Buffer === "undefined") { + globalThis.Buffer = Buffer; +} + import React from "react"; import ReactDOM from "react-dom/client"; import "@usewhisk/react/styles.css"; diff --git a/examples/payroll-batch/src/providers.tsx b/examples/payroll-batch/src/providers.tsx index 6bdb7ed..72ab62a 100644 --- a/examples/payroll-batch/src/providers.tsx +++ b/examples/payroll-batch/src/providers.tsx @@ -6,20 +6,39 @@ export function Providers({ children }: { children: ReactNode }) { () => createWhiskConfig({ mode: "testnet", + // Studio treasury covers the bridge fees so each contractor is paid + // their exact salary, net of nothing. + feeBearer: "sender", wallets: [ evm({ - chains: ["Arc_Testnet"], + chains: [ + "Arbitrum_Sepolia", + "Arc_Testnet", + "Base_Sepolia", + "Optimism_Sepolia", + ], projectId: import.meta.env.VITE_WALLETCONNECT_PROJECT_ID, appName: "Studio Fortune", }), ], - chains: ["Arc_Testnet"], - defaultSourceChain: "Arc_Testnet", - defaultDestinationChain: "Arc_Testnet", + chains: [ + "Arbitrum_Sepolia", + "Arc_Testnet", + "Base_Sepolia", + "Optimism_Sepolia", + ], + // Treasury sits on Arbitrum for cheap outgoing payouts; each + // dispatch then bridges to the contractor's preferred chain. + defaultSourceChain: "Arbitrum_Sepolia", + defaultDestinationChain: "Arbitrum_Sepolia", appLabel: "whisk-example-payroll", }), [], ); - return {children}; + return ( + + {children} + + ); } diff --git a/examples/payroll-batch/src/styles.css b/examples/payroll-batch/src/styles.css index 42a4b96..058a11f 100644 --- a/examples/payroll-batch/src/styles.css +++ b/examples/payroll-batch/src/styles.css @@ -57,16 +57,38 @@ body { min-height: 100dvh; } -.sf-widget [data-whisk] { +/* Widget theme — set on the provider's `[data-whisk]` so the cascade + reaches portals. Loads after @usewhisk/react/styles.css → wins at + equal specificity. */ +[data-whisk] { + /* surfaces */ --whisk-bg: var(--color-ivory); --whisk-card: var(--color-bone); + --whisk-card-fg: var(--color-ink); --whisk-fg: var(--color-ink); --whisk-fg-muted: var(--color-ink-muted); + /* lines */ --whisk-border: var(--color-line); --whisk-input: var(--color-line); + --whisk-border-w: 1px; + /* accent */ --whisk-primary: var(--color-claret); --whisk-primary-fg: var(--color-ivory); + --whisk-ring: var(--color-burgundy); + /* semantic */ + --whisk-success: var(--color-emerald); + --whisk-warning: var(--color-gold); + --whisk-destructive: var(--color-claret-deep); + --whisk-destructive-fg: var(--color-ivory); + /* radii */ --whisk-radius: 10px; + --whisk-radius-sm: 6px; + --whisk-radius-md: 10px; + --whisk-radius-lg: 14px; + /* fonts — editorial serif for headlines */ + --whisk-font: var(--font-sans); + --whisk-font-display: var(--font-display); + --whisk-font-mono: var(--font-mono); } @keyframes sf-step { diff --git a/examples/playground/src/app/playground/controls.tsx b/examples/playground/src/app/playground/controls.tsx index 4662eed..b1adda2 100644 --- a/examples/playground/src/app/playground/controls.tsx +++ b/examples/playground/src/app/playground/controls.tsx @@ -1,7 +1,7 @@ "use client"; import { useEffect, useState, type Dispatch } from "react"; -import { chainInfo, type Chain } from "@usewhisk/react"; +import { chainInfo, type Chain, type FeeBearer } from "@usewhisk/react"; import { PLAYGROUND_CHAINS } from "./providers"; import { ADDRESS_BOOK } from "./address-book"; import type { @@ -56,6 +56,18 @@ export function Controls({ /> +

    + set({ feeBearer })} + /> + + {config.feeBearer === "sender" + ? "Burn is grossed up so the recipient nets the full amount. Switching reconnects the widget." + : "Fees come out of the transfer; recipient nets amount − fees. Switching reconnects the widget."} + +
    +
    void; +}) { + const options: FeeBearer[] = ["receiver", "sender"]; + return ( +
    + {options.map((opt) => ( + + ))} +
    + ); +} + const PALETTE_SWATCHES: Array<{ id: Palette; label: string; color: string }> = [ { id: "wine", label: "Wine", color: "#d65c3c" }, { id: "indigo", label: "Indigo", color: "#6366f1" }, diff --git a/examples/playground/src/app/playground/index.tsx b/examples/playground/src/app/playground/index.tsx index 7067bf9..41a2e75 100644 --- a/examples/playground/src/app/playground/index.tsx +++ b/examples/playground/src/app/playground/index.tsx @@ -39,7 +39,10 @@ export function Playground() { }, [palette]); return ( - +
    diff --git a/examples/playground/src/app/playground/providers.tsx b/examples/playground/src/app/playground/providers.tsx index 6e5fa0d..1f6425c 100644 --- a/examples/playground/src/app/playground/providers.tsx +++ b/examples/playground/src/app/playground/providers.tsx @@ -7,6 +7,7 @@ import { evm, solana, type Chain, + type FeeBearer, } from "@usewhisk/react"; /** @@ -50,21 +51,26 @@ export const PLAYGROUND_CHAINS = TESTNET_CHAINS; * or react-query underneath. Wallet connection survives a theme * change. * - * `config` is memoized with empty deps because it's static for the - * lifetime of the playground — every adjustable knob lives on - * `` props or the provider's `theme` prop, not on - * `createWhiskConfig`. + * `config` is memoized on `feeBearer` — almost every knob lives on + * `` props or the reactive `theme` prop, but `feeBearer` is + * part of `createWhiskConfig`, which the engine reads once at creation. + * The `key={feeBearer}` on the provider forces a clean remount when it + * flips, so a fresh engine picks up the new fee policy. (Toggling it + * therefore drops the wallet connection — fine for a QA knob.) */ export function PlaygroundProviders({ theme, + feeBearer, children, }: { theme: "system" | "light" | "dark"; + feeBearer: FeeBearer; children: React.ReactNode; }) { const config = useMemo( () => createWhiskConfig({ + feeBearer, wallets: [ evm({ chains: TESTNET_CHAINS, @@ -95,11 +101,11 @@ export function PlaygroundProviders({ defaultDestinationChain: "Base_Sepolia", appLabel: "whisk-playground", }), - [], + [feeBearer], ); return ( - + {children} ); diff --git a/examples/playground/src/app/playground/store.ts b/examples/playground/src/app/playground/store.ts index ea3275a..4f4f883 100644 --- a/examples/playground/src/app/playground/store.ts +++ b/examples/playground/src/app/playground/store.ts @@ -1,7 +1,7 @@ "use client"; import { useReducer } from "react"; -import type { Chain } from "@usewhisk/react"; +import type { Chain, FeeBearer } from "@usewhisk/react"; export type Theme = "system" | "light" | "dark"; @@ -14,6 +14,10 @@ export type PlaygroundConfig = { theme: Theme; palette: Palette; + /* Engine-level — part of createWhiskConfig. Changing it remounts the + * provider (the engine is built once per provider lifetime). */ + feeBearer: FeeBearer; + /* Surface toggles */ showFooter: boolean; swapEnabled: boolean; @@ -55,6 +59,7 @@ export type PlaygroundAction = export const INITIAL_CONFIG: PlaygroundConfig = { theme: "system", palette: "wine", + feeBearer: "receiver", showFooter: true, swapEnabled: true, lockAmount: false, diff --git a/examples/themed-saas/README.md b/examples/themed-saas/README.md index 17456cf..d466276 100644 --- a/examples/themed-saas/README.md +++ b/examples/themed-saas/README.md @@ -19,6 +19,8 @@ a serious enterprise product. explorer. - Idle state when no vendor is selected, prompting the user to pick a row. +- Runs `feeBearer: "sender"` so the treasury covers the bridge fees and + each vendor receives their exact invoiced amount. ## Stack diff --git a/examples/themed-saas/src/app/globals.css b/examples/themed-saas/src/app/globals.css index 8341f04..5496c7b 100644 --- a/examples/themed-saas/src/app/globals.css +++ b/examples/themed-saas/src/app/globals.css @@ -56,16 +56,38 @@ body { } /* Steelpath widget theme: dark card, foam-teal primary. */ -.sp-widget [data-whisk] { +/* Widget theme — set on the provider's `[data-whisk]` so the cascade + reaches portals. Loads after @usewhisk/react/styles.css → wins at + equal specificity. */ +[data-whisk] { + /* surfaces */ --whisk-bg: var(--color-card); --whisk-card: var(--color-card-2); + --whisk-card-fg: var(--color-text); --whisk-fg: var(--color-text); --whisk-fg-muted: var(--color-text-muted); + /* lines */ --whisk-border: var(--color-line-strong); --whisk-input: var(--color-line-strong); + --whisk-border-w: 1px; + /* accent */ --whisk-primary: var(--color-foam); --whisk-primary-fg: var(--color-ink); + --whisk-ring: var(--color-foam); + /* semantic */ + --whisk-success: var(--color-pos); + --whisk-warning: var(--color-warn); + --whisk-destructive: var(--color-neg); + --whisk-destructive-fg: var(--color-ink); + /* radii */ --whisk-radius: 10px; + --whisk-radius-sm: 6px; + --whisk-radius-md: 10px; + --whisk-radius-lg: 14px; + /* fonts */ + --whisk-font: var(--font-sans); + --whisk-font-display: var(--font-display); + --whisk-font-mono: var(--font-mono); } @keyframes sp-pulse { diff --git a/examples/themed-saas/src/app/page.tsx b/examples/themed-saas/src/app/page.tsx index a83f0c6..9b9d663 100644 --- a/examples/themed-saas/src/app/page.tsx +++ b/examples/themed-saas/src/app/page.tsx @@ -1,9 +1,5 @@ import { ClientGate } from "./client-gate"; export default function Page() { - return ( -
    - -
    - ); + return ; } diff --git a/examples/themed-saas/src/app/providers.tsx b/examples/themed-saas/src/app/providers.tsx index 7bdc550..01dfd2a 100644 --- a/examples/themed-saas/src/app/providers.tsx +++ b/examples/themed-saas/src/app/providers.tsx @@ -8,6 +8,9 @@ export function Providers({ children }: { children: React.ReactNode }) { () => createWhiskConfig({ mode: "testnet", + // Treasury covers the bridge fees so each vendor receives their exact + // invoiced amount. + feeBearer: "sender", wallets: [ evm({ chains: ["Arc_Testnet", "Base_Sepolia"], @@ -23,5 +26,9 @@ export function Providers({ children }: { children: React.ReactNode }) { [], ); - return {children}; + return ( + + {children} + + ); } diff --git a/examples/themed-saas/src/components/quick-send.tsx b/examples/themed-saas/src/components/quick-send.tsx index 3d8f100..8e38c67 100644 --- a/examples/themed-saas/src/components/quick-send.tsx +++ b/examples/themed-saas/src/components/quick-send.tsx @@ -61,7 +61,8 @@ function SelectedVendor({ {vendor.handle} · {vendor.chain} - Amount + recipient locked from vendor profile + Locked from vendor profile · fees covered, vendor nets the full + amount