From adb9f2fc631edff9323f0fa362a40ddbc52b8849 Mon Sep 17 00:00:00 2001 From: wenty22 Date: Tue, 29 Oct 2024 16:42:27 +0800 Subject: [PATCH 01/12] chore: Update cicd --- .github/workflows/release.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 9362de78..dbf3b915 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -43,7 +43,21 @@ jobs: run: | echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + - name: Create and publish alpha versions + if: steps.get-branch.outputs.branch == 'alpha' + uses: changesets/action@v1 + with: + version: pnpm ci:alpha-version + publish: pnpm ci:publish + commit: 'chore: Update versions' + title: 'chore: Update versions' + cwd: '.release' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Create and publish versions + if: steps.get-branch.outputs.branch == 'main' uses: changesets/action@v1 with: version: pnpm ci:stable-version From 286fee9ee53273f57def02afca5efe4ccd3601dd Mon Sep 17 00:00:00 2001 From: wenty22 Date: Thu, 31 Oct 2024 10:17:02 +0800 Subject: [PATCH 02/12] feat: Support solana --- .vscode/settings.json | 1 + .../token-config/mainnet/chains.ts | 16 + .../token-config/mainnet/index.ts | 2 +- common/config/rush/pnpm-lock.yaml | 725 +++++++++++------- .../src/debridge/index.ts | 6 +- .../src/debridge/types/index.ts | 3 +- packages/canonical-bridge-widget/package.json | 7 +- .../src/core/constants/index.ts | 3 + .../deBridge/hooks/useGetDeBridgeFees.ts | 47 +- .../adapters/meson/hooks/useTronContract.ts | 7 +- .../components/TokenBalancesProvider.tsx | 10 +- .../aggregator/hooks/useNativeCurrency.ts | 8 + .../modules/aggregator/hooks/useSelection.ts | 8 +- .../aggregator/shared/getNativeCurrencies.ts | 2 +- .../aggregator/shared/getTokenBalances.ts | 74 +- .../src/modules/aggregator/types.ts | 4 +- .../components/Button/TransferButton.tsx | 111 ++- .../Modal/TransactionSubmittedModal/index.tsx | 4 +- .../transfer/components/ToAccount/index.tsx | 44 +- .../hooks/solana/useSolanaTransferInfo.ts | 56 ++ .../hooks/tron/useTronTransferInfo.ts | 4 +- .../transfer/hooks/useLoadingBridgeFees.ts | 65 +- .../transfer/hooks/useLoadingTokenBalance.ts | 57 -- .../modules/wallet/CurrentWalletProvider.tsx | 88 ++- .../src/modules/wallet/WalletProvider.tsx | 94 ++- .../src/modules/wallet/hooks/useEvmBalance.ts | 10 +- .../modules/wallet/hooks/useSolanaAccount.ts | 16 + .../modules/wallet/hooks/useSolanaBalance.ts | 26 + .../modules/wallet/hooks/useTronBalance.ts | 9 +- .../modules/wallet/hooks/useWalletModal.tsx | 25 +- 30 files changed, 1020 insertions(+), 512 deletions(-) create mode 100644 packages/canonical-bridge-widget/src/modules/aggregator/hooks/useNativeCurrency.ts create mode 100644 packages/canonical-bridge-widget/src/modules/transfer/hooks/solana/useSolanaTransferInfo.ts delete mode 100644 packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingTokenBalance.ts create mode 100644 packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaAccount.ts create mode 100644 packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaBalance.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index e0093597..3d368fc1 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -53,6 +53,7 @@ "onflow", "protobuf", "reduxjs", + "Solana", "stargate", "tanstack", "unauthenticate", diff --git a/apps/canonical-bridge-ui/token-config/mainnet/chains.ts b/apps/canonical-bridge-ui/token-config/mainnet/chains.ts index 03efe82a..4b426f69 100644 --- a/apps/canonical-bridge-ui/token-config/mainnet/chains.ts +++ b/apps/canonical-bridge-ui/token-config/mainnet/chains.ts @@ -834,4 +834,20 @@ export const chains: IChainConfig[] = [ }, chainType: 'tron', }, + { + id: 7565164, + name: 'Solana', + nativeCurrency: { + name: 'SOL', + symbol: 'SOL', + decimals: 9, + }, + rpcUrl: 'https://solana-rpc.debridge.finance', + explorer: { + name: 'Solana explorer', + url: 'https://explorer.solana.com', + tokenUrlPattern: 'https://explorer.solana.com/address/{0}', + }, + chainType: 'solana', + }, ]; diff --git a/apps/canonical-bridge-ui/token-config/mainnet/index.ts b/apps/canonical-bridge-ui/token-config/mainnet/index.ts index db620060..e12e2bda 100644 --- a/apps/canonical-bridge-ui/token-config/mainnet/index.ts +++ b/apps/canonical-bridge-ui/token-config/mainnet/index.ts @@ -26,7 +26,7 @@ export function useTransferConfig() { const transferConfig: ITransferConfig = { defaultSelectedInfo: { - fromChainId: 1, + fromChainId: 7565164, toChainId: 56, tokenSymbol: 'USDT', // USDT amount: '', diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index d992b5b8..8b20f718 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -141,7 +141,7 @@ importers: version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0))(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0) '@node-real/walletkit': specifier: 2.4.0-alpha.5 - version: 2.4.0-alpha.5(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.2(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) + version: 2.4.0-alpha.5(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.2(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) '@tanstack/react-query': specifier: ~5.50.1 version: 5.50.1(react@18.3.1) @@ -269,6 +269,15 @@ importers: ../../packages/canonical-bridge-widget: dependencies: + '@solana/spl-token': + specifier: ~0.4.9 + version: 0.4.9(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.4)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-react': + specifier: ~0.15.35 + version: 0.15.35(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) + '@solana/web3.js': + specifier: ~1.95.4 + version: 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) tronweb: specifier: ~6.0.0 version: 6.0.0(bufferutil@4.0.8)(utf-8-validate@5.0.9) @@ -295,8 +304,8 @@ importers: specifier: ~11.13.0 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0))(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0) '@node-real/walletkit': - specifier: 2.4.0-alpha.10 - version: 2.4.0-alpha.10(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) + specifier: 2.4.1-alpha.0 + version: 2.4.1-alpha.0(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) '@tanstack/react-query': specifier: ~5.50.1 version: 5.50.1(react@18.3.1) @@ -2975,8 +2984,8 @@ packages: resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} engines: {node: ^14.21.3 || >=16} - '@node-real/walletkit@2.4.0-alpha.10': - resolution: {integrity: sha512-GpZB/xNXrOpcITBkRjlne0tAijnApHppu8roeR1BQNN/tix/NsQ0ngrboB4rGJVSrpLgjKtuf3V0xkrGqtdL8Q==} + '@node-real/walletkit@2.4.0-alpha.5': + resolution: {integrity: sha512-ItMhEz9RBhtdXzC8Pz+TY09bCKFvgoTsg8iaG3kym3fCQKxHgQnx1prn0Z9GPuS7D5b2Jk/6PLpClBZBYMQhiQ==} peerDependencies: '@tanstack/react-query': ^5 react: '>=17' @@ -2984,8 +2993,8 @@ packages: viem: ^2 wagmi: ^2 - '@node-real/walletkit@2.4.0-alpha.5': - resolution: {integrity: sha512-ItMhEz9RBhtdXzC8Pz+TY09bCKFvgoTsg8iaG3kym3fCQKxHgQnx1prn0Z9GPuS7D5b2Jk/6PLpClBZBYMQhiQ==} + '@node-real/walletkit@2.4.1-alpha.0': + resolution: {integrity: sha512-rl/uXrktICOROw4cGWXAmIdA9Hw8QlBW/GVYts2ucSJuwrST0EInM10Z7jwNCdJyn1ANDwzB5L/lA41BDJPafA==} peerDependencies: '@tanstack/react-query': ^5 react: '>=17' @@ -3330,10 +3339,69 @@ packages: peerDependencies: '@solana/web3.js': ^1.58.0 + '@solana/buffer-layout-utils@0.2.0': + resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} + engines: {node: '>= 10'} + '@solana/buffer-layout@4.0.1': resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} engines: {node: '>=5.10'} + '@solana/codecs-core@2.0.0-rc.1': + resolution: {integrity: sha512-bauxqMfSs8EHD0JKESaNmNuNvkvHSuN3bbWAF5RjOfDu2PugxHrvRebmYauvSumZ3cTfQ4HJJX6PG5rN852qyQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-data-structures@2.0.0-rc.1': + resolution: {integrity: sha512-rinCv0RrAVJ9rE/rmaibWJQxMwC5lSaORSZuwjopSUE6T0nb/MVg6Z1siNCXhh/HFTOg0l8bNvZHgBcN/yvXog==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-numbers@2.0.0-rc.1': + resolution: {integrity: sha512-J5i5mOkvukXn8E3Z7sGIPxsThRCgSdgTWJDQeZvucQ9PT6Y3HiVXJ0pcWiOWAoQ3RX8e/f4I3IC+wE6pZiJzDQ==} + peerDependencies: + typescript: '>=5' + + '@solana/codecs-strings@2.0.0-rc.1': + resolution: {integrity: sha512-9/wPhw8TbGRTt6mHC4Zz1RqOnuPTqq1Nb4EyuvpZ39GW6O2t2Q7Q0XxiB3+BdoEjwA2XgPw6e2iRfvYgqty44g==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + typescript: '>=5' + + '@solana/codecs@2.0.0-rc.1': + resolution: {integrity: sha512-qxoR7VybNJixV51L0G1RD2boZTcxmwUWnKCaJJExQ5qNKwbpSyDdWfFJfM5JhGyKe9DnPVOZB+JHWXnpbZBqrQ==} + peerDependencies: + typescript: '>=5' + + '@solana/errors@2.0.0-rc.1': + resolution: {integrity: sha512-ejNvQ2oJ7+bcFAYWj225lyRkHnixuAeb7RQCixm+5mH4n1IA4Qya/9Bmfy5RAAHQzxK43clu3kZmL5eF9VGtYQ==} + hasBin: true + peerDependencies: + typescript: '>=5' + + '@solana/options@2.0.0-rc.1': + resolution: {integrity: sha512-mLUcR9mZ3qfHlmMnREdIFPf9dpMc/Bl66tLSOOWxw4ml5xMT2ohFn7WGqoKcu/UHkT9CrC6+amEdqCNvUqI7AA==} + peerDependencies: + typescript: '>=5' + + '@solana/spl-token-group@0.0.7': + resolution: {integrity: sha512-V1N/iX7Cr7H0uazWUT2uk27TMqlqedpXHRqqAbVO2gvmJyT0E0ummMEAVQeXZ05ZhQ/xF39DLSdBp90XebWEug==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token-metadata@0.1.6': + resolution: {integrity: sha512-7sMt1rsm/zQOQcUWllQX9mD2O6KhSAtY1hFR2hfFwgqfFWzSY9E9GDvFVNYUI1F0iQKcm6HmePU9QbKRXTEBiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + + '@solana/spl-token@0.4.9': + resolution: {integrity: sha512-g3wbj4F4gq82YQlwqhPB0gHFXfgsC6UmyGMxtSLf/BozT/oKd59465DbnlUK8L8EcimKMavxsVAMoLcEdeCicg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.3 + '@solana/wallet-adapter-alpha@0.1.10': resolution: {integrity: sha512-TOUhDyUNSmp8bqeUueN0LPmurTAEmYm3PTrPGSnsq6JFeTzwTv5xZRygtCvULpBzCPZu/7AfIqh/TSoz4P92aw==} engines: {node: '>=16'} @@ -3607,8 +3675,8 @@ packages: resolution: {integrity: sha512-o7wk+zr5/QgyE393cGRC04K1hacR4EkBu3MB925ddaLvCVaXjwr2asgdviGzN9PEm3FiEJp3sMmMKYHFnwOITQ==} engines: {node: '>=16'} - '@solana/web3.js@1.95.2': - resolution: {integrity: sha512-SjlHp0G4qhuhkQQc+YXdGkI8EerCqwxvgytMgBpzMUQTafrkNant3e7pgilBGgjy/iM40ICvWBLgASTPMrQU7w==} + '@solana/web3.js@1.95.4': + resolution: {integrity: sha512-sdewnNEA42ZSMxqkzdwEWi6fDgzwtJHaQa5ndUGEJYtoOnM6X5cvPmjoTUp7/k7bRrVAxfBgDnvQQHD6yhlLYw==} '@solflare-wallet/metamask-sdk@1.0.3': resolution: {integrity: sha512-os5Px5PTMYKGS5tzOoyjDxtOtj0jZKnbI1Uwt8+Jsw1HHIA+Ib2UACCGNhQ/un2f8sIbTfLD1WuucNMOy8KZpQ==} @@ -6175,6 +6243,10 @@ packages: comma-separated-tokens@1.0.8: resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -13610,7 +13682,7 @@ snapshots: '@bitget-wallet/web3-sdk@0.0.8(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)': dependencies: '@metamask/safe-event-emitter': 3.1.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) eventemitter3: 5.0.1 transitivePeerDependencies: - bufferutil @@ -15014,10 +15086,10 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@fractalwagmi/solana-wallet-adapter@0.1.1(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@fractalwagmi/solana-wallet-adapter@0.1.1(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@fractalwagmi/popup-connection': 1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) bs58: 5.0.0 transitivePeerDependencies: - '@solana/web3.js' @@ -15087,9 +15159,9 @@ snapshots: '@types/yargs': 15.0.14 chalk: 4.1.2 - '@jnwng/walletconnect-solana@0.2.0(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': + '@jnwng/walletconnect-solana@0.2.0(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': dependencies: - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@walletconnect/qrcode-modal': 1.8.0 '@walletconnect/sign-client': 2.14.0(@react-native-async-storage/async-storage@1.24.0)(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) '@walletconnect/utils': 2.14.0(@react-native-async-storage/async-storage@1.24.0)(supports-color@9.4.0) @@ -15171,7 +15243,7 @@ snapshots: '@keystonehq/bc-ur-registry': 0.5.5 '@keystonehq/bc-ur-registry-sol': 0.3.1 '@keystonehq/sdk': 0.13.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) bs58: 5.0.0 uuid: 8.3.2 transitivePeerDependencies: @@ -15859,22 +15931,22 @@ snapshots: '@noble/hashes@1.5.0': {} - '@node-real/walletkit@2.4.0-alpha.10(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': + '@node-real/walletkit@2.4.0-alpha.5(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.2(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': dependencies: '@metamask/jazzicon': 2.0.0 - '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) - '@solana/wallet-adapter-wallets': 0.19.32(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(utf-8-validate@5.0.9) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) + '@solana/wallet-adapter-wallets': 0.19.32(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@tanstack/react-query': 5.50.1(react@18.3.1) '@tronweb3/tronwallet-abstract-adapter': 1.1.7 '@tronweb3/tronwallet-adapter-react-hooks': 1.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tronweb3/tronwallet-adapters': 1.2.4(@react-native-async-storage/async-storage@1.24.0)(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4) - '@walletconnect/solana-adapter': 0.0.5(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(utf-8-validate@5.0.9) + '@walletconnect/solana-adapter': 0.0.5(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(utf-8-validate@5.0.9) qrcode: 1.5.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) viem: 2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4) - wagmi: 2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4) + wagmi: 2.12.2(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15906,22 +15978,21 @@ snapshots: - utf-8-validate - zod - '@node-real/walletkit@2.4.0-alpha.5(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.2(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': + '@node-real/walletkit@2.4.1-alpha.0(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': dependencies: '@metamask/jazzicon': 2.0.0 - '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) - '@solana/wallet-adapter-wallets': 0.19.32(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) + '@solana/wallet-adapter-wallets': 0.19.32(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@tanstack/react-query': 5.50.1(react@18.3.1) '@tronweb3/tronwallet-abstract-adapter': 1.1.7 '@tronweb3/tronwallet-adapter-react-hooks': 1.1.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tronweb3/tronwallet-adapters': 1.2.4(@react-native-async-storage/async-storage@1.24.0)(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4) - '@walletconnect/solana-adapter': 0.0.5(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(utf-8-validate@5.0.9) qrcode: 1.5.3 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) viem: 2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4) - wagmi: 2.12.2(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(supports-color@9.4.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4) + wagmi: 2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -15936,7 +16007,6 @@ snapshots: - '@planetscale/database' - '@react-native-async-storage/async-storage' - '@sentry/types' - - '@solana/wallet-adapter-base' - '@types/react' - '@upstash/redis' - '@vercel/kv' @@ -16068,10 +16138,10 @@ snapshots: crypto-js: 4.1.1 uuidv4: 6.2.13 - '@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)': + '@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)': dependencies: '@particle-network/auth': 1.3.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) bs58: 6.0.0 '@pkgjs/parseargs@0.11.0': @@ -16133,9 +16203,9 @@ snapshots: dependencies: '@prisma/debug': 5.19.1 - '@project-serum/sol-wallet-adapter@0.2.6(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@project-serum/sol-wallet-adapter@0.2.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) bs58: 4.0.1 eventemitter3: 4.0.7 @@ -16284,7 +16354,7 @@ snapshots: '@scure/bip32@1.3.0': dependencies: '@noble/curves': 1.0.0 - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.9 '@scure/bip32@1.3.2': @@ -16301,7 +16371,7 @@ snapshots: '@scure/bip39@1.2.0': dependencies: - '@noble/hashes': 1.3.0 + '@noble/hashes': 1.3.2 '@scure/base': 1.1.9 '@scure/bip39@1.2.1': @@ -16323,10 +16393,10 @@ snapshots: '@socket.io/component-emitter@3.1.2': {} - '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1)': + '@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol': 2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana-mobile/mobile-wallet-adapter-protocol': 2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) bs58: 5.0.0 js-base64: 3.7.7 transitivePeerDependencies: @@ -16334,11 +16404,11 @@ snapshots: - react - react-native - '@solana-mobile/mobile-wallet-adapter-protocol@2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': + '@solana-mobile/mobile-wallet-adapter-protocol@2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': dependencies: - '@solana/wallet-standard': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) + '@solana/wallet-standard': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) '@solana/wallet-standard-util': 1.1.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@wallet-standard/core': 1.0.3 js-base64: 3.7.7 transitivePeerDependencies: @@ -16346,12 +16416,12 @@ snapshots: - bs58 - react - '@solana-mobile/wallet-adapter-mobile@2.1.3(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1)': + '@solana-mobile/wallet-adapter-mobile@2.1.3(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1)': dependencies: - '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.1.3(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) '@solana/wallet-standard-features': 1.2.0 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) js-base64: 3.7.7 optionalDependencies: '@react-native-async-storage/async-storage': 1.24.0 @@ -16359,205 +16429,300 @@ snapshots: - react - react-native + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + '@solana/buffer-layout@4.0.1': dependencies: buffer: 6.0.3 - '@solana/wallet-adapter-alpha@0.1.10(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/codecs-core@2.0.0-rc.1(typescript@5.5.4)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.5.4) + typescript: 5.5.4 + + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.5.4)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.4) + '@solana/errors': 2.0.0-rc.1(typescript@5.5.4) + typescript: 5.5.4 + + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.5.4)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.4) + '@solana/errors': 2.0.0-rc.1(typescript@5.5.4) + typescript: 5.5.4 + + '@solana/codecs-strings@2.0.0-rc.1(typescript@5.5.4)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.4) + '@solana/errors': 2.0.0-rc.1(typescript@5.5.4) + typescript: 5.5.4 + + '@solana/codecs@2.0.0-rc.1(typescript@5.5.4)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-strings': 2.0.0-rc.1(typescript@5.5.4) + '@solana/options': 2.0.0-rc.1(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.0.0-rc.1(typescript@5.5.4)': + dependencies: + chalk: 5.3.0 + commander: 12.1.0 + typescript: 5.5.4 - '@solana/wallet-adapter-avana@0.1.13(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/options@2.0.0-rc.1(typescript@5.5.4)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.5.4) + '@solana/codecs-strings': 2.0.0-rc.1(typescript@5.5.4) + '@solana/errors': 2.0.0-rc.1(typescript@5.5.4) + typescript: 5.5.4 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder - '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(typescript@5.5.4)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(typescript@5.5.4) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(typescript@5.5.4)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(typescript@5.5.4) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token@0.4.9(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(typescript@5.5.4)(utf-8-validate@5.0.9)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(typescript@5.5.4) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(typescript@5.5.4) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/wallet-adapter-alpha@0.1.10(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + + '@solana/wallet-adapter-avana@0.1.13(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + + '@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: '@solana/wallet-standard-features': 1.2.0 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@wallet-standard/base': 1.0.1 '@wallet-standard/features': 1.0.3 eventemitter3: 4.0.7 - '@solana/wallet-adapter-bitkeep@0.3.20(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-bitkeep@0.3.20(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-bitpie@0.5.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-bitpie@0.5.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-clover@0.4.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-clover@0.4.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-coin98@0.5.20(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-coin98@0.5.20(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) bs58: 4.0.1 - '@solana/wallet-adapter-coinbase@0.1.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-coinbase@0.1.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-coinhub@0.3.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-coinhub@0.3.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-fractal@0.1.8(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@solana/wallet-adapter-fractal@0.1.8(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@fractalwagmi/solana-wallet-adapter': 0.1.1(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@fractalwagmi/solana-wallet-adapter': 0.1.1(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) transitivePeerDependencies: - react - react-dom - '@solana/wallet-adapter-huobi@0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-huobi@0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-hyperpay@0.1.14(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-hyperpay@0.1.14(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-keystone@0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)': + '@solana/wallet-adapter-keystone@0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)': dependencies: '@keystonehq/sol-keyring': 0.3.1(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) transitivePeerDependencies: - bufferutil - encoding - utf-8-validate - '@solana/wallet-adapter-krystal@0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-krystal@0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: '@ledgerhq/devices': 6.27.1 '@ledgerhq/hw-transport': 6.27.1 '@ledgerhq/hw-transport-webhid': 6.27.1 - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) buffer: 6.0.3 - '@solana/wallet-adapter-mathwallet@0.9.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-mathwallet@0.9.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-neko@0.2.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-neko@0.2.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-nightly@0.1.16(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-nightly@0.1.16(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-nufi@0.1.17(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-nufi@0.1.17(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-onto@0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-onto@0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-particle@0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)': + '@solana/wallet-adapter-particle@0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)': dependencies: - '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) transitivePeerDependencies: - bs58 - '@solana/wallet-adapter-phantom@0.9.24(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-phantom@0.9.24(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-react@0.15.35(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1)': + '@solana/wallet-adapter-react@0.15.35(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1)': dependencies: - '@solana-mobile/wallet-adapter-mobile': 2.1.3(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-standard-wallet-adapter-react': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana-mobile/wallet-adapter-mobile': 2.1.3(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react@18.3.1) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-standard-wallet-adapter-react': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) react: 18.3.1 transitivePeerDependencies: - bs58 - react-native - '@solana/wallet-adapter-safepal@0.5.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-safepal@0.5.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-saifu@0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-saifu@0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-salmon@0.1.14(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-salmon@0.1.14(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - salmon-adapter-sdk: 1.1.1(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + salmon-adapter-sdk: 1.1.1(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-sky@0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-sky@0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-solflare@0.6.28(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-solflare@0.6.28(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) '@solana/wallet-standard-chains': 1.1.0 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solflare-wallet/metamask-sdk': 1.0.3(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solflare-wallet/sdk': 1.4.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solflare-wallet/metamask-sdk': 1.0.3(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solflare-wallet/sdk': 1.4.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) '@wallet-standard/wallet': 1.0.1 - '@solana/wallet-adapter-solong@0.9.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-solong@0.9.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-spot@0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-spot@0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-tokenary@0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-tokenary@0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-tokenpocket@0.4.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-tokenpocket@0.4.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-torus@0.11.28(@babel/runtime@7.25.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': + '@solana/wallet-adapter-torus@0.11.28(@babel/runtime@7.25.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@toruslabs/solana-embed': 0.3.4(@babel/runtime@7.25.0)(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) assert: 2.1.0 crypto-browserify: 3.12.0 @@ -16571,10 +16736,10 @@ snapshots: - supports-color - utf-8-validate - '@solana/wallet-adapter-trezor@0.1.2(@babel/core@7.24.9(supports-color@9.4.0))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9)': + '@solana/wallet-adapter-trezor@0.1.2(@babel/core@7.24.9(supports-color@9.4.0))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@trezor/connect-web': 9.3.0(@babel/core@7.24.9(supports-color@9.4.0))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9) buffer: 6.0.3 transitivePeerDependencies: @@ -16588,10 +16753,10 @@ snapshots: - tslib - utf-8-validate - '@solana/wallet-adapter-trezor@0.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9)': + '@solana/wallet-adapter-trezor@0.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@trezor/connect-web': 9.3.0(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9) buffer: 6.0.3 transitivePeerDependencies: @@ -16605,24 +16770,24 @@ snapshots: - tslib - utf-8-validate - '@solana/wallet-adapter-trust@0.1.13(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-trust@0.1.13(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-unsafe-burner@0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-unsafe-burner@0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: '@noble/curves': 1.4.2 - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) '@solana/wallet-standard-features': 1.2.0 '@solana/wallet-standard-util': 1.1.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-walletconnect@0.1.16(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': + '@solana/wallet-adapter-walletconnect@0.1.16(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': dependencies: - '@jnwng/walletconnect-solana': 0.2.0(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@jnwng/walletconnect-solana': 0.2.0(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16641,45 +16806,45 @@ snapshots: - supports-color - utf-8-validate - '@solana/wallet-adapter-wallets@0.19.32(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9)': - dependencies: - '@solana/wallet-adapter-alpha': 0.1.10(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-avana': 0.1.13(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-bitkeep': 0.3.20(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-bitpie': 0.5.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-clover': 0.4.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-coin98': 0.5.20(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-coinbase': 0.1.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-coinhub': 0.3.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-fractal': 0.1.8(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@solana/wallet-adapter-huobi': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-hyperpay': 0.1.14(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-keystone': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-krystal': 0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-mathwallet': 0.9.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-neko': 0.2.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-nightly': 0.1.16(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-nufi': 0.1.17(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-onto': 0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) - '@solana/wallet-adapter-phantom': 0.9.24(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-safepal': 0.5.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-saifu': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-salmon': 0.1.14(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-sky': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-solflare': 0.6.28(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-solong': 0.9.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-spot': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-tokenary': 0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-tokenpocket': 0.4.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-torus': 0.11.28(@babel/runtime@7.25.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-trezor': 0.1.2(@babel/core@7.24.9(supports-color@9.4.0))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-trust': 0.1.13(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-unsafe-burner': 0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-walletconnect': 0.1.16(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-xdefi': 0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-wallets@0.19.32(@babel/core@7.24.9(supports-color@9.4.0))(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9)': + dependencies: + '@solana/wallet-adapter-alpha': 0.1.10(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-avana': 0.1.13(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-bitkeep': 0.3.20(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-bitpie': 0.5.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-clover': 0.4.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-coin98': 0.5.20(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-coinbase': 0.1.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-coinhub': 0.3.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-fractal': 0.1.8(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@solana/wallet-adapter-huobi': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-hyperpay': 0.1.14(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-keystone': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-krystal': 0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-mathwallet': 0.9.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-neko': 0.2.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-nightly': 0.1.16(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-nufi': 0.1.17(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-onto': 0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) + '@solana/wallet-adapter-phantom': 0.9.24(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-safepal': 0.5.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-saifu': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-salmon': 0.1.14(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-sky': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-solflare': 0.6.28(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-solong': 0.9.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-spot': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-tokenary': 0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-tokenpocket': 0.4.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-torus': 0.11.28(@babel/runtime@7.25.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-trezor': 0.1.2(@babel/core@7.24.9(supports-color@9.4.0))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-trust': 0.1.13(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-unsafe-burner': 0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-walletconnect': 0.1.16(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-xdefi': 0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16708,45 +16873,45 @@ snapshots: - tslib - utf-8-validate - '@solana/wallet-adapter-wallets@0.19.32(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(utf-8-validate@5.0.9)': - dependencies: - '@solana/wallet-adapter-alpha': 0.1.10(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-avana': 0.1.13(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-bitkeep': 0.3.20(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-bitpie': 0.5.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-clover': 0.4.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-coin98': 0.5.20(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-coinbase': 0.1.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-coinhub': 0.3.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-fractal': 0.1.8(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@solana/wallet-adapter-huobi': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-hyperpay': 0.1.14(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-keystone': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-krystal': 0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-mathwallet': 0.9.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-neko': 0.2.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-nightly': 0.1.16(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-nufi': 0.1.17(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-onto': 0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) - '@solana/wallet-adapter-phantom': 0.9.24(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-safepal': 0.5.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-saifu': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-salmon': 0.1.14(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-sky': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-solflare': 0.6.28(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-solong': 0.9.18(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-spot': 0.1.15(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-tokenary': 0.1.12(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-tokenpocket': 0.4.19(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-torus': 0.11.28(@babel/runtime@7.25.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-trezor': 0.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-trust': 0.1.13(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-unsafe-burner': 0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-adapter-walletconnect': 0.1.16(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) - '@solana/wallet-adapter-xdefi': 0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-wallets@0.19.32(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(utf-8-validate@5.0.9)': + dependencies: + '@solana/wallet-adapter-alpha': 0.1.10(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-avana': 0.1.13(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-bitkeep': 0.3.20(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-bitpie': 0.5.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-clover': 0.4.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-coin98': 0.5.20(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-coinbase': 0.1.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-coinhub': 0.3.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-fractal': 0.1.8(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@solana/wallet-adapter-huobi': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-hyperpay': 0.1.14(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-keystone': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-krystal': 0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-mathwallet': 0.9.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-neko': 0.2.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-nightly': 0.1.16(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-nufi': 0.1.17(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-onto': 0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) + '@solana/wallet-adapter-phantom': 0.9.24(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-safepal': 0.5.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-saifu': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-salmon': 0.1.14(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-sky': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-solflare': 0.6.28(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-solong': 0.9.18(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-spot': 0.1.15(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-tokenary': 0.1.12(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-tokenpocket': 0.4.19(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-torus': 0.11.28(@babel/runtime@7.25.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-trezor': 0.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-trust': 0.1.13(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-unsafe-burner': 0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-walletconnect': 0.1.16(@react-native-async-storage/async-storage@1.24.0)(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-xdefi': 0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) transitivePeerDependencies: - '@azure/app-configuration' - '@azure/cosmos' @@ -16775,10 +16940,10 @@ snapshots: - tslib - utf-8-validate - '@solana/wallet-adapter-xdefi@0.1.7(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solana/wallet-adapter-xdefi@0.1.7(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@solana/wallet-standard-chains@1.1.0': dependencies: @@ -16801,36 +16966,36 @@ snapshots: '@solana/wallet-standard-chains': 1.1.0 '@solana/wallet-standard-features': 1.2.0 - '@solana/wallet-standard-wallet-adapter-base@1.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)': + '@solana/wallet-standard-wallet-adapter-base@1.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) '@solana/wallet-standard-chains': 1.1.0 '@solana/wallet-standard-features': 1.2.0 '@solana/wallet-standard-util': 1.1.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@wallet-standard/app': 1.0.1 '@wallet-standard/base': 1.0.1 '@wallet-standard/features': 1.0.3 '@wallet-standard/wallet': 1.0.1 bs58: 5.0.0 - '@solana/wallet-standard-wallet-adapter-base@1.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)': + '@solana/wallet-standard-wallet-adapter-base@1.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) '@solana/wallet-standard-chains': 1.1.0 '@solana/wallet-standard-features': 1.2.0 '@solana/wallet-standard-util': 1.1.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@wallet-standard/app': 1.0.1 '@wallet-standard/base': 1.0.1 '@wallet-standard/features': 1.0.3 '@wallet-standard/wallet': 1.0.1 bs58: 6.0.0 - '@solana/wallet-standard-wallet-adapter-react@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': + '@solana/wallet-standard-wallet-adapter-react@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0) '@wallet-standard/app': 1.0.1 '@wallet-standard/base': 1.0.1 react: 18.3.1 @@ -16838,10 +17003,10 @@ snapshots: - '@solana/web3.js' - bs58 - '@solana/wallet-standard-wallet-adapter-react@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1)': + '@solana/wallet-standard-wallet-adapter-react@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0) '@wallet-standard/app': 1.0.1 '@wallet-standard/base': 1.0.1 react: 18.3.1 @@ -16849,31 +17014,31 @@ snapshots: - '@solana/web3.js' - bs58 - '@solana/wallet-standard-wallet-adapter@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': + '@solana/wallet-standard-wallet-adapter@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': dependencies: - '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0) - '@solana/wallet-standard-wallet-adapter-react': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) + '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0) + '@solana/wallet-standard-wallet-adapter-react': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) transitivePeerDependencies: - '@solana/wallet-adapter-base' - '@solana/web3.js' - bs58 - react - '@solana/wallet-standard@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': + '@solana/wallet-standard@1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1)': dependencies: '@solana/wallet-standard-core': 1.1.1 - '@solana/wallet-standard-wallet-adapter': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) + '@solana/wallet-standard-wallet-adapter': 1.1.2(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@5.0.0)(react@18.3.1) transitivePeerDependencies: - '@solana/wallet-adapter-base' - '@solana/web3.js' - bs58 - react - '@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)': + '@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)': dependencies: '@babel/runtime': 7.25.0 '@noble/curves': 1.4.2 - '@noble/hashes': 1.4.0 + '@noble/hashes': 1.5.0 '@solana/buffer-layout': 4.0.1 agentkeepalive: 4.5.0 bigint-buffer: 1.1.5 @@ -16891,18 +17056,18 @@ snapshots: - encoding - utf-8-validate - '@solflare-wallet/metamask-sdk@1.0.3(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solflare-wallet/metamask-sdk@1.0.3(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: '@solana/wallet-standard-features': 1.2.0 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@wallet-standard/base': 1.0.1 bs58: 5.0.0 eventemitter3: 5.0.1 uuid: 9.0.1 - '@solflare-wallet/sdk@1.4.2(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': + '@solflare-wallet/sdk@1.4.2(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))': dependencies: - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) bs58: 5.0.0 eventemitter3: 5.0.1 uuid: 9.0.1 @@ -18140,7 +18305,7 @@ snapshots: '@toruslabs/solana-embed@0.3.4(@babel/runtime@7.25.0)(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9)': dependencies: '@babel/runtime': 7.25.0 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@toruslabs/base-controllers': 2.9.0(@babel/runtime@7.25.0)(bufferutil@4.0.8)(supports-color@9.4.0)(utf-8-validate@5.0.9) '@toruslabs/http-helpers': 3.4.0(@babel/runtime@7.25.0) '@toruslabs/openlogin-jrpc': 3.2.0(@babel/runtime@7.25.0) @@ -18169,7 +18334,7 @@ snapshots: '@trezor/blockchain-link-types@1.1.0(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9)': dependencies: - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@trezor/type-utils': 1.1.0 '@trezor/utxo-lib': 2.1.0(tslib@2.7.0) socks-proxy-agent: 6.1.1(supports-color@9.4.0) @@ -18183,7 +18348,7 @@ snapshots: '@trezor/blockchain-link-utils@1.1.0(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9)': dependencies: '@mobily/ts-belt': 3.13.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@trezor/env-utils': 1.1.0(tslib@2.7.0) '@trezor/utils': 9.1.0(tslib@2.7.0) tslib: 2.7.0 @@ -18198,7 +18363,7 @@ snapshots: '@trezor/blockchain-link@2.2.0(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9)': dependencies: '@solana/buffer-layout': 4.0.1 - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@trezor/blockchain-link-types': 1.1.0(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(tslib@2.7.0)(utf-8-validate@5.0.9) '@trezor/blockchain-link-utils': 1.1.0(bufferutil@4.0.8)(encoding@0.1.13)(tslib@2.7.0)(utf-8-validate@5.0.9) '@trezor/utils': 9.1.0(tslib@2.7.0) @@ -19908,10 +20073,10 @@ snapshots: - react - supports-color - '@walletconnect/solana-adapter@0.0.5(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(utf-8-validate@5.0.9)': + '@walletconnect/solana-adapter@0.0.5(@react-native-async-storage/async-storage@1.24.0)(@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)))(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react@18.3.1)(supports-color@9.4.0)(utf-8-validate@5.0.9)': dependencies: - '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) '@walletconnect/solana-adapter-ui': 0.0.5(@react-native-async-storage/async-storage@1.24.0)(@types/react@18.3.8)(@walletconnect/universal-provider@2.14.0(@react-native-async-storage/async-storage@1.24.0)(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9))(react@18.3.1)(supports-color@9.4.0) '@walletconnect/universal-provider': 2.14.0(@react-native-async-storage/async-storage@1.24.0)(bufferutil@4.0.8)(encoding@0.1.13)(supports-color@9.4.0)(utf-8-validate@5.0.9) '@walletconnect/utils': 2.14.0(@react-native-async-storage/async-storage@1.24.0)(supports-color@9.4.0) @@ -21866,6 +22031,8 @@ snapshots: comma-separated-tokens@1.0.8: {} + commander@12.1.0: {} + commander@2.20.3: {} commander@4.1.1: {} @@ -27103,10 +27270,10 @@ snapshots: safer-buffer@2.1.2: {} - salmon-adapter-sdk@1.1.1(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)): + salmon-adapter-sdk@1.1.1(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)): dependencies: - '@project-serum/sol-wallet-adapter': 0.2.6(@solana/web3.js@1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) - '@solana/web3.js': 1.95.2(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) + '@project-serum/sol-wallet-adapter': 0.2.6(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9)) + '@solana/web3.js': 1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9) eventemitter3: 4.0.7 sane@4.1.0: diff --git a/packages/canonical-bridge-sdk/src/debridge/index.ts b/packages/canonical-bridge-sdk/src/debridge/index.ts index 9f38e70d..b643bd58 100644 --- a/packages/canonical-bridge-sdk/src/debridge/index.ts +++ b/packages/canonical-bridge-sdk/src/debridge/index.ts @@ -75,6 +75,7 @@ export class DeBridge { toChainId, toTokenAddress, userAddress, + toUserAddress, affiliateFeePercent = 0, accesstoken = '', prependOperatingExpenses = false, @@ -88,10 +89,11 @@ export class DeBridge { dstChainTokenOut: toTokenAddress, prependOperatingExpenses, affiliateFeePercent, - dstChainTokenOutRecipient: userAddress, - dstChainOrderAuthorityAddress: userAddress, + dstChainTokenOutRecipient: toUserAddress || userAddress, + dstChainOrderAuthorityAddress: toUserAddress || userAddress, srcChainOrderAuthorityAddress: userAddress, } as any; + if (accesstoken) { deBridgeParams.accesstoken = accesstoken; } diff --git a/packages/canonical-bridge-sdk/src/debridge/types/index.ts b/packages/canonical-bridge-sdk/src/debridge/types/index.ts index 4b5ff7ac..c85b9c32 100644 --- a/packages/canonical-bridge-sdk/src/debridge/types/index.ts +++ b/packages/canonical-bridge-sdk/src/debridge/types/index.ts @@ -80,7 +80,8 @@ export interface IDeBridgeEstimatedFeesInput { amount: bigint; toChainId: number; toTokenAddress: `0x${string}`; - userAddress: `0x${string}`; + userAddress: string; + toUserAddress?: string; affiliateFeePercent?: number; prependOperatingExpenses?: boolean; accesstoken?: string; diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index f16871a6..66dd61c7 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -45,7 +45,7 @@ "@bnb-chain/space": "workspace:*", "@emotion/react": "~11.13.0", "@emotion/styled": "~11.13.0", - "@node-real/walletkit": "2.4.0-alpha.10", + "@node-real/walletkit": "2.4.1-alpha.0", "@tanstack/react-query": "~5.50.1", "@types/lodash": "~4.17.7", "@types/node": "^20", @@ -75,7 +75,10 @@ "wagmi": "~2.12.14" }, "dependencies": { - "tronweb": "~6.0.0" + "tronweb": "~6.0.0", + "@solana/wallet-adapter-react": "~0.15.35", + "@solana/web3.js": "~1.95.4", + "@solana/spl-token": "~0.4.9" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ diff --git a/packages/canonical-bridge-widget/src/core/constants/index.ts b/packages/canonical-bridge-widget/src/core/constants/index.ts index e9ed65e9..8187a38b 100644 --- a/packages/canonical-bridge-widget/src/core/constants/index.ts +++ b/packages/canonical-bridge-widget/src/core/constants/index.ts @@ -13,6 +13,7 @@ export const STARGATE_QUEUE_URL = 'https://mainnet.stargate-api.com/v1/buses/bus export const DEFAULT_ADDRESS = '0x6836CbaCbBd1E798cC56802AC7d8BDf6Da0d0980'; export const DEFAULT_TRON_ADDRESS = 'TTb3A6ASFejJuGcM1UVcRCJA23WGiJKSiY'; +export const DEFAULT_SOLANA_ADDRESS = 'J7JYXS8PMMBgfFKP1bqUu7mGgWyWUDL9xqfYujznc61r'; export const nativeTokenMap = { 1: 'ETH', @@ -37,3 +38,5 @@ export const TIME = { }; export const MIN_FEE = 0.0001; + +export const REFETCH_INTERVAL = 8 * 1000; diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/adapters/deBridge/hooks/useGetDeBridgeFees.ts b/packages/canonical-bridge-widget/src/modules/aggregator/adapters/deBridge/hooks/useGetDeBridgeFees.ts index a5ed7420..83e23c51 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/adapters/deBridge/hooks/useGetDeBridgeFees.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/adapters/deBridge/hooks/useGetDeBridgeFees.ts @@ -6,7 +6,6 @@ import { useIntl } from '@bnb-chain/space'; import { formatNumber } from '@/core/utils/number'; import { useAppDispatch, useAppSelector } from '@/modules/store/StoreProvider'; -import { useGetNativeToken } from '@/modules/transfer/hooks/useGetNativeToken'; import { DeBridgeAdapter } from '@/modules/aggregator/adapters/deBridge/DeBridgeAdapter'; import { formatFeeAmount } from '@/core/utils/string'; import { useAdapter } from '@/modules/aggregator/hooks/useAdapter'; @@ -14,6 +13,8 @@ import { setRouteError, setRouteFees } from '@/modules/transfer/action'; import { useToTokenInfo } from '@/modules/transfer/hooks/useToTokenInfo'; import { useGetTokenBalance } from '@/core/contract/hooks/useGetTokenBalance'; import { ERC20_TOKEN } from '@/core/contract/abi'; +import { useNativeCurrency } from '@/modules/aggregator/hooks/useNativeCurrency'; +import { useSolanaBalance } from '@/modules/wallet/hooks/useSolanaBalance'; export interface IFeeDetails { value: string; @@ -23,8 +24,6 @@ export interface IFeeDetails { export const useGetDeBridgeFees = () => { const dispatch = useAppDispatch(); const deBridgeAdapter = useAdapter('deBridge'); - const nativeToken = useGetNativeToken(); - const { address, chain } = useAccount(); const { formatMessage } = useIntl(); const fromChain = useAppSelector((state) => state.transfer.fromChain); @@ -32,7 +31,8 @@ export const useGetDeBridgeFees = () => { const sendValue = useAppSelector((state) => state.transfer.sendValue); const toChain = useAppSelector((state) => state.transfer.toChain); - const { data: nativeTokenBalance } = useBalance({ + const { address, chain } = useAccount(); + const { data: nativeEvmBalance } = useBalance({ address: address as `0x${string}`, chainId: fromChain?.id, }); @@ -42,18 +42,28 @@ export const useGetDeBridgeFees = () => { tokenAddress: selectedToken?.address as `0x${string}`, }); + const nativeCurrency = useNativeCurrency(fromChain?.id); + const { data: nativeSolanaBalance } = useSolanaBalance(); + + const nativeTokenBalance = + fromChain?.chainType === 'solana' ? nativeSolanaBalance : nativeEvmBalance; + // eslint-disable-next-line @typescript-eslint/no-explicit-any const publicClient = usePublicClient({ chainId: fromChain?.id }) as any; const deBridgeFeeSorting = useCallback( async (fees: DeBridgeCreateQuoteResponse) => { + const nativeToken = nativeCurrency?.symbol; + const nativeDecimals = nativeCurrency?.decimals ?? 18; + const feeList: IFeeDetails[] = []; const feeBreakdown = []; let isFailedToGetGas = false; let isDisplayError = false; + // protocol fee if (fees?.fixFee && nativeToken) { - const protocolFee = formatUnits(BigInt(fees?.fixFee), 18); + const protocolFee = formatUnits(BigInt(fees?.fixFee), nativeDecimals); feeList.push({ symbol: nativeToken, value: protocolFee, @@ -140,7 +150,13 @@ export const useGetDeBridgeFees = () => { const decimals = selectedToken?.deBridge?.raw?.decimals ?? (18 as number); const amount = parseUnits(sendValue, decimals); try { - if (chain && fromChain?.id === chain?.id && address && selectedToken?.address) { + if ( + chain && + fromChain?.id === chain?.id && + address && + selectedToken?.address && + fromChain.chainType !== 'solana' + ) { let allowance = null; if (selectedToken?.address !== '0x0000000000000000000000000000000000000000') { allowance = await publicClient.readContract({ @@ -226,20 +242,23 @@ export const useGetDeBridgeFees = () => { }; }, [ - nativeToken, - deBridgeAdapter, - formatMessage, + nativeCurrency?.symbol, + nativeCurrency?.decimals, + selectedToken?.deBridge?.raw?.decimals, + selectedToken?.deBridge?.raw?.address, + selectedToken?.address, + sendValue, dispatch, - address, - publicClient, - balance, + formatMessage, nativeTokenBalance, + deBridgeAdapter, chain, - sendValue, fromChain, - selectedToken, + address, toChain, toTokenInfo, + balance, + publicClient, ], ); diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/adapters/meson/hooks/useTronContract.ts b/packages/canonical-bridge-widget/src/modules/aggregator/adapters/meson/hooks/useTronContract.ts index 23123ef8..89613f8b 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/adapters/meson/hooks/useTronContract.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/adapters/meson/hooks/useTronContract.ts @@ -4,14 +4,17 @@ import { useCallback } from 'react'; import { useAppSelector } from '@/modules/store/StoreProvider'; import { useTronWeb } from '@/core/hooks/useTronWeb'; +import { useTronTransferInfo } from '@/modules/transfer/hooks/tron/useTronTransferInfo'; export const useTronContract = () => { const tronWeb = useTronWeb(); const [isTronContract, setIsTronContract] = useState(null); const toAccount = useAppSelector((state) => state.transfer.toAccount); + const { isTronTransfer } = useTronTransferInfo(); + const isTronContractInfo = useCallback(async () => { - if (!tronWeb || !toAccount?.address) return; + if (!tronWeb || !toAccount?.address || !isTronTransfer) return; try { const contractInfo = await tronWeb.trx.getContract(toAccount?.address); setIsTronContract(!!contractInfo?.bytecode); @@ -21,7 +24,7 @@ export const useTronContract = () => { setIsTronContract(false); return false; } - }, [toAccount, tronWeb]); + }, [toAccount, tronWeb, isTronTransfer]); useEffect(() => { let mount = true; diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/components/TokenBalancesProvider.tsx b/packages/canonical-bridge-widget/src/modules/aggregator/components/TokenBalancesProvider.tsx index 3bd01301..5c9ba71d 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/components/TokenBalancesProvider.tsx +++ b/packages/canonical-bridge-widget/src/modules/aggregator/components/TokenBalancesProvider.tsx @@ -1,8 +1,9 @@ import { useQuery } from '@tanstack/react-query'; import { useChains } from 'wagmi'; import { useEffect } from 'react'; +import { useConnection } from '@solana/wallet-adapter-react'; -import { TIME } from '@/core/constants'; +import { REFETCH_INTERVAL } from '@/core/constants'; import { useTokens } from '@/modules/aggregator/hooks/useTokens'; import { getTokenBalances } from '@/modules/aggregator/shared/getTokenBalances'; import { useAppDispatch, useAppSelector } from '@/modules/store/StoreProvider'; @@ -11,9 +12,10 @@ import { useTronWeb } from '@/core/hooks/useTronWeb'; import { useCurrentWallet } from '@/modules/wallet/CurrentWalletProvider'; export function TokenBalancesProvider() { - const { address } = useCurrentWallet(); + const { address, walletType } = useCurrentWallet(); const chains = useChains(); const tronWeb = useTronWeb(); + const { connection } = useConnection(); const fromChain = useAppSelector((state) => state.transfer.fromChain); const toChain = useAppSelector((state) => state.transfer.toChain); @@ -26,15 +28,17 @@ export function TokenBalancesProvider() { const { isLoading, data } = useQuery>({ enabled: !!address && !!fromChain?.id && !!toChain?.id, - refetchInterval: TIME.SECOND * 5, + refetchInterval: REFETCH_INTERVAL, queryKey: ['tokenBalances', address, fromChain?.id, toChain?.id], queryFn: async () => { const balances = await getTokenBalances({ + walletType, chainType: fromChain?.chainType, account: address, tokens, chain: chains?.find((item) => item.id === fromChain?.id), tronWeb, + connection, }); return balances; }, diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useNativeCurrency.ts b/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useNativeCurrency.ts new file mode 100644 index 00000000..5b5ce5f2 --- /dev/null +++ b/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useNativeCurrency.ts @@ -0,0 +1,8 @@ +import { useAggregator } from '@/modules/aggregator/components/AggregatorProvider'; + +export function useNativeCurrency(chainId?: number) { + const { nativeCurrencies } = useAggregator(); + if (!chainId || !nativeCurrencies) return; + + return nativeCurrencies[chainId]; +} diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useSelection.ts b/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useSelection.ts index f3aadaa4..6cb124d5 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useSelection.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/hooks/useSelection.ts @@ -1,5 +1,6 @@ import { useChains } from 'wagmi'; import { useCallback } from 'react'; +import { useConnection } from '@solana/wallet-adapter-react'; import { useAggregator } from '@/modules/aggregator/components/AggregatorProvider'; import { isChainOrTokenCompatible } from '@/modules/aggregator/shared/isChainOrTokenCompatible'; @@ -194,9 +195,10 @@ function useSortedTokens() { const { transferConfig } = useAggregator(); const chains = useChains(); - const { address } = useCurrentWallet(); + const { address, walletType } = useCurrentWallet(); const { getTokenPrice } = useTokenPrice(); const tronWeb = useTronWeb(); + const { connection } = useConnection(); const getSortedTokens = useCallback( async ({ @@ -209,11 +211,13 @@ function useSortedTokens() { tokens: IBridgeToken[]; }) => { const balances = await getTokenBalances({ + walletType, chainType, account: address, tokens, chain: chains.find((e) => e.id === fromChainId), tronWeb, + connection, }); const tmpTokens = tokens.map((item) => { @@ -237,7 +241,7 @@ function useSortedTokens() { orders: transferConfig.order?.tokens, }); }, - [address, chains, tronWeb, transferConfig.order?.tokens, getTokenPrice], + [walletType, address, chains, tronWeb, connection, transferConfig.order?.tokens, getTokenPrice], ); return { diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/shared/getNativeCurrencies.ts b/packages/canonical-bridge-widget/src/modules/aggregator/shared/getNativeCurrencies.ts index ce4dcd28..00db5b73 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/shared/getNativeCurrencies.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/shared/getNativeCurrencies.ts @@ -1,7 +1,7 @@ import { IChainConfig, INativeCurrency } from '@/modules/aggregator/types'; export function getNativeCurrencies(chainConfigs: IChainConfig[]) { - const nativeCurrencies: Record = {}; + const nativeCurrencies: Record = {}; chainConfigs.forEach((chain) => { if (chain.id && chain.nativeCurrency) { diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts b/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts index aa3c7496..5a76bdf3 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts @@ -1,34 +1,54 @@ import { Address, Chain, createPublicClient, formatUnits, http } from 'viem'; import { TronWeb } from 'tronweb'; +import * as SPLToken from '@solana/spl-token'; +import { Connection, PublicKey } from '@solana/web3.js'; +import { TOKEN_PROGRAM_ID } from '@solana/spl-token'; import { ChainType, IBridgeToken } from '@/modules/aggregator/types'; import { ERC20_TOKEN } from '@/core/contract/abi'; import { isChainOrTokenCompatible } from '@/modules/aggregator/shared/isChainOrTokenCompatible'; +import { isSameAddress } from '@/core/utils/address'; export async function getTokenBalances({ + walletType, chainType, account, tokens, chain, tronWeb, + connection, }: { + walletType?: ChainType; chainType?: ChainType; account?: string; tokens?: IBridgeToken[]; chain?: Chain; tronWeb?: TronWeb; + connection?: Connection; }) { + if (walletType !== chainType) return {}; + + const compatibleTokens = tokens?.filter((item) => isChainOrTokenCompatible(item)); + + if (chainType === 'solana') { + return await getSolanaTokenBalances({ + account, + tokens: compatibleTokens, + connection, + }); + } + if (chainType === 'tron') { return await getTronTokenBalances({ account, - tokens, + tokens: compatibleTokens, tronWeb, }); } return await getEvmTokenBalances({ account, chain, - tokens, + tokens: compatibleTokens, }); } @@ -51,8 +71,7 @@ async function getEvmTokenBalances({ transport: http(), }); - const compatibleTokens = tokens.filter((item) => isChainOrTokenCompatible(item)); - const contracts = compatibleTokens.map((item) => ({ + const contracts = tokens.map((item) => ({ abi: ERC20_TOKEN, address: item.address as Address, functionName: 'balanceOf', @@ -74,7 +93,7 @@ async function getEvmTokenBalances({ const values = erc20TokensRes.value?.map((item) => item.result) ?? []; values.map((value, index) => { - const token = compatibleTokens[index]; + const token = tokens[index]; const symbol = token.displaySymbol?.toUpperCase(); balances[symbol] = @@ -142,3 +161,48 @@ async function getTronTokenBalances({ return {}; } } + +async function getSolanaTokenBalances({ + account, + tokens, + connection, +}: { + account?: string; + tokens?: IBridgeToken[]; + connection?: Connection; +}) { + try { + if (!account || !tokens?.length || !connection) { + return {}; + } + const balances: Record = {}; + + // https://stackoverflow.com/questions/69700173/solana-check-all-spl-token-balances-of-a-wallet + const res = await connection.getTokenAccountsByOwner(new PublicKey(account), { + programId: TOKEN_PROGRAM_ID, + }); + + res?.value?.forEach((e) => { + const accountInfo = SPLToken.AccountLayout.decode(e.account.data); + + const token = tokens.find((t) => isSameAddress(t.address, accountInfo.mint.toBase58())); + if (token) { + balances[token.displaySymbol.toUpperCase()] = formatUnits( + accountInfo.amount, + token.decimals, + ); + } + }); + + tokens.forEach((t) => { + const key = t.displaySymbol.toUpperCase(); + balances[key] = balances[key] ?? '0'; + }); + + return balances; + } catch (err) { + // eslint-disable-next-line no-console + console.log('[getTronTokenBalances] error:', err); + return {}; + } +} diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/types.ts b/packages/canonical-bridge-widget/src/modules/aggregator/types.ts index 1b547cea..a49742c1 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/types.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/types.ts @@ -175,7 +175,7 @@ export interface ITransferConfig { } export interface IChainConfig { - id: number | string; + id: number; name: string; nativeCurrency: { name: string; @@ -192,7 +192,7 @@ export interface IChainConfig { chainType?: ChainType; } -export type ChainType = 'link' | 'evm' | 'tron'; +export type ChainType = 'link' | 'evm' | 'tron' | 'solana'; export type AdapterConstructorType = | typeof CBridgeAdapter diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/Button/TransferButton.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/Button/TransferButton.tsx index bcc38a43..43e90a42 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/Button/TransferButton.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/Button/TransferButton.tsx @@ -3,6 +3,9 @@ import { useCallback, useState } from 'react'; import { useAccount, useBytecode, usePublicClient, useSignMessage, useWalletClient } from 'wagmi'; import { formatUnits, parseUnits } from 'viem'; import { useTronWallet } from '@node-real/walletkit/tron'; +import { useConnection } from '@solana/wallet-adapter-react'; +import { useSolanaWallet } from '@node-real/walletkit/solana'; +import { VersionedTransaction } from '@solana/web3.js'; import { useAppSelector } from '@/modules/store/StoreProvider'; import { useGetAllowance } from '@/core/contract/hooks/useGetAllowance'; @@ -14,6 +17,7 @@ import { useCurrentWallet } from '@/modules/wallet/CurrentWalletProvider'; import { useTronTransferInfo } from '@/modules/transfer/hooks/tron/useTronTransferInfo'; import { utf8ToHex } from '@/core/utils/string'; import { useTronContract } from '@/modules/aggregator/adapters/meson/hooks/useTronContract'; +import { useSolanaTransferInfo } from '@/modules/transfer/hooks/solana/useSolanaTransferInfo'; export function TransferButton({ onOpenSubmittedModal, @@ -41,9 +45,13 @@ export function TransferButton({ const { address } = useAccount(); const { address: tronAddress, signTransaction } = useTronWallet(); - const { isAvailableAccount, isTronTransfer } = useTronTransferInfo(); + const { isTronAvailableToAccount, isTronTransfer } = useTronTransferInfo(); const { signMessageAsync } = useSignMessage(); + const { isSolanaTransfer, isSolanaAvailableToAccount } = useSolanaTransferInfo(); + const { connection } = useConnection(); + const { sendTransaction: sendSolanaTransaction } = useSolanaWallet(); + const sendValue = useAppSelector((state) => state.transfer.sendValue); const transferActionInfo = useAppSelector((state) => state.transfer.transferActionInfo); const selectedToken = useAppSelector((state) => state.transfer.selectedToken); @@ -73,7 +81,7 @@ export function TransferButton({ const { isTronConnected, isEvmConnected } = useCurrentWallet(); const isApproveNeeded = - (fromChain?.chainType !== 'tron' && + (fromChain?.chainType === 'evm' && allowance !== null && selectedToken?.decimals && Number(sendValue) > Number(formatUnits(allowance, selectedToken?.decimals || 18)) && @@ -82,20 +90,22 @@ export function TransferButton({ (fromChain?.chainType === 'tron' && tronAllowance !== null && Number(sendValue) > - Number(formatUnits(tronAllowance, selectedToken?.meson?.raw?.decimals || 6))); + Number(formatUnits(tronAllowance, selectedToken?.meson?.raw?.decimals || 6))) || + (fromChain?.chainType === 'solana' && false); const sendTx = useCallback(async () => { if ( !selectedToken || !transferActionInfo?.bridgeType || - !transferActionInfo?.bridgeAddress || + (!transferActionInfo?.bridgeAddress && fromChain?.chainType !== 'solana') || ((!walletClient || !publicClient || !address || (allowance === null && selectedToken?.address !== '0x0000000000000000000000000000000000000000') || !isEvmConnected) && - fromChain?.chainType !== 'tron') || + fromChain?.chainType !== 'tron' && + fromChain?.chainType !== 'solana') || ((!isTronConnected || !tronAddress || tronAllowance === null) && fromChain?.chainType === 'tron') ) { @@ -194,23 +204,33 @@ export function TransferButton({ console.log(e); handleFailure(e); } - } else if ( - transferActionInfo.bridgeType === 'deBridge' && - transferActionInfo.value && - address - ) { + } else if (transferActionInfo.bridgeType === 'deBridge') { try { - const deBridgeHash = await bridgeSDK.deBridge.sendToken({ - // eslint-disable-next-line @typescript-eslint/no-explicit-any - walletClient: walletClient as any, - bridgeAddress: transferActionInfo.bridgeAddress as string, - data: transferActionInfo.data as `0x${string}`, - amount: BigInt(transferActionInfo.value), - address, - }); - await publicClient.waitForTransactionReceipt({ - hash: deBridgeHash, - }); + let deBridgeHash: string | undefined; + + if (fromChain?.chainType === 'evm' && transferActionInfo.value && address) { + deBridgeHash = await bridgeSDK.deBridge.sendToken({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + walletClient: walletClient as any, + bridgeAddress: transferActionInfo.bridgeAddress as string, + data: transferActionInfo.data as `0x${string}`, + amount: BigInt(transferActionInfo.value), + address, + }); + await publicClient.waitForTransactionReceipt({ + hash: deBridgeHash, + }); + } + + if (fromChain?.chainType === 'solana') { + const { blockhash } = await connection.getLatestBlockhash(); + const data = (transferActionInfo.data as string)?.slice(2); + const tx = VersionedTransaction.deserialize(Buffer.from(data, 'hex')); + + tx.message.recentBlockhash = blockhash; + deBridgeHash = await sendSolanaTransaction(tx, connection); + } + if (deBridgeHash) { reportEvent({ id: 'transaction_bridge_success', @@ -297,7 +317,7 @@ export function TransferButton({ fromAddress = address; } - if (isTronTransfer && isAvailableAccount && toAccount?.address) { + if (isTronTransfer && isTronAvailableToAccount && toAccount?.address) { toAddress = toAccount.address; } else if (address) { toAddress = address; @@ -380,36 +400,42 @@ export function TransferButton({ setIsLoading(false); } }, [ + selectedToken, + transferActionInfo, walletClient, publicClient, - selectedToken, address, - transferActionInfo, allowance, + isEvmConnected, + fromChain, + isTronConnected, + tronAddress, tronAllowance, + toChain?.name, + toChain?.meson?.raw?.id, + sendValue, + onOpenFailedModal, setHash, setChosenBridge, - sendValue, + isApproveNeeded, onOpenConfirmingModal, cBridgeArgs, - bridgeSDK, - onOpenApproveModal, + bridgeSDK.cBridge, + bridgeSDK.deBridge, + bridgeSDK.stargate, + bridgeSDK.layerZero, + bridgeSDK.meson, onCloseConfirmingModal, onOpenSubmittedModal, - onOpenFailedModal, - - toToken, - fromChain, - toChain, - isApproveNeeded, - isTronConnected, - isEvmConnected, - tronAddress, - isAvailableAccount, + connection, + sendSolanaTransaction, + toToken?.stargate?.raw?.endpointID, + toToken?.layerZero?.raw?.endpointID, + toToken?.meson?.raw?.id, isTronTransfer, - toAccount, - + isTronAvailableToAccount, + toAccount.address, signMessageAsync, signTransaction, ]); @@ -434,9 +460,12 @@ export function TransferButton({ !Number(sendValue) || !transferActionInfo || !isTransferable || - (isTronTransfer && (!isToAddressChecked || !toAccount?.address || !isAvailableAccount)) || + (isTronTransfer && + (!isToAddressChecked || !toAccount?.address || !isTronAvailableToAccount)) || isTronContract === true || - !!evmBytecode + !!evmBytecode || + (isSolanaTransfer && + (!isToAddressChecked || !toAccount.address || !isSolanaAvailableToAccount)) } > {isApproveNeeded diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/Modal/TransactionSubmittedModal/index.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/Modal/TransactionSubmittedModal/index.tsx index 15cea826..56356291 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/Modal/TransactionSubmittedModal/index.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/Modal/TransactionSubmittedModal/index.tsx @@ -6,6 +6,7 @@ import { useAppDispatch } from '@/modules/store/StoreProvider'; import { EXPLORER_URL } from '@/core/constants'; import { setEstimatedAmount, setSendValue, setTransferActionInfo } from '@/modules/transfer/action'; import { ExLinkIcon } from '@/core/components/icons/ExLinkIcon'; +import { useCurrentWallet } from '@/modules/wallet/CurrentWalletProvider'; export function TransactionSubmittedModal( props: Omit & { hash: string; chosenBridge: string }, @@ -15,7 +16,8 @@ export function TransactionSubmittedModal( const { formatMessage } = useIntl(); const { chain } = useAccount(); - const { address } = useAccount(); + const { address } = useCurrentWallet(); + return ( state.transfer.toAccount); const toChain = useAppSelector((state) => state.transfer.toChain); - const { isTronTransfer, isAvailableAccount } = useTronTransferInfo(); + const { isTronTransfer, isTronAvailableToAccount } = useTronTransferInfo(); const { isTronContract } = useTronContract(); const { data: evmBytecode } = useBytecode({ address: toAccount.address as `0x${string}`, chainId: toChain?.id, }); + const { isSolanaTransfer, isSolanaAvailableToAccount } = useSolanaTransferInfo(); + const timerRef = useRef(); const [inputValue, setInputValue] = useState(toAccount.address); const onChange = (e: ChangeEvent) => { @@ -60,13 +63,42 @@ export function ToAccount(props: FlexProps) { if (!toAccount.address) setInputValue(''); }, [toAccount.address]); - if (!isTronTransfer) { + const { isInvalid, isAvailableAccount } = useMemo(() => { + if (isTronTransfer) { + return { + isInvalid: + (!isTronAvailableToAccount && !!toAccount.address) || + isTronContract === true || + !!evmBytecode, + isAvailableAccount: isTronAvailableToAccount, + }; + } + + if (isSolanaTransfer) { + return { + isInvalid: !!toAccount.address && !isSolanaAvailableToAccount, + isAvailableAccount: isSolanaAvailableToAccount, + }; + } + + return { + isInvalid: false, + isAvailableAccount: false, + }; + }, [ + isTronTransfer, + isSolanaTransfer, + isTronAvailableToAccount, + toAccount.address, + isTronContract, + evmBytecode, + isSolanaAvailableToAccount, + ]); + + if (!isTronTransfer && !isSolanaTransfer) { return null; } - const isInvalid = - (!isAvailableAccount && !!toAccount.address) || isTronContract === true || !!evmBytecode; - const onCheckboxChange = (e: React.ChangeEvent) => { if (e.target.checked === true) { setIsChecked(true); diff --git a/packages/canonical-bridge-widget/src/modules/transfer/hooks/solana/useSolanaTransferInfo.ts b/packages/canonical-bridge-widget/src/modules/transfer/hooks/solana/useSolanaTransferInfo.ts new file mode 100644 index 00000000..61593dad --- /dev/null +++ b/packages/canonical-bridge-widget/src/modules/transfer/hooks/solana/useSolanaTransferInfo.ts @@ -0,0 +1,56 @@ +import { useMemo } from 'react'; +import { useConnection } from '@solana/wallet-adapter-react'; +import { PublicKey } from '@solana/web3.js'; +import { useQuery } from '@tanstack/react-query'; +import { useBytecode } from 'wagmi'; + +import { isEvmAddress, isSolanaAddress } from '@/core/utils/address'; +import { useAppSelector } from '@/modules/store/StoreProvider'; + +export function useSolanaTransferInfo() { + const fromChain = useAppSelector((state) => state.transfer.fromChain); + const toChain = useAppSelector((state) => state.transfer.toChain); + const toAccount = useAppSelector((state) => state.transfer.toAccount); + + const { connection } = useConnection(); + + const { data: evmBytecode } = useBytecode({ + address: toAccount.address as `0x${string}`, + chainId: toChain?.id, + }); + + const info = useMemo(() => { + const fromChainIsSolana = fromChain?.chainType == 'solana' && toChain; + const toChainIsSolana = toChain?.chainType === 'solana' && fromChain; + const isSolanaTransfer = fromChainIsSolana || toChainIsSolana; + + const isAvailableInput = + (fromChainIsSolana && isEvmAddress(toAccount.address)) || + (toChainIsSolana && isSolanaAddress(toAccount.address)); + + return { + fromChainIsSolana, + toChainIsSolana, + isSolanaTransfer, + isAvailableInput, + }; + }, [fromChain, toAccount.address, toChain]); + + const { data: isSolanaProgram = false } = useQuery({ + queryKey: ['useIsSolanaProgram', toAccount.address], + enabled: info.toChainIsSolana && info.isAvailableInput, + queryFn: async () => { + if (!toAccount.address) return false; + const result = await connection.getAccountInfo(new PublicKey(toAccount.address)); + return !!result && result.executable; + }, + }); + + return { + isSolanaTransfer: info.isSolanaTransfer, + isSolanaProgram, + isSolanaAvailableToAccount: + info.isAvailableInput && + ((info.fromChainIsSolana && !evmBytecode) || (info.toChainIsSolana && !isSolanaProgram)), + }; +} diff --git a/packages/canonical-bridge-widget/src/modules/transfer/hooks/tron/useTronTransferInfo.ts b/packages/canonical-bridge-widget/src/modules/transfer/hooks/tron/useTronTransferInfo.ts index 9e7f6174..08152f91 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/hooks/tron/useTronTransferInfo.ts +++ b/packages/canonical-bridge-widget/src/modules/transfer/hooks/tron/useTronTransferInfo.ts @@ -14,13 +14,13 @@ export function useTronTransferInfo() { (!!selectedToken && fromChain?.chainType == 'tron' && !!toChain) || (toChain?.chainType === 'tron' && !!fromChain); - const isAvailableAccount = + const isTronAvailableToAccount = (fromChain?.chainType == 'tron' && isEvmAddress(toAccount.address)) || (toChain?.chainType == 'tron' && isTronAddress(toAccount.address)); return { isTronTransfer, - isAvailableAccount, + isTronAvailableToAccount, }; }, [fromChain, selectedToken, toAccount.address, toChain]); diff --git a/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingBridgeFees.ts b/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingBridgeFees.ts index da2e892c..a7f34a29 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingBridgeFees.ts +++ b/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingBridgeFees.ts @@ -1,4 +1,4 @@ -import { useCallback } from 'react'; +import { useCallback, useRef } from 'react'; import { formatUnits, parseUnits } from 'viem'; import { useAccount, useBalance, usePublicClient } from 'wagmi'; import { BridgeType, DeBridgeCreateQuoteResponse } from '@bnb-chain/canonical-bridge-sdk'; @@ -14,7 +14,12 @@ import { } from '@/modules/transfer/action'; import { useToTokenInfo } from '@/modules/transfer/hooks/useToTokenInfo'; import { useDebounce } from '@/core/hooks/useDebounce'; -import { DEBOUNCE_DELAY, DEFAULT_ADDRESS, DEFAULT_TRON_ADDRESS } from '@/core/constants'; +import { + DEBOUNCE_DELAY, + DEFAULT_ADDRESS, + DEFAULT_SOLANA_ADDRESS, + DEFAULT_TRON_ADDRESS, +} from '@/core/constants'; import { toObject } from '@/core/utils/string'; import { useGetCBridgeFees } from '@/modules/aggregator/adapters/cBridge/hooks/useGetCBridgeFees'; import { useGetDeBridgeFees } from '@/modules/aggregator/adapters/deBridge/hooks/useGetDeBridgeFees'; @@ -26,6 +31,8 @@ import { usePreSelectRoute } from '@/modules/transfer/hooks/usePreSelectRoute'; import { useGetNativeToken } from '@/modules/transfer/hooks/useGetNativeToken'; import { useGetMesonFees } from '@/modules/aggregator/adapters/meson/hooks/useGetMesonFees'; import { formatNumber } from '@/core/utils/number'; +import { useSolanaAccount } from '@/modules/wallet/hooks/useSolanaAccount'; +import { useSolanaTransferInfo } from '@/modules/transfer/hooks/solana/useSolanaTransferInfo'; export const useLoadingBridgeFees = () => { const dispatch = useAppDispatch(); @@ -33,6 +40,10 @@ export const useLoadingBridgeFees = () => { const { getToDecimals } = useToTokenInfo(); const { address } = useAccount(); const { address: tronAddress } = useTronWallet(); + const { address: solanaAddress } = useSolanaAccount(); + + const { isSolanaAvailableToAccount } = useSolanaTransferInfo(); + const bridgeSDK = useBridgeSDK(); const { http: { deBridgeAccessToken }, @@ -51,6 +62,11 @@ export const useLoadingBridgeFees = () => { const fromChain = useAppSelector((state) => state.transfer.fromChain); const toChain = useAppSelector((state) => state.transfer.toChain); const max_slippage = useAppSelector((state) => state.transfer.slippage); + const toAccount = useAppSelector((state) => state.transfer.toAccount); + + // Avoid `loadBridgeFees` to be repeatedly executed during toAccount input + const toAccountRef = useRef(toAccount.address); + toAccountRef.current = toAccount.address; const { data: nativeBalance } = useBalance({ address, chainId: fromChain?.id }); @@ -117,8 +133,21 @@ export const useLoadingBridgeFees = () => { amount, toChainId: toChain?.id, toTokenAddress: toToken?.address as `0x${string}`, - userAddress: address || DEFAULT_ADDRESS, accesstoken: deBridgeAccessToken, + userAddress: + fromChain.chainType === 'solana' + ? solanaAddress || DEFAULT_SOLANA_ADDRESS + : address || DEFAULT_ADDRESS, + toUserAddress: + fromChain.chainType === 'solana' + ? isSolanaAvailableToAccount + ? toAccountRef.current + : DEFAULT_ADDRESS + : toChain.chainType === 'solana' + ? isSolanaAvailableToAccount + ? toAccountRef.current + : DEFAULT_SOLANA_ADDRESS + : undefined, }, }); // eslint-disable-next-line no-console @@ -353,29 +382,33 @@ export const useLoadingBridgeFees = () => { } }, [ dispatch, - getToDecimals, - toToken, + selectedToken, + fromChain, + toChain, debouncedSendValue, + bridgeSDK, address, - tronAddress, - publicClient, - fromChain, - toChain, - selectedToken, + toToken?.layerZero?.raw?.endpointID, + toToken?.stargate?.raw?.endpointID, + toToken?.meson?.raw?.id, + toToken?.address, max_slippage, - bridgeSDK, + tronAddress, deBridgeAccessToken, - nativeBalance?.value, + solanaAddress, + isSolanaAvailableToAccount, + formatMessage, + mesonFeeSorting, deBridgeFeeSorting, + getToDecimals, cBridgeFeeSorting, + isAllowSendError, stargateFeeSorting, + nativeBalance?.value, + nativeToken, layerZeroFeeSorting, - mesonFeeSorting, - preSelectRoute, - isAllowSendError, - nativeToken, ]); return { diff --git a/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingTokenBalance.ts b/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingTokenBalance.ts deleted file mode 100644 index 8f1af457..00000000 --- a/packages/canonical-bridge-widget/src/modules/transfer/hooks/useLoadingTokenBalance.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { useEffect, useState } from 'react'; -import { useAccount } from 'wagmi'; - -import { useGetTokenBalance } from '@/core/contract/hooks/useGetTokenBalance'; -import { useAppSelector } from '@/modules/store/StoreProvider'; - -export const useLoadingTokenBalance = () => { - const [balance, setBalance] = useState(null); - const { address, chain } = useAccount(); - - const selectedToken = useAppSelector((state) => state.transfer.selectedToken); - const fromChain = useAppSelector((state) => state.transfer.fromChain); - - const { balance: initBalance, refetch } = useGetTokenBalance({ - tokenAddress: selectedToken?.address as `0x${string}`, - }); - - useEffect(() => { - if (typeof initBalance === 'bigint') { - setBalance(initBalance); - } else if (!selectedToken) { - setBalance(null); - } else if (!chain || chain?.id !== fromChain?.id) { - setBalance(null); - } - }, [initBalance, selectedToken, chain, fromChain]); - - useEffect(() => { - let mount = true; - if (!mount) return; - try { - const inter = setInterval(async () => { - if (!address || !selectedToken || chain?.id !== fromChain?.id) { - return; - } - refetch({ - cancelRefetch: !address || !selectedToken || chain?.id !== fromChain?.id, - }) - .then(({ data: balance }) => { - if (typeof balance === 'bigint') { - setBalance(balance); - } - }) - .catch(() => {}); - }, 10000); - return () => { - mount = false; - inter && clearInterval(inter); - }; - } catch (e: any) { - // eslint-disable-next-line no-console - console.log(e); - } - }, [refetch, address, selectedToken, fromChain, chain, initBalance]); - - return { balance }; -}; diff --git a/packages/canonical-bridge-widget/src/modules/wallet/CurrentWalletProvider.tsx b/packages/canonical-bridge-widget/src/modules/wallet/CurrentWalletProvider.tsx index ee8f4138..07ac1398 100644 --- a/packages/canonical-bridge-widget/src/modules/wallet/CurrentWalletProvider.tsx +++ b/packages/canonical-bridge-widget/src/modules/wallet/CurrentWalletProvider.tsx @@ -1,7 +1,8 @@ -import { isMobile, useWalletKit } from '@node-real/walletkit'; +import { BaseWallet, isMobile, useWalletKit } from '@node-real/walletkit'; import { TronWallet, useTronWallet } from '@node-real/walletkit/tron'; import React, { useCallback, useContext, useEffect, useState } from 'react'; import { useAccount, useDisconnect } from 'wagmi'; +import { SolanaWallet, useSolanaWallet } from '@node-real/walletkit/solana'; import { ChainType, IChainConfig } from '@/modules/aggregator'; import { useAggregator } from '@/modules/aggregator/components/AggregatorProvider'; @@ -13,6 +14,10 @@ import { useWalletModal } from '@/modules/wallet/hooks/useWalletModal'; import { useTronSwitchChain } from '@/modules/wallet/hooks/useTronSwitchChain'; import { useAppDispatch } from '@/modules/store/StoreProvider'; import { setIsOpenSwitchingTipsModal } from '@/modules/wallet/action'; +import { useSolanaAccount } from '@/modules/wallet/hooks/useSolanaAccount'; +import { useSolanaBalance } from '@/modules/wallet/hooks/useSolanaBalance'; + +const KEY_LAST_CONNECTED_WALLET_TYPE = 'lastConnectedWalletType'; export interface CurrentWalletContextProps { disconnect: () => void; @@ -40,28 +45,27 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { const dispatch = useAppDispatch(); const evmAccount = useAccount(); - const evmBalance = useEvmBalance(evmAccount.address); + const evmBalance = useEvmBalance(); const tronAccount = useTronAccount(); - const tronBalance = useTronBalance(tronAccount.address); + const tronBalance = useTronBalance(); + + const solanaAccount = useSolanaAccount(); + const solanaBalance = useSolanaBalance(); const evmDisconnect = useDisconnect(); const tronDisconnect = useTronWallet(); + const solanaDisconnect = useSolanaWallet(); const [walletType, setWalletType] = useState('evm'); - const [isAutoConnect, setIsAutoConnect] = useState(true); useEffect(() => { - const timer = setTimeout(() => { - if (tronAccount.isConnected && isAutoConnect && !evmAccount.isConnected) { - setWalletType('tron'); - } - }, 1000); - return () => { - clearTimeout(timer); - }; - }, [evmAccount.isConnected, isAutoConnect, tronAccount.isConnected]); + const lastConnectedWalletType = localStorage.getItem(KEY_LAST_CONNECTED_WALLET_TYPE) || 'evm'; + setWalletType(lastConnectedWalletType as ChainType); + }, []); const tronWalletId = useTronWalletId(); + const solanaWalletId = useSolanaWalletId(); + const { chainConfigs } = useAggregator(); const { onOpen } = useWalletModal(); @@ -88,7 +92,17 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { if (tronAccount.isConnected) { tronDisconnect.disconnect(); } - }, [evmAccount.isConnected, evmDisconnect, tronAccount.isConnected, tronDisconnect]); + if (solanaAccount.isConnected) { + solanaDisconnect.disconnect(); + } + }, [ + evmAccount.isConnected, + evmDisconnect, + solanaAccount.isConnected, + solanaDisconnect, + tronAccount.isConnected, + tronDisconnect, + ]); const linkWallet = useCallback( async ({ @@ -98,7 +112,12 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { targetChainType?: ChainType; targetChainId?: number; }) => { - setIsAutoConnect(false); + const onConnected = ({ wallet }: { wallet: BaseWallet }) => { + const walletType = wallet.walletType as ChainType; + + localStorage.setItem(KEY_LAST_CONNECTED_WALLET_TYPE, walletType); + setWalletType(walletType); + }; if (targetChainType === 'evm') { if (walletType !== targetChainType || !evmAccount.isConnected) { @@ -106,9 +125,7 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { evmConfig: { initialChainId: targetChainId, }, - onConnected({ wallet }) { - setWalletType(wallet.walletType as ChainType); - }, + onConnected, }); } else if (targetChainId && evmAccount.chainId !== targetChainId) { switchEvmChain({ @@ -123,9 +140,7 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { tronConfig: { initialChainId: targetChainId, }, - onConnected({ wallet }) { - setWalletType(wallet.walletType as ChainType); - }, + onConnected, }); } else if (targetChainId && tronAccount.chainId !== targetChainId) { if (isMobile()) { @@ -137,12 +152,21 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { } } } + + if (targetChainType === 'solana') { + if (walletType !== targetChainType || !solanaAccount.isConnected) { + onOpen({ + onConnected, + }); + } + } }, [ dispatch, evmAccount.chainId, evmAccount.isConnected, onOpen, + solanaAccount.isConnected, switchEvmChain, switchTronChain, tronAccount.chainId, @@ -155,6 +179,7 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { const tronChain = chainConfigs.find( (e) => e.chainType === 'tron' && e.id === tronAccount.chainId, ); + const solanaChain = chainConfigs.find((e) => e.chainType === 'solana'); const commonProps = { disconnect, @@ -175,6 +200,16 @@ export function CurrentWalletProvider(props: CurrentWalletProviderProps) { chain: tronChain, chainId: tronAccount?.chainId, }; + } else if (walletType === 'solana') { + value = { + ...commonProps, + walletId: solanaWalletId, + isConnected: solanaAccount.isConnected, + address: solanaAccount.address, + balance: solanaBalance.data, + chain: solanaChain, + chainId: solanaAccount?.chainId, + }; } else { value = { ...commonProps, @@ -204,3 +239,14 @@ function useTronWalletId() { return target?.id; } + +function useSolanaWalletId() { + const { solanaConfig } = useWalletKit(); + const { wallet } = useSolanaWallet(); + + const target = (solanaConfig?.wallets as SolanaWallet[])?.find( + (item) => item.adapterName === wallet?.adapter.name, + ); + + return target?.id; +} diff --git a/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx b/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx index 23135c49..33a2aaaa 100644 --- a/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx +++ b/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx @@ -16,6 +16,11 @@ import { } from '@node-real/walletkit/evm'; import * as allChains from 'viem/chains'; import { defaultTronConfig, tronLink } from '@node-real/walletkit/tron'; +import { + defaultSolanaConfig, + trustWallet as solanaTrustWallet, + phantomWallet as solanaPhantomWallet, +} from '@node-real/walletkit/solana'; import React from 'react'; import { useDisclosure, useIntl } from '@bnb-chain/space'; @@ -48,46 +53,63 @@ export function WalletProvider(props: WalletProviderProps) { walletConnect(), ]; const tronWallets = [tronLink()]; + const solanaWallets = [solanaTrustWallet(), solanaPhantomWallet()]; - return { - options: { - useGridLayoutOnMobile: false, - gridLayoutThreshold: 10, - onClickWallet(wallet: BaseWallet) { - if (isMobile()) { - const isInDappBrowser = evmWallets.some((e) => e.isInstalled()); - - if (isInDappBrowser) { - // Some wallets will set `isMetaMask=true` - const counter = evmWallets.filter((e) => e.isInstalled()).length; - if ( - (counter === 1 && wallet.isInstalled()) || - (counter > 1 && wallet.isInstalled() && wallet.id !== 'metaMask') - ) { - return true; - } else { - onOpen(); - return false; - } + const tron = chainConfigs.find((e) => e.chainType === 'tron'); + const solana = chainConfigs.find((e) => e.chainType === 'solana'); + + const options: WalletKitConfig['options'] = { + useGridLayoutOnMobile: false, + gridLayoutThreshold: 10, + onClickWallet(wallet: BaseWallet) { + if (isMobile()) { + const isInDappBrowser = evmWallets.some((e) => e.isInstalled()); + + if (isInDappBrowser) { + // Some wallets will set `isMetaMask=true` + const counter = evmWallets.filter((e) => e.isInstalled()).length; + if ( + (counter === 1 && wallet.isInstalled()) || + (counter > 1 && wallet.isInstalled() && wallet.id !== 'metaMask') + ) { + return true; + } else { + onOpen(); + return false; } } - return true; - }, + } + return true; }, - evmConfig: defaultEvmConfig({ - autoConnect: true, - initialChainId: 1, - walletConnectProjectId: bridgeConfig.wallet.walletConnectProjectId, - metadata: { - name: bridgeConfig.appName, - }, - wallets: evmWallets, - chains: getEvmChains(chainConfigs), - }), - tronConfig: defaultTronConfig({ - autoConnect: true, - wallets: tronWallets, - }), + }; + + const evmConfig: WalletKitConfig['evmConfig'] = defaultEvmConfig({ + autoConnect: true, + initialChainId: 1, + walletConnectProjectId: bridgeConfig.wallet.walletConnectProjectId, + metadata: { + name: bridgeConfig.appName, + }, + wallets: evmWallets, + chains: getEvmChains(chainConfigs), + }); + + const tronConfig: WalletKitConfig['tronConfig'] = defaultTronConfig({ + autoConnect: true, + wallets: tronWallets, + }); + + const solanaConfig: WalletKitConfig['solanaConfig'] = defaultSolanaConfig({ + autoConnect: true, + rpcUrl: solana!.rpcUrl, + wallets: solanaWallets, + }); + + return { + options, + evmConfig, + tronConfig: tron ? tronConfig : undefined, + solanaConfig: solana ? solanaConfig : undefined, }; }, [bridgeConfig.appName, bridgeConfig.wallet.walletConnectProjectId, chainConfigs, onOpen]); diff --git a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useEvmBalance.ts b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useEvmBalance.ts index 9c8d151a..624f6f3d 100644 --- a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useEvmBalance.ts +++ b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useEvmBalance.ts @@ -2,20 +2,22 @@ import { useQuery } from '@tanstack/react-query'; import { Address, formatUnits } from 'viem'; import { useAccount, usePublicClient } from 'wagmi'; +import { REFETCH_INTERVAL } from '@/core/constants'; + export interface FormattedBalance { formatted: string; symbol: string; value: bigint; } -export function useEvmBalance(address?: Address, enabled = true) { +export function useEvmBalance() { const publicClient = usePublicClient(); - const { chain, chainId } = useAccount(); + const { chain, chainId, address } = useAccount(); return useQuery({ queryKey: ['useEvmBalance', address, chainId], - refetchInterval: 1000 * 5, - enabled: !!address && enabled && !!chain && !!chainId, + refetchInterval: REFETCH_INTERVAL, + enabled: !!address && !!chain && !!chainId, queryFn: async () => { const balance = await publicClient!.getBalance({ address: address as Address, diff --git a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaAccount.ts b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaAccount.ts new file mode 100644 index 00000000..8d2aa4c3 --- /dev/null +++ b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaAccount.ts @@ -0,0 +1,16 @@ +import { useSolanaWallet } from '@node-real/walletkit/solana'; + +import { useAggregator } from '@/modules/aggregator/components/AggregatorProvider'; + +export function useSolanaAccount() { + const { connected, publicKey } = useSolanaWallet(); + const { chainConfigs } = useAggregator(); + + const solana = chainConfigs.find((e) => e.chainType === 'solana'); + + return { + address: publicKey?.toBase58(), + isConnected: connected, + chainId: solana?.id, + }; +} diff --git a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaBalance.ts b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaBalance.ts new file mode 100644 index 00000000..ef553e48 --- /dev/null +++ b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useSolanaBalance.ts @@ -0,0 +1,26 @@ +import { useConnection } from '@solana/wallet-adapter-react'; +import { LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; +import { useQuery } from '@tanstack/react-query'; + +import { FormattedBalance } from '@/modules/wallet/hooks/useEvmBalance'; +import { useSolanaAccount } from '@/modules/wallet/hooks/useSolanaAccount'; +import { REFETCH_INTERVAL } from '@/core/constants'; + +export function useSolanaBalance() { + const { connection } = useConnection(); + const { address } = useSolanaAccount(); + + return useQuery({ + queryKey: ['useSolanaBalance', address], + refetchInterval: REFETCH_INTERVAL, + enabled: !!address, + queryFn: async () => { + const balance = await connection.getBalance(new PublicKey(address!)); + return { + formatted: String(balance / LAMPORTS_PER_SOL), + symbol: 'SOL', + value: BigInt(balance), + }; + }, + }); +} diff --git a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useTronBalance.ts b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useTronBalance.ts index 00028be1..c91861ec 100644 --- a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useTronBalance.ts +++ b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useTronBalance.ts @@ -2,14 +2,17 @@ import { useQuery } from '@tanstack/react-query'; import { FormattedBalance } from '@/modules/wallet/hooks/useEvmBalance'; import { useTronWeb } from '@/core/hooks/useTronWeb'; +import { useTronAccount } from '@/modules/wallet/hooks/useTronAccount'; +import { REFETCH_INTERVAL } from '@/core/constants'; -export function useTronBalance(address?: string, enabled = true) { +export function useTronBalance() { const tronWeb = useTronWeb(); + const { address } = useTronAccount(); return useQuery({ queryKey: ['useTronBalance', address], - refetchInterval: 1000 * 5, - enabled: !!address && enabled && !!tronWeb, + refetchInterval: REFETCH_INTERVAL, + enabled: !!address && !!tronWeb, queryFn: async () => { const balance = await tronWeb!.trx.getUnconfirmedBalance(address); const formattedBalance = tronWeb!.fromSun(balance); diff --git a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useWalletModal.tsx b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useWalletModal.tsx index c57a8ede..b4c9c3af 100644 --- a/packages/canonical-bridge-widget/src/modules/wallet/hooks/useWalletModal.tsx +++ b/packages/canonical-bridge-widget/src/modules/wallet/hooks/useWalletModal.tsx @@ -18,26 +18,29 @@ export function useWalletModal() { export function useUpdateWallets() { const fromChain = useAppSelector((state) => state.transfer.fromChain); - const { evmConfig, tronConfig, setWallets } = useWalletKit(); + const { evmConfig, tronConfig, solanaConfig, setWallets } = useWalletKit(); - const { evmWalletIds, tronWalletIds, wallets } = useMemo(() => { + const { evmWalletIds, tronWalletIds, solanaWalletIds, wallets } = useMemo(() => { const wallets: BaseWallet[] = []; - if (evmConfig?.wallets) { - wallets.push(...evmConfig.wallets); - } - if (tronConfig?.wallets) { - wallets.push(...tronConfig?.wallets); - } + if (evmConfig?.wallets) wallets.push(...evmConfig.wallets); + if (tronConfig?.wallets) wallets.push(...tronConfig?.wallets); + if (solanaConfig?.wallets) wallets.push(...solanaConfig.wallets); + return { evmWalletIds: evmConfig?.wallets.map((e) => e.id) ?? [], tronWalletIds: tronConfig?.wallets.map((e) => e.id) ?? [], + solanaWalletIds: solanaConfig?.wallets.map((e) => e.id) ?? [], wallets, }; - }, [evmConfig?.wallets, tronConfig?.wallets]); + }, [evmConfig?.wallets, tronConfig?.wallets, solanaConfig?.wallets]); useEffect(() => { const chainType = fromChain?.chainType ?? 'evm'; - const availableWalletIds = chainType === 'evm' ? evmWalletIds : tronWalletIds; + + let availableWalletIds: string[]; + if (chainType === 'evm') availableWalletIds = [...evmWalletIds]; + if (chainType === 'tron') availableWalletIds = [...tronWalletIds]; + if (chainType === 'solana') availableWalletIds = [...solanaWalletIds]; const newWallets: BaseWallet[] = []; wallets.forEach((item) => { @@ -94,5 +97,5 @@ export function useUpdateWallets() { }); setWallets(newWallets); - }, [evmWalletIds, fromChain, setWallets, tronWalletIds, wallets]); + }, [evmWalletIds, fromChain, setWallets, solanaWalletIds, tronWalletIds, wallets]); } From edc10907035335043892bbaa971b7aa5046b8379 Mon Sep 17 00:00:00 2001 From: chris Date: Wed, 30 Oct 2024 13:47:05 +1000 Subject: [PATCH 03/12] refactor: Update transfer config hook path --- apps/canonical-bridge-ui/pages/mainnet/index.tsx | 2 +- apps/canonical-bridge-ui/pages/testnet/index.tsx | 2 +- .../token-config/mainnet/{index.ts => useTransferConfig.ts} | 0 .../testnet/{index.ts => useTestnetTransferConfig.ts} | 0 4 files changed, 2 insertions(+), 2 deletions(-) rename apps/canonical-bridge-ui/token-config/mainnet/{index.ts => useTransferConfig.ts} (100%) rename apps/canonical-bridge-ui/token-config/testnet/{index.ts => useTestnetTransferConfig.ts} (100%) diff --git a/apps/canonical-bridge-ui/pages/mainnet/index.tsx b/apps/canonical-bridge-ui/pages/mainnet/index.tsx index 68d5e4c3..f9f48ec2 100644 --- a/apps/canonical-bridge-ui/pages/mainnet/index.tsx +++ b/apps/canonical-bridge-ui/pages/mainnet/index.tsx @@ -5,7 +5,7 @@ import { } from '@bnb-chain/canonical-bridge-widget'; import { en as messages } from '@/core/locales/en'; -import { useTransferConfig } from '@/token-config/mainnet'; +import { useTransferConfig } from '@/token-config/mainnet/useTransferConfig'; import { chains } from '@/token-config/mainnet/chains'; import { Layout } from '@/core/components/Layout'; import { env } from '@/core/env'; diff --git a/apps/canonical-bridge-ui/pages/testnet/index.tsx b/apps/canonical-bridge-ui/pages/testnet/index.tsx index 7a3d71d0..11cea36d 100644 --- a/apps/canonical-bridge-ui/pages/testnet/index.tsx +++ b/apps/canonical-bridge-ui/pages/testnet/index.tsx @@ -5,7 +5,7 @@ import { } from '@bnb-chain/canonical-bridge-widget'; import { en as messages } from '@/core/locales/en'; -import { useTestnetTransferConfig } from '@/token-config/testnet'; +import { useTestnetTransferConfig } from '@/token-config/testnet/useTestnetTransferConfig'; import { testnetChains } from '@/token-config/testnet/testnetChains'; import { Layout } from '@/core/components/Layout'; import { dark } from '@/core/theme/dark'; diff --git a/apps/canonical-bridge-ui/token-config/mainnet/index.ts b/apps/canonical-bridge-ui/token-config/mainnet/useTransferConfig.ts similarity index 100% rename from apps/canonical-bridge-ui/token-config/mainnet/index.ts rename to apps/canonical-bridge-ui/token-config/mainnet/useTransferConfig.ts diff --git a/apps/canonical-bridge-ui/token-config/testnet/index.ts b/apps/canonical-bridge-ui/token-config/testnet/useTestnetTransferConfig.ts similarity index 100% rename from apps/canonical-bridge-ui/token-config/testnet/index.ts rename to apps/canonical-bridge-ui/token-config/testnet/useTestnetTransferConfig.ts From 47d6f8bbf9d0933f382d23099df9000e63618d2e Mon Sep 17 00:00:00 2001 From: wenty22 Date: Thu, 31 Oct 2024 10:34:41 +0800 Subject: [PATCH 04/12] feat: Fix build error --- .../src/modules/wallet/WalletProvider.tsx | 94 +++++++++---------- 1 file changed, 45 insertions(+), 49 deletions(-) diff --git a/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx b/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx index 33a2aaaa..4aaaa061 100644 --- a/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx +++ b/packages/canonical-bridge-widget/src/modules/wallet/WalletProvider.tsx @@ -58,58 +58,54 @@ export function WalletProvider(props: WalletProviderProps) { const tron = chainConfigs.find((e) => e.chainType === 'tron'); const solana = chainConfigs.find((e) => e.chainType === 'solana'); - const options: WalletKitConfig['options'] = { - useGridLayoutOnMobile: false, - gridLayoutThreshold: 10, - onClickWallet(wallet: BaseWallet) { - if (isMobile()) { - const isInDappBrowser = evmWallets.some((e) => e.isInstalled()); - - if (isInDappBrowser) { - // Some wallets will set `isMetaMask=true` - const counter = evmWallets.filter((e) => e.isInstalled()).length; - if ( - (counter === 1 && wallet.isInstalled()) || - (counter > 1 && wallet.isInstalled() && wallet.id !== 'metaMask') - ) { - return true; - } else { - onOpen(); - return false; + return { + options: { + useGridLayoutOnMobile: false, + gridLayoutThreshold: 10, + onClickWallet(wallet: BaseWallet) { + if (isMobile()) { + const isInDappBrowser = evmWallets.some((e) => e.isInstalled()); + + if (isInDappBrowser) { + // Some wallets will set `isMetaMask=true` + const counter = evmWallets.filter((e) => e.isInstalled()).length; + if ( + (counter === 1 && wallet.isInstalled()) || + (counter > 1 && wallet.isInstalled() && wallet.id !== 'metaMask') + ) { + return true; + } else { + onOpen(); + return false; + } } } - } - return true; - }, - }; - - const evmConfig: WalletKitConfig['evmConfig'] = defaultEvmConfig({ - autoConnect: true, - initialChainId: 1, - walletConnectProjectId: bridgeConfig.wallet.walletConnectProjectId, - metadata: { - name: bridgeConfig.appName, + return true; + }, }, - wallets: evmWallets, - chains: getEvmChains(chainConfigs), - }); - - const tronConfig: WalletKitConfig['tronConfig'] = defaultTronConfig({ - autoConnect: true, - wallets: tronWallets, - }); - - const solanaConfig: WalletKitConfig['solanaConfig'] = defaultSolanaConfig({ - autoConnect: true, - rpcUrl: solana!.rpcUrl, - wallets: solanaWallets, - }); - - return { - options, - evmConfig, - tronConfig: tron ? tronConfig : undefined, - solanaConfig: solana ? solanaConfig : undefined, + evmConfig: defaultEvmConfig({ + autoConnect: true, + initialChainId: 1, + walletConnectProjectId: bridgeConfig.wallet.walletConnectProjectId, + metadata: { + name: bridgeConfig.appName, + }, + wallets: evmWallets, + chains: getEvmChains(chainConfigs), + }), + tronConfig: tron + ? defaultTronConfig({ + autoConnect: true, + wallets: tronWallets, + }) + : undefined, + solanaConfig: solana + ? defaultSolanaConfig({ + autoConnect: true, + rpcUrl: solana?.rpcUrl, + wallets: solanaWallets, + }) + : undefined, }; }, [bridgeConfig.appName, bridgeConfig.wallet.walletConnectProjectId, chainConfigs, onOpen]); From 439d50c189a884ee265f1de5c2ce3434b64c86a4 Mon Sep 17 00:00:00 2001 From: wenty22 Date: Fri, 8 Nov 2024 17:18:08 +0800 Subject: [PATCH 05/12] feat: Support solana --- packages/canonical-bridge-widget/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 8914c6c3..34187212 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -75,10 +75,10 @@ "wagmi": "~2.12.14" }, "dependencies": { - "tronweb": "~6.0.0", + "@solana/spl-token": "~0.4.9", "@solana/wallet-adapter-react": "~0.15.35", "@solana/web3.js": "~1.95.4", - "@solana/spl-token": "~0.4.9" + "tronweb": "~6.0.0" }, "lint-staged": { "*.{js,jsx,ts,tsx}": [ From 8e002412eac5f1d8179fc2ebb2d99b7947a04417 Mon Sep 17 00:00:00 2001 From: wenty22 Date: Fri, 8 Nov 2024 17:31:52 +0800 Subject: [PATCH 06/12] feat: Update default fromChainId --- .../token-config/mainnet/useTransferConfig.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/canonical-bridge-ui/token-config/mainnet/useTransferConfig.ts b/apps/canonical-bridge-ui/token-config/mainnet/useTransferConfig.ts index 566902e5..ad81eac0 100644 --- a/apps/canonical-bridge-ui/token-config/mainnet/useTransferConfig.ts +++ b/apps/canonical-bridge-ui/token-config/mainnet/useTransferConfig.ts @@ -26,7 +26,7 @@ export function useTransferConfig() { const transferConfig: ITransferConfig = { defaultSelectedInfo: { - fromChainId: 7565164, + fromChainId: 1, toChainId: 56, tokenSymbol: 'USDT', // USDT amount: '', From a67b1102698a68aa32f41c730046c3d7aae0f50b Mon Sep 17 00:00:00 2001 From: wenty22 Date: Mon, 11 Nov 2024 16:01:15 +0800 Subject: [PATCH 07/12] fix: Show solana native token balance --- common/config/rush/pnpm-lock.yaml | 10 ++--- packages/canonical-bridge-widget/package.json | 2 +- .../aggregator/shared/getTokenBalances.ts | 39 ++++++++++++------- .../transfer/components/ToAccount/index.tsx | 2 +- 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 8b20f718..989428b7 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -304,8 +304,8 @@ importers: specifier: ~11.13.0 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0))(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0) '@node-real/walletkit': - specifier: 2.4.1-alpha.0 - version: 2.4.1-alpha.0(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) + specifier: 2.4.1-alpha.1 + version: 2.4.1-alpha.1(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) '@tanstack/react-query': specifier: ~5.50.1 version: 5.50.1(react@18.3.1) @@ -2993,8 +2993,8 @@ packages: viem: ^2 wagmi: ^2 - '@node-real/walletkit@2.4.1-alpha.0': - resolution: {integrity: sha512-rl/uXrktICOROw4cGWXAmIdA9Hw8QlBW/GVYts2ucSJuwrST0EInM10Z7jwNCdJyn1ANDwzB5L/lA41BDJPafA==} + '@node-real/walletkit@2.4.1-alpha.1': + resolution: {integrity: sha512-1IBDDYb6b6EqytQxCqp5BdztMp3V2XR+numoyzdASYE8eoDEEEhfTv6fB8t11MFKzauIQGTWbVDHyM39hDlUxw==} peerDependencies: '@tanstack/react-query': ^5 react: '>=17' @@ -15978,7 +15978,7 @@ snapshots: - utf-8-validate - zod - '@node-real/walletkit@2.4.1-alpha.0(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': + '@node-real/walletkit@2.4.1-alpha.1(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': dependencies: '@metamask/jazzicon': 2.0.0 '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 34187212..1da97e61 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -45,7 +45,7 @@ "@bnb-chain/space": "workspace:*", "@emotion/react": "~11.13.0", "@emotion/styled": "~11.13.0", - "@node-real/walletkit": "2.4.1-alpha.0", + "@node-real/walletkit": "2.4.1-alpha.1", "@tanstack/react-query": "~5.50.1", "@types/lodash": "~4.17.7", "@types/node": "^20", diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts b/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts index 239db51b..1f3e6002 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/shared/getTokenBalances.ts @@ -1,7 +1,7 @@ import { Address, Chain, createPublicClient, formatUnits, http } from 'viem'; import { TronWeb } from 'tronweb'; import * as SPLToken from '@solana/spl-token'; -import { Connection, PublicKey } from '@solana/web3.js'; +import { Connection, LAMPORTS_PER_SOL, PublicKey } from '@solana/web3.js'; import { TOKEN_PROGRAM_ID } from '@solana/spl-token'; import axios from 'axios'; @@ -192,24 +192,33 @@ async function getSolanaTokenBalances({ if (!account || !tokens?.length || !connection) { return {}; } - const balances: Record = {}; // https://stackoverflow.com/questions/69700173/solana-check-all-spl-token-balances-of-a-wallet - const res = await connection.getTokenAccountsByOwner(new PublicKey(account), { - programId: TOKEN_PROGRAM_ID, - }); + const [splTokensRes, nativeTokenRes] = await Promise.allSettled([ + connection.getTokenAccountsByOwner(new PublicKey(account), { + programId: TOKEN_PROGRAM_ID, + }), + connection.getBalance(new PublicKey(account!)), + ]); - res?.value?.forEach((e) => { - const accountInfo = SPLToken.AccountLayout.decode(e.account.data); + const balances: Record = {}; + if (splTokensRes.status === 'fulfilled') { + splTokensRes.value?.value?.forEach((e) => { + const accountInfo = SPLToken.AccountLayout.decode(e.account.data); + + const token = tokens.find((t) => isSameAddress(t.address, accountInfo.mint.toBase58())); + if (token) { + balances[token.displaySymbol.toUpperCase()] = formatUnits( + accountInfo.amount, + token.decimals, + ); + } + }); + } - const token = tokens.find((t) => isSameAddress(t.address, accountInfo.mint.toBase58())); - if (token) { - balances[token.displaySymbol.toUpperCase()] = formatUnits( - accountInfo.amount, - token.decimals, - ); - } - }); + if (nativeTokenRes.status === 'fulfilled') { + balances['SOL'] = String(nativeTokenRes.value / LAMPORTS_PER_SOL); + } tokens.forEach((t) => { const key = t.displaySymbol.toUpperCase(); diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/ToAccount/index.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/ToAccount/index.tsx index 6d580e08..0bae50f8 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/ToAccount/index.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/ToAccount/index.tsx @@ -60,7 +60,7 @@ export function ToAccount(props: FlexProps) { if (!toAccount.address) setInputValue(''); }, [toAccount.address]); - const { isInvalid, isAvailableAccount } = useMemo(() => { + const { isInvalid } = useMemo(() => { if (isTronTransfer) { return { isInvalid: From bb4de209dbeb39cc7595cb4c6b80cfef64f371fb Mon Sep 17 00:00:00 2001 From: wenty22 Date: Tue, 12 Nov 2024 10:45:48 +0800 Subject: [PATCH 08/12] fix: Fix token balance sorting issue --- .../src/modules/aggregator/shared/sortTokens.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/shared/sortTokens.ts b/packages/canonical-bridge-widget/src/modules/aggregator/shared/sortTokens.ts index 460514b9..7162342c 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/shared/sortTokens.ts +++ b/packages/canonical-bridge-widget/src/modules/aggregator/shared/sortTokens.ts @@ -52,13 +52,15 @@ export function sortTokens({ return 1; } - if (a.balance && b.balance) { + const aBalance = Number(a.balance); + const bBalance = Number(b.balance); + if (aBalance && bBalance) { return sortWithPredefinedOrders(); } - if (a.balance && !b.balance) { + if (aBalance && !bBalance) { return -1; } - if (!a.balance && b.balance) { + if (!aBalance && bBalance) { return 1; } } From a6db440886368bd3c7da615f300aaa2ce44f754e Mon Sep 17 00:00:00 2001 From: wenty22 Date: Tue, 12 Nov 2024 11:52:40 +0800 Subject: [PATCH 09/12] feat: Support solana --- .release/.changeset/pre.json | 11 +++++++++++ .release/.changeset/tasty-gifts-brush.md | 6 ++++++ packages/canonical-bridge-sdk/CHANGELOG.md | 6 ++++++ packages/canonical-bridge-sdk/package.json | 2 +- packages/canonical-bridge-widget/CHANGELOG.md | 6 ++++++ packages/canonical-bridge-widget/package.json | 2 +- 6 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 .release/.changeset/pre.json create mode 100644 .release/.changeset/tasty-gifts-brush.md diff --git a/.release/.changeset/pre.json b/.release/.changeset/pre.json new file mode 100644 index 00000000..5ad851e4 --- /dev/null +++ b/.release/.changeset/pre.json @@ -0,0 +1,11 @@ +{ + "mode": "pre", + "tag": "alpha", + "initialVersions": { + "@bnb-chain/canonical-bridge-sdk": "0.3.3", + "@bnb-chain/canonical-bridge-widget": "0.4.0" + }, + "changesets": [ + "tasty-gifts-brush" + ] +} diff --git a/.release/.changeset/tasty-gifts-brush.md b/.release/.changeset/tasty-gifts-brush.md new file mode 100644 index 00000000..9a986623 --- /dev/null +++ b/.release/.changeset/tasty-gifts-brush.md @@ -0,0 +1,6 @@ +--- +"@bnb-chain/canonical-bridge-widget": minor +"@bnb-chain/canonical-bridge-sdk": minor +--- + +Support solana diff --git a/packages/canonical-bridge-sdk/CHANGELOG.md b/packages/canonical-bridge-sdk/CHANGELOG.md index 673d2031..756c1256 100644 --- a/packages/canonical-bridge-sdk/CHANGELOG.md +++ b/packages/canonical-bridge-sdk/CHANGELOG.md @@ -1,5 +1,11 @@ # @bnb-chain/canonical-bridge-sdk +## 0.4.0-alpha.0 + +### Minor Changes + +- Support solana + ## 0.3.3 ### Patch Changes diff --git a/packages/canonical-bridge-sdk/package.json b/packages/canonical-bridge-sdk/package.json index 88805519..e17d92c3 100644 --- a/packages/canonical-bridge-sdk/package.json +++ b/packages/canonical-bridge-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/canonical-bridge-sdk", - "version": "0.3.3", + "version": "0.4.0-alpha.0", "description": "canonical bridge sdk", "author": "bnb-chain", "private": false, diff --git a/packages/canonical-bridge-widget/CHANGELOG.md b/packages/canonical-bridge-widget/CHANGELOG.md index 76cd5d69..b463a1a1 100644 --- a/packages/canonical-bridge-widget/CHANGELOG.md +++ b/packages/canonical-bridge-widget/CHANGELOG.md @@ -1,5 +1,11 @@ # @bnb-chain/canonical-bridge-widget +## 0.5.0-alpha.0 + +### Minor Changes + +- Support solana + ## 0.4.0 ### Minor Changes diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 1da97e61..9e9ece2d 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/canonical-bridge-widget", - "version": "0.4.0", + "version": "0.5.0-alpha.0", "description": "canonical bridge widget", "author": "bnb-chain", "private": false, From 6ab36a61cadd83766c83f39a3112a0dee7f96c5f Mon Sep 17 00:00:00 2001 From: aidencao Date: Tue, 12 Nov 2024 16:06:00 +0800 Subject: [PATCH 10/12] feat(canonical-bridge-widget): UI adjustment --- .release/.changeset/mean-falcons-yell.md | 5 ++++ .release/.changeset/pre.json | 1 + packages/canonical-bridge-widget/CHANGELOG.md | 6 ++++ packages/canonical-bridge-widget/package.json | 2 +- .../SelectModal/ChooseTokenModal.tsx | 30 ++++++++++--------- .../SelectModal/DestinationNetworkModal.tsx | 2 +- .../SelectModal/SourceNetworkModal.tsx | 2 +- .../SelectModal/components/BaseModal.tsx | 2 +- .../SelectModal/components/ListItem.tsx | 11 +++---- .../components/NetWorkSection/index.tsx | 2 +- .../components/ReceiveInfo/ReceiveLoading.tsx | 4 +-- .../transfer/components/ReceiveInfo/index.tsx | 17 ++++++++--- .../SendInput/InputValidationMessage.tsx | 6 ++-- .../RouteInfo/RouteSkeleton.tsx | 2 +- .../RouteInfo/RouteWrapper.tsx | 2 +- .../components/TransferOverview/index.tsx | 4 +-- 16 files changed, 62 insertions(+), 36 deletions(-) create mode 100644 .release/.changeset/mean-falcons-yell.md diff --git a/.release/.changeset/mean-falcons-yell.md b/.release/.changeset/mean-falcons-yell.md new file mode 100644 index 00000000..8d7def6c --- /dev/null +++ b/.release/.changeset/mean-falcons-yell.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/canonical-bridge-widget": patch +--- + +UI adjustment diff --git a/.release/.changeset/pre.json b/.release/.changeset/pre.json index 5ad851e4..f32ad8d3 100644 --- a/.release/.changeset/pre.json +++ b/.release/.changeset/pre.json @@ -6,6 +6,7 @@ "@bnb-chain/canonical-bridge-widget": "0.4.0" }, "changesets": [ + "mean-falcons-yell", "tasty-gifts-brush" ] } diff --git a/packages/canonical-bridge-widget/CHANGELOG.md b/packages/canonical-bridge-widget/CHANGELOG.md index b463a1a1..3c6631b2 100644 --- a/packages/canonical-bridge-widget/CHANGELOG.md +++ b/packages/canonical-bridge-widget/CHANGELOG.md @@ -1,5 +1,11 @@ # @bnb-chain/canonical-bridge-widget +## 0.5.0-alpha.1 + +### Patch Changes + +- UI adjustment + ## 0.5.0-alpha.0 ### Minor Changes diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 9e9ece2d..8db8d6cd 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/canonical-bridge-widget", - "version": "0.5.0-alpha.0", + "version": "0.5.0-alpha.1", "description": "canonical bridge widget", "author": "bnb-chain", "private": false, diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/ChooseTokenModal.tsx b/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/ChooseTokenModal.tsx index 1f7a9dfd..aec1dff9 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/ChooseTokenModal.tsx +++ b/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/ChooseTokenModal.tsx @@ -64,20 +64,22 @@ export function ChooseTokenModal(props: ChooseTokenModalProps) { placeholder={formatMessage({ id: 'select-modal.token.placeholder' })} isNoResult={isNoResult} > - - {formatMessage({ id: 'select-modal.token.column.name' })} - {showBalance && {formatMessage({ id: 'select-modal.token.column.balance' })}} - + {isConnected && ( + + {formatMessage({ id: 'select-modal.token.column.name' })} + {showBalance && {formatMessage({ id: 'select-modal.token.column.balance' })}} + + )} - + {(item) => { const isDisabled = !isChainOrTokenCompatible(item); const isActive = @@ -111,7 +113,7 @@ export function ChooseTokenModal(props: ChooseTokenModalProps) { }} > - + {item.displaySymbol} {isMobile && !isNative && ( diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/DestinationNetworkModal.tsx b/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/DestinationNetworkModal.tsx index abb2afa5..783f6b10 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/DestinationNetworkModal.tsx +++ b/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/DestinationNetworkModal.tsx @@ -49,7 +49,7 @@ export function DestinationNetworkModal(props: DestinationNetworkModalProps) { placeholder={formatMessage({ id: 'select-modal.destination.placeholder' })} isNoResult={isNoResult} > - + {(item) => ( - + {(item) => ( - + diff --git a/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/components/ListItem.tsx b/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/components/ListItem.tsx index 3c4d30a7..3c9f7a31 100644 --- a/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/components/ListItem.tsx +++ b/packages/canonical-bridge-widget/src/modules/aggregator/components/SelectModal/components/ListItem.tsx @@ -31,12 +31,12 @@ export const ListItem = React.forwardRef((props: ListItemProps, ref: any) => { const { formatMessage } = useIntl(); return ( - + { ..._hover, bg: !isActive && !isDisabled ? theme.colors[colorMode].layer['3'].hover : undefined, }} - gap={'12px'} + gap={'8px'} fontSize="14px" lineHeight="16px" fontWeight={500} @@ -55,6 +55,7 @@ export const ListItem = React.forwardRef((props: ListItemProps, ref: any) => { {...restProps} > { const theme = useTheme(); return ( - + diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/ReceiveInfo/ReceiveLoading.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/ReceiveInfo/ReceiveLoading.tsx index edd42866..32e755b5 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/ReceiveInfo/ReceiveLoading.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/ReceiveInfo/ReceiveLoading.tsx @@ -8,8 +8,8 @@ export const ReceiveLoading = () => { - - + + { ) : null} @@ -181,8 +181,17 @@ export const ReceiveInfo = ({ onOpen }: ReceiveInfoProps) => { } { - - + + } {bridgeType && ( diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/SendInput/InputValidationMessage.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/SendInput/InputValidationMessage.tsx index 065c1289..d8b5c4d2 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/SendInput/InputValidationMessage.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/SendInput/InputValidationMessage.tsx @@ -62,7 +62,9 @@ export const InputValidationMessage = () => { selectedToken?.displaySymbol, ]); - return error || balanceInputError ? ( + const errorMsg = balanceInputError ?? error?.text; + + return errorMsg ? ( { lineHeight={'16px'} mt={'8px'} > - {balanceInputError ?? error?.text} + {errorMsg} ) : null; }; diff --git a/packages/canonical-bridge-widget/src/modules/transfer/components/TransferOverview/RouteInfo/RouteSkeleton.tsx b/packages/canonical-bridge-widget/src/modules/transfer/components/TransferOverview/RouteInfo/RouteSkeleton.tsx index 1de3d44d..82197c5c 100644 --- a/packages/canonical-bridge-widget/src/modules/transfer/components/TransferOverview/RouteInfo/RouteSkeleton.tsx +++ b/packages/canonical-bridge-widget/src/modules/transfer/components/TransferOverview/RouteInfo/RouteSkeleton.tsx @@ -6,7 +6,7 @@ export const RouteSkeleton = () => { return ( {cBridgeSupport && } - + {!routeContentBottom ? ( content ) : ( - + {content} From e31ab8f5c778a419e6740b7396ba401f01484c6b Mon Sep 17 00:00:00 2001 From: aidencao Date: Tue, 12 Nov 2024 16:19:21 +0800 Subject: [PATCH 11/12] feat(canonical-bridge-widget): UI adjustment --- .release/.changeset/honest-jeans-greet.md | 5 +++++ .release/.changeset/pre.json | 1 + packages/canonical-bridge-widget/CHANGELOG.md | 6 ++++++ packages/canonical-bridge-widget/package.json | 2 +- 4 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .release/.changeset/honest-jeans-greet.md diff --git a/.release/.changeset/honest-jeans-greet.md b/.release/.changeset/honest-jeans-greet.md new file mode 100644 index 00000000..8d7def6c --- /dev/null +++ b/.release/.changeset/honest-jeans-greet.md @@ -0,0 +1,5 @@ +--- +"@bnb-chain/canonical-bridge-widget": patch +--- + +UI adjustment diff --git a/.release/.changeset/pre.json b/.release/.changeset/pre.json index f32ad8d3..f97cf9b0 100644 --- a/.release/.changeset/pre.json +++ b/.release/.changeset/pre.json @@ -6,6 +6,7 @@ "@bnb-chain/canonical-bridge-widget": "0.4.0" }, "changesets": [ + "honest-jeans-greet", "mean-falcons-yell", "tasty-gifts-brush" ] diff --git a/packages/canonical-bridge-widget/CHANGELOG.md b/packages/canonical-bridge-widget/CHANGELOG.md index 3c6631b2..1c735917 100644 --- a/packages/canonical-bridge-widget/CHANGELOG.md +++ b/packages/canonical-bridge-widget/CHANGELOG.md @@ -1,5 +1,11 @@ # @bnb-chain/canonical-bridge-widget +## 0.5.0-alpha.2 + +### Patch Changes + +- UI adjustment + ## 0.5.0-alpha.1 ### Patch Changes diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 8db8d6cd..125d73d7 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -1,6 +1,6 @@ { "name": "@bnb-chain/canonical-bridge-widget", - "version": "0.5.0-alpha.1", + "version": "0.5.0-alpha.2", "description": "canonical bridge widget", "author": "bnb-chain", "private": false, From a5f5bd4399760add2bf5730a011d42e1e1c63bbe Mon Sep 17 00:00:00 2001 From: wenty22 Date: Thu, 14 Nov 2024 12:37:11 +0800 Subject: [PATCH 12/12] feat: Update walletkit --- common/config/rush/pnpm-lock.yaml | 10 +++++----- packages/canonical-bridge-widget/package.json | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common/config/rush/pnpm-lock.yaml b/common/config/rush/pnpm-lock.yaml index 989428b7..209977d7 100644 --- a/common/config/rush/pnpm-lock.yaml +++ b/common/config/rush/pnpm-lock.yaml @@ -304,8 +304,8 @@ importers: specifier: ~11.13.0 version: 11.13.0(@emotion/react@11.13.3(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0))(@types/react@18.3.8)(react@18.3.1)(supports-color@9.4.0) '@node-real/walletkit': - specifier: 2.4.1-alpha.1 - version: 2.4.1-alpha.1(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) + specifier: 2.4.1-alpha.2 + version: 2.4.1-alpha.2(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4) '@tanstack/react-query': specifier: ~5.50.1 version: 5.50.1(react@18.3.1) @@ -2993,8 +2993,8 @@ packages: viem: ^2 wagmi: ^2 - '@node-real/walletkit@2.4.1-alpha.1': - resolution: {integrity: sha512-1IBDDYb6b6EqytQxCqp5BdztMp3V2XR+numoyzdASYE8eoDEEEhfTv6fB8t11MFKzauIQGTWbVDHyM39hDlUxw==} + '@node-real/walletkit@2.4.1-alpha.2': + resolution: {integrity: sha512-0j3L7z8hWG26JyT6aUg6lEl9y2+rxRfpQHk61cQ68rL4UF58h4ZTkpNvENz6IW19adeLb4Yzcjzjf4wViS9aUA==} peerDependencies: '@tanstack/react-query': ^5 react: '>=17' @@ -15978,7 +15978,7 @@ snapshots: - utf-8-validate - zod - '@node-real/walletkit@2.4.1-alpha.1(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': + '@node-real/walletkit@2.4.1-alpha.2(@babel/runtime@7.25.0)(@react-native-async-storage/async-storage@1.24.0)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bs58@6.0.0)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tslib@2.7.0)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(wagmi@2.12.14(@react-native-async-storage/async-storage@1.24.0)(@tanstack/query-core@5.50.1)(@tanstack/react-query@5.50.1(react@18.3.1))(@types/react@18.3.8)(bufferutil@4.0.8)(encoding@0.1.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@3.29.4)(typescript@5.5.4)(utf-8-validate@5.0.9)(viem@2.21.14(bufferutil@4.0.8)(typescript@5.5.4)(utf-8-validate@5.0.9)(zod@3.22.4))(zod@3.22.4))(zod@3.22.4)': dependencies: '@metamask/jazzicon': 2.0.0 '@solana/wallet-adapter-react': 0.15.35(@solana/web3.js@1.95.4(bufferutil@4.0.8)(encoding@0.1.13)(utf-8-validate@5.0.9))(bs58@6.0.0)(react@18.3.1) diff --git a/packages/canonical-bridge-widget/package.json b/packages/canonical-bridge-widget/package.json index 125d73d7..68565c26 100644 --- a/packages/canonical-bridge-widget/package.json +++ b/packages/canonical-bridge-widget/package.json @@ -45,7 +45,7 @@ "@bnb-chain/space": "workspace:*", "@emotion/react": "~11.13.0", "@emotion/styled": "~11.13.0", - "@node-real/walletkit": "2.4.1-alpha.1", + "@node-real/walletkit": "2.4.1-alpha.2", "@tanstack/react-query": "~5.50.1", "@types/lodash": "~4.17.7", "@types/node": "^20",