From 22e56af812fd641bbd9e820daa3f7a3a1ebbf15a Mon Sep 17 00:00:00 2001 From: Gancho Radkov Date: Fri, 14 Nov 2025 14:30:11 +0200 Subject: [PATCH] refactor: implements `@web-examples/shared` --- advanced/dapps/react-dapp-v2/next.config.js | 16 + advanced/dapps/react-dapp-v2/package.json | 4 +- advanced/dapps/react-dapp-v2/pnpm-lock.yaml | 1559 ++++- .../dapps/react-dapp-v2/src/chains/bip122.ts | 44 +- .../dapps/react-dapp-v2/src/chains/cosmos.ts | 56 +- .../dapps/react-dapp-v2/src/chains/eip155.ts | 211 +- .../dapps/react-dapp-v2/src/chains/index.ts | 46 +- .../dapps/react-dapp-v2/src/chains/kadena.ts | 47 +- .../react-dapp-v2/src/chains/multiversx.ts | 55 +- .../dapps/react-dapp-v2/src/chains/near.ts | 35 +- .../react-dapp-v2/src/chains/polkadot.ts | 46 +- .../dapps/react-dapp-v2/src/chains/solana.ts | 57 +- .../dapps/react-dapp-v2/src/chains/stacks.ts | 42 +- .../dapps/react-dapp-v2/src/chains/sui.ts | 55 +- .../dapps/react-dapp-v2/src/chains/tezos.ts | 46 +- .../dapps/react-dapp-v2/src/chains/ton.ts | 40 +- .../dapps/react-dapp-v2/src/chains/tron.ts | 42 +- .../react-dapp-v2/src/constants/default.ts | 48 - .../src/contexts/ChainDataContext.tsx | 32 +- .../src/contexts/ClientContext.tsx | 5 +- .../src/contexts/JsonRpcContext.tsx | 263 +- .../dapps/react-dapp-v2/src/helpers/bip122.ts | 4 +- .../dapps/react-dapp-v2/src/helpers/index.ts | 11 +- .../dapps/react-dapp-v2/src/helpers/tx.ts | 2 +- .../dapps/react-dapp-v2/src/helpers/types.ts | 178 - .../react-dapp-v2/src/helpers/utilities.ts | 218 +- .../dapps/react-dapp-v2/src/pages/index.tsx | 56 +- .../walletconnect-pay-dapp/next-env.d.ts | 6 + .../wallets/react-wallet-v2/next.config.js | 1 + advanced/wallets/react-wallet-v2/package.json | 1 + .../wallets/react-wallet-v2/pnpm-lock.yaml | 180 + .../components/MultibridgeRequestModal.tsx | 2 +- .../src/components/RequestDetalilsCard.tsx | 16 +- .../src/components/SessionChainCard.tsx | 12 +- .../components/SessionProposalChainCard.tsx | 12 +- .../src/hooks/useSmartAccounts.ts | 2 +- .../hooks/useWalletConnectEventsManager.ts | 26 +- .../react-wallet-v2/src/lib/Bip122Lib.ts | 2 +- .../react-wallet-v2/src/lib/NearLib.ts | 2 +- .../react-wallet-v2/src/lib/SolanaLib.ts | 2 +- .../react-wallet-v2/src/lib/StacksLib.ts | 4 +- .../wallets/react-wallet-v2/src/lib/TonLib.ts | 2 +- .../react-wallet-v2/src/pages/index.tsx | 26 +- .../react-wallet-v2/src/utils/AuthUtil.ts | 2 +- .../src/utils/Bip122RequestHandlerUtil.ts | 4 +- .../src/utils/Bip122WalletUtil.ts | 2 +- .../src/utils/CosmosRequestHandler.ts | 2 +- .../src/utils/EIP155RequestHandlerUtil.ts | 2 +- .../src/utils/EIP5792RequestHandlerUtils.ts | 2 +- .../react-wallet-v2/src/utils/HelperUtil.ts | 20 +- .../src/utils/KadenaRequestHandlerUtil.ts | 2 +- .../src/utils/MultibridgeUtil.ts | 2 +- .../src/utils/MultiversxRequestHandlerUtil.ts | 2 +- .../src/utils/NearRequestHandlerUtil.ts | 2 +- .../src/utils/PaymentValidatorUtil.ts | 6 +- .../src/utils/PolkadotRequestHandlerUtil.ts | 2 +- .../src/utils/SolanaRequestHandlerUtil.ts | 2 +- .../src/utils/StacksRequestHandlerUtil.ts | 2 +- .../src/utils/StacksWalletUtil.ts | 2 +- .../src/utils/SuiRequestHandlerUtil.ts | 2 +- .../src/utils/TezosRequestHandlerUtil.ts | 2 +- .../src/utils/TonRequestHandlerUtil.ts | 2 +- .../src/utils/TransactionSimulatorUtil.ts | 2 +- .../src/utils/TronRequestHandlerUtil.ts | 2 +- .../src/utils/WalletCheckoutPaymentHandler.ts | 4 +- .../src/views/SessionAuthenticateModal.tsx | 2 +- .../src/views/SessionCheckoutModal.tsx | 2 +- .../views/SessionGetBip122AddressesModal.tsx | 2 +- .../src/views/SessionProposalModal.tsx | 26 +- .../src/views/SessionSignNearModal.tsx | 2 +- shared/.gitignore | 6 + shared/chains/bip122.ts | 137 + shared/chains/cosmos.ts | 51 + shared/chains/eip155.ts | 248 + shared/chains/index.ts | 188 + shared/chains/kadena.ts | 41 + shared/chains/multiversx.ts | 69 + shared/chains/near.ts | 52 + shared/chains/polkadot.ts | 57 + shared/chains/solana.ts | 136 + shared/chains/stacks.ts | 110 + shared/chains/sui.ts | 80 + shared/chains/tezos.ts | 54 + shared/chains/ton.ts | 94 + shared/chains/tron.ts | 63 + shared/constants/default.ts | 76 + shared/constants/index.ts | 1 + .../src => shared}/helpers/api.ts | 4 +- shared/helpers/bip122.ts | 89 + shared/helpers/crypto.ts | 130 + .../src => shared}/helpers/eip1271.ts | 5 + .../src => shared}/helpers/eip712.ts | 5 + shared/helpers/formatting.ts | 160 + shared/helpers/index.ts | 20 + shared/helpers/kadena.ts | 81 + .../src => shared}/helpers/namespaces.ts | 48 +- shared/helpers/solana.ts | 20 + shared/helpers/sui.ts | 26 + shared/helpers/ton.ts | 179 + shared/helpers/tron.ts | 22 + shared/helpers/tx.ts | 73 + shared/index.ts | 10 + shared/package.json | 76 + shared/pnpm-lock.yaml | 5267 +++++++++++++++++ shared/public/chain-logos/arbitrum.webp | Bin 0 -> 77042 bytes shared/public/chain-logos/base.webp | Bin 0 -> 48604 bytes shared/public/chain-logos/btc-testnet.png | Bin 0 -> 184002 bytes .../public/chain-logos/chain-placeholder.png | Bin 0 -> 483 bytes .../public/chain-logos/cosmos-cosmoshub-4.png | Bin 0 -> 5682 bytes shared/public/chain-logos/eip155-1.png | Bin 0 -> 4886 bytes shared/public/chain-logos/eip155-10.png | Bin 0 -> 9027 bytes shared/public/chain-logos/eip155-100.png | Bin 0 -> 323 bytes shared/public/chain-logos/eip155-137.png | Bin 0 -> 1762 bytes shared/public/chain-logos/eip155-324.svg | 1 + shared/public/chain-logos/eip155-420.png | Bin 0 -> 9026 bytes shared/public/chain-logos/eip155-42161.png | Bin 0 -> 44395 bytes shared/public/chain-logos/eip155-421611.png | Bin 0 -> 44399 bytes shared/public/chain-logos/eip155-42220.png | Bin 0 -> 13644 bytes shared/public/chain-logos/eip155-43113.png | Bin 0 -> 3601 bytes shared/public/chain-logos/eip155-44787.png | Bin 0 -> 13644 bytes shared/public/chain-logos/eip155-80001.png | Bin 0 -> 42863 bytes shared/public/chain-logos/erc20.svg | 1 + shared/public/chain-logos/eth.svg | 1 + shared/public/chain-logos/githubLogo.svg | 1 + shared/public/chain-logos/kadena.png | Bin 0 -> 48586 bytes shared/public/chain-logos/multiversx-1.svg | 1 + shared/public/chain-logos/multiversx_logo.svg | 1 + shared/public/chain-logos/near.png | Bin 0 -> 2879 bytes shared/public/chain-logos/polkadot.svg | 1 + shared/public/chain-logos/settings.svg | 1 + ...olana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png | Bin 0 -> 3213 bytes shared/public/chain-logos/solana_logo.png | Bin 0 -> 23601 bytes shared/public/chain-logos/stacks.png | Bin 0 -> 3472 bytes shared/public/chain-logos/sui.png | Bin 0 -> 3301 bytes shared/public/chain-logos/tezos.svg | 1 + shared/public/chain-logos/ton.png | Bin 0 -> 4204 bytes shared/public/chain-logos/tron.png | Bin 0 -> 3998 bytes shared/public/chain-logos/walletconnect.png | Bin 0 -> 26031 bytes shared/public/chain-logos/westend-logo.svg | 1 + shared/public/chain-logos/westend.svg | 1 + shared/tsconfig.json | 32 + shared/types/index.ts | 1 + shared/types/types.ts | 158 + shared/wallets/Bip122Lib.ts | 439 ++ shared/wallets/CosmosLib.ts | 65 + shared/wallets/EIP155Lib.ts | 62 + shared/wallets/KadenaLib.ts | 48 + shared/wallets/MultiversxLib.ts | 90 + shared/wallets/NearLib.ts | 423 ++ shared/wallets/PolkadotLib.ts | 65 + shared/wallets/SolanaLib.ts | 271 + shared/wallets/StacksLib.ts | 202 + shared/wallets/SuiLib.ts | 143 + shared/wallets/TezosLib.ts | 109 + shared/wallets/TonLib.ts | 211 + shared/wallets/TronLib.ts | 57 + shared/wallets/index.ts | 20 + 157 files changed, 12065 insertions(+), 1638 deletions(-) delete mode 100644 advanced/dapps/react-dapp-v2/src/helpers/types.ts create mode 100644 advanced/dapps/walletconnect-pay-dapp/next-env.d.ts create mode 100644 shared/.gitignore create mode 100644 shared/chains/bip122.ts create mode 100644 shared/chains/cosmos.ts create mode 100644 shared/chains/eip155.ts create mode 100644 shared/chains/index.ts create mode 100644 shared/chains/kadena.ts create mode 100644 shared/chains/multiversx.ts create mode 100644 shared/chains/near.ts create mode 100644 shared/chains/polkadot.ts create mode 100644 shared/chains/solana.ts create mode 100644 shared/chains/stacks.ts create mode 100644 shared/chains/sui.ts create mode 100644 shared/chains/tezos.ts create mode 100644 shared/chains/ton.ts create mode 100644 shared/chains/tron.ts create mode 100644 shared/constants/default.ts create mode 100644 shared/constants/index.ts rename {advanced/dapps/react-dapp-v2/src => shared}/helpers/api.ts (98%) create mode 100644 shared/helpers/bip122.ts create mode 100644 shared/helpers/crypto.ts rename {advanced/dapps/react-dapp-v2/src => shared}/helpers/eip1271.ts (92%) rename {advanced/dapps/react-dapp-v2/src => shared}/helpers/eip712.ts (93%) create mode 100644 shared/helpers/formatting.ts create mode 100644 shared/helpers/index.ts create mode 100644 shared/helpers/kadena.ts rename {advanced/dapps/react-dapp-v2/src => shared}/helpers/namespaces.ts (75%) create mode 100644 shared/helpers/solana.ts create mode 100644 shared/helpers/sui.ts create mode 100644 shared/helpers/ton.ts create mode 100644 shared/helpers/tron.ts create mode 100644 shared/helpers/tx.ts create mode 100644 shared/index.ts create mode 100644 shared/package.json create mode 100644 shared/pnpm-lock.yaml create mode 100644 shared/public/chain-logos/arbitrum.webp create mode 100644 shared/public/chain-logos/base.webp create mode 100644 shared/public/chain-logos/btc-testnet.png create mode 100644 shared/public/chain-logos/chain-placeholder.png create mode 100644 shared/public/chain-logos/cosmos-cosmoshub-4.png create mode 100644 shared/public/chain-logos/eip155-1.png create mode 100644 shared/public/chain-logos/eip155-10.png create mode 100644 shared/public/chain-logos/eip155-100.png create mode 100644 shared/public/chain-logos/eip155-137.png create mode 100644 shared/public/chain-logos/eip155-324.svg create mode 100644 shared/public/chain-logos/eip155-420.png create mode 100644 shared/public/chain-logos/eip155-42161.png create mode 100644 shared/public/chain-logos/eip155-421611.png create mode 100644 shared/public/chain-logos/eip155-42220.png create mode 100644 shared/public/chain-logos/eip155-43113.png create mode 100644 shared/public/chain-logos/eip155-44787.png create mode 100644 shared/public/chain-logos/eip155-80001.png create mode 100644 shared/public/chain-logos/erc20.svg create mode 100644 shared/public/chain-logos/eth.svg create mode 100644 shared/public/chain-logos/githubLogo.svg create mode 100644 shared/public/chain-logos/kadena.png create mode 100644 shared/public/chain-logos/multiversx-1.svg create mode 100644 shared/public/chain-logos/multiversx_logo.svg create mode 100644 shared/public/chain-logos/near.png create mode 100644 shared/public/chain-logos/polkadot.svg create mode 100644 shared/public/chain-logos/settings.svg create mode 100644 shared/public/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png create mode 100644 shared/public/chain-logos/solana_logo.png create mode 100644 shared/public/chain-logos/stacks.png create mode 100644 shared/public/chain-logos/sui.png create mode 100644 shared/public/chain-logos/tezos.svg create mode 100644 shared/public/chain-logos/ton.png create mode 100644 shared/public/chain-logos/tron.png create mode 100644 shared/public/chain-logos/walletconnect.png create mode 100644 shared/public/chain-logos/westend-logo.svg create mode 100644 shared/public/chain-logos/westend.svg create mode 100644 shared/tsconfig.json create mode 100644 shared/types/index.ts create mode 100644 shared/types/types.ts create mode 100644 shared/wallets/Bip122Lib.ts create mode 100644 shared/wallets/CosmosLib.ts create mode 100644 shared/wallets/EIP155Lib.ts create mode 100644 shared/wallets/KadenaLib.ts create mode 100644 shared/wallets/MultiversxLib.ts create mode 100644 shared/wallets/NearLib.ts create mode 100644 shared/wallets/PolkadotLib.ts create mode 100644 shared/wallets/SolanaLib.ts create mode 100644 shared/wallets/StacksLib.ts create mode 100644 shared/wallets/SuiLib.ts create mode 100644 shared/wallets/TezosLib.ts create mode 100644 shared/wallets/TonLib.ts create mode 100644 shared/wallets/TronLib.ts create mode 100644 shared/wallets/index.ts diff --git a/advanced/dapps/react-dapp-v2/next.config.js b/advanced/dapps/react-dapp-v2/next.config.js index 0722aae47..f0bf773ca 100644 --- a/advanced/dapps/react-dapp-v2/next.config.js +++ b/advanced/dapps/react-dapp-v2/next.config.js @@ -1,13 +1,29 @@ +const path = require("path"); + /** @type {import('next').NextConfig} */ const nextConfig = { reactStrictMode: true, distDir: "build", + transpilePackages: ["@web-examples/shared"], webpack(config) { config.resolve.fallback = { ...config.resolve.fallback, fs: false, }; + // Resolve @web-examples/shared to TypeScript source files for direct transpilation + const sharedPath = path.resolve(__dirname, "../../../shared"); + config.resolve.alias = { + ...config.resolve.alias, + "@web-examples/shared": sharedPath, + }; + + // Enable WebAssembly support for packages like tiny-secp256k1 + config.experiments = { + ...config.experiments, + asyncWebAssembly: true, + }; + return config; }, }; diff --git a/advanced/dapps/react-dapp-v2/package.json b/advanced/dapps/react-dapp-v2/package.json index 52d82a3e0..56f58713c 100644 --- a/advanced/dapps/react-dapp-v2/package.json +++ b/advanced/dapps/react-dapp-v2/package.json @@ -8,9 +8,11 @@ "start": "next start", "lint": "next lint", "prettier": "prettier --check '**/*.{js,ts,jsx,tsx}'", - "prettier:write": "prettier --write '**/*.{js,ts,jsx,tsx}'" + "prettier:write": "prettier --write '**/*.{js,ts,jsx,tsx}'", + "postinstall": "cd ../../../shared && pnpm install && pnpm build || echo 'Warning: Shared package postinstall failed'" }, "dependencies": { + "@web-examples/shared": "file:../../../shared", "@celo/wallet-base": "^5.1.1", "@ethereumjs/tx": "^3.5.0", "@kadena/client": "^0.5.0", diff --git a/advanced/dapps/react-dapp-v2/pnpm-lock.yaml b/advanced/dapps/react-dapp-v2/pnpm-lock.yaml index 4bd34bbea..1de231fc3 100644 --- a/advanced/dapps/react-dapp-v2/pnpm-lock.yaml +++ b/advanced/dapps/react-dapp-v2/pnpm-lock.yaml @@ -129,6 +129,9 @@ importers: '@walletconnect/utils': specifier: 2.22.4-canary-auth-3 version: 2.22.4-canary-auth-3(typescript@5.8.3)(zod@3.24.4) + '@web-examples/shared': + specifier: file:../../../shared + version: file:../../../shared(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4) axios: specifier: '>=1.8.2' version: 1.8.3 @@ -1011,21 +1014,43 @@ packages: '@cosmjs/amino@0.25.6': resolution: {integrity: sha512-9dXN2W7LHjDtJUGNsQ9ok0DfxeN3ca/TXnxCR3Ikh/5YqBqxI8Gel1J9PQO9L6EheYyh045Wff4bsMaLjyEeqQ==} + '@cosmjs/amino@0.32.3': + resolution: {integrity: sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==} + '@cosmjs/crypto@0.25.6': resolution: {integrity: sha512-ec+YcQLrg2ibcxtNrh4FqQnG9kG9IE/Aik2NH6+OXQdFU/qFuBTxSFcKDgzzBOChwlkXwydllM9Jjbp+dgIzRw==} + '@cosmjs/crypto@0.32.4': + resolution: {integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==} + deprecated: This uses elliptic for cryptographic operations, which contains several security-relevant bugs. To what degree this affects your application is something you need to carefully investigate. See https://github.com/cosmos/cosmjs/issues/1708 for further pointers. Starting with version 0.34.0 the cryptographic library has been replaced. However, private keys might still be at risk. + '@cosmjs/encoding@0.25.6': resolution: {integrity: sha512-0imUOB8XkUstI216uznPaX1hqgvLQ2Xso3zJj5IV5oJuNlsfDj9nt/iQxXWbJuettc6gvrFfpf+Vw2vBZSZ75g==} + '@cosmjs/encoding@0.32.3': + resolution: {integrity: sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==} + + '@cosmjs/encoding@0.32.4': + resolution: {integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==} + '@cosmjs/math@0.25.6': resolution: {integrity: sha512-Fmyc9FJ8KMU34n7rdapMJrT/8rx5WhMw2F7WLBu7AVLcBh0yWsXIcMSJCoPHTOnMIiABjXsnrrwEaLrOOBfu6A==} + '@cosmjs/math@0.32.4': + resolution: {integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==} + '@cosmjs/proto-signing@0.25.6': resolution: {integrity: sha512-JpQ+Vnv9s6i3x8f3Jo0lJZ3VMnj3R5sMgX+8ti1LtB7qEYRR85qbDrEG9hDGIKqJJabvrAuCHnO6hYi0vJEJHA==} + '@cosmjs/proto-signing@0.32.3': + resolution: {integrity: sha512-kSZ0ZUY0DwcRT0NcIn2HkadH4NKlwjfZgbLj1ABwh/4l0RgeT84QCscZCu63tJYq3K6auwqTiZSZERwlO4/nbg==} + '@cosmjs/utils@0.25.6': resolution: {integrity: sha512-ofOYiuxVKNo238vCPPlaDzqPXy2AQ/5/nashBo5rvPZJkxt9LciGfUEQWPCOb1BIJDNx2Dzu0z4XCf/dwzl0Dg==} + '@cosmjs/utils@0.32.4': + resolution: {integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==} + '@csstools/convert-colors@1.4.0': resolution: {integrity: sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==} engines: {node: '>=4.0.0'} @@ -1113,93 +1138,183 @@ packages: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + '@ethersproject/abi@5.8.0': resolution: {integrity: sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==} + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + '@ethersproject/abstract-provider@5.8.0': resolution: {integrity: sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==} + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + '@ethersproject/abstract-signer@5.8.0': resolution: {integrity: sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==} + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + '@ethersproject/address@5.8.0': resolution: {integrity: sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==} + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + '@ethersproject/base64@5.8.0': resolution: {integrity: sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==} + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + '@ethersproject/basex@5.8.0': resolution: {integrity: sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==} + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + '@ethersproject/bignumber@5.8.0': resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==} + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + '@ethersproject/bytes@5.8.0': resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==} + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + '@ethersproject/constants@5.8.0': resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + '@ethersproject/contracts@5.8.0': resolution: {integrity: sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==} + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + '@ethersproject/hash@5.8.0': resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==} + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + '@ethersproject/hdnode@5.8.0': resolution: {integrity: sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==} + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + '@ethersproject/json-wallets@5.8.0': resolution: {integrity: sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==} + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + '@ethersproject/keccak256@5.8.0': resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + '@ethersproject/logger@5.8.0': resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==} + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + '@ethersproject/networks@5.8.0': resolution: {integrity: sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==} + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + '@ethersproject/pbkdf2@5.8.0': resolution: {integrity: sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==} + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + '@ethersproject/properties@5.8.0': resolution: {integrity: sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==} + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + '@ethersproject/providers@5.8.0': resolution: {integrity: sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==} + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + '@ethersproject/random@5.8.0': resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==} + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + '@ethersproject/rlp@5.8.0': resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + '@ethersproject/sha2@5.8.0': resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==} + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + '@ethersproject/signing-key@5.8.0': resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==} + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + '@ethersproject/solidity@5.8.0': resolution: {integrity: sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==} + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + '@ethersproject/strings@5.8.0': resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + '@ethersproject/transactions@5.8.0': resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==} + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + '@ethersproject/units@5.8.0': resolution: {integrity: sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==} + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + '@ethersproject/wallet@5.8.0': resolution: {integrity: sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==} + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + '@ethersproject/web@5.8.0': resolution: {integrity: sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==} + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + '@ethersproject/wordlists@5.8.0': resolution: {integrity: sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==} @@ -1622,6 +1737,9 @@ packages: '@noble/secp256k1@2.2.3': resolution: {integrity: sha512-l7r5oEQym9Us7EAigzg30/PQAvynhMt2uoYtT3t26eGDVm9Yii5mZ5jWSWmZ/oSIR2Et0xfc6DXrG0bZ787V3w==} + '@noble/secp256k1@3.0.0': + resolution: {integrity: sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1676,10 +1794,33 @@ packages: webpack-plugin-serve: optional: true + '@polkadot/keyring@10.4.2': + resolution: {integrity: sha512-7iHhJuXaHrRTG6cJDbZE9G+c1ts1dujp0qbO4RfAPmT7YUvphHvAtCKueN9UKPz5+TYDL+rP/jDEaSKU8jl/qQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2 + '@polkadot/networks@10.4.2': resolution: {integrity: sha512-FAh/znrEvWBiA/LbcT5GXHsCFUl//y9KqxLghSr/CreAmAergiJNT0MVUezC7Y36nkATgmsr4ylFwIxhVtuuCw==} engines: {node: '>=14.0.0'} + '@polkadot/types-augment@9.14.2': + resolution: {integrity: sha512-WO9d7RJufUeY3iFgt2Wz762kOu1tjEiGBR5TT4AHtpEchVHUeosVTrN9eycC+BhleqYu52CocKz6u3qCT/jKLg==} + engines: {node: '>=14.0.0'} + + '@polkadot/types-codec@9.14.2': + resolution: {integrity: sha512-AJ4XF7W1no4PENLBRU955V6gDxJw0h++EN3YoDgThozZ0sj3OxyFupKgNBZcZb2V23H8JxQozzIad8k+nJbO1w==} + engines: {node: '>=14.0.0'} + + '@polkadot/types-create@9.14.2': + resolution: {integrity: sha512-nSnKpBierlmGBQT8r6/SHf6uamBIzk4WmdMsAsR4uJKJF1PtbIqx2W5PY91xWSiMSNMzjkbCppHkwaDAMwLGaw==} + engines: {node: '>=14.0.0'} + + '@polkadot/types@9.14.2': + resolution: {integrity: sha512-hGLddTiJbvowhhUZJ3k+olmmBc1KAjWIQxujIUIYASih8FQ3/YJDKxaofGOzh0VygOKW3jxQBN2VZPofyDP9KQ==} + engines: {node: '>=14.0.0'} + '@polkadot/util-crypto@10.4.2': resolution: {integrity: sha512-RxZvF7C4+EF3fzQv8hZOLrYCBq5+wA+2LWv98nECkroChY3C2ZZvyWDqn8+aonNULt4dCVTWDZM0QIY6y4LUAQ==} engines: {node: '>=14.0.0'} @@ -1935,6 +2076,9 @@ packages: '@scure/base@1.2.6': resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + '@scure/bip32@1.1.3': + resolution: {integrity: sha512-dSH3+LCWONlSNQuF34xZrG6Xas7tp2jSSqHb/pMfXWM0vKE4JZOtK3uJfoWouUVW5IGlls75HkXmYLldZ8ySgQ==} + '@scure/bip32@1.1.5': resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} @@ -1944,6 +2088,9 @@ packages: '@scure/bip32@1.7.0': resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + '@scure/bip39@1.1.0': + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + '@scure/bip39@1.1.1': resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} @@ -1963,22 +2110,178 @@ packages: '@sinonjs/fake-timers@6.0.1': resolution: {integrity: sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==} + '@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-core@2.3.0': + resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@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-numbers@2.3.0': + resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@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/errors@2.3.0': + resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.3.3' + + '@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.14': + resolution: {integrity: sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.5 + '@solana/web3.js@1.98.0': resolution: {integrity: sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==} + '@solana/web3.js@1.98.2': + resolution: {integrity: sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/blake2b@1.0.1': + resolution: {integrity: sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/nacl@1.0.4': + resolution: {integrity: sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==} + + '@stablelib/pbkdf2@1.0.1': + resolution: {integrity: sha512-d5jwK6jW1DkMyzqY8D1Io+fRXcsUVr95lk5LKX9ghaUdAITTc1ZL0bff+R0IrwSixbHluxhnivG7vDw59AZ/Nw==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/salsa20@1.0.2': + resolution: {integrity: sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@stablelib/xsalsa20@1.0.2': + resolution: {integrity: sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==} + + '@stacks/auth@7.2.0': + resolution: {integrity: sha512-u+Ky4CMQWFTPI6Au3VFcW74nSIA4Zb8YjsbOkcv0q9E6LiALyK4gozpKTxKvfW3/z1ER3z1Ky9uH/s4zY59rvg==} + '@stacks/common@7.0.2': resolution: {integrity: sha512-+RSecHdkxOtswmE4tDDoZlYEuULpnTQVeDIG5eZ32opK8cFxf4EugAcK9CsIsHx/Se1yTEaQ21WGATmJGK84lQ==} + '@stacks/encryption@7.2.0': + resolution: {integrity: sha512-XDgb5GuR2kURC0YJWo70xnWPKeizBg/qpGPDApBVLFgaOqFL4FdFmvxHXU5lVbFR3W+mtdxPHedWtQpxxOBlMQ==} + '@stacks/network@7.0.2': resolution: {integrity: sha512-XzHnoWqku/jRrTgMXhmh3c+I0O9vDH24KlhzGDZtBu+8CGGyHNPAZzGwvoUShonMXrXjEnfO9IYQwV5aJhfv6g==} + '@stacks/network@7.2.0': + resolution: {integrity: sha512-AkLougCF2RLbK97TtISZxAhF3cE757XMXWOGKvEFWNauiQ5/bYyI9W5jZypG3yI/AyYIo04NKoFWWTnpJcn1iA==} + + '@stacks/profile@7.2.0': + resolution: {integrity: sha512-pzPgn/NpmjA7TdeA5U9OjXLwBNqGPrjWhsMy/ZC3iUdnIUvthgWwlPpydgQOTJaRqaDMdY24hFgT+og6QbyQQA==} + + '@stacks/storage@7.2.0': + resolution: {integrity: sha512-aBfHhfhIom/xMseJSArH0xWqOAhN7waY255s4PfxmRdCsE6GKeXxIdZvgNYcHXrSiIPH3spk00UDA4+8xiRAQA==} + '@stacks/transactions@7.0.6': resolution: {integrity: sha512-qRGo4tNwOh+avUv/u4JGqqUWQ8xW/iUWtJV0o3BxpMyRxqDXmj+m+yeAEVYf9jRDouOo+NaWmwtRmWc0URZPdw==} + '@stacks/transactions@7.2.0': + resolution: {integrity: sha512-U7wjlxM9Q+408ihRsv5mlKRslXGt2WCShKi1lduiqf5+dBSRGdVi8ttCIEckSsg3ulCVF3EHTQF3LZgw4kwKlQ==} + + '@stacks/wallet-sdk@7.2.0': + resolution: {integrity: sha512-w4UmIaulB03ki0eosWA2ju4vXtF1N+n+nX+/GuV8ZW3rbZ7xeRCv16IzZZL6TspMcaUKyZKTVB2uximqBNbqPQ==} + '@substrate/ss58-registry@1.51.0': resolution: {integrity: sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==} @@ -2058,6 +2361,56 @@ packages: resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} engines: {node: '>=14.16'} + '@taquito/axios-fetch-adapter@https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6': + resolution: {tarball: https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6} + version: 0.3.1 + peerDependencies: + axios: '>=1.8.2' + + '@taquito/core@23.0.3': + resolution: {integrity: sha512-ivCR0kxMzJ53spPw7xm/wMMYI5rP7ADurq+us6R2Z8t5jwkCtXWBAqpvwMrJeaoNjjJvTaOXf0khLg8WsdDKgg==} + engines: {node: '>=18'} + + '@taquito/http-utils@15.1.0': + resolution: {integrity: sha512-Uug5hN0XvMlFFN+rxSMW+Y9Z8pw5uqHRDZC83eLOBSijbpMo+ScG/2nKkC8MUUrqLaLeHru1HD4kT5DHc1fI+A==} + engines: {node: '>=6.0.0'} + + '@taquito/local-forging@15.1.0': + resolution: {integrity: sha512-ib/2RqtxQQC9SjyTB9T5OSc5yUx9GUSdMOA4dmtiiFcN2+AG+aw7ixn6Hjt9Td8ZIOPt9H6HkyTypKrX7+cENw==} + engines: {node: '>=6.0.0'} + + '@taquito/local-forging@23.0.3': + resolution: {integrity: sha512-xT5h+rutSJSI0QfxZ1M1FiDXcQuFDqSwRDhdYx28twYGFAhsGvGfknXmtN3F5SiO9hkGXL7dZR5w8NpIdk8yEw==} + engines: {node: '>=18'} + + '@taquito/michel-codec@15.1.0': + resolution: {integrity: sha512-wKucIhs7vhaq5H+YSF2f6Qu9+g+QiEL6MPc5ROpxBrXJTeKSwBOEIpfqcKfkfMuecJyHZJW3glNfkpAVTCgkxg==} + engines: {node: '>=6.0.0'} + + '@taquito/michelson-encoder@15.1.0': + resolution: {integrity: sha512-uQMEu3g+8WcYb5ZV6+XGvoWJhKoNxU0F2RqodLJB7UxQ1rI/OMa+VlxSLMt4niIxpKXqnO9j4tD7Y4mPC3ufaA==} + engines: {node: '>=6.0.0'} + + '@taquito/rpc@15.1.0': + resolution: {integrity: sha512-OeQA8QwT+s6IUmLaF5yeWruPYzWi/DVCA3kl+AaQ8IFfCMzmAW/MszbbNkJSzHpY2p4jPBwdRNxg3qeJdL482A==} + engines: {node: '>=6.0.0'} + + '@taquito/signer@15.1.0': + resolution: {integrity: sha512-VP7hS8cYQ6cMerVkbD5X3AqpoIXvh72xNuv3++R4reEjdl+E3VWs1CZZGnJj6yzlFV21SrdGKSILx8Rl3Ql4DA==} + engines: {node: '>=6.0.0'} + + '@taquito/taquito@15.1.0': + resolution: {integrity: sha512-2AXWeNoXsmMOSkJVXtXjOlJkS+hKXITaSybMA6nJuS1YWY4e7iAr678Y6UgVEHRJxeGohX4R4Ww12Ymr3Sfedg==} + engines: {node: '>=6.0.0'} + + '@taquito/utils@15.1.0': + resolution: {integrity: sha512-lqVThoFMmOKPg9jyREr4A63cpeckf5esCwOyOAW3sm+yCxD9s5khnBPtH8s52cRVnChFdwk/eqmADka9gat5hw==} + engines: {node: '>=6.0.0'} + + '@taquito/utils@23.0.3': + resolution: {integrity: sha512-7ef9V8d1z++wCODo03LlvGq6D3P8Gr0nc93nbzDNaKWS+wJfS7lNz2tlYSsVkvBmVOt9KVdFcVLZ1/heySfuOw==} + engines: {node: '>=18'} + '@ton/core@0.61.0': resolution: {integrity: sha512-0qyVfP2dDue2bq80ydXggo2MlufcmzuFk6G94qRrZxvyQ3NSe4UeBTeRf1gQmN7tywgTsX2gS61e4yvJrlUu4Q==} peerDependencies: @@ -2100,6 +2453,9 @@ packages: '@types/bn.js@5.1.6': resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} + '@types/bs58check@2.1.2': + resolution: {integrity: sha512-xpXaQlOIY1KoXlA/ytHGHpEIU87PJt+g9SH7nC6HdCgaBwT2IEZIwBMHbjuX6BpnfbiUMlmwqurdLDwXpcdmSA==} + '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} @@ -2547,6 +2903,9 @@ packages: '@walletconnect/window-metadata@1.0.1': resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + '@web-examples/shared@file:../../../shared': + resolution: {directory: ../../../shared, type: directory} + '@webassemblyjs/ast@1.9.0': resolution: {integrity: sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==} @@ -2877,6 +3236,9 @@ packages: async-limiter@1.0.1: resolution: {integrity: sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==} + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -3075,6 +3437,13 @@ packages: resolution: {integrity: sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ==} engines: {node: '>=8.0.0'} + bip32@4.0.0: + resolution: {integrity: sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==} + engines: {node: '>=6.0.0'} + + bip39-light@1.0.7: + resolution: {integrity: sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q==} + bip39@3.0.2: resolution: {integrity: sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==} @@ -3113,6 +3482,9 @@ packages: bn.js@4.12.1: resolution: {integrity: sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==} + bn.js@5.2.0: + resolution: {integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==} + bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} @@ -3313,6 +3685,9 @@ packages: caniuse-lite@1.0.30001706: resolution: {integrity: sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==} + capability@0.2.5: + resolution: {integrity: sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==} + capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} engines: {node: 6.* || 8.* || >= 10.*} @@ -3336,6 +3711,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -3440,6 +3819,14 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} @@ -3558,6 +3945,9 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmjs-types@0.9.0: + resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} + cosmos-wallet@1.2.0: resolution: {integrity: sha512-lMEpNhjN6FHU6c8l/lYi1hWU/74bOlTmo3pz0mwVpCHjNSe5u7sZCO7j0dndd3oV0tM8tj/u3eJa4NgZxG9a0Q==} @@ -4001,9 +4391,16 @@ packages: ecc-jsbn@0.1.2: resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + ecpair@2.1.0: + resolution: {integrity: sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw==} + engines: {node: '>=8.0.0'} + ed25519-hd-key@1.1.2: resolution: {integrity: sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA==} + ed25519-hd-key@1.3.0: + resolution: {integrity: sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg==} + ed2curve@0.3.0: resolution: {integrity: sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==} @@ -4018,6 +4415,9 @@ packages: electron-to-chromium@1.5.118: resolution: {integrity: sha512-yNDUus0iultYyVoEFLnQeei7LOQkL8wg8GQpkPCRrOlJXlcCwa6eGKZkxQ9ciHsqZyYbj8Jd94X1CTPzGm+uIA==} + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.6.1: resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} @@ -4069,6 +4469,9 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-polyfill@0.1.3: + resolution: {integrity: sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==} + error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} @@ -4403,6 +4806,10 @@ packages: resolution: {integrity: sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A==} deprecated: Deprecated in favor of '@metamask/eth-sig-util' + eth-sig-util@3.0.1: + resolution: {integrity: sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==} + deprecated: Deprecated in favor of '@metamask/eth-sig-util' + ethereum-bloom-filters@1.2.0: resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} @@ -4429,6 +4836,9 @@ packages: resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} engines: {node: '>=10.0.0'} + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + ethers@5.8.0: resolution: {integrity: sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==} @@ -4551,9 +4961,15 @@ packages: fast-stable-stringify@1.0.0: resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + fast-text-encoding@1.0.6: + resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} + fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -5695,6 +6111,9 @@ packages: resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} engines: {node: '>=10'} + js-sha256@0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + js-sha3@0.5.7: resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} @@ -5791,6 +6210,9 @@ packages: resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} engines: {node: '>=0.10.0'} + jsontokens@4.0.1: + resolution: {integrity: sha512-+MO415LEN6M+3FGsRz4wU20g7N2JA+2j9d9+pGaNJHviG4L8N0qzavGyENw6fJqsq9CcrHOIL6iWX5yeTZ86+Q==} + jsprim@1.4.2: resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==} engines: {node: '>=0.6.0'} @@ -5857,6 +6279,12 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + libsodium-sumo@0.7.15: + resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + + libsodium-wrappers-sumo@0.7.15: + resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + libsodium-wrappers@0.7.15: resolution: {integrity: sha512-E4anqJQwcfiC6+Yrl01C1m8p99wEhLmJSs0VQqST66SbQXXBoaJY0pF4BNjRYa/sOQAxx6lXAaAFIlx+15tXJQ==} @@ -6230,6 +6658,9 @@ packages: near-abi@0.2.0: resolution: {integrity: sha512-kCwSf/3fraPU2zENK18sh+kKG4uKbEUEQdyWQkmW8ZofmLarObIz2+zAYjA1teDZLeMvEQew3UysnPDXgjneaA==} + near-api-js@0.45.1: + resolution: {integrity: sha512-QyPO/vjvMFlcMO1DCpsqzmnSqPIyHsjK1Qi4B5ZR1cJCIWMkqugDF/TDf8FVQ85pmlcYeYwfiTqKanKz+3IG0A==} + near-api-js@6.0.1: resolution: {integrity: sha512-L9kwiSrGI9e8QcECi/TGrNRWJfKymwcboKXMFk/7qxEhaZdIdMvAJ6mVx8rETAM2s7iaxidtnF4gN9nZRNCAHw==} peerDependencies: @@ -6244,6 +6675,12 @@ packages: '@near-js/types': ^2.0.1 '@near-js/utils': ^2.0.1 + near-hd-key@1.2.1: + resolution: {integrity: sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg==} + + near-seed-phrase@0.2.1: + resolution: {integrity: sha512-feMuums+kVL3LSuPcP4ld07xHCb2mu6z48SGfP3W+8tl1Qm5xIcjiQzY2IDPBvFgajRDxWSb8GzsRHoInazByw==} + negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} @@ -6393,6 +6830,9 @@ packages: nwsapi@2.2.18: resolution: {integrity: sha512-p1TRH/edngVEHVbwqWnxUViEmq5znDvyB+Sik5cmuLpGOIfDf/39zLiq3swPF8Vakqn+gvNiOQAZu8djYlQILA==} + o3@1.0.3: + resolution: {integrity: sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==} + oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} @@ -7498,6 +7938,10 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + ripemd160-min@0.0.6: + resolution: {integrity: sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==} + engines: {node: '>=8'} + ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} @@ -7546,6 +7990,13 @@ packages: run-queue@1.0.3: resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==} + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + safe-array-concat@1.1.3: resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==} engines: {node: '>=0.4'} @@ -7606,6 +8057,9 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + schema-inspector@2.1.0: + resolution: {integrity: sha512-3bmQVhbA01/EW8cZin4vIpqlpNU2SIy4BhKCfCgogJ3T/L76dLx3QAE+++4o+dNT33sa+SN9vOJL7iHiHFjiNg==} + schema-utils@1.0.0: resolution: {integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==} engines: {node: '>= 4'} @@ -8204,6 +8658,10 @@ packages: timsort@0.3.0: resolution: {integrity: sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==} + tiny-secp256k1@2.2.4: + resolution: {integrity: sha512-FoDTcToPqZE454Q04hH9o2EhxWsm7pOSpicyHkgTwKhdKWdsTUuqfP5MLq3g+VjAtl2vSx6JpXGdwA2qpYkI0Q==} + engines: {node: '>=14.0.0'} + tinyglobby@0.2.12: resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} engines: {node: '>=12.0.0'} @@ -8358,6 +8816,9 @@ packages: typedarray-to-buffer@3.1.5: resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedarray-to-buffer@4.0.0: + resolution: {integrity: sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==} + typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} @@ -8369,9 +8830,16 @@ packages: engines: {node: '>=14.17'} hasBin: true + u3@0.1.1: + resolution: {integrity: sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==} + ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uint8array-tools@0.0.7: + resolution: {integrity: sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ==} + engines: {node: '>=14.0.0'} + uint8arrays@3.1.1: resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} @@ -8866,6 +9334,9 @@ packages: engines: {node: '>= 8'} hasBin: true + wif@2.0.6: + resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -8966,6 +9437,18 @@ packages: utf-8-validate: optional: true + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + ws@7.5.10: resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} @@ -9097,6 +9580,10 @@ packages: zod@3.24.4: resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} + zone-file@2.0.0-beta.3: + resolution: {integrity: sha512-6tE3PSRcpN5lbTTLlkLez40WkNPc9vw/u1J2j6DBiy0jcVX48nCkWrx2EC+bWHqC2SLp069Xw4AdnYn/qp/W5g==} + engines: {node: '>=10'} + snapshots: '@0no-co/graphql.web@1.1.2(graphql@16.11.0)': @@ -10682,6 +11169,13 @@ snapshots: '@cosmjs/math': 0.25.6 '@cosmjs/utils': 0.25.6 + '@cosmjs/amino@0.32.3': + dependencies: + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + '@cosmjs/crypto@0.25.6': dependencies: '@cosmjs/encoding': 0.25.6 @@ -10695,24 +11189,61 @@ snapshots: ripemd160: 2.0.2 sha.js: 2.4.11 + '@cosmjs/crypto@0.32.4': + dependencies: + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + '@noble/hashes': 1.8.0 + bn.js: 5.2.1 + elliptic: 6.6.1 + libsodium-wrappers-sumo: 0.7.15 + '@cosmjs/encoding@0.25.6': dependencies: base64-js: 1.5.1 bech32: 1.1.4 readonly-date: 1.0.0 + '@cosmjs/encoding@0.32.3': + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + + '@cosmjs/encoding@0.32.4': + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + '@cosmjs/math@0.25.6': dependencies: bn.js: 4.12.1 + '@cosmjs/math@0.32.4': + dependencies: + bn.js: 5.2.1 + '@cosmjs/proto-signing@0.25.6': dependencies: '@cosmjs/amino': 0.25.6 long: 4.0.0 protobufjs: 7.2.4 + '@cosmjs/proto-signing@0.32.3': + dependencies: + '@cosmjs/amino': 0.32.3 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + cosmjs-types: 0.9.0 + '@cosmjs/utils@0.25.6': {} + '@cosmjs/utils@0.32.4': {} + '@csstools/convert-colors@1.4.0': {} '@csstools/normalize.css@10.1.0': {} @@ -10811,6 +11342,18 @@ snapshots: ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 + '@ethersproject/abi@5.7.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/abi@5.8.0': dependencies: '@ethersproject/address': 5.8.0 @@ -10823,6 +11366,16 @@ snapshots: '@ethersproject/properties': 5.8.0 '@ethersproject/strings': 5.8.0 + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + '@ethersproject/abstract-provider@5.8.0': dependencies: '@ethersproject/bignumber': 5.8.0 @@ -10833,6 +11386,14 @@ snapshots: '@ethersproject/transactions': 5.8.0 '@ethersproject/web': 5.8.0 + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/abstract-signer@5.8.0': dependencies: '@ethersproject/abstract-provider': 5.8.0 @@ -10841,6 +11402,14 @@ snapshots: '@ethersproject/logger': 5.8.0 '@ethersproject/properties': 5.8.0 + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/address@5.8.0': dependencies: '@ethersproject/bignumber': 5.8.0 @@ -10849,29 +11418,65 @@ snapshots: '@ethersproject/logger': 5.8.0 '@ethersproject/rlp': 5.8.0 + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/base64@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/basex@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/properties': 5.8.0 - '@ethersproject/bignumber@5.8.0': + '@ethersproject/bignumber@5.7.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 bn.js: 5.2.1 - '@ethersproject/bytes@5.8.0': + '@ethersproject/bignumber@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.7.0': dependencies: '@ethersproject/logger': 5.8.0 + '@ethersproject/bytes@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/constants@5.8.0': dependencies: '@ethersproject/bignumber': 5.8.0 + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.8.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/contracts@5.8.0': dependencies: '@ethersproject/abi': 5.8.0 @@ -10885,6 +11490,18 @@ snapshots: '@ethersproject/properties': 5.8.0 '@ethersproject/transactions': 5.8.0 + '@ethersproject/hash@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/hash@5.8.0': dependencies: '@ethersproject/abstract-signer': 5.8.0 @@ -10897,6 +11514,21 @@ snapshots: '@ethersproject/properties': 5.8.0 '@ethersproject/strings': 5.8.0 + '@ethersproject/hdnode@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + '@ethersproject/hdnode@5.8.0': dependencies: '@ethersproject/abstract-signer': 5.8.0 @@ -10912,6 +11544,22 @@ snapshots: '@ethersproject/transactions': 5.8.0 '@ethersproject/wordlists': 5.8.0 + '@ethersproject/json-wallets@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + '@ethersproject/json-wallets@5.8.0': dependencies: '@ethersproject/abstract-signer': 5.8.0 @@ -10928,26 +11576,72 @@ snapshots: aes-js: 3.0.0 scrypt-js: 3.0.1 + '@ethersproject/keccak256@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + js-sha3: 0.8.0 + '@ethersproject/keccak256@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 js-sha3: 0.8.0 + '@ethersproject/logger@5.7.0': {} + '@ethersproject/logger@5.8.0': {} + '@ethersproject/networks@5.7.1': + dependencies: + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks@5.8.0': dependencies: '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/pbkdf2@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/sha2': 5.8.0 + '@ethersproject/properties@5.7.0': + dependencies: + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties@5.8.0': dependencies: '@ethersproject/logger': 5.8.0 + '@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + bech32: 1.1.4 + ws: 7.4.6(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@ethersproject/providers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': dependencies: '@ethersproject/abstract-provider': 5.8.0 @@ -10974,22 +11668,47 @@ snapshots: - bufferutil - utf-8-validate + '@ethersproject/random@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/random@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + '@ethersproject/sha2@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/logger': 5.8.0 hash.js: 1.1.7 + '@ethersproject/signing-key@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + '@ethersproject/signing-key@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 @@ -10999,6 +11718,15 @@ snapshots: elliptic: 6.6.1 hash.js: 1.1.7 + '@ethersproject/solidity@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/solidity@5.8.0': dependencies: '@ethersproject/bignumber': 5.8.0 @@ -11008,12 +11736,30 @@ snapshots: '@ethersproject/sha2': 5.8.0 '@ethersproject/strings': 5.8.0 + '@ethersproject/strings@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/strings@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 '@ethersproject/constants': 5.8.0 '@ethersproject/logger': 5.8.0 + '@ethersproject/transactions@5.7.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/transactions@5.8.0': dependencies: '@ethersproject/address': 5.8.0 @@ -11026,12 +11772,36 @@ snapshots: '@ethersproject/rlp': 5.8.0 '@ethersproject/signing-key': 5.8.0 + '@ethersproject/units@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/units@5.8.0': dependencies: '@ethersproject/bignumber': 5.8.0 '@ethersproject/constants': 5.8.0 '@ethersproject/logger': 5.8.0 + '@ethersproject/wallet@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + '@ethersproject/wallet@5.8.0': dependencies: '@ethersproject/abstract-provider': 5.8.0 @@ -11050,6 +11820,14 @@ snapshots: '@ethersproject/transactions': 5.8.0 '@ethersproject/wordlists': 5.8.0 + '@ethersproject/web@5.7.1': + dependencies: + '@ethersproject/base64': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/web@5.8.0': dependencies: '@ethersproject/base64': 5.8.0 @@ -11058,6 +11836,14 @@ snapshots: '@ethersproject/properties': 5.8.0 '@ethersproject/strings': 5.8.0 + '@ethersproject/wordlists@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/wordlists@5.8.0': dependencies: '@ethersproject/bytes': 5.8.0 @@ -11654,6 +12440,8 @@ snapshots: '@noble/secp256k1@2.2.3': {} + '@noble/secp256k1@3.0.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -11696,12 +12484,48 @@ snapshots: sockjs-client: 1.6.1(supports-color@6.1.0) webpack-dev-server: 3.11.1(bufferutil@4.0.9)(utf-8-validate@5.0.10)(webpack@4.44.2) + '@polkadot/keyring@10.4.2(@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2))(@polkadot/util@10.4.2)': + dependencies: + '@babel/runtime': 7.26.10 + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2(@polkadot/util@10.4.2) + '@polkadot/networks@10.4.2': dependencies: '@babel/runtime': 7.26.10 '@polkadot/util': 10.4.2 '@substrate/ss58-registry': 1.51.0 + '@polkadot/types-augment@9.14.2': + dependencies: + '@babel/runtime': 7.26.10 + '@polkadot/types': 9.14.2 + '@polkadot/types-codec': 9.14.2 + '@polkadot/util': 10.4.2 + + '@polkadot/types-codec@9.14.2': + dependencies: + '@babel/runtime': 7.26.10 + '@polkadot/util': 10.4.2 + '@polkadot/x-bigint': 10.4.2 + + '@polkadot/types-create@9.14.2': + dependencies: + '@babel/runtime': 7.26.10 + '@polkadot/types-codec': 9.14.2 + '@polkadot/util': 10.4.2 + + '@polkadot/types@9.14.2': + dependencies: + '@babel/runtime': 7.26.10 + '@polkadot/keyring': 10.4.2(@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2))(@polkadot/util@10.4.2) + '@polkadot/types-augment': 9.14.2 + '@polkadot/types-codec': 9.14.2 + '@polkadot/types-create': 9.14.2 + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2(@polkadot/util@10.4.2) + rxjs: 7.8.2 + '@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2)': dependencies: '@babel/runtime': 7.26.10 @@ -12159,6 +12983,12 @@ snapshots: '@scure/base@1.2.6': {} + '@scure/bip32@1.1.3': + dependencies: + '@noble/hashes': 1.1.5 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.9 + '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 @@ -12177,6 +13007,11 @@ snapshots: '@noble/hashes': 1.8.0 '@scure/base': 1.2.6 + '@scure/bip39@1.1.0': + dependencies: + '@noble/hashes': 1.1.5 + '@scure/base': 1.1.9 + '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 @@ -12202,38 +13037,312 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@solana/buffer-layout@4.0.1': + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10) + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/codecs-core@2.0.0-rc.1(typescript@5.8.3)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.8.3) + typescript: 5.8.3 + + '@solana/codecs-core@2.3.0(typescript@5.8.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.8.3) + typescript: 5.8.3 + + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.8.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.8.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.8.3) + typescript: 5.8.3 + + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.8.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.8.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.8.3) + typescript: 5.8.3 + + '@solana/codecs-numbers@2.3.0(typescript@5.8.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.8.3) + '@solana/errors': 2.3.0(typescript@5.8.3) + typescript: 5.8.3 + + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.8.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.8.3) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.8.3 + + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.0.0-rc.1(typescript@5.8.3)': + dependencies: + chalk: 5.6.2 + commander: 12.1.0 + typescript: 5.8.3 + + '@solana/errors@2.3.0(typescript@5.8.3)': + dependencies: + chalk: 5.6.2 + commander: 14.0.2 + typescript: 5.8.3 + + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.8.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.8.3) + typescript: 5.8.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token@0.4.14(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.10 + '@noble/curves': 1.8.1 + '@noble/hashes': 1.8.0 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.6.0 + bigint-buffer: 1.1.5 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + node-fetch: 2.7.0(encoding@0.1.13) + rpc-websockets: 9.1.1 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.26.10 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@solana/buffer-layout': 4.0.1 + '@solana/codecs-numbers': 2.3.0(typescript@5.8.3) + agentkeepalive: 4.6.0 + bn.js: 5.2.1 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) + node-fetch: 2.7.0(encoding@0.1.13) + rpc-websockets: 9.1.1 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@stablelib/binary@1.0.1': + dependencies: + '@stablelib/int': 1.0.1 + + '@stablelib/blake2b@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/bytes@1.0.1': {} + + '@stablelib/constant-time@1.0.1': {} + + '@stablelib/ed25519@1.0.3': + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hash@1.0.1': {} + + '@stablelib/hmac@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/int@1.0.1': {} + + '@stablelib/keyagreement@1.0.1': + dependencies: + '@stablelib/bytes': 1.0.1 + + '@stablelib/nacl@1.0.4': + dependencies: + '@stablelib/poly1305': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@stablelib/xsalsa20': 1.0.2 + + '@stablelib/pbkdf2@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/poly1305@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/random@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/salsa20@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha512@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/wipe@1.0.1': {} + + '@stablelib/x25519@1.0.3': + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + + '@stablelib/xsalsa20@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/salsa20': 1.0.2 + '@stablelib/wipe': 1.0.1 + + '@stacks/auth@7.2.0(encoding@0.1.13)': + dependencies: + '@noble/secp256k1': 1.7.1 + '@stacks/common': 7.0.2 + '@stacks/encryption': 7.2.0 + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/profile': 7.2.0(encoding@0.1.13) + cross-fetch: 3.1.8(encoding@0.1.13) + jsontokens: 4.0.1 + transitivePeerDependencies: + - encoding + + '@stacks/common@7.0.2': {} + + '@stacks/encryption@7.2.0': + dependencies: + '@noble/hashes': 1.1.5 + '@noble/secp256k1': 1.7.1 + '@scure/bip39': 1.1.0 + '@stacks/common': 7.0.2 + base64-js: 1.5.1 + bs58: 5.0.0 + ripemd160-min: 0.0.6 + varuint-bitcoin: 1.1.2 + + '@stacks/network@7.0.2(encoding@0.1.13)': dependencies: - buffer: 6.0.3 + '@stacks/common': 7.0.2 + cross-fetch: 3.1.8(encoding@0.1.13) + transitivePeerDependencies: + - encoding - '@solana/web3.js@1.98.0(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)': + '@stacks/network@7.2.0(encoding@0.1.13)': dependencies: - '@babel/runtime': 7.26.10 - '@noble/curves': 1.8.1 - '@noble/hashes': 1.8.0 - '@solana/buffer-layout': 4.0.1 - agentkeepalive: 4.6.0 - bigint-buffer: 1.1.5 - bn.js: 5.2.1 - borsh: 0.7.0 - bs58: 4.0.1 - buffer: 6.0.3 - fast-stable-stringify: 1.0.0 - jayson: 4.1.3(bufferutil@4.0.9)(utf-8-validate@5.0.10) - node-fetch: 2.7.0(encoding@0.1.13) - rpc-websockets: 9.1.1 - superstruct: 2.0.2 + '@stacks/common': 7.0.2 + cross-fetch: 3.1.8(encoding@0.1.13) transitivePeerDependencies: - - bufferutil - encoding - - utf-8-validate - '@stacks/common@7.0.2': {} + '@stacks/profile@7.2.0(encoding@0.1.13)': + dependencies: + '@stacks/common': 7.0.2 + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/transactions': 7.2.0(encoding@0.1.13) + jsontokens: 4.0.1 + schema-inspector: 2.1.0 + zone-file: 2.0.0-beta.3 + transitivePeerDependencies: + - encoding - '@stacks/network@7.0.2(encoding@0.1.13)': + '@stacks/storage@7.2.0(encoding@0.1.13)': dependencies: + '@stacks/auth': 7.2.0(encoding@0.1.13) '@stacks/common': 7.0.2 - cross-fetch: 3.1.8(encoding@0.1.13) + '@stacks/encryption': 7.2.0 + '@stacks/network': 7.2.0(encoding@0.1.13) + base64-js: 1.5.1 + jsontokens: 4.0.1 transitivePeerDependencies: - encoding @@ -12248,6 +13357,34 @@ snapshots: transitivePeerDependencies: - encoding + '@stacks/transactions@7.2.0(encoding@0.1.13)': + dependencies: + '@noble/hashes': 1.1.5 + '@noble/secp256k1': 1.7.1 + '@stacks/common': 7.0.2 + '@stacks/network': 7.2.0(encoding@0.1.13) + c32check: 2.0.0 + lodash.clonedeep: 4.5.0 + transitivePeerDependencies: + - encoding + + '@stacks/wallet-sdk@7.2.0(encoding@0.1.13)': + dependencies: + '@scure/bip32': 1.1.3 + '@scure/bip39': 1.1.0 + '@stacks/auth': 7.2.0(encoding@0.1.13) + '@stacks/common': 7.0.2 + '@stacks/encryption': 7.2.0 + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/profile': 7.2.0(encoding@0.1.13) + '@stacks/storage': 7.2.0(encoding@0.1.13) + '@stacks/transactions': 7.2.0(encoding@0.1.13) + c32check: 2.0.0 + jsontokens: 4.0.1 + zone-file: 2.0.0-beta.3 + transitivePeerDependencies: + - encoding + '@substrate/ss58-registry@1.51.0': {} '@surma/rollup-plugin-off-main-thread@1.4.2': @@ -12341,6 +13478,109 @@ snapshots: dependencies: defer-to-connect: 2.0.1 + '@taquito/axios-fetch-adapter@https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6(axios@1.11.0)': + dependencies: + axios: 1.11.0 + + '@taquito/core@23.0.3': + dependencies: + json-stringify-safe: 5.0.1 + + '@taquito/http-utils@15.1.0': + dependencies: + '@vespaiach/axios-fetch-adapter': '@taquito/axios-fetch-adapter@https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6(axios@1.11.0)' + axios: 1.11.0 + transitivePeerDependencies: + - debug + + '@taquito/local-forging@15.1.0': + dependencies: + '@taquito/utils': 15.1.0 + bignumber.js: 9.1.2 + + '@taquito/local-forging@23.0.3': + dependencies: + '@taquito/core': 23.0.3 + '@taquito/utils': 23.0.3 + bignumber.js: 9.1.2 + fast-text-encoding: 1.0.6 + + '@taquito/michel-codec@15.1.0': {} + + '@taquito/michelson-encoder@15.1.0': + dependencies: + '@taquito/rpc': 15.1.0 + '@taquito/utils': 15.1.0 + bignumber.js: 9.1.2 + fast-json-stable-stringify: 2.1.0 + transitivePeerDependencies: + - debug + + '@taquito/rpc@15.1.0': + dependencies: + '@taquito/http-utils': 15.1.0 + '@taquito/utils': 15.1.0 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - debug + + '@taquito/signer@15.1.0': + dependencies: + '@stablelib/blake2b': 1.0.1 + '@stablelib/ed25519': 1.0.3 + '@stablelib/hmac': 1.0.1 + '@stablelib/nacl': 1.0.4 + '@stablelib/pbkdf2': 1.0.1 + '@stablelib/sha512': 1.0.1 + '@taquito/taquito': 15.1.0 + '@taquito/utils': 15.1.0 + '@types/bn.js': 5.1.6 + bip39: 3.1.0 + elliptic: 6.6.1 + pbkdf2: 3.1.2 + typedarray-to-buffer: 4.0.0 + transitivePeerDependencies: + - debug + + '@taquito/taquito@15.1.0': + dependencies: + '@taquito/http-utils': 15.1.0 + '@taquito/local-forging': 15.1.0 + '@taquito/michel-codec': 15.1.0 + '@taquito/michelson-encoder': 15.1.0 + '@taquito/rpc': 15.1.0 + '@taquito/utils': 15.1.0 + bignumber.js: 9.1.2 + rxjs: 6.6.7 + transitivePeerDependencies: + - debug + + '@taquito/utils@15.1.0': + dependencies: + '@stablelib/blake2b': 1.0.1 + '@stablelib/ed25519': 1.0.3 + '@types/bs58check': 2.1.2 + bignumber.js: 9.1.2 + blakejs: 1.2.1 + bs58check: 2.1.2 + buffer: 6.0.3 + elliptic: 6.6.1 + typedarray-to-buffer: 4.0.0 + + '@taquito/utils@23.0.3': + dependencies: + '@noble/curves': 1.9.7 + '@stablelib/blake2b': 1.0.1 + '@stablelib/ed25519': 1.0.3 + '@taquito/core': 23.0.3 + '@types/bs58check': 2.1.2 + bignumber.js: 9.1.2 + blakejs: 1.2.1 + bs58check: 3.0.1 + buffer: 6.0.3 + elliptic: 6.6.1 + typedarray-to-buffer: 4.0.0 + '@ton/core@0.61.0(@ton/crypto@3.3.0)': dependencies: '@ton/crypto': 3.3.0 @@ -12404,6 +13644,10 @@ snapshots: dependencies: '@types/node': 17.0.45 + '@types/bs58check@2.1.2': + dependencies: + '@types/node': 17.0.45 + '@types/cacheable-request@6.0.3': dependencies: '@types/http-cache-semantics': 4.0.4 @@ -13148,6 +14392,87 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 + '@web-examples/shared@file:../../../shared(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4)': + dependencies: + '@cosmjs/amino': 0.32.3 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/proto-signing': 0.32.3 + '@kadena/client': 0.5.0(bufferutil@4.0.9)(typescript@5.8.3)(utf-8-validate@5.0.10)(zod@3.24.4) + '@kadena/cryptography-utils': 0.4.4 + '@kadena/types': 0.6.2 + '@multiversx/sdk-core': 12.18.0 + '@multiversx/sdk-wallet': 4.2.0 + '@mysten/sui': 1.30.5(typescript@5.8.3) + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@noble/secp256k1': 3.0.0 + '@polkadot/keyring': 10.4.2(@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2))(@polkadot/util@10.4.2) + '@polkadot/types': 9.14.2 + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2(@polkadot/util@10.4.2) + '@solana/spl-token': 0.4.14(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.8.3)(utf-8-validate@5.0.10) + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/transactions': 7.2.0(encoding@0.1.13) + '@stacks/wallet-sdk': 7.2.0(encoding@0.1.13) + '@taquito/local-forging': 23.0.3 + '@taquito/signer': 15.1.0 + '@taquito/taquito': 15.1.0 + '@ton/core': 0.61.0(@ton/crypto@3.3.0) + '@ton/crypto': 3.3.0 + '@ton/ton': 15.4.0(@ton/core@0.61.0(@ton/crypto@3.3.0))(@ton/crypto@3.3.0) + '@walletconnect/encoding': 1.0.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/types': 2.22.4-canary-auth-3 + '@walletconnect/utils': 2.22.4-canary-auth-3(typescript@5.8.3)(zod@3.24.4) + axios: 1.11.0 + bip32: 4.0.0 + bip39: 3.1.0 + bitcoinjs-lib: 6.1.7 + bitcoinjs-message: 2.2.0 + borsh: 1.0.0 + bs58: 6.0.0 + ecpair: 2.1.0 + ed25519-hd-key: 1.3.0 + eth-sig-util: 3.0.1 + ethereumjs-util: 7.1.5 + ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + near-api-js: 0.45.1(encoding@0.1.13) + near-seed-phrase: 0.2.1 + solana-wallet: 1.0.2(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10) + tiny-secp256k1: 2.2.4 + tronweb: 6.0.4(bufferutil@4.0.9)(utf-8-validate@5.0.10) + tweetnacl: 1.0.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - debug + - encoding + - fastestsmallesttextencoderdecoder + - ioredis + - supports-color + - typescript + - uploadthing + - utf-8-validate + - zod + '@webassemblyjs/ast@1.9.0': dependencies: '@webassemblyjs/helper-module-context': 1.9.0 @@ -13513,6 +14838,10 @@ snapshots: async-limiter@1.0.1: {} + async@2.6.4: + dependencies: + lodash: 4.17.21 + async@3.2.6: {} asynckit@0.4.0: {} @@ -13794,6 +15123,18 @@ snapshots: bip174@2.1.1: {} + bip32@4.0.0: + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + typeforce: 1.18.0 + wif: 2.0.6 + + bip39-light@1.0.7: + dependencies: + create-hash: 1.2.0 + pbkdf2: 3.1.2 + bip39@3.0.2: dependencies: '@types/node': 11.11.6 @@ -13846,6 +15187,8 @@ snapshots: bn.js@4.12.1: {} + bn.js@5.2.0: {} + bn.js@5.2.1: {} body-parser@1.20.3(supports-color@6.1.0): @@ -14145,6 +15488,8 @@ snapshots: caniuse-lite@1.0.30001706: {} + capability@0.2.5: {} + capture-exit@2.0.0: dependencies: rsvp: 4.8.5 @@ -14166,6 +15511,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.6.2: {} + char-regex@1.0.2: {} check-types@11.2.3: {} @@ -14290,6 +15637,10 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@12.1.0: {} + + commander@14.0.2: {} + commander@2.20.3: {} commander@4.1.1: {} @@ -14410,6 +15761,8 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmjs-types@0.9.0: {} + cosmos-wallet@1.2.0: dependencies: '@cosmjs/amino': 0.25.6 @@ -14920,12 +16273,23 @@ snapshots: jsbn: 0.1.1 safer-buffer: 2.1.2 + ecpair@2.1.0: + dependencies: + randombytes: 2.1.0 + typeforce: 1.18.0 + wif: 2.0.6 + ed25519-hd-key@1.1.2: dependencies: bip39: 3.0.2 create-hmac: 1.1.7 tweetnacl: 1.0.3 + ed25519-hd-key@1.3.0: + dependencies: + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + ed2curve@0.3.0: dependencies: tweetnacl: 1.0.3 @@ -14938,6 +16302,16 @@ snapshots: electron-to-chromium@1.5.118: {} + elliptic@6.5.4: + dependencies: + bn.js: 4.12.1 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + elliptic@6.6.1: dependencies: bn.js: 4.12.1 @@ -14988,6 +16362,12 @@ snapshots: dependencies: is-arrayish: 0.2.1 + error-polyfill@0.1.3: + dependencies: + capability: 0.2.5 + o3: 1.0.3 + u3: 0.1.1 + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 @@ -15524,6 +16904,13 @@ snapshots: tweetnacl: 1.0.3 tweetnacl-util: 0.15.1 + eth-sig-util@3.0.1: + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 5.2.1 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + ethereum-bloom-filters@1.2.0: dependencies: '@noble/hashes': 1.8.0 @@ -15593,6 +16980,42 @@ snapshots: ethereum-cryptography: 0.1.3 rlp: 2.2.7 + ethers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + ethers@5.8.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.8.0 @@ -15819,8 +17242,12 @@ snapshots: fast-stable-stringify@1.0.0: {} + fast-text-encoding@1.0.6: {} + fast-uri@3.0.6: {} + fastestsmallesttextencoderdecoder@1.0.22: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -17326,6 +18753,8 @@ snapshots: joycon@3.1.1: {} + js-sha256@0.9.0: {} + js-sha3@0.5.7: {} js-sha3@0.8.0: {} @@ -17434,6 +18863,12 @@ snapshots: jsonpointer@5.0.1: {} + jsontokens@4.0.1: + dependencies: + '@noble/hashes': 1.8.0 + '@noble/secp256k1': 1.7.1 + base64-js: 1.5.1 + jsprim@1.4.2: dependencies: assert-plus: 1.0.0 @@ -17504,6 +18939,12 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + libsodium-sumo@0.7.15: {} + + libsodium-wrappers-sumo@0.7.15: + dependencies: + libsodium-sumo: 0.7.15 + libsodium-wrappers@0.7.15: dependencies: libsodium: 0.7.15 @@ -17855,6 +19296,22 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 + near-api-js@0.45.1(encoding@0.1.13): + dependencies: + bn.js: 5.2.0 + borsh: 0.7.0 + bs58: 4.0.1 + depd: 2.0.0 + error-polyfill: 0.1.3 + http-errors: 1.7.2 + js-sha256: 0.9.0 + mustache: 4.0.0 + node-fetch: 2.7.0(encoding@0.1.13) + text-encoding-utf-8: 1.0.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - encoding + near-api-js@6.0.1(e3nzevk42h66xopb2dhet3g2pa): dependencies: '@near-js/accounts': 2.0.1(jwlaada4p4papqyv4uh3qnluhu) @@ -17876,6 +19333,19 @@ snapshots: transitivePeerDependencies: - encoding + near-hd-key@1.2.1: + dependencies: + bip39: 3.0.2 + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + + near-seed-phrase@0.2.1: + dependencies: + bip39-light: 1.0.7 + bs58: 4.0.1 + near-hd-key: 1.2.1 + tweetnacl: 1.0.3 + negotiator@0.6.3: {} negotiator@0.6.4: {} @@ -18035,6 +19505,10 @@ snapshots: nwsapi@2.2.18: {} + o3@1.0.3: + dependencies: + capability: 0.2.5 + oauth-sign@0.9.0: {} object-assign@4.1.1: {} @@ -19498,6 +20972,8 @@ snapshots: dependencies: glob: 7.2.3 + ripemd160-min@0.0.6: {} + ripemd160@2.0.2: dependencies: hash-base: 3.1.0 @@ -19601,6 +21077,14 @@ snapshots: dependencies: aproba: 1.2.0 + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 @@ -19661,6 +21145,10 @@ snapshots: dependencies: loose-envify: 1.4.0 + schema-inspector@2.1.0: + dependencies: + async: 2.6.4 + schema-utils@1.0.0: dependencies: ajv: 6.12.6 @@ -20429,6 +21917,10 @@ snapshots: timsort@0.3.0: {} + tiny-secp256k1@2.2.4: + dependencies: + uint8array-tools: 0.0.7 + tinyglobby@0.2.12: dependencies: fdir: 6.4.3(picomatch@4.0.2) @@ -20589,14 +22081,20 @@ snapshots: dependencies: is-typedarray: 1.0.0 + typedarray-to-buffer@4.0.0: {} + typedarray@0.0.6: {} typeforce@1.18.0: {} typescript@5.8.3: {} + u3@0.1.1: {} + ufo@1.5.4: {} + uint8array-tools@0.0.7: {} + uint8arrays@3.1.1: dependencies: multiformats: 9.9.0 @@ -21257,6 +22755,10 @@ snapshots: dependencies: isexe: 2.0.0 + wif@2.0.6: + dependencies: + bs58check: 2.1.2 + word-wrap@1.2.5: {} wordwrap@0.0.3: {} @@ -21419,6 +22921,11 @@ snapshots: bufferutil: 4.0.9 utf-8-validate: 5.0.10 + ws@7.4.6(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.9 @@ -21529,3 +23036,5 @@ snapshots: zod@3.22.4: {} zod@3.24.4: {} + + zone-file@2.0.0-beta.3: {} diff --git a/advanced/dapps/react-dapp-v2/src/chains/bip122.ts b/advanced/dapps/react-dapp-v2/src/chains/bip122.ts index b1e490576..15e8df85f 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/bip122.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/bip122.ts @@ -1,42 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const BIP122_MAINNET = "000000000019d6689c085ae165831e93"; -export const BIP122_TESTNET = "000000000933ea01ad0ee984209779ba"; -export const BIP122_DUST_LIMIT = "1001"; - -export const BtcChainData: ChainsMap = { - [BIP122_MAINNET]: { - id: `bip122:${BIP122_MAINNET}`, - name: "BTC Mainnet", - rpc: [], - slip44: 0, - testnet: false, - }, - [BIP122_TESTNET]: { - id: `bip122:${BIP122_TESTNET}`, - name: "BTC Testnet", - rpc: [], - slip44: 501, - testnet: true, - }, -}; - -export const BtcMetadata: NamespaceMetadata = { - [BIP122_MAINNET]: { - logo: "/assets/btc-testnet.png", - rgb: "247, 147, 25", - }, - [BIP122_TESTNET]: { - logo: "/assets/btc-testnet.png", - rgb: "247, 147, 25", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = BtcMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/bip122"; diff --git a/advanced/dapps/react-dapp-v2/src/chains/cosmos.ts b/advanced/dapps/react-dapp-v2/src/chains/cosmos.ts index 4f66720ee..e7e27f54e 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/cosmos.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/cosmos.ts @@ -1,58 +1,8 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; +import { ChainRequestRender } from "@web-examples/shared"; -import { - NamespaceMetadata, - ChainMetadata, - ChainRequestRender, - ChainsMap, -} from "../helpers"; - -export const CosmosChainData: ChainsMap = { - "cosmoshub-4": { - name: "Cosmos Hub", - id: "cosmos:cosmoshub-4", - rpc: ["https://rpc.cosmos.network"], - slip44: 118, - testnet: false, - }, - "irishub-1": { - name: "Irisnet", - id: "cosmos:irishub-1", - rpc: ["https://rpc.irisnet.org"], - slip44: 566, - testnet: false, - }, - "kava-4": { - name: "Kava", - id: "cosmos:kava-4", - rpc: ["https://kava4.data.kava.io"], - slip44: 459, - testnet: false, - }, - "columbus-4": { - name: "Terra", - id: "cosmos:columbus-4", - rpc: [], - slip44: 330, - testnet: false, - }, -}; - -export const CosmosMetadata: NamespaceMetadata = { - "cosmoshub-4": { - logo: "/assets/" + "cosmos-cosmoshub-4.png", - rgb: "27, 31, 53", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = CosmosMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/cosmos"; export function getChainRequestRender( request: JsonRpcRequest diff --git a/advanced/dapps/react-dapp-v2/src/chains/eip155.ts b/advanced/dapps/react-dapp-v2/src/chains/eip155.ts index 5f670fbf6..a6225555c 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/eip155.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/eip155.ts @@ -1,217 +1,12 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; - import { - NamespaceMetadata, - ChainMetadata, ChainRequestRender, convertHexToNumber, convertHexToUtf8, - ChainsMap, -} from "../helpers"; - -export const EIP155Colors = { - ethereum: "99, 125, 234", - optimism: "233, 1, 1", - goerli: "189, 174, 155", - xdai: "73, 169, 166", - polygon: "130, 71, 229", - zksync: "90, 90, 90", - celo: "60, 203, 132", - arbitrum: "44, 55, 75", -}; - -export const EIP155ChainData: ChainsMap = { - "1": { - name: "Ethereum Mainnet", - id: "eip155:1", - rpc: ["https://api.mycryptoapi.com/eth"], - slip44: 60, - testnet: false, - }, - "5": { - name: "Ethereum Goerli", - id: "eip155:5", - rpc: ["https://rpc.goerli.mudit.blog"], - slip44: 60, - testnet: true, - }, - "11155111": { - name: "Ethereum Sepolia", - id: "eip155:11155111", - rpc: ["https://gateway.tenderly.co/public/sepolia "], - slip44: 60, - testnet: true, - }, - "10": { - name: "Optimism Mainnet", - id: "eip155:10", - rpc: ["https://mainnet.optimism.io"], - slip44: 60, - testnet: false, - }, - "42": { - name: "Ethereum Kovan", - id: "eip155:42", - rpc: ["https://kovan.poa.network"], - slip44: 60, - testnet: true, - }, - "69": { - name: "Optimism Kovan", - id: "eip155:69", - rpc: ["https://kovan.optimism.io"], - slip44: 60, - testnet: true, - }, - "100": { - name: "xDAI", - id: "eip155:100", - rpc: ["https://dai.poa.network"], - slip44: 60, - testnet: false, - }, - "280": { - name: "zkSync Era Testnet", - id: "eip155:280", - rpc: ["https://testnet.era.zksync.dev"], - slip44: 60, - testnet: true, - }, - "324": { - name: "zkSync Era", - id: "eip155:324", - rpc: ["https://mainnet.era.zksync.io"], - slip44: 60, - testnet: false, - }, - "137": { - name: "Polygon Mainnet", - id: "eip155:137", - rpc: ["https://rpc-mainnet.matic.network"], - slip44: 60, - testnet: false, - }, - "420": { - name: "Optimism Goerli", - id: "eip155:420", - rpc: ["https://goerli.optimism.io"], - slip44: 60, - testnet: true, - }, - "42161": { - name: "Arbitrum One", - id: "eip155:42161", - rpc: ["https://arb1.arbitrum.io/rpc"], - slip44: 60, - testnet: false, - }, - "42220": { - name: "Celo Mainnet", - id: "eip155:42220", - rpc: ["https://forno.celo.org"], - slip44: 52752, - testnet: false, - }, - "44787": { - name: "Celo Alfajores", - id: "eip155:44787", - rpc: ["https://alfajores-forno.celo-testnet.org"], - slip44: 52752, - testnet: true, - }, - "80001": { - name: "Polygon Mumbai", - id: "eip155:80001", - rpc: ["https://rpc-mumbai.matic.today"], - slip44: 60, - testnet: true, - }, - "421611": { - name: "Arbitrum Rinkeby", - id: "eip155:421611", - rpc: ["https://rinkeby.arbitrum.io/rpc"], - slip44: 60, - testnet: true, - }, -}; +} from "@web-examples/shared"; -export const EIP155Metadata: NamespaceMetadata = { - "1": { - name: "Ethereum", - logo: "/assets/" + "eip155-1.png", - rgb: EIP155Colors.ethereum, - }, - "5": { - logo: "/assets/" + "eip155-1.png", - rgb: EIP155Colors.ethereum, - }, - "11155111": { - logo: "/assets/" + "eip155-1.png", - rgb: EIP155Colors.ethereum, - }, - "10": { - name: "Optimism", - logo: "/assets/" + "eip155-10.png", - rgb: EIP155Colors.optimism, - }, - "42": { - logo: "/assets/" + "eip155-42.png", - rgb: EIP155Colors.ethereum, - }, - "420": { - logo: "/assets/" + "eip155-420.png", - rgb: EIP155Colors.optimism, - }, - "100": { - logo: "/assets/" + "eip155-100.png", - rgb: EIP155Colors.xdai, - }, - "280": { - name: "zkSync Era Testnet", - logo: "/assets/" + "eip155-324.svg", - rgb: EIP155Colors.zksync, - }, - "324": { - name: "zkSync Era", - logo: "/assets/" + "eip155-324.svg", - rgb: EIP155Colors.zksync, - }, - "137": { - name: "Polygon", - logo: "/assets/" + "eip155-137.png", - rgb: EIP155Colors.polygon, - }, - "80001": { - logo: "/assets/" + "eip155-80001.png", - rgb: EIP155Colors.polygon, - }, - "42161": { - name: "Arbitrum", - logo: "/assets/" + "eip155-42161.png", - rgb: EIP155Colors.arbitrum, - }, - "42220": { - name: "Celo", - logo: "/assets/" + "eip155-42220.png", - rgb: EIP155Colors.celo, - }, - "44787": { - logo: "/assets/" + "eip155-44787.png", - rgb: EIP155Colors.celo, - }, - "421611": { - logo: "/assets/" + "eip155-421611.png", - rgb: EIP155Colors.arbitrum, - }, -}; -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = EIP155Metadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/eip155"; export function getChainRequestRender( request: JsonRpcRequest diff --git a/advanced/dapps/react-dapp-v2/src/chains/index.ts b/advanced/dapps/react-dapp-v2/src/chains/index.ts index e78085705..17f765399 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/index.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/index.ts @@ -1,54 +1,12 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; - +import { getChainMetadata, ChainRequestRender } from "@web-examples/shared"; +export { getChainMetadata }; import * as eip155 from "./eip155"; import * as cosmos from "./cosmos"; import * as polkadot from "./polkadot"; -import * as solana from "./solana"; import * as near from "./near"; -import * as multiversx from "./multiversx"; -import * as tron from "./tron"; import * as tezos from "./tezos"; import * as kadena from "./kadena"; -import * as bip122 from "./bip122"; -import * as sui from "./sui"; -import * as stacks from "./stacks"; -import * as ton from "./ton"; - -import { ChainMetadata, ChainRequestRender } from "../helpers"; - -export function getChainMetadata(chainId: string): ChainMetadata { - const namespace = chainId.split(":")[0]; - switch (namespace) { - case "eip155": - return eip155.getChainMetadata(chainId); - case "cosmos": - return cosmos.getChainMetadata(chainId); - case "polkadot": - return polkadot.getChainMetadata(chainId); - case "solana": - return solana.getChainMetadata(chainId); - case "near": - return near.getChainMetadata(chainId); - case "kadena": - return kadena.getChainMetadata(chainId); - case "mvx": - return multiversx.getChainMetadata(chainId); - case "tron": - return tron.getChainMetadata(chainId); - case "tezos": - return tezos.getChainMetadata(chainId); - case "bip122": - return bip122.getChainMetadata(chainId); - case "sui": - return sui.getChainMetadata(chainId); - case "stacks": - return stacks.getChainMetadata(chainId); - case "ton": - return ton.getChainMetadata(chainId); - default: - throw new Error(`No metadata handler for namespace ${namespace}`); - } -} export function getChainRequestRender( request: JsonRpcRequest, diff --git a/advanced/dapps/react-dapp-v2/src/chains/kadena.ts b/advanced/dapps/react-dapp-v2/src/chains/kadena.ts index d251854c1..20b8c3345 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/kadena.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/kadena.ts @@ -1,49 +1,8 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; +import { ChainRequestRender } from "@web-examples/shared"; -import { - NamespaceMetadata, - ChainMetadata, - ChainRequestRender, - ChainsMap, -} from "../helpers"; - -export const KadenaMetadata: NamespaceMetadata = { - mainnet01: { - logo: "/assets/kadena.png", - rgb: "237, 9, 143", - }, - testnet04: { - logo: "/assets/kadena.png", - rgb: "237, 9, 143", - }, -}; - -// TODO: add `kadena` namespace to `caip-api` package to avoid manual specification here. -export const KadenaChainData: ChainsMap = { - mainnet01: { - name: "Kadena", - id: "kadena:mainnet01", - rpc: ["https://api.chainweb.com"], - slip44: 626, - testnet: false, - }, - testnet04: { - name: "Kadena Testnet", - id: "kadena:testnet04", - rpc: ["https://api.chainweb.com"], - slip44: 626, - testnet: true, - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = KadenaMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/kadena"; export function getChainRequestRender( request: JsonRpcRequest diff --git a/advanced/dapps/react-dapp-v2/src/chains/multiversx.ts b/advanced/dapps/react-dapp-v2/src/chains/multiversx.ts index f111f2411..ad5115af6 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/multiversx.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/multiversx.ts @@ -1,53 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const MultiversxChainData: ChainsMap = { - "1": { - id: "mvx:1", - name: "MultiversX Mainnet", - rpc: ["https://api.multiversx.com"], - slip44: 508, - testnet: false, - }, - D: { - id: "mvx:D", - name: "MultiversX Devnet", - rpc: ["https://devnet-api.multiversx.com"], - slip44: 508, - testnet: true, - }, - // Keep only one Test Chain visible - // T: { - // id: "mvx:T", - // name: "MultiversX Testnet", - // rpc: ["https://testnet-api.multiversx.com"], - // slip44: 508, - // testnet: true, - // }, -}; - -export const MultiversxMetadata: NamespaceMetadata = { - // MultiversX Mainnet - "1": { - logo: "/assets/multiversx_logo.svg", - rgb: "0, 0, 0", - }, - // MultiversX Testnet - T: { - logo: "/assets/multiversx_logo.svg", - rgb: "0, 0, 0", - }, - // MultiversX Devnet - D: { - logo: "/assets/multiversx_logo.svg", - rgb: "0, 0, 0", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = MultiversxMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/multiversx"; diff --git a/advanced/dapps/react-dapp-v2/src/chains/near.ts b/advanced/dapps/react-dapp-v2/src/chains/near.ts index db58ec64e..40cb30536 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/near.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/near.ts @@ -1,37 +1,8 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; +import { ChainRequestRender } from "@web-examples/shared"; -import { - NamespaceMetadata, - ChainMetadata, - ChainRequestRender, - ChainsMap, -} from "../helpers"; - -export const NearMetadata: NamespaceMetadata = { - testnet: { - logo: "https://avatars.githubusercontent.com/u/7613128?s=200&v=4", - rgb: "27, 31, 53", - }, -}; - -export const NearChainData: ChainsMap = { - testnet: { - name: "NEAR Testnet", - id: "near:testnet", - rpc: ["https://rpc.testnet.near.org"], - slip44: 397, - testnet: true, - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = NearMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/near"; export function getChainRequestRender( request: JsonRpcRequest diff --git a/advanced/dapps/react-dapp-v2/src/chains/polkadot.ts b/advanced/dapps/react-dapp-v2/src/chains/polkadot.ts index fe1a8ac13..b7b1abf50 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/polkadot.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/polkadot.ts @@ -1,48 +1,8 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; -import { - NamespaceMetadata, - ChainMetadata, - ChainRequestRender, - ChainsMap, -} from "../helpers"; +import { ChainRequestRender } from "@web-examples/shared"; -export const PolkadotChainData: ChainsMap = { - ["91b171bb158e2d3848fa23a9f1c25182"]: { - id: "polkadot:91b171bb158e2d3848fa23a9f1c25182", - name: "Polkadot Mainnet", - rpc: ["wss://rpc.polkadot.io"], - slip44: 0, - testnet: false, - }, - ["e143f23803ac50e8f6f8e62695d1ce9e"]: { - id: "polkadot:e143f23803ac50e8f6f8e62695d1ce9e", - name: "Polkadot Testnet (Westend)", - rpc: ["wss://westend-rpc.polkadot.io"], - slip44: 0, - testnet: false, - }, -}; - -export const PolkadotMetadata: NamespaceMetadata = { - // eslint-disable-next-line no-useless-computed-key - ["91b171bb158e2d3848fa23a9f1c25182"]: { - logo: "/assets/polkadot.svg", - rgb: "230, 1, 122", - }, - ["e143f23803ac50e8f6f8e62695d1ce9e"]: { - logo: "/assets/westend-logo.svg", - rgb: "218, 104, 167", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = PolkadotMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/polkadot"; export function getChainRequestRender( request: JsonRpcRequest diff --git a/advanced/dapps/react-dapp-v2/src/chains/solana.ts b/advanced/dapps/react-dapp-v2/src/chains/solana.ts index cabcc626e..87355c224 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/solana.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/solana.ts @@ -1,55 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const SolanaChainData: ChainsMap = { - "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { - id: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", - name: "Solana Mainnet", - rpc: [ - "https://api.mainnet-beta.solana.com", - "https://solana-api.projectserum.com", - ], - slip44: 501, - testnet: false, - }, - EtWTRABZaYq6iMfeYKouRu166VU2xqa1: { - id: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", - name: "Solana Devnet", - rpc: ["https://api.devnet.solana.com"], - slip44: 501, - testnet: true, - }, - "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z": { - id: "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z", - name: "Solana Testnet", - rpc: ["https://api.testnet.solana.com"], - slip44: 501, - testnet: true, - }, -}; - -export const SolanaMetadata: NamespaceMetadata = { - // Solana Mainnet - "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { - logo: "/assets/solana_logo.png", - rgb: "0, 0, 0", - }, - // Solana Devnet - EtWTRABZaYq6iMfeYKouRu166VU2xqa1: { - logo: "/assets/solana_logo.png", - rgb: "0, 0, 0", - }, - // Solana Testnet - "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z": { - logo: "/assets/solana_logo.png", - rgb: "0, 0, 0", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = SolanaMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/solana"; diff --git a/advanced/dapps/react-dapp-v2/src/chains/stacks.ts b/advanced/dapps/react-dapp-v2/src/chains/stacks.ts index 66469dd88..858bfef5b 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/stacks.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/stacks.ts @@ -1,40 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const StacksChainData: ChainsMap = { - "1": { - id: "stacks:1", - name: "Stacks Mainnet", - rpc: [], - slip44: 195, - testnet: false, - }, - "2147483648": { - id: "stacks:2147483648", - name: "Stacks Testnet", - rpc: [], - slip44: 195, - testnet: true, - }, -}; - -export const StacksMetadata: NamespaceMetadata = { - // Stacks Mainnet - "1": { - logo: "/assets/stacks.png", - rgb: "85, 70, 254", - }, - // Stacks TestNet - "2147483648": { - logo: "/assets/stacks.png", - rgb: "85, 70, 254", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = StacksMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/stacks"; diff --git a/advanced/dapps/react-dapp-v2/src/chains/sui.ts b/advanced/dapps/react-dapp-v2/src/chains/sui.ts index f55e02d85..9137cad4b 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/sui.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/sui.ts @@ -1,53 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const SUI_MAINNET = "mainnet"; -export const SUI_TESTNET = "testnet"; -export const SUI_DEVNET = "devnet"; - -export const SuiChainData: ChainsMap = { - [SUI_MAINNET]: { - id: `sui:${SUI_MAINNET}`, - name: "SUI Mainnet", - rpc: [], - slip44: 0, - testnet: false, - }, - [SUI_TESTNET]: { - id: `sui:${SUI_TESTNET}`, - name: "SUI Testnet", - rpc: [], - slip44: 0, - testnet: true, - }, - [SUI_DEVNET]: { - id: `sui:${SUI_DEVNET}`, - name: "SUI Devnet", - rpc: [], - slip44: 0, - testnet: true, - }, -}; - -export const SuiMetadata: NamespaceMetadata = { - [SUI_MAINNET]: { - logo: "/assets/sui.png", - rgb: "6, 135, 245", - }, - [SUI_TESTNET]: { - logo: "/assets/sui.png", - rgb: "6, 135, 245", - }, - [SUI_DEVNET]: { - logo: "/assets/sui.png", - rgb: "6, 135, 245", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = SuiMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/sui"; diff --git a/advanced/dapps/react-dapp-v2/src/chains/tezos.ts b/advanced/dapps/react-dapp-v2/src/chains/tezos.ts index ed6697f94..af41a1218 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/tezos.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/tezos.ts @@ -1,48 +1,8 @@ import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils"; +import { ChainRequestRender } from "@web-examples/shared"; -import { - NamespaceMetadata, - ChainMetadata, - ChainRequestRender, - ChainsMap, -} from "../helpers"; - -export const TezosMetadata: NamespaceMetadata = { - mainnet: { - logo: "/assets/tezos.svg", - rgb: "44, 125, 247", - }, - testnet: { - logo: "/assets/tezos.svg", - rgb: "44, 125, 247", - }, -}; - -export const TezosChainData: ChainsMap = { - mainnet: { - name: "Tezos", - id: "tezos:mainnet", - rpc: ["https://mainnet.api.tez.ie"], - slip44: 1729, - testnet: false, - }, - testnet: { - name: "Tezos Testnet", - id: "tezos:testnet", - rpc: ["https://ghostnet.ecadinfra.com"], - slip44: 1729, - testnet: true, - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = TezosMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/tezos"; export function getChainRequestRender( request: JsonRpcRequest diff --git a/advanced/dapps/react-dapp-v2/src/chains/ton.ts b/advanced/dapps/react-dapp-v2/src/chains/ton.ts index d67fc088b..ff05170f9 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/ton.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/ton.ts @@ -1,38 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const TonChainData: ChainsMap = { - "-239": { - id: "ton:-239", - name: "TON Mainnet", - rpc: [], - slip44: 607, - testnet: false, - }, - "-3": { - id: "ton:-3", - name: "TON Testnet", - rpc: [], - slip44: 607, - testnet: true, - }, -}; - -export const TonMetadata: NamespaceMetadata = { - "-239": { - logo: "/assets/ton.png", - rgb: "0, 153, 255", - }, - "-3": { - logo: "/assets/ton.png", - rgb: "0, 153, 255", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = TonMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/ton"; diff --git a/advanced/dapps/react-dapp-v2/src/chains/tron.ts b/advanced/dapps/react-dapp-v2/src/chains/tron.ts index e5e762bb3..339d748c9 100644 --- a/advanced/dapps/react-dapp-v2/src/chains/tron.ts +++ b/advanced/dapps/react-dapp-v2/src/chains/tron.ts @@ -1,40 +1,2 @@ -import { NamespaceMetadata, ChainMetadata, ChainsMap } from "../helpers"; - -export const TronChainData: ChainsMap = { - "0x2b6653dc": { - id: "tron:0x2b6653dc", - name: "Tron Mainnet", - rpc: [], - slip44: 195, - testnet: false, - }, - "0xcd8690dc": { - id: "tron:0xcd8690dc", - name: "Tron Testnet", - rpc: [], - slip44: 195, - testnet: true, - }, -}; - -export const TronMetadata: NamespaceMetadata = { - // Tron Mainnet - "0x2b6653dc": { - logo: "/assets/tron.png", - rgb: "183, 62, 49", - }, - // Tron TestNet - "0xcd8690dc": { - logo: "assets/tron.png", - rgb: "183, 62, 49", - }, -}; - -export function getChainMetadata(chainId: string): ChainMetadata { - const reference = chainId.split(":")[1]; - const metadata = TronMetadata[reference]; - if (typeof metadata === "undefined") { - throw new Error(`No chain metadata found for chainId: ${chainId}`); - } - return metadata; -} +// Re-export chain data and metadata from shared +export * from "@web-examples/shared/chains/tron"; diff --git a/advanced/dapps/react-dapp-v2/src/constants/default.ts b/advanced/dapps/react-dapp-v2/src/constants/default.ts index fcdaf31ae..520391e62 100644 --- a/advanced/dapps/react-dapp-v2/src/constants/default.ts +++ b/advanced/dapps/react-dapp-v2/src/constants/default.ts @@ -3,54 +3,6 @@ import { getAppMetadata } from "@walletconnect/utils"; if (!process.env.NEXT_PUBLIC_PROJECT_ID) throw new Error("`NEXT_PUBLIC_PROJECT_ID` env variable is missing."); -export const DEFAULT_MAIN_CHAINS = [ - // mainnets - "eip155:1", - "eip155:10", - "eip155:100", - "eip155:137", - "eip155:324", - "eip155:42161", - "eip155:42220", - "ton:-239", - "cosmos:cosmoshub-4", - "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", - "polkadot:91b171bb158e2d3848fa23a9f1c25182", - "mvx:1", - "tron:0x2b6653dc", - "tezos:mainnet", - "kadena:mainnet01", - "bip122:000000000019d6689c085ae165831e93", - "sui:mainnet", - "stacks:1", -]; - -export const DEFAULT_TEST_CHAINS = [ - // testnets - "eip155:5", - "eip155:11155111", - "eip155:280", - "eip155:420", - "eip155:80001", - "eip155:421611", - "eip155:44787", - "ton:-3", - "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", - "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z", - "polkadot:e143f23803ac50e8f6f8e62695d1ce9e", - "near:testnet", - "mvx:D", - "tron:0xcd8690dc", - "tezos:testnet", - "kadena:testnet04", - "bip122:000000000933ea01ad0ee984209779ba", - "sui:testnet", - "sui:devnet", - "stacks:2147483648", -]; - -export const DEFAULT_CHAINS = [...DEFAULT_MAIN_CHAINS, ...DEFAULT_TEST_CHAINS]; - export const DEFAULT_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; export const DEFAULT_RELAY_URL = process.env.NEXT_PUBLIC_RELAY_URL; diff --git a/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx b/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx index fd70a5b97..d011ece69 100644 --- a/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx +++ b/advanced/dapps/react-dapp-v2/src/contexts/ChainDataContext.tsx @@ -5,21 +5,25 @@ import { useEffect, useState, } from "react"; -import { SolanaChainData } from "../chains/solana"; -import { PolkadotChainData } from "../chains/polkadot"; -import { MultiversxChainData } from "../chains/multiversx"; -import { TronChainData } from "../chains/tron"; +import { + SolanaChainData, + PolkadotChainData, + MultiversxChainData, + TronChainData, + NearChainData, + CosmosChainData, + EIP155ChainData, + TezosChainData, + KadenaChainData, + BtcChainData, + SuiChainData, + StacksChainData, + TonChainData, + ChainNamespaces, + ChainsMap, +} from "@web-examples/shared"; -import { ChainNamespaces, ChainsMap, getAllChainNamespaces } from "../helpers"; -import { NearChainData } from "../chains/near"; -import { CosmosChainData } from "../chains/cosmos"; -import { EIP155ChainData } from "../chains/eip155"; -import { TezosChainData } from "../chains/tezos"; -import { KadenaChainData } from "../chains/kadena"; -import { BtcChainData } from "../chains/bip122"; -import { SuiChainData } from "../chains/sui"; -import { StacksChainData } from "../chains/stacks"; -import { TonChainData } from "../chains/ton"; +import { getAllChainNamespaces } from "../helpers"; /** * Types diff --git a/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx b/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx index 98a6c9966..2c3987a76 100644 --- a/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx +++ b/advanced/dapps/react-dapp-v2/src/contexts/ClientContext.tsx @@ -33,13 +33,14 @@ import { getSdkError, parseChainId, } from "@walletconnect/utils"; + +import { getOptionalNamespaces } from "@web-examples/shared"; import { DEFAULT_LOGGER, DEFAULT_PROJECT_ID, DEFAULT_RELAY_URL, } from "../constants"; import { AccountBalances, apiGetAccountBalance } from "../helpers"; -import { getRequiredNamespaces } from "../helpers/namespaces"; import { getPublicKeysFromAccounts } from "../helpers/solana"; import { isValidSignature } from "./JsonRpcContext"; @@ -207,7 +208,7 @@ export function ClientContextProvider({ } console.log("connect, pairing topic is:", pairing?.topic); try { - const namespacesToRequest = getRequiredNamespaces(chains); + const namespacesToRequest = getOptionalNamespaces(chains); appkit?.open(); diff --git a/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx b/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx index f0a9b29be..9cb749936 100644 --- a/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx +++ b/advanced/dapps/react-dapp-v2/src/contexts/JsonRpcContext.tsx @@ -35,8 +35,6 @@ import { } from "@kadena/client"; import { PactNumber } from "@kadena/pactjs"; import { - IUTXO, - KadenaAccount, eip712, formatTestBatchCall, formatTestTransaction, @@ -49,8 +47,16 @@ import { } from "../helpers"; import { useWalletConnectClient } from "./ClientContext"; import { - DEFAULT_COSMOS_METHODS, + SendCallsParams, + GetCapabilitiesResult, + GetCallsResult, + WalletGrantPermissionsParameters, + WalletGrantPermissionsReturnType, +} from "../constants"; + +import { DEFAULT_EIP155_METHODS, + DEFAULT_COSMOS_METHODS, DEFAULT_SOLANA_METHODS, DEFAULT_POLKADOT_METHODS, DEFAULT_NEAR_METHODS, @@ -59,20 +65,16 @@ import { DEFAULT_TON_METHODS, DEFAULT_TEZOS_METHODS, DEFAULT_KADENA_METHODS, - DEFAULT_EIP155_OPTIONAL_METHODS, - DEFAULT_EIP5792_METHODS, - SendCallsParams, - GetCapabilitiesResult, - GetCallsResult, DEFAULT_BIP122_METHODS, - DEFAULT_EIP7715_METHODS, - WalletGrantPermissionsParameters, - WalletGrantPermissionsReturnType, DEFAULT_SUI_METHODS, DEFAULT_STACKS_METHODS, -} from "../constants"; + ALL_CHAINS, + BIP122_DUST_LIMIT, + getTronWeb, +} from "@web-examples/shared"; +import type { IUTXO, KadenaAccount } from "@web-examples/shared"; import { useChainData } from "./ChainDataContext"; -import { rpcProvidersByChainId } from "../../src/helpers/api"; +import { rpcProvidersByChainId } from "../helpers"; import { signatureVerify, cryptoWaitReady } from "@polkadot/util-crypto"; import { @@ -103,11 +105,7 @@ import { getDidAddress, getDidAddressNamespace, getDidChainId, - getNamespacedDidChainId, } from "@walletconnect/utils"; -import { BIP122_DUST_LIMIT } from "../chains/bip122"; -import { getTronWeb } from "../helpers/tron"; -import { signVerify } from "@ton/crypto"; /** * Types */ @@ -356,7 +354,7 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TRANSACTION, + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION, params: [tx], }, }); @@ -379,7 +377,7 @@ export function JsonRpcContextProvider({ } return { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TRANSACTION, + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION, address, valid, result: signedTx, @@ -447,7 +445,7 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN, + method: DEFAULT_EIP155_METHODS.ETH_SIGN, params, }, }); @@ -472,7 +470,7 @@ export function JsonRpcContextProvider({ // format displayed result return { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN + " (standard)", + method: DEFAULT_EIP155_METHODS.ETH_SIGN + " (standard)", address, valid, result: signature, @@ -491,7 +489,7 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA, + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA, params, }, }); @@ -515,7 +513,7 @@ export function JsonRpcContextProvider({ ); return { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA, + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA, address, valid, result: signature, @@ -535,7 +533,7 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA_V4, + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA_V4, params, }, }); @@ -559,7 +557,7 @@ export function JsonRpcContextProvider({ ); return { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA, + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA, address, valid, result: signature, @@ -592,14 +590,14 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP5792_METHODS.WALLET_GET_CAPABILITIES, + method: DEFAULT_EIP155_METHODS.WALLET_GET_CAPABILITIES, params: [address], }, }); // format displayed result return { - method: DEFAULT_EIP5792_METHODS.WALLET_GET_CAPABILITIES, + method: DEFAULT_EIP155_METHODS.WALLET_GET_CAPABILITIES, address, valid: true, result: JSON.stringify(capabilities), @@ -627,14 +625,14 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP5792_METHODS.WALLET_GET_CALLS_STATUS, + method: DEFAULT_EIP155_METHODS.WALLET_GET_CALLS_STATUS, params: params, }, }); // format displayed result return { - method: DEFAULT_EIP5792_METHODS.WALLET_GET_CALLS_STATUS, + method: DEFAULT_EIP155_METHODS.WALLET_GET_CALLS_STATUS, address, valid: true, result: JSON.stringify(getCallsStatusResult), @@ -655,7 +653,7 @@ export function JsonRpcContextProvider({ const balance = BigNumber.from(balances[account][0].balance || "0"); if (balance.lt(parseEther("0.0002"))) { return { - method: DEFAULT_EIP5792_METHODS.WALLET_SEND_CALLS, + method: DEFAULT_EIP155_METHODS.WALLET_SEND_CALLS, address, valid: false, result: @@ -677,7 +675,7 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP5792_METHODS.WALLET_SEND_CALLS, + method: DEFAULT_EIP155_METHODS.WALLET_SEND_CALLS, params: [sendCallsRequestParams], }, }); @@ -687,7 +685,7 @@ export function JsonRpcContextProvider({ ); // format displayed result return { - method: DEFAULT_EIP5792_METHODS.WALLET_SEND_CALLS, + method: DEFAULT_EIP155_METHODS.WALLET_SEND_CALLS, address, valid: true, result: txId, @@ -737,14 +735,14 @@ export function JsonRpcContextProvider({ topic: session!.topic, chainId, request: { - method: DEFAULT_EIP7715_METHODS.WALLET_GRANT_PERMISSIONS, + method: DEFAULT_EIP155_METHODS.WALLET_GRANT_PERMISSIONS, params: [walletGrantPermissionsParameters], }, }); // format displayed result return { - method: DEFAULT_EIP7715_METHODS.WALLET_GRANT_PERMISSIONS, + method: DEFAULT_EIP155_METHODS.WALLET_GRANT_PERMISSIONS, address, valid: true, result: JSON.stringify(issuePermissionResponse), @@ -2361,11 +2359,10 @@ export function JsonRpcContextProvider({ let isValid = false; try { - isValid = await isValidTonSignature({ + isValid = await ALL_CHAINS.ton.utils.verifyMessage({ message: params[0].text, signature: result.signature, - iss: "", - signatureMeta: result.publicKey, + publicKey: result.publicKey, }); } catch (error) { console.error(error); @@ -2567,131 +2564,6 @@ export function useJsonRpc() { return context; } -async function isValidEip155Signature(params: { - message: string; - signature: string; - iss: string; -}) { - const chainId = getDidChainId(params.iss); - const rpc = rpcProvidersByChainId[Number(chainId)]; - - if (typeof rpc === "undefined") { - throw new Error(`Missing rpcProvider definition for chainId: ${chainId}`); - } - - const hashMsg = hashPersonalMessage(params.message); - const valid = await verifySignature( - getDidAddress(params.iss)!, - params.signature, - hashMsg, - rpc.baseURL - ); - return valid; -} - -async function isValidSolanaSignature(params: { - message: string; - signature: string; - iss: string; -}) { - const { message, signature, iss } = params; - const address = getDidAddress(iss)!; - const senderPublicKey = new PublicKey(address); - const valid = verifyMessageSignature( - senderPublicKey.toBase58(), - signature, - bs58.encode(new Uint8Array(Buffer.from(message))) - ); - return valid; -} - -async function isValidPolkadotSignature(params: { - message: string; - signature: string; - iss: string; -}) { - const { message, signature, iss } = params; - const address = getDidAddress(iss)!; - await cryptoWaitReady(); - const { isValid } = signatureVerify(message, signature, address); - return isValid; -} - -async function isValidSuiSignature(params: { - message: string; - signature: string; - iss: string; -}) { - const { message, signature, iss } = params; - const address = getDidAddress(iss)!; - const derivedPublicKey = await verifyPersonalMessageSignature( - new TextEncoder().encode(message), - signature, - { address } - ); - return ( - derivedPublicKey.toSuiAddress().toLowerCase() === address.toLowerCase() - ); -} - -async function isValidStacksSignature(params: { - message: string; - signature: string; - iss: string; -}) { - const { message, signature, iss } = params; - const address = getDidAddress(iss)!; - const network = getDidChainId(iss)! === "1" ? "mainnet" : "testnet"; - const hash = Buffer.from(sha256(message)).toString("hex"); - const pubKey = publicKeyFromSignatureRsv(hash, signature); - - const valid = getAddressFromPublicKey(pubKey, network) === address; - return valid; -} - -async function isValidBip122Sig(params: { - message: string; - signature: string; - iss: string; -}) { - const { message, signature, iss } = params; - const address = getDidAddress(iss)!; - const valid = await isValidBip122Signature(address, signature, message); - return valid; -} - -async function isValidTronSignature(params: { - message: string; - signature: string; - iss: string; -}) { - const { message, signature, iss } = params; - const chainId = getNamespacedDidChainId(iss)!; - const tronWeb = getTronWeb(chainId); - if (!tronWeb) { - throw new Error("Tron web not found for chainId: " + iss); - } - const address = getDidAddress(iss)!; - const valid = await tronWeb.trx.verifyMessageV2(message, signature); - return valid === address; -} - -async function isValidTonSignature(params: { - message: string; - signature: string; - iss: string; - signatureMeta?: string; -}) { - const { message, signature, iss, signatureMeta = "" } = params; - - const valid = await signVerify( - Buffer.from(message, "utf-8"), - Buffer.from(signature, "base64"), - Buffer.from(signatureMeta, "base64") - ); - - return valid; -} export function isValidSignature(params: { message: string; iss: string; @@ -2699,29 +2571,66 @@ export function isValidSignature(params: { signatureMeta?: string; }) { const namespace = getDidAddressNamespace(params.iss); + const address = getDidAddress(params.iss)!; + const chainId = getDidChainId(params.iss)!; + switch (namespace) { case "eip155": - return isValidEip155Signature(params); + return ALL_CHAINS.eip155.utils.verifyMessage({ + message: params.message, + signature: params.signature, + chainId: chainId, + address: address, + }); case "solana": - return isValidSolanaSignature(params); + return ALL_CHAINS.solana.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + }); case "polkadot": - return isValidPolkadotSignature(params); - - // case "kadena": - // return isValidKadenaSignature(params); - // case "mvx": - // return isValidMultiversxSignature(params); - // case "tezos": - // return isValidTezosSignature(params); + return ALL_CHAINS.polkadot.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + }); case "tron": - return isValidTronSignature(params); + return ALL_CHAINS.tron.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + chainId: chainId, + }); case "ton": - return isValidTonSignature(params); + return ALL_CHAINS.ton.utils.verifyMessage({ + message: params.message, + signature: params.signature, + publicKey: params.signatureMeta!, + }); case "bip122": - return isValidBip122Sig(params); + return ALL_CHAINS.bip122.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + }); case "sui": - return isValidSuiSignature(params); + return ALL_CHAINS.sui.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + }); case "stacks": - return isValidStacksSignature(params); + return ALL_CHAINS.stacks.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + chainId: chainId, + }); + case "mvx": + return ALL_CHAINS.mvx.utils.verifyMessage({ + message: params.message, + signature: params.signature, + address: address, + }); } } diff --git a/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts b/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts index 96ad4e613..90456e4dc 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/bip122.ts @@ -1,8 +1,8 @@ import { schnorr } from "@noble/curves/secp256k1"; import * as bitcoin from "bitcoinjs-lib"; import BitcoinMessage from "bitcoinjs-message"; -import { convertHexToBase64 } from "./utilities"; -import { IUTXO } from "./types"; +import { convertHexToBase64 } from "@web-examples/shared/helpers"; +import type { IUTXO } from "@web-examples/shared"; import { BIP122_TESTNET } from "../chains/bip122"; export async function apiGetBip122AccountBalance( diff --git a/advanced/dapps/react-dapp-v2/src/helpers/index.ts b/advanced/dapps/react-dapp-v2/src/helpers/index.ts index 947729fdf..fa3e0946e 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/index.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/index.ts @@ -1,8 +1,5 @@ -export * from "./api"; -export * from "./eip712"; -export * from "./eip1271"; -export * from "./tx"; -export * from "./types"; +// Re-export from shared +export * from "@web-examples/shared"; + +// Local helpers export * from "./utilities"; -export * from "./sui"; -export * from "./ton"; diff --git a/advanced/dapps/react-dapp-v2/src/helpers/tx.ts b/advanced/dapps/react-dapp-v2/src/helpers/tx.ts index 83a32c9c2..c9fb8a151 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/tx.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/tx.ts @@ -1,6 +1,6 @@ import * as encoding from "@walletconnect/encoding"; -import { apiGetAccountNonce, apiGetGasPrice } from "./api"; +import { apiGetAccountNonce, apiGetGasPrice } from "@web-examples/shared/"; import { parseEther } from "ethers/lib/utils"; import { SendCallsParams } from "../constants"; diff --git a/advanced/dapps/react-dapp-v2/src/helpers/types.ts b/advanced/dapps/react-dapp-v2/src/helpers/types.ts deleted file mode 100644 index dfd1890f0..000000000 --- a/advanced/dapps/react-dapp-v2/src/helpers/types.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { IPactCommand } from "@kadena/client"; -import { ChainId } from "@kadena/types"; - -export interface AssetData { - symbol: string; - name: string; - contractAddress?: string; - balance?: string; - decimals?: number; -} - -export interface ChainData { - name: string; - id: string; - rpc: string[]; - slip44: number; - testnet: boolean; -} -export interface ChainsMap { - [reference: string]: ChainData; -} -export interface TxData { - from: string; - to: string; - nonce: string; - gasPrice: string; - gasLimit: string; - value: string; - data: string; -} - -export interface BlockScoutTx { - value: string; - txreceipt_status: string; - transactionIndex: string; - to: string; - timeStamp: string; - nonce: string; - isError: string; - input: string; - hash: string; - gasUsed: string; - gasPrice: string; - gas: string; - from: string; - cumulativeGasUsed: string; - contractAddress: string; - confirmations: string; - blockNumber: string; - blockHash: string; -} - -export interface BlockScoutTokenTx { - value: string; - transactionIndex: string; - tokenSymbol: string; - tokenName: string; - tokenDecimal: string; - to: string; - timeStamp: string; - nonce: string; - input: string; - hash: string; - gasUsed: string; - gasPrice: string; - gas: string; - from: string; - cumulativeGasUsed: string; - contractAddress: string; - confirmations: string; - blockNumber: string; - blockHash: string; -} - -export interface ParsedTx { - timestamp: string; - hash: string; - from: string; - to: string; - nonce: string; - gasPrice: string; - gasUsed: string; - fee: string; - value: string; - input: string; - error: boolean; - asset: AssetData; - operations: TxOperation[]; -} - -export interface TxOperation { - asset: AssetData; - value: string; - from: string; - to: string; - functionName: string; -} - -export interface GasPricesResponse { - fastWait: number; - avgWait: number; - blockNum: number; - fast: number; - fastest: number; - fastestWait: number; - safeLow: number; - safeLowWait: number; - speed: number; - block_time: number; - average: number; -} - -export interface GasPrice { - time: number; - price: number; -} - -export interface GasPrices { - timestamp: number; - slow: GasPrice; - average: GasPrice; - fast: GasPrice; -} - -export interface MethodArgument { - type: string; -} - -export interface Method { - signature: string; - name: string; - args: MethodArgument[]; -} - -export interface ChainRequestRender { - label: string; - value: string; -} - -export interface ChainMetadata { - name?: string; - logo: string; - rgb: string; -} - -export interface NamespaceMetadata { - [reference: string]: ChainMetadata; -} -export interface ChainNamespaces { - [namespace: string]: ChainsMap; -} - -export interface AccountAction { - method: string; - callback: (chainId: string, address: string) => Promise; -} - -export interface AccountBalances { - [account: string]: AssetData[]; -} - -export interface KadenaAccount { - publicKey: string; // Kadena public key - account: string; // Kadena account - chainId: ChainId; // Kadena ChainId -} - -export interface IUTXO { - txid: string; - vout: number; - value: number; - status: { - confirmed: boolean; - block_height: number; - block_hash: string; - block_time: number; - }; -} diff --git a/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts b/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts index aaa6916d3..627273325 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts +++ b/advanced/dapps/react-dapp-v2/src/helpers/utilities.ts @@ -1,220 +1,4 @@ -import { BigNumber, BigNumberish, providers, utils } from "ethers"; -import * as encoding from "@walletconnect/encoding"; -import { TypedDataUtils } from "eth-sig-util"; -import * as ethUtil from "ethereumjs-util"; - -import { eip1271 } from "./eip1271"; -import { DEFAULT_CHAINS } from "../constants"; - -export function capitalize(string: string): string { - return string - .split(" ") - .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) - .join(" "); -} - -export function ellipseText(text = "", maxLength = 9999): string { - if (text.length <= maxLength) { - return text; - } - const _maxLength = maxLength - 3; - let ellipse = false; - let currentLength = 0; - const result = - text - .split(" ") - .filter((word) => { - currentLength += word.length; - if (ellipse || currentLength >= _maxLength) { - ellipse = true; - return false; - } else { - return true; - } - }) - .join(" ") + "..."; - return result; -} - -export function ellipseAddress(address = "", width = 10): string { - return `${address.slice(0, width)}...${address.slice(-width)}`; -} - -export function getDataString(func: string, arrVals: any[]): string { - let val = ""; - for (let i = 0; i < arrVals.length; i++) { - val += encoding.padLeft(arrVals[i], 64); - } - const data = func + val; - return data; -} - -export function isMobile(): boolean { - let mobile = false; - - function hasTouchEvent(): boolean { - try { - document.createEvent("TouchEvent"); - return true; - } catch (e) { - return false; - } - } - - function hasMobileUserAgent(): boolean { - if ( - /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test( - navigator.userAgent - ) || - /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test( - navigator.userAgent.substr(0, 4) - ) - ) { - return true; - } else if (hasTouchEvent()) { - return true; - } - return false; - } - - mobile = hasMobileUserAgent(); - - return mobile; -} - -export function encodePersonalMessage(msg: string): string { - const data = encoding.utf8ToBuffer(msg); - const buf = Buffer.concat([ - new Uint8Array( - Buffer.from( - "\u0019Ethereum Signed Message:\n" + data.length.toString(), - "utf8" - ) - ), - new Uint8Array(data), - ]); - return ethUtil.bufferToHex(buf); -} - -export function hashPersonalMessage(msg: string): string { - const data = encodePersonalMessage(msg); - const buf = ethUtil.toBuffer(data); - const hash = ethUtil.keccak256(buf); - return ethUtil.bufferToHex(hash); -} - -export function encodeTypedDataMessage(msg: string): string { - const data = TypedDataUtils.sanitizeData(JSON.parse(msg)); - const buf = Buffer.concat([ - new Uint8Array(Buffer.from("1901", "hex")), - new Uint8Array( - TypedDataUtils.hashStruct("EIP712Domain", data.domain, data.types) - ), - new Uint8Array( - TypedDataUtils.hashStruct( - data.primaryType as string, - data.message, - data.types - ) - ), - ]); - return ethUtil.bufferToHex(buf); -} - -export function hashTypedDataMessage(msg: string): string { - const data = encodeTypedDataMessage(msg); - const buf = ethUtil.toBuffer(data); - const hash = ethUtil.keccak256(buf); - return ethUtil.bufferToHex(hash); -} - -export function recoverAddress(sig: string, hash: string): string { - const params = ethUtil.fromRpcSig(sig); - const result = ethUtil.ecrecover( - ethUtil.toBuffer(hash), - params.v, - params.r, - params.s - ); - const signer = ethUtil.bufferToHex(ethUtil.publicToAddress(result)); - return signer; -} - -export function recoverPersonalSignature(sig: string, msg: string): string { - const hash = hashPersonalMessage(msg); - const signer = recoverAddress(sig, hash); - return signer; -} - -export function recoverTypedMessage(sig: string, msg: string): string { - const hash = hashTypedDataMessage(msg); - const signer = recoverAddress(sig, hash); - return signer; -} - -export async function verifySignature( - address: string, - sig: string, - hash: string, - rpcUrl: string -): Promise { - const provider = new providers.JsonRpcProvider(rpcUrl); - const bytecode = await provider.getCode(address); - if ( - !bytecode || - bytecode === "0x" || - bytecode === "0x0" || - bytecode === "0x00" - ) { - const signer = recoverAddress(sig, hash); - return signer.toLowerCase() === address.toLowerCase(); - } else { - return eip1271.isValidSignature(address, sig, hash, provider); - } -} - -export function convertHexToNumber(hex: string) { - try { - return encoding.hexToNumber(hex); - } catch (e) { - return hex; - } -} - -export function convertHexToUtf8(hex: string) { - try { - return encoding.hexToUtf8(hex); - } catch (e) { - return hex; - } -} -export function convertHexToBase64(hex: string) { - try { - return encoding.hexToBuffer(hex).toString("base64"); - } catch (e) { - return hex; - } -} - -export const sanitizeDecimals = (value: string, decimals = 18): string => { - const [integer, fractional] = value.split("."); - const _fractional = fractional - ? fractional.substring(0, decimals).replace(/0+$/gi, "") - : undefined; - return _fractional ? [integer, _fractional].join(".") : integer; -}; - -export const toWad = (amount: string, decimals = 18): BigNumber => { - return utils.parseUnits(sanitizeDecimals(amount, decimals), decimals); -}; - -export const fromWad = (wad: BigNumberish, decimals = 18): string => { - try { - return sanitizeDecimals(utils.formatUnits(wad, decimals), decimals); - } catch (e) { - return wad?.toString(); - } -}; +import { DEFAULT_CHAINS } from "@web-examples/shared"; export const LOCALSTORAGE_KEY_TESTNET = "TESTNET"; export const INITIAL_STATE_TESTNET_DEFAULT = true; diff --git a/advanced/dapps/react-dapp-v2/src/pages/index.tsx b/advanced/dapps/react-dapp-v2/src/pages/index.tsx index 9f173f5fa..8997ddaa3 100644 --- a/advanced/dapps/react-dapp-v2/src/pages/index.tsx +++ b/advanced/dapps/react-dapp-v2/src/pages/index.tsx @@ -3,35 +3,35 @@ import React, { useCallback, useEffect, useRef, useState } from "react"; import toast from "react-hot-toast"; import { numberToHex } from "@walletconnect/encoding"; import { RELAYER_SDK_VERSION } from "@walletconnect/core"; - -import Banner from "../components/Banner"; -import Blockchain from "../components/Blockchain"; -import Column from "../components/Column"; -import RelayRegionDropdown from "../components/RelayRegionDropdown"; -import Header from "../components/Header"; -import Modal from "../components/Modal"; import { - DEFAULT_COSMOS_METHODS, + DEFAULT_TESTNET_CHAINS, + DEFAULT_MAINNET_CHAINS, DEFAULT_EIP155_METHODS, - DEFAULT_MAIN_CHAINS, + DEFAULT_EIP5792_METHODS, + DEFAULT_EIP7715_METHODS, + DEFAULT_COSMOS_METHODS, DEFAULT_SOLANA_METHODS, DEFAULT_POLKADOT_METHODS, - DEFAULT_MULTIVERSX_METHODS, - DEFAULT_TEST_CHAINS, DEFAULT_NEAR_METHODS, - DEFAULT_KADENA_METHODS, + DEFAULT_MULTIVERSX_METHODS, DEFAULT_TRON_METHODS, DEFAULT_TEZOS_METHODS, - DEFAULT_EIP155_OPTIONAL_METHODS, - DEFAULT_EIP5792_METHODS, - GetCapabilitiesResult, + DEFAULT_KADENA_METHODS, DEFAULT_BIP122_METHODS, - DEFAULT_EIP7715_METHODS, DEFAULT_SUI_METHODS, DEFAULT_STACKS_METHODS, DEFAULT_TON_METHODS, -} from "../constants"; -import { AccountAction, setLocaleStorageTestnetFlag } from "../helpers"; + AccountAction, +} from "@web-examples/shared"; + +import Banner from "../components/Banner"; +import Blockchain from "../components/Blockchain"; +import Column from "../components/Column"; +import RelayRegionDropdown from "../components/RelayRegionDropdown"; +import Header from "../components/Header"; +import Modal from "../components/Modal"; +import { GetCapabilitiesResult } from "../constants"; +import { setLocaleStorageTestnetFlag } from "../helpers"; import Toggle from "../components/Toggle"; import RequestModal from "../modals/RequestModal"; import PairingModal from "../modals/PairingModal"; @@ -211,29 +211,29 @@ const Home: NextPage = () => { await ethereumRpc.testSignPersonalMessage(chainId, address); }, }, - [DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TRANSACTION]: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TRANSACTION, + [DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION]: { + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TRANSACTION, callback: async (chainId: string, address: string) => { openRequestModal(); await ethereumRpc.testSignTransaction(chainId, address); }, }, - [DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN]: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN + " (standard)", + [DEFAULT_EIP155_METHODS.ETH_SIGN]: { + method: DEFAULT_EIP155_METHODS.ETH_SIGN + " (standard)", callback: async (chainId: string, address: string) => { openRequestModal(); await ethereumRpc.testEthSign(chainId, address); }, }, - [DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA]: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA, + [DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA]: { + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA, callback: async (chainId: string, address: string) => { openRequestModal(); await ethereumRpc.testSignTypedData(chainId, address); }, }, - [DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA_V4]: { - method: DEFAULT_EIP155_OPTIONAL_METHODS.ETH_SIGN_TYPED_DATA_V4, + [DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA_V4]: { + method: DEFAULT_EIP155_METHODS.ETH_SIGN_TYPED_DATA_V4, callback: async (chainId: string, address: string) => { openRequestModal(); await ethereumRpc.testSignTypedDatav4(chainId, address); @@ -733,7 +733,9 @@ const Home: NextPage = () => { }; const renderContent = () => { - const chainOptions = isTestnet ? DEFAULT_TEST_CHAINS : DEFAULT_MAIN_CHAINS; + const chainOptions = isTestnet + ? DEFAULT_TESTNET_CHAINS + : DEFAULT_MAINNET_CHAINS; // Show connect screen if no session or no accounts/balances return !session || (!accounts.length && !Object.keys(balances).length) ? ( diff --git a/advanced/dapps/walletconnect-pay-dapp/next-env.d.ts b/advanced/dapps/walletconnect-pay-dapp/next-env.d.ts new file mode 100644 index 000000000..830fb594c --- /dev/null +++ b/advanced/dapps/walletconnect-pay-dapp/next-env.d.ts @@ -0,0 +1,6 @@ +/// +/// +/// + +// NOTE: This file should not be edited +// see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/advanced/wallets/react-wallet-v2/next.config.js b/advanced/wallets/react-wallet-v2/next.config.js index ebacdf340..13f6abda9 100644 --- a/advanced/wallets/react-wallet-v2/next.config.js +++ b/advanced/wallets/react-wallet-v2/next.config.js @@ -1,5 +1,6 @@ module.exports = { reactStrictMode: true, + transpilePackages: ['@web-examples/shared'], webpack(config) { config.resolve.fallback = { ...config.resolve.fallback, diff --git a/advanced/wallets/react-wallet-v2/package.json b/advanced/wallets/react-wallet-v2/package.json index 18e8eb705..627409276 100644 --- a/advanced/wallets/react-wallet-v2/package.json +++ b/advanced/wallets/react-wallet-v2/package.json @@ -10,6 +10,7 @@ "prettier:write": "prettier --write '**/*.{js,ts,jsx,tsx}'" }, "dependencies": { + "@web-examples/shared": "file:../../../shared", "@cosmjs/amino": "0.32.3", "@cosmjs/encoding": "0.32.3", "@cosmjs/proto-signing": "0.32.3", diff --git a/advanced/wallets/react-wallet-v2/pnpm-lock.yaml b/advanced/wallets/react-wallet-v2/pnpm-lock.yaml index a44e0de0d..2a787a958 100644 --- a/advanced/wallets/react-wallet-v2/pnpm-lock.yaml +++ b/advanced/wallets/react-wallet-v2/pnpm-lock.yaml @@ -146,6 +146,9 @@ importers: '@walletconnect/utils': specifier: 2.22.4-canary-auth-3 version: 2.22.4-canary-auth-3(typescript@5.2.2)(zod@3.25.76) + '@web-examples/shared': + specifier: file:../../../shared + version: file:../../../shared(bufferutil@4.0.9)(utf-8-validate@5.0.10) '@zerodev/ecdsa-validator': specifier: 5.3.0 version: 5.3.0(@zerodev/sdk@5.3.1(permissionless@0.1.43(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(permissionless@0.1.43(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)) @@ -1930,6 +1933,9 @@ packages: '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + '@types/bn.js@5.2.0': resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} @@ -1973,6 +1979,9 @@ packages: '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} @@ -1990,6 +1999,9 @@ packages: '@types/scheduler@0.26.0': resolution: {integrity: sha512-WFHp9YUJQ6CKshqoC37iOlHnQSmxNc795UhB26CyBBttrN9svdIrUjl/NjnNmfcwtncN0h/0PPAFWv9ovP8mLA==} + '@types/secp256k1@4.0.7': + resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==} + '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} @@ -2157,6 +2169,9 @@ packages: resolution: {integrity: sha512-Qk4/lnVpjTgHpkgFQAZXkjWM8OQnO3BG7IdhoHVH7amLRO8xKMl9uorv/4ukW9FrL+MZh4sgCnrJzYY8GspU7A==} engines: {node: '>=18.20.8'} + '@walletconnect/encoding@1.0.2': + resolution: {integrity: sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==} + '@walletconnect/environment@1.0.1': resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} @@ -2254,6 +2269,9 @@ packages: '@walletconnect/window-metadata@1.0.1': resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + '@web-examples/shared@file:../../../shared': + resolution: {directory: ../../../shared, type: directory} + '@zerodev/ecdsa-validator@5.3.0': resolution: {integrity: sha512-pGP6ubhbSGTCoebHdhmQajfhDJM6N/qlIdkESa97wvUOBmn8gcE/U+GvNZBzOxCtiO/MY6bKg9HLC2J4hoRJPA==} peerDependencies: @@ -3090,12 +3108,33 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + eth-sig-util@3.0.1: + resolution: {integrity: sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==} + deprecated: Deprecated in favor of '@metamask/eth-sig-util' + ethereum-bloom-filters@1.2.0: resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + ethereum-cryptography@2.2.1: resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + deprecated: This library has been deprecated and usage is discouraged. + + ethereumjs-util@5.2.1: + resolution: {integrity: sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==} + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} @@ -3107,6 +3146,10 @@ packages: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -3543,6 +3586,9 @@ packages: resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} engines: {node: '>= 0.4'} + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + is-weakmap@2.0.2: resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} engines: {node: '>= 0.4'} @@ -3881,6 +3927,9 @@ packages: node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + node-fetch-native@1.6.7: resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} @@ -4306,6 +4355,10 @@ packages: resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} engines: {node: '>= 0.8'} + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + rpc-websockets@9.2.0: resolution: {integrity: sha512-DS/XHdPxplQTtNRKiBCRWGBJfjOk56W7fyFUpiYi9fSTWTzoEMbUkn3J4gB0IMniIEVeAGR1/rzFQogzD5MxvQ==} @@ -4360,6 +4413,10 @@ packages: resolution: {integrity: sha512-tArjQw2P0RTdY7QmkNehgp6TVvQXq6ulIhxv8gaH6YubKG/wxxAoNKcbuXjDhybbc+b2Ihc7e0xxiGN744UIiQ==} engines: {node: '>=4.0.0'} + secp256k1@4.0.4: + resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} + engines: {node: '>=18.0.0'} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -4389,6 +4446,9 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -4671,6 +4731,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + tweetnacl@1.0.3: resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} @@ -4698,6 +4761,9 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + typedarray-to-buffer@4.0.0: resolution: {integrity: sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==} @@ -7873,6 +7939,10 @@ snapshots: tslib: 2.8.1 optional: true + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 17.0.35 + '@types/bn.js@5.2.0': dependencies: '@types/node': 17.0.35 @@ -7916,6 +7986,10 @@ snapshots: '@types/parse-json@4.0.2': {} + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 17.0.35 + '@types/prop-types@15.7.15': {} '@types/react-dom@18.2.19': @@ -7934,6 +8008,10 @@ snapshots: '@types/scheduler@0.26.0': {} + '@types/secp256k1@4.0.7': + dependencies: + '@types/node': 17.0.35 + '@types/semver@7.7.1': {} '@types/stylis@4.2.5': {} @@ -8187,6 +8265,12 @@ snapshots: - utf-8-validate - zod + '@walletconnect/encoding@1.0.2': + dependencies: + is-typedarray: 1.0.0 + tslib: 1.14.1 + typedarray-to-buffer: 3.1.5 + '@walletconnect/environment@1.0.1': dependencies: tslib: 1.14.1 @@ -8785,6 +8869,17 @@ snapshots: '@walletconnect/window-getters': 1.0.1 tslib: 1.14.1 + '@web-examples/shared@file:../../../shared(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/encoding': 1.0.2 + '@walletconnect/jsonrpc-utils': 1.0.8 + eth-sig-util: 3.0.1 + ethereumjs-util: 7.1.5 + ethers: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@zerodev/ecdsa-validator@5.3.0(@zerodev/sdk@5.3.1(permissionless@0.1.43(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(permissionless@0.1.43(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76))': dependencies: '@zerodev/sdk': 5.3.1(permissionless@0.1.43(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)))(viem@2.17.8(bufferutil@4.0.9)(typescript@5.2.2)(utf-8-validate@5.0.10)(zod@3.25.76)) @@ -9827,10 +9922,35 @@ snapshots: esutils@2.0.3: {} + eth-sig-util@3.0.1: + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 5.2.1 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + ethereum-bloom-filters@1.2.0: dependencies: '@noble/hashes': 1.8.0 + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.7 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.2 + pbkdf2: 3.1.5 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.4 + setimmediate: 1.0.5 + ethereum-cryptography@2.2.1: dependencies: '@noble/curves': 1.4.2 @@ -9838,6 +9958,39 @@ snapshots: '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.2 + ethereumjs-util: 6.2.1 + + ethereumjs-util@5.2.1: + dependencies: + bn.js: 4.12.2 + create-hash: 1.2.0 + elliptic: 6.6.1 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + safe-buffer: 5.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.2 + create-hash: 1.2.0 + elliptic: 6.6.1 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.2.0 + bn.js: 5.2.2 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + ethers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 @@ -9892,6 +10045,11 @@ snapshots: bn.js: 4.11.6 number-to-bn: 1.7.0 + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + eventemitter3@5.0.1: {} events@3.3.0: {} @@ -10370,6 +10528,8 @@ snapshots: dependencies: which-typed-array: 1.1.19 + is-typedarray@1.0.0: {} + is-weakmap@2.0.2: {} is-weakref@1.1.1: @@ -10750,6 +10910,8 @@ snapshots: node-addon-api@2.0.2: {} + node-addon-api@5.1.0: {} + node-fetch-native@1.6.7: {} node-fetch@2.7.0: @@ -11265,6 +11427,10 @@ snapshots: hash-base: 3.1.2 inherits: 2.0.4 + rlp@2.2.7: + dependencies: + bn.js: 5.2.2 + rpc-websockets@9.2.0: dependencies: '@swc/helpers': 0.5.17 @@ -11342,6 +11508,12 @@ snapshots: nan: 2.23.0 safe-buffer: 5.2.1 + secp256k1@4.0.4: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + semver@6.3.1: {} semver@7.7.1: {} @@ -11372,6 +11544,8 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 + setimmediate@1.0.5: {} + setprototypeof@1.2.0: {} sha.js@2.4.12: @@ -11713,6 +11887,8 @@ snapshots: tslib@2.8.1: {} + tweetnacl-util@0.15.1: {} + tweetnacl@1.0.3: {} type-check@0.4.0: @@ -11754,6 +11930,10 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + typedarray-to-buffer@4.0.0: {} typeforce@1.18.0: {} diff --git a/advanced/wallets/react-wallet-v2/src/components/MultibridgeRequestModal.tsx b/advanced/wallets/react-wallet-v2/src/components/MultibridgeRequestModal.tsx index 4e7f6c032..3295d160d 100644 --- a/advanced/wallets/react-wallet-v2/src/components/MultibridgeRequestModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/components/MultibridgeRequestModal.tsx @@ -13,7 +13,7 @@ import { } from '@/utils/MultibridgeUtil' import { getWallet } from '@/utils/EIP155WalletUtil' import { walletkit } from '@/utils/WalletConnectUtil' -import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' +import { EIP155_CHAINS, TEIP155Chain } from '@web-examples/shared' import { ChainAbstractionService, Transaction } from '@/utils/ChainAbstractionService' import { providers } from 'ethers' import { formatJsonRpcError } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/components/RequestDetalilsCard.tsx b/advanced/wallets/react-wallet-v2/src/components/RequestDetalilsCard.tsx index 98506cf07..08c19ea26 100644 --- a/advanced/wallets/react-wallet-v2/src/components/RequestDetalilsCard.tsx +++ b/advanced/wallets/react-wallet-v2/src/components/RequestDetalilsCard.tsx @@ -1,11 +1,11 @@ -import { COSMOS_MAINNET_CHAINS, TCosmosChain } from '@/data/COSMOSData' -import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' -import { KADENA_CHAINS, TKadenaChain } from '@/data/KadenaData' -import { NEAR_TEST_CHAINS, TNearChain } from '@/data/NEARData' -import { SOLANA_CHAINS, TSolanaChain } from '@/data/SolanaData' -import { MULTIVERSX_CHAINS, TMultiversxChain } from '@/data/MultiversxData' -import { TRON_CHAINS, TTronChain } from '@/data/TronData' -import { TON_CHAINS, TTonChain } from '@/data/TonData' +import { COSMOS_MAINNET_CHAINS, TCosmosChain } from '@web-examples/shared' +import { EIP155_CHAINS, TEIP155Chain } from '@web-examples/shared' +import { KADENA_CHAINS, TKadenaChain } from '@web-examples/shared' +import { NEAR_TEST_CHAINS, TNearChain } from '@web-examples/shared' +import { SOLANA_CHAINS, TSolanaChain } from '@web-examples/shared' +import { MULTIVERSX_CHAINS, TMultiversxChain } from '@web-examples/shared' +import { TRON_CHAINS, TTronChain } from '@web-examples/shared' +import { TON_CHAINS, TTonChain } from '@web-examples/shared' import { Col, Divider, Row, Text } from '@nextui-org/react' import { Fragment } from 'react' diff --git a/advanced/wallets/react-wallet-v2/src/components/SessionChainCard.tsx b/advanced/wallets/react-wallet-v2/src/components/SessionChainCard.tsx index 64b72c0aa..1dc3e3a8a 100644 --- a/advanced/wallets/react-wallet-v2/src/components/SessionChainCard.tsx +++ b/advanced/wallets/react-wallet-v2/src/components/SessionChainCard.tsx @@ -1,10 +1,10 @@ import ChainCard from '@/components/ChainCard' -import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData' -import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data' -import { NEAR_TEST_CHAINS } from '@/data/NEARData' -import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData' -import { MULTIVERSX_MAINNET_CHAINS, MULTIVERSX_TEST_CHAINS } from '@/data/MultiversxData' -import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS } from '@/data/TronData' +import { COSMOS_MAINNET_CHAINS } from '@web-examples/shared' +import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@web-examples/shared' +import { NEAR_TEST_CHAINS } from '@web-examples/shared' +import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@web-examples/shared' +import { MULTIVERSX_MAINNET_CHAINS, MULTIVERSX_TEST_CHAINS } from '@web-examples/shared' +import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS } from '@web-examples/shared' import { formatChainName } from '@/utils/HelperUtil' import { Col, Row, Text } from '@nextui-org/react' import { SessionTypes } from '@walletconnect/types' diff --git a/advanced/wallets/react-wallet-v2/src/components/SessionProposalChainCard.tsx b/advanced/wallets/react-wallet-v2/src/components/SessionProposalChainCard.tsx index eab288e86..b4bd74663 100644 --- a/advanced/wallets/react-wallet-v2/src/components/SessionProposalChainCard.tsx +++ b/advanced/wallets/react-wallet-v2/src/components/SessionProposalChainCard.tsx @@ -1,10 +1,10 @@ import ChainCard from '@/components/ChainCard' -import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData' -import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data' -import { NEAR_TEST_CHAINS } from '@/data/NEARData' -import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData' -import { MULTIVERSX_MAINNET_CHAINS, MULTIVERSX_TEST_CHAINS } from '@/data/MultiversxData' -import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS } from '@/data/TronData' +import { COSMOS_MAINNET_CHAINS } from '@web-examples/shared' +import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@web-examples/shared' +import { NEAR_TEST_CHAINS } from '@web-examples/shared' +import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@web-examples/shared' +import { MULTIVERSX_MAINNET_CHAINS, MULTIVERSX_TEST_CHAINS } from '@web-examples/shared' +import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS } from '@web-examples/shared' import { formatChainName } from '@/utils/HelperUtil' import { Col, Row, Text } from '@nextui-org/react' import { ProposalTypes } from '@walletconnect/types' diff --git a/advanced/wallets/react-wallet-v2/src/hooks/useSmartAccounts.ts b/advanced/wallets/react-wallet-v2/src/hooks/useSmartAccounts.ts index 70cedc49f..1766fd610 100644 --- a/advanced/wallets/react-wallet-v2/src/hooks/useSmartAccounts.ts +++ b/advanced/wallets/react-wallet-v2/src/hooks/useSmartAccounts.ts @@ -1,4 +1,4 @@ -import { EIP155Chain } from '@/data/EIP155Data' +import { EIP155Chain } from '@web-examples/shared' import SettingsStore from '@/store/SettingsStore' import { createOrRestoreBiconomySmartAccount, diff --git a/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts b/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts index 5561c9e6d..5452f2581 100644 --- a/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts +++ b/advanced/wallets/react-wallet-v2/src/hooks/useWalletConnectEventsManager.ts @@ -1,33 +1,33 @@ -import { COSMOS_SIGNING_METHODS } from '@/data/COSMOSData' -import { EIP155_SIGNING_METHODS } from '@/data/EIP155Data' +import { COSMOS_SIGNING_METHODS } from '@web-examples/shared' +import { EIP155_SIGNING_METHODS } from '@web-examples/shared' import { EIP5792_METHODS } from '@/data/EIP5792Data' -import { SOLANA_SIGNING_METHODS } from '@/data/SolanaData' -import { POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData' -import { MULTIVERSX_SIGNING_METHODS } from '@/data/MultiversxData' -import { TRON_SIGNING_METHODS } from '@/data/TronData' +import { SOLANA_SIGNING_METHODS } from '@web-examples/shared' +import { POLKADOT_SIGNING_METHODS } from '@web-examples/shared' +import { MULTIVERSX_SIGNING_METHODS } from '@web-examples/shared' +import { TRON_SIGNING_METHODS } from '@web-examples/shared' import ModalStore from '@/store/ModalStore' import SettingsStore from '@/store/SettingsStore' import { walletkit } from '@/utils/WalletConnectUtil' import { SignClientTypes } from '@walletconnect/types' import { useCallback, useEffect, useMemo } from 'react' -import { NEAR_SIGNING_METHODS } from '@/data/NEARData' +import { NEAR_SIGNING_METHODS } from '@web-examples/shared' import { approveNearRequest } from '@/utils/NearRequestHandlerUtil' -import { TEZOS_SIGNING_METHODS } from '@/data/TezosData' -import { KADENA_SIGNING_METHODS } from '@/data/KadenaData' +import { TEZOS_SIGNING_METHODS } from '@web-examples/shared' +import { KADENA_SIGNING_METHODS } from '@web-examples/shared' import { formatJsonRpcError } from '@json-rpc-tools/utils' import { approveEIP5792Request } from '@/utils/EIP5792RequestHandlerUtils' import EIP155Lib from '@/lib/EIP155Lib' import { getWallet } from '@/utils/EIP155WalletUtil' -import { BIP122_SIGNING_METHODS } from '@/data/Bip122Data' +import { BIP122_SIGNING_METHODS } from '@web-examples/shared' import { EIP7715_METHOD } from '@/data/EIP7715Data' import { refreshSessionsList } from '@/pages/wc' import WalletCheckoutUtil from '@/utils/WalletCheckoutUtil' import WalletCheckoutCtrl from '@/store/WalletCheckoutCtrl' import { CheckoutErrorCode } from '@/types/wallet_checkout' import { createCheckoutError } from '@/types/wallet_checkout' -import { SUI_SIGNING_METHODS } from '@/data/SuiData' -import { STACKS_SIGNING_METHODS } from '@/data/StacksData' -import { TON_SIGNING_METHODS } from '@/data/TonData' +import { SUI_SIGNING_METHODS } from '@web-examples/shared' +import { STACKS_SIGNING_METHODS } from '@web-examples/shared' +import { TON_SIGNING_METHODS } from '@web-examples/shared' export default function useWalletConnectEventsManager(initialized: boolean) { /****************************************************************************** diff --git a/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts b/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts index eed33445b..3df8e134a 100644 --- a/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts +++ b/advanced/wallets/react-wallet-v2/src/lib/Bip122Lib.ts @@ -5,7 +5,7 @@ import * as bip39 from 'bip39' import BIP32Factory, { BIP32Interface } from 'bip32' import bitcoinMessage from 'bitcoinjs-message' import { schnorr } from '@noble/secp256k1' -import { BIP122_CHAINS, BIP122_TESTNET_ID, IBip122ChainId } from '@/data/Bip122Data' +import { BIP122_CHAINS, BIP122_TESTNET_ID, IBip122ChainId } from '@web-examples/shared' bitcoin.initEccLib(ecc) const ECPair = ECPairFactory(ecc) diff --git a/advanced/wallets/react-wallet-v2/src/lib/NearLib.ts b/advanced/wallets/react-wallet-v2/src/lib/NearLib.ts index 5c7c8fe2e..e5044232b 100644 --- a/advanced/wallets/react-wallet-v2/src/lib/NearLib.ts +++ b/advanced/wallets/react-wallet-v2/src/lib/NearLib.ts @@ -13,7 +13,7 @@ import { AccessKeyView } from 'near-api-js/lib/providers/provider' import { Schema, serialize } from 'borsh' import { walletkit } from '@/utils/WalletConnectUtil' -import { NEAR_TEST_CHAINS, TNearChain } from '@/data/NEARData' +import { NEAR_TEST_CHAINS, TNearChain } from '@web-examples/shared' const RPC_URL = 'https://rpc.testnet.near.org' diff --git a/advanced/wallets/react-wallet-v2/src/lib/SolanaLib.ts b/advanced/wallets/react-wallet-v2/src/lib/SolanaLib.ts index f60cd8a13..c33b542db 100644 --- a/advanced/wallets/react-wallet-v2/src/lib/SolanaLib.ts +++ b/advanced/wallets/react-wallet-v2/src/lib/SolanaLib.ts @@ -15,7 +15,7 @@ import { TOKEN_PROGRAM_ID, getOrCreateAssociatedTokenAccount } from '@solana/spl-token' -import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData' +import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@web-examples/shared' /** * Types diff --git a/advanced/wallets/react-wallet-v2/src/lib/StacksLib.ts b/advanced/wallets/react-wallet-v2/src/lib/StacksLib.ts index 5a1036951..a8524c647 100644 --- a/advanced/wallets/react-wallet-v2/src/lib/StacksLib.ts +++ b/advanced/wallets/react-wallet-v2/src/lib/StacksLib.ts @@ -10,8 +10,8 @@ import { publicKeyToHex, } from '@stacks/transactions' import { networkFromName, StacksNetworks } from '@stacks/network' -import { STACKS_MAINNET, STACKS_TESTNET, STACKS_TESTNET_CAIP2 } from '@/data/StacksData' -import { STACKS_MAINNET_CAIP2 } from '@/data/StacksData' +import { STACKS_MAINNET, STACKS_TESTNET, STACKS_TESTNET_CAIP2 } from '@web-examples/shared' +import { STACKS_MAINNET_CAIP2 } from '@web-examples/shared' import { sha256 } from '@noble/hashes/sha2' /** diff --git a/advanced/wallets/react-wallet-v2/src/lib/TonLib.ts b/advanced/wallets/react-wallet-v2/src/lib/TonLib.ts index 5aee2d6b1..faf67da58 100644 --- a/advanced/wallets/react-wallet-v2/src/lib/TonLib.ts +++ b/advanced/wallets/react-wallet-v2/src/lib/TonLib.ts @@ -11,7 +11,7 @@ import { beginCell, storeMessage } from '@ton/ton' -import { TON_MAINNET_CHAINS, TON_TEST_CHAINS } from '@/data/TonData' +import { TON_MAINNET_CHAINS, TON_TEST_CHAINS } from '@web-examples/shared' /** * Types diff --git a/advanced/wallets/react-wallet-v2/src/pages/index.tsx b/advanced/wallets/react-wallet-v2/src/pages/index.tsx index a7f502b5a..b92971b32 100644 --- a/advanced/wallets/react-wallet-v2/src/pages/index.tsx +++ b/advanced/wallets/react-wallet-v2/src/pages/index.tsx @@ -1,26 +1,26 @@ import AccountCard from '@/components/AccountCard' import AccountPicker from '@/components/AccountPicker' import PageHeader from '@/components/PageHeader' -import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData' -import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data' -import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData' -import { POLKADOT_MAINNET_CHAINS, POLKADOT_TEST_CHAINS } from '@/data/PolkadotData' -import { MULTIVERSX_MAINNET_CHAINS, MULTIVERSX_TEST_CHAINS } from '@/data/MultiversxData' -import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS } from '@/data/TronData' -import { NEAR_TEST_CHAINS } from '@/data/NEARData' -import { TEZOS_MAINNET_CHAINS, TEZOS_TEST_CHAINS } from '@/data/TezosData' -import { KADENA_MAINNET_CHAINS, KADENA_TEST_CHAINS } from '@/data/KadenaData' -import { TON_MAINNET_CHAINS, TON_TEST_CHAINS } from '@/data/TonData' +import { COSMOS_MAINNET_CHAINS } from '@web-examples/shared' +import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@web-examples/shared' +import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@web-examples/shared' +import { POLKADOT_MAINNET_CHAINS, POLKADOT_TEST_CHAINS } from '@web-examples/shared' +import { MULTIVERSX_MAINNET_CHAINS, MULTIVERSX_TEST_CHAINS } from '@web-examples/shared' +import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS } from '@web-examples/shared' +import { NEAR_TEST_CHAINS } from '@web-examples/shared' +import { TEZOS_MAINNET_CHAINS, TEZOS_TEST_CHAINS } from '@web-examples/shared' +import { KADENA_MAINNET_CHAINS, KADENA_TEST_CHAINS } from '@web-examples/shared' +import { TON_MAINNET_CHAINS, TON_TEST_CHAINS } from '@web-examples/shared' import SettingsStore from '@/store/SettingsStore' import { Text } from '@nextui-org/react' import { Fragment } from 'react' import { useSnapshot } from 'valtio' import useSmartAccounts from '@/hooks/useSmartAccounts' -import { BIP122_CHAINS } from '@/data/Bip122Data' +import { BIP122_CHAINS } from '@web-examples/shared' import { useRouter } from 'next/router' import ChainAbstractionBalanceCard from '@/components/ChainAbstractionBalanceCard' -import { SUI_MAINNET, SUI_MAINNET_CHAINS, SUI_TESTNET_CHAINS } from '@/data/SuiData' -import { STACKS_MAINNET, STACKS_TESTNET } from '@/data/StacksData' +import { SUI_MAINNET, SUI_MAINNET_CHAINS, SUI_TESTNET_CHAINS } from '@web-examples/shared' +import { STACKS_MAINNET, STACKS_TESTNET } from '@web-examples/shared' export default function HomePage() { const { diff --git a/advanced/wallets/react-wallet-v2/src/utils/AuthUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/AuthUtil.ts index 35c820e6d..cb5363998 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/AuthUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/AuthUtil.ts @@ -20,7 +20,7 @@ import { getDidChainId, parseChainId } from '@walletconnect/utils' -import { IBip122ChainId } from '@/data/Bip122Data' +import { IBip122ChainId } from '@web-examples/shared' import { AuthenticationMessage } from '@/types/auth' import bs58 from 'bs58' const didPrefix = 'did:pkh:' diff --git a/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts index 1323b35dd..23c3fe5e3 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/Bip122RequestHandlerUtil.ts @@ -1,9 +1,9 @@ -import { KADENA_SIGNING_METHODS } from '@/data/KadenaData' +import { KADENA_SIGNING_METHODS } from '@web-examples/shared' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' import { SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' import { getWalletAddressFromParams } from './HelperUtil' -import { BIP122_SIGNING_METHODS, IBip122ChainId } from '@/data/Bip122Data' +import { BIP122_SIGNING_METHODS, IBip122ChainId } from '@web-examples/shared' import { bip122Addresses, bip122Wallet } from './Bip122WalletUtil' export async function approveBip122Request( diff --git a/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts index ee1121589..f1af6408e 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/Bip122WalletUtil.ts @@ -1,4 +1,4 @@ -import { BIP122_MAINNET_CAIP2, BIP122_TESTNET_CAIP2 } from '@/data/Bip122Data' +import { BIP122_MAINNET_CAIP2, BIP122_TESTNET_CAIP2 } from '@web-examples/shared' import BitcoinLib from '@/lib/Bip122Lib' export let wallet1: BitcoinLib diff --git a/advanced/wallets/react-wallet-v2/src/utils/CosmosRequestHandler.ts b/advanced/wallets/react-wallet-v2/src/utils/CosmosRequestHandler.ts index 4b98e4574..91ed473de 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/CosmosRequestHandler.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/CosmosRequestHandler.ts @@ -1,4 +1,4 @@ -import { COSMOS_SIGNING_METHODS } from '@/data/COSMOSData' +import { COSMOS_SIGNING_METHODS } from '@web-examples/shared' import { cosmosAddresses, cosmosWallets } from '@/utils/CosmosWalletUtil' import { getWalletAddressFromParams } from '@/utils/HelperUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/EIP155RequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/EIP155RequestHandlerUtil.ts index a61af4a22..f80495c2b 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/EIP155RequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/EIP155RequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { EIP155_CHAINS, EIP155_SIGNING_METHODS, TEIP155Chain } from '@/data/EIP155Data' +import { EIP155_CHAINS, EIP155_SIGNING_METHODS, TEIP155Chain } from '@web-examples/shared' import { getWallet } from '@/utils/EIP155WalletUtil' import { getSignParamsMessage, getSignTypedDataParamsData } from '@/utils/HelperUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/EIP5792RequestHandlerUtils.ts b/advanced/wallets/react-wallet-v2/src/utils/EIP5792RequestHandlerUtils.ts index a57ae9a3d..4100dd654 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/EIP5792RequestHandlerUtils.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/EIP5792RequestHandlerUtils.ts @@ -1,4 +1,4 @@ -import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' +import { EIP155_CHAINS, TEIP155Chain } from '@web-examples/shared' import { EIP5792_METHODS, GetCallsParams, diff --git a/advanced/wallets/react-wallet-v2/src/utils/HelperUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/HelperUtil.ts index 8be1dc0aa..7fd454408 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/HelperUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/HelperUtil.ts @@ -1,14 +1,14 @@ import toast from 'react-hot-toast' -import { COSMOS_MAINNET_CHAINS, TCosmosChain } from '@/data/COSMOSData' -import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' -import { MULTIVERSX_CHAINS, TMultiversxChain } from '@/data/MultiversxData' -import { NEAR_CHAINS, NEAR_TEST_CHAINS, TNearChain } from '@/data/NEARData' -import { POLKADOT_CHAINS, TPolkadotChain } from '@/data/PolkadotData' -import { SOLANA_CHAINS, TSolanaChain } from '@/data/SolanaData' -import { TEZOS_CHAINS, TTezosChain } from '@/data/TezosData' -import { TRON_CHAINS, TTronChain } from '@/data/TronData' -import { KADENA_CHAINS, TKadenaChain } from '@/data/KadenaData' -import { TON_CHAINS } from '@/data/TonData' +import { COSMOS_MAINNET_CHAINS, TCosmosChain } from '@web-examples/shared' +import { EIP155_CHAINS, TEIP155Chain } from '@web-examples/shared' +import { MULTIVERSX_CHAINS, TMultiversxChain } from '@web-examples/shared' +import { NEAR_CHAINS, NEAR_TEST_CHAINS, TNearChain } from '@web-examples/shared' +import { POLKADOT_CHAINS, TPolkadotChain } from '@web-examples/shared' +import { SOLANA_CHAINS, TSolanaChain } from '@web-examples/shared' +import { TEZOS_CHAINS, TTezosChain } from '@web-examples/shared' +import { TRON_CHAINS, TTronChain } from '@web-examples/shared' +import { KADENA_CHAINS, TKadenaChain } from '@web-examples/shared' +import { TON_CHAINS } from '@web-examples/shared' import { utils } from 'ethers' import bs58 from 'bs58' diff --git a/advanced/wallets/react-wallet-v2/src/utils/KadenaRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/KadenaRequestHandlerUtil.ts index b059b6a57..a34ced36a 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/KadenaRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/KadenaRequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { KADENA_SIGNING_METHODS } from '@/data/KadenaData' +import { KADENA_SIGNING_METHODS } from '@web-examples/shared' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' import { SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/MultibridgeUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/MultibridgeUtil.ts index 1fc7e03be..9f586c708 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/MultibridgeUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/MultibridgeUtil.ts @@ -2,7 +2,7 @@ import { createPublicClient, decodeFunctionData, erc20Abi, getContract, Hex, htt import { arbitrum, base, optimism } from 'viem/chains' import { getChainById } from './ChainUtil' import { providers } from 'ethers' -import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' +import { EIP155_CHAINS, TEIP155Chain } from '@web-examples/shared' const BASE_URL = 'https://api.socket.tech/v2' const WHITELIST_BRIDGES = 'across' diff --git a/advanced/wallets/react-wallet-v2/src/utils/MultiversxRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/MultiversxRequestHandlerUtil.ts index 604adc3f5..f121a530d 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/MultiversxRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/MultiversxRequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { MULTIVERSX_SIGNING_METHODS } from '@/data/MultiversxData' +import { MULTIVERSX_SIGNING_METHODS } from '@web-examples/shared' import { getWalletAddressFromParams } from '@/utils/HelperUtil' import { multiversxAddresses, multiversxWallets } from '@/utils/MultiversxWalletUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/NearRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/NearRequestHandlerUtil.ts index fa3aee189..1d3ec03e9 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/NearRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/NearRequestHandlerUtil.ts @@ -2,7 +2,7 @@ import { SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' import { InMemorySigner, transactions, utils, Connection } from 'near-api-js' -import { NEAR_SIGNING_METHODS, NEAR_TEST_CHAINS } from '@/data/NEARData' +import { NEAR_SIGNING_METHODS, NEAR_TEST_CHAINS } from '@web-examples/shared' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' import { nearWallet } from '@/utils/NearWalletUtil' import { decodeTransaction } from '@/lib/NearLib' diff --git a/advanced/wallets/react-wallet-v2/src/utils/PaymentValidatorUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/PaymentValidatorUtil.ts index 9db6aaa4b..fe4a8a872 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/PaymentValidatorUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/PaymentValidatorUtil.ts @@ -10,7 +10,7 @@ import TransactionSimulatorUtil from './TransactionSimulatorUtil' import SettingsStore from '@/store/SettingsStore' import { getSolanaTokenData, getTokenData } from '@/data/tokenUtil' import { getChainById } from './ChainUtil' -import { blockchainApiRpc } from '@/data/EIP155Data' +import { blockchainApiRpc } from '@web-examples/shared' import { Connection, PublicKey, @@ -18,8 +18,8 @@ import { Transaction, TransactionInstruction } from '@solana/web3.js' -import { SOLANA_TEST_CHAINS } from '@/data/SolanaData' -import { SOLANA_MAINNET_CHAINS } from '@/data/SolanaData' +import { SOLANA_TEST_CHAINS } from '@web-examples/shared' +import { SOLANA_MAINNET_CHAINS } from '@web-examples/shared' import { createTransferInstruction, TOKEN_PROGRAM_ID } from '@solana/spl-token' import { createAssociatedTokenAccountInstruction } from '@solana/spl-token' import { getAssociatedTokenAddress } from '@solana/spl-token' diff --git a/advanced/wallets/react-wallet-v2/src/utils/PolkadotRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/PolkadotRequestHandlerUtil.ts index 608ef95d9..a8547dc52 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/PolkadotRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/PolkadotRequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData' +import { POLKADOT_SIGNING_METHODS } from '@web-examples/shared' import { getWalletAddressFromParams } from '@/utils/HelperUtil' import { getPolkadotWallet, polkadotAddresses, polkadotWallets } from '@/utils/PolkadotWalletUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/SolanaRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/SolanaRequestHandlerUtil.ts index d2894b8d2..14553394c 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/SolanaRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/SolanaRequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { SOLANA_SIGNING_METHODS } from '@/data/SolanaData' +import { SOLANA_SIGNING_METHODS } from '@web-examples/shared' import { getWalletAddressFromParams } from '@/utils/HelperUtil' import { solanaAddresses, solanaWallets } from '@/utils/SolanaWalletUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/StacksRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/StacksRequestHandlerUtil.ts index c2b433d12..eaa56b725 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/StacksRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/StacksRequestHandlerUtil.ts @@ -3,7 +3,7 @@ import { SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' import { stacksWallet } from './StacksWalletUtil' -import { STACKS_SIGNING_METHODS } from '@/data/StacksData' +import { STACKS_SIGNING_METHODS } from '@web-examples/shared' export async function approveStacksRequest( requestEvent: SignClientTypes.EventArguments['session_request'] diff --git a/advanced/wallets/react-wallet-v2/src/utils/StacksWalletUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/StacksWalletUtil.ts index 3e4abf1f4..56dea6d66 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/StacksWalletUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/StacksWalletUtil.ts @@ -1,4 +1,4 @@ -import { STACKS_MAINNET_CAIP2, STACKS_TESTNET_CAIP2 } from '@/data/StacksData' +import { STACKS_MAINNET_CAIP2, STACKS_TESTNET_CAIP2 } from '@web-examples/shared' import StacksLib from '@/lib/StacksLib' export let wallet1: StacksLib diff --git a/advanced/wallets/react-wallet-v2/src/utils/SuiRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/SuiRequestHandlerUtil.ts index 46fca6c7e..2ad1ad13f 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/SuiRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/SuiRequestHandlerUtil.ts @@ -3,7 +3,7 @@ import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' import { SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' import SettingsStore from '@/store/SettingsStore' -import { SUI_SIGNING_METHODS } from '@/data/SuiData' +import { SUI_SIGNING_METHODS } from '@web-examples/shared' type RequestEventArgs = Omit diff --git a/advanced/wallets/react-wallet-v2/src/utils/TezosRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/TezosRequestHandlerUtil.ts index c96c73b6e..30110e910 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/TezosRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/TezosRequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { TEZOS_SIGNING_METHODS } from '@/data/TezosData' +import { TEZOS_SIGNING_METHODS } from '@web-examples/shared' import { tezosWallets } from '@/utils/TezosWalletUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' import { SignClientTypes } from '@walletconnect/types' diff --git a/advanced/wallets/react-wallet-v2/src/utils/TonRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/TonRequestHandlerUtil.ts index 8301b6065..adc96ca77 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/TonRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/TonRequestHandlerUtil.ts @@ -4,7 +4,7 @@ import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' import { SignClientTypes } from '@walletconnect/types' import { getSdkError } from '@walletconnect/utils' import SettingsStore from '@/store/SettingsStore' -import { TON_SIGNING_METHODS } from '@/data/TonData' +import { TON_SIGNING_METHODS } from '@web-examples/shared' type RequestEventArgs = Omit diff --git a/advanced/wallets/react-wallet-v2/src/utils/TransactionSimulatorUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/TransactionSimulatorUtil.ts index f8a7cb4e1..44f0292fb 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/TransactionSimulatorUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/TransactionSimulatorUtil.ts @@ -1,4 +1,4 @@ -import { blockchainApiRpc } from '@/data/EIP155Data' +import { blockchainApiRpc } from '@web-examples/shared' import { Connection, PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js' import { createPublicClient, http } from 'viem' diff --git a/advanced/wallets/react-wallet-v2/src/utils/TronRequestHandlerUtil.ts b/advanced/wallets/react-wallet-v2/src/utils/TronRequestHandlerUtil.ts index aea1c8d5d..70dc81554 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/TronRequestHandlerUtil.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/TronRequestHandlerUtil.ts @@ -1,4 +1,4 @@ -import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS, TRON_SIGNING_METHODS } from '@/data/TronData' +import { TRON_MAINNET_CHAINS, TRON_TEST_CHAINS, TRON_SIGNING_METHODS } from '@web-examples/shared' import { getWalletAddressFromParams } from '@/utils/HelperUtil' import { tronAddresses, tronWallets } from '@/utils/TronWalletUtil' import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils' diff --git a/advanced/wallets/react-wallet-v2/src/utils/WalletCheckoutPaymentHandler.ts b/advanced/wallets/react-wallet-v2/src/utils/WalletCheckoutPaymentHandler.ts index f59b51922..cf8daddab 100644 --- a/advanced/wallets/react-wallet-v2/src/utils/WalletCheckoutPaymentHandler.ts +++ b/advanced/wallets/react-wallet-v2/src/utils/WalletCheckoutPaymentHandler.ts @@ -9,8 +9,8 @@ import { CheckoutError, SolanaContractInteraction } from '@/types/wallet_checkout' -import { SOLANA_MAINNET_CHAINS } from '@/data/SolanaData' -import { SOLANA_TEST_CHAINS } from '@/data/SolanaData' +import { SOLANA_MAINNET_CHAINS } from '@web-examples/shared' +import { SOLANA_TEST_CHAINS } from '@web-examples/shared' export interface PaymentResult { txHash: string diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionAuthenticateModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionAuthenticateModal.tsx index 979a2a6b1..87f978930 100644 --- a/advanced/wallets/react-wallet-v2/src/views/SessionAuthenticateModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/views/SessionAuthenticateModal.tsx @@ -8,7 +8,7 @@ import SettingsStore from '@/store/SettingsStore' import { eip155Addresses, eip155Wallets } from '@/utils/EIP155WalletUtil' import { walletkit } from '@/utils/WalletConnectUtil' import RequestModal from '../components/RequestModal' -import { EIP155_CHAINS, EIP155_SIGNING_METHODS } from '@/data/EIP155Data' +import { EIP155_CHAINS, EIP155_SIGNING_METHODS } from '@web-examples/shared' import { styledToast } from '@/utils/HelperUtil' export default function SessionAuthenticateModal() { diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionCheckoutModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionCheckoutModal.tsx index d54b22f02..1f7e8fa08 100644 --- a/advanced/wallets/react-wallet-v2/src/views/SessionCheckoutModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/views/SessionCheckoutModal.tsx @@ -19,7 +19,7 @@ import SettingsStore from '@/store/SettingsStore' import { eip155Wallets } from '@/utils/EIP155WalletUtil' import EIP155Lib from '@/lib/EIP155Lib' import { providers } from 'ethers' -import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' +import { EIP155_CHAINS, TEIP155Chain } from '@web-examples/shared' import WalletCheckoutPaymentHandler from '@/utils/WalletCheckoutPaymentHandler' import WalletCheckoutCtrl from '@/store/WalletCheckoutCtrl' import { solanaWallets } from '@/utils/SolanaWalletUtil' diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx index d5c88c7e6..28e687506 100644 --- a/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/views/SessionGetBip122AddressesModal.tsx @@ -9,7 +9,7 @@ import RequestModal from '../components/RequestModal' import { useCallback, useState } from 'react' import { approveBip122Request, rejectBip122Request } from '@/utils/Bip122RequestHandlerUtil' import { bip122Wallet } from '@/utils/Bip122WalletUtil' -import { IBip122ChainId } from '@/data/Bip122Data' +import { IBip122ChainId } from '@web-examples/shared' export default function SessionGetBip122AddressesModal() { // Get request and wallet data from store diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx index 8d76b04d2..7b716fbc0 100644 --- a/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/views/SessionProposalModal.tsx @@ -25,15 +25,15 @@ import { nearAddresses } from '@/utils/NearWalletUtil' import { kadenaAddresses } from '@/utils/KadenaWalletUtil' import { styledToast } from '@/utils/HelperUtil' import { walletkit } from '@/utils/WalletConnectUtil' -import { EIP155_CHAINS, EIP155_SIGNING_METHODS } from '@/data/EIP155Data' -import { COSMOS_MAINNET_CHAINS, COSMOS_SIGNING_METHODS } from '@/data/COSMOSData' -import { KADENA_CHAINS, KADENA_SIGNING_METHODS } from '@/data/KadenaData' -import { MULTIVERSX_CHAINS, MULTIVERSX_SIGNING_METHODS } from '@/data/MultiversxData' -import { NEAR_CHAINS, NEAR_SIGNING_METHODS } from '@/data/NEARData' -import { POLKADOT_CHAINS, POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData' -import { SOLANA_CHAINS, SOLANA_SIGNING_METHODS } from '@/data/SolanaData' -import { TEZOS_CHAINS, TEZOS_SIGNING_METHODS } from '@/data/TezosData' -import { TRON_CHAINS, TRON_SIGNING_METHODS } from '@/data/TronData' +import { EIP155_CHAINS, EIP155_SIGNING_METHODS } from '@web-examples/shared' +import { COSMOS_MAINNET_CHAINS, COSMOS_SIGNING_METHODS } from '@web-examples/shared' +import { KADENA_CHAINS, KADENA_SIGNING_METHODS } from '@web-examples/shared' +import { MULTIVERSX_CHAINS, MULTIVERSX_SIGNING_METHODS } from '@web-examples/shared' +import { NEAR_CHAINS, NEAR_SIGNING_METHODS } from '@web-examples/shared' +import { POLKADOT_CHAINS, POLKADOT_SIGNING_METHODS } from '@web-examples/shared' +import { SOLANA_CHAINS, SOLANA_SIGNING_METHODS } from '@web-examples/shared' +import { TEZOS_CHAINS, TEZOS_SIGNING_METHODS } from '@web-examples/shared' +import { TRON_CHAINS, TRON_SIGNING_METHODS } from '@web-examples/shared' import ChainDataMini from '@/components/ChainDataMini' import ChainAddressMini from '@/components/ChainAddressMini' import { getChainData } from '@/data/chainsUtil' @@ -51,16 +51,16 @@ import { BIP122_EVENTS, BIP122_SIGNING_METHODS, IBip122ChainId -} from '@/data/Bip122Data' +} from '@web-examples/shared' import { EIP7715_METHOD } from '@/data/EIP7715Data' import { useRouter } from 'next/router' -import { SUI_CHAINS, SUI_EVENTS, SUI_SIGNING_METHODS } from '@/data/SuiData' +import { SUI_CHAINS, SUI_EVENTS, SUI_SIGNING_METHODS } from '@web-examples/shared' import { suiAddresses } from '@/utils/SuiWalletUtil' -import { STACKS_CHAINS, STACKS_EVENTS, STACKS_SIGNING_METHODS } from '@/data/StacksData' +import { STACKS_CHAINS, STACKS_EVENTS, STACKS_SIGNING_METHODS } from '@web-examples/shared' import { stacksAddresses, stacksWallet } from '@/utils/StacksWalletUtil' import { getWallet as getSuiWallet } from '@/utils/SuiWalletUtil' import StacksLib from '@/lib/StacksLib' -import { TON_CHAINS, TON_SIGNING_METHODS } from '@/data/TonData' +import { TON_CHAINS, TON_SIGNING_METHODS } from '@web-examples/shared' import { tonAddresses } from '@/utils/TonWalletUtil' import { prepareAuthenticationMessages, signAuthenticationMessages } from '@/utils/AuthUtil' import { AuthenticationMessage } from '@/types/auth' diff --git a/advanced/wallets/react-wallet-v2/src/views/SessionSignNearModal.tsx b/advanced/wallets/react-wallet-v2/src/views/SessionSignNearModal.tsx index 2b0cf8557..77285a875 100644 --- a/advanced/wallets/react-wallet-v2/src/views/SessionSignNearModal.tsx +++ b/advanced/wallets/react-wallet-v2/src/views/SessionSignNearModal.tsx @@ -8,7 +8,7 @@ import RequestMethodCard from '@/components/RequestMethodCard' import ModalStore from '@/store/ModalStore' import { approveNearRequest, rejectNearRequest } from '@/utils/NearRequestHandlerUtil' import { walletkit } from '@/utils/WalletConnectUtil' -import { NEAR_SIGNING_METHODS } from '@/data/NEARData' +import { NEAR_SIGNING_METHODS } from '@web-examples/shared' import { styledToast } from '@/utils/HelperUtil' import RequestModal from '../components/RequestModal' import { useCallback, useState } from 'react' diff --git a/shared/.gitignore b/shared/.gitignore new file mode 100644 index 000000000..cb6cd6ad1 --- /dev/null +++ b/shared/.gitignore @@ -0,0 +1,6 @@ +node_modules +*.log +.DS_Store +dist +build + diff --git a/shared/chains/bip122.ts b/shared/chains/bip122.ts new file mode 100644 index 000000000..65ce3f4fd --- /dev/null +++ b/shared/chains/bip122.ts @@ -0,0 +1,137 @@ +import { schnorr } from "@noble/secp256k1"; +import * as bitcoin from "bitcoinjs-lib"; +import BitcoinMessage from "bitcoinjs-message"; +import { NamespaceMetadata, ChainsMap } from "../types"; +import { convertHexToBase64 } from "../helpers"; + +export const BtcChainData: ChainsMap = { + "000000000019d6689c085ae165831e93": { + id: "bip122:000000000019d6689c085ae165831e93", + name: "Bitcoin", + rpc: [], + slip44: 0, + testnet: false, + }, + "000000000933ea01ad0ee984209779ba": { + id: "bip122:000000000933ea01ad0ee984209779ba", + name: "Bitcoin Testnet", + rpc: [], + slip44: 1, + testnet: true, + }, +}; + +export const BtcMetadata: NamespaceMetadata = { + "000000000019d6689c085ae165831e93": { + logo: "/assets/btc-testnet.png", + rgb: "247, 147, 26", + }, + "000000000933ea01ad0ee984209779ba": { + logo: "/assets/btc-testnet.png", + rgb: "247, 147, 26", + }, +}; + +// Wallet-specific data structures +export const BIP122_NAMESPACE = "bip122"; + +export const BIP122_MAINNET = "000000000019d6689c085ae165831e93"; +export const BIP122_TESTNET = "000000000933ea01ad0ee984209779ba"; +export const BIP122_DUST_LIMIT = "1001"; + +export const BIP122_MAINNET_ID = "000000000019d6689c085ae165831e93"; +export const BIP122_TESTNET_ID = "000000000933ea01ad0ee984209779ba"; +export const BIP122_MAINNET_CAIP2 = `${BIP122_NAMESPACE}:${BIP122_MAINNET_ID}`; +export const BIP122_TESTNET_CAIP2 = `${BIP122_NAMESPACE}:${BIP122_TESTNET_ID}`; + +export type IBip122ChainId = + | typeof BIP122_MAINNET_CAIP2 + | typeof BIP122_TESTNET_CAIP2; + +export const BITCOIN_MAINNET = { + [BIP122_MAINNET_CAIP2]: { + chainId: BIP122_MAINNET_ID, + name: "BTC Mainnet", + logo: "/chain-logos/btc-testnet.png", + rgb: "107, 111, 147", + rpc: "", + coinType: "0", + caip2: BIP122_MAINNET_CAIP2 as IBip122ChainId, + namespace: BIP122_NAMESPACE, + }, +}; + +export const BITCOIN_TESTNET = { + [BIP122_TESTNET_CAIP2]: { + chainId: BIP122_TESTNET_ID, + name: "BTC Testnet", + logo: "/chain-logos/btc-testnet.png", + rgb: "247, 147, 25", + rpc: "", + coinType: "1", + caip2: BIP122_TESTNET_CAIP2 as IBip122ChainId, + namespace: BIP122_NAMESPACE, + }, +}; + +export const BIP122_CHAINS = { + ...BITCOIN_MAINNET, + ...BITCOIN_TESTNET, +} as Record< + IBip122ChainId, + (typeof BITCOIN_MAINNET)[typeof BIP122_MAINNET_CAIP2] & + (typeof BITCOIN_TESTNET)[typeof BIP122_TESTNET_CAIP2] +>; + +export const DEFAULT_BIP122_METHODS = { + BIP122_SEND_TRANSACTION: "sendTransfer", + BIP122_GET_ACCOUNT_ADDRESSES: "getAccountAddresses", + BIP122_SIGN_MESSAGE: "signMessage", + BIP122_SIGN_PSBT: "signPsbt", +} as const; + +export const DEFAULT_BIP122_EVENTS = { + ACCOUNTS_CHANGED: "accountsChanged", + CHAIN_CHANGED: "chainChanged", +} as const; + +export const BtcUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + // if taproot address + if (address.startsWith("bc1p") || address.startsWith("tb1p")) { + // Convert the Ordinals address (Taproot) to the internal public key + const decoded = bitcoin.address.fromBech32(address); + if (decoded.version !== 1 || decoded.data.length !== 32) { + throw new Error("Invalid Taproot address"); + } + + const publicKey = decoded.data; // The 32-byte internal public key (X coordinate of pubkey) + + // Hash the message using SHA256 (standard Bitcoin message hashing) + const messageHash = bitcoin.crypto.sha256(Buffer.from(message)); + + // Verify the Schnorr signature using tiny-secp256k1 + return schnorr.verify( + new Uint8Array(Buffer.from(signature, "hex")), + new Uint8Array(messageHash), + new Uint8Array(publicKey) + ); + } + + return BitcoinMessage.verify( + message, + address, + convertHexToBase64(signature), + undefined, + true + ); + }, +}; diff --git a/shared/chains/cosmos.ts b/shared/chains/cosmos.ts new file mode 100644 index 000000000..e6de885fa --- /dev/null +++ b/shared/chains/cosmos.ts @@ -0,0 +1,51 @@ +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const CosmosChainData: ChainsMap = { + "cosmoshub-4": { + name: "Cosmos Hub", + id: "cosmos:cosmoshub-4", + rpc: ["https://rpc.cosmos.network"], + slip44: 118, + testnet: false, + }, + "irishub-1": { + name: "Irisnet", + id: "cosmos:irishub-1", + rpc: ["https://rpc.irisnet.org"], + slip44: 566, + testnet: false, + }, + "kava-4": { + name: "Kava", + id: "cosmos:kava-4", + rpc: ["https://kava4.data.kava.io"], + slip44: 459, + testnet: false, + }, + "columbus-4": { + name: "Terra", + id: "cosmos:columbus-4", + rpc: [], + slip44: 330, + testnet: false, + }, +}; + +export const CosmosMetadata: NamespaceMetadata = { + "cosmoshub-4": { + logo: "/assets/" + "cosmos-cosmoshub-4.png", + rgb: "27, 31, 53", + }, +}; + +export const DEFAULT_COSMOS_METHODS = { + COSMOS_SIGN_DIRECT: "cosmos_signDirect", + COSMOS_SIGN_AMINO: "cosmos_signAmino", +} as const; + +export const DEFAULT_COSMOS_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const CosmosUtils = {}; diff --git a/shared/chains/eip155.ts b/shared/chains/eip155.ts new file mode 100644 index 000000000..bb1b94fd9 --- /dev/null +++ b/shared/chains/eip155.ts @@ -0,0 +1,248 @@ +import { + hashPersonalMessage, + rpcProvidersByChainId, + verifySignature, +} from "../helpers"; +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const EIP155Colors = { + ethereum: "99, 125, 234", + optimism: "233, 1, 1", + goerli: "189, 174, 155", + xdai: "73, 169, 166", + polygon: "130, 71, 229", + zksync: "90, 90, 90", + celo: "60, 203, 132", + arbitrum: "44, 55, 75", +}; + +export const EIP155ChainData: ChainsMap = { + "1": { + name: "Ethereum Mainnet", + id: "eip155:1", + rpc: ["https://api.mycryptoapi.com/eth"], + slip44: 60, + testnet: false, + }, + "5": { + name: "Ethereum Goerli", + id: "eip155:5", + rpc: ["https://rpc.goerli.mudit.blog"], + slip44: 60, + testnet: true, + }, + "11155111": { + name: "Ethereum Sepolia", + id: "eip155:11155111", + rpc: ["https://gateway.tenderly.co/public/sepolia "], + slip44: 60, + testnet: true, + }, + "10": { + name: "Optimism Mainnet", + id: "eip155:10", + rpc: ["https://mainnet.optimism.io"], + slip44: 60, + testnet: false, + }, + "42": { + name: "Ethereum Kovan", + id: "eip155:42", + rpc: ["https://kovan.poa.network"], + slip44: 60, + testnet: true, + }, + "69": { + name: "Optimism Kovan", + id: "eip155:69", + rpc: ["https://kovan.optimism.io"], + slip44: 60, + testnet: true, + }, + "100": { + name: "xDAI", + id: "eip155:100", + rpc: ["https://dai.poa.network"], + slip44: 60, + testnet: false, + }, + "280": { + name: "zkSync Era Testnet", + id: "eip155:280", + rpc: ["https://testnet.era.zksync.dev"], + slip44: 60, + testnet: true, + }, + "324": { + name: "zkSync Era", + id: "eip155:324", + rpc: ["https://mainnet.era.zksync.io"], + slip44: 60, + testnet: false, + }, + "137": { + name: "Polygon Mainnet", + id: "eip155:137", + rpc: ["https://rpc-mainnet.matic.network"], + slip44: 60, + testnet: false, + }, + "420": { + name: "Optimism Goerli", + id: "eip155:420", + rpc: ["https://goerli.optimism.io"], + slip44: 60, + testnet: true, + }, + "42161": { + name: "Arbitrum One", + id: "eip155:42161", + rpc: ["https://arb1.arbitrum.io/rpc"], + slip44: 60, + testnet: false, + }, + "42220": { + name: "Celo Mainnet", + id: "eip155:42220", + rpc: ["https://forno.celo.org"], + slip44: 52752, + testnet: false, + }, + "44787": { + name: "Celo Alfajores", + id: "eip155:44787", + rpc: ["https://alfajores-forno.celo-testnet.org"], + slip44: 52752, + testnet: true, + }, + "80001": { + name: "Polygon Mumbai", + id: "eip155:80001", + rpc: ["https://rpc-mumbai.matic.today"], + slip44: 60, + testnet: true, + }, + "421611": { + name: "Arbitrum Rinkeby", + id: "eip155:421611", + rpc: ["https://rinkeby.arbitrum.io/rpc"], + slip44: 60, + testnet: true, + }, +}; + +export const EIP155Metadata: NamespaceMetadata = { + "1": { + name: "Ethereum", + logo: "/assets/" + "eip155-1.png", + rgb: EIP155Colors.ethereum, + }, + "5": { + logo: "/assets/" + "eip155-1.png", + rgb: EIP155Colors.ethereum, + }, + "11155111": { + logo: "/assets/" + "eip155-1.png", + rgb: EIP155Colors.ethereum, + }, + "10": { + name: "Optimism", + logo: "/assets/" + "eip155-10.png", + rgb: EIP155Colors.optimism, + }, + "42": { + logo: "/assets/" + "eip155-42.png", + rgb: EIP155Colors.ethereum, + }, + "420": { + logo: "/assets/" + "eip155-420.png", + rgb: EIP155Colors.optimism, + }, + "100": { + logo: "/assets/" + "eip155-100.png", + rgb: EIP155Colors.xdai, + }, + "280": { + name: "zkSync Era Testnet", + logo: "/assets/" + "eip155-324.svg", + rgb: EIP155Colors.zksync, + }, + "324": { + name: "zkSync Era", + logo: "/assets/" + "eip155-324.svg", + rgb: EIP155Colors.zksync, + }, + "137": { + name: "Polygon", + logo: "/assets/" + "eip155-137.png", + rgb: EIP155Colors.polygon, + }, + "80001": { + logo: "/assets/" + "eip155-80001.png", + rgb: EIP155Colors.polygon, + }, + "42161": { + name: "Arbitrum", + logo: "/assets/" + "eip155-42161.png", + rgb: EIP155Colors.arbitrum, + }, + "42220": { + name: "Celo", + logo: "/assets/" + "eip155-42220.png", + rgb: EIP155Colors.celo, + }, + "44787": { + logo: "/assets/" + "eip155-44787.png", + rgb: EIP155Colors.celo, + }, + "421611": { + logo: "/assets/" + "eip155-421611.png", + rgb: EIP155Colors.arbitrum, + }, +}; + +export const DEFAULT_EIP155_METHODS = { + PERSONAL_SIGN: "personal_sign", + ETH_SEND_TRANSACTION: "eth_sendTransaction", + ETH_SIGN_TYPED_DATA: "eth_signTypedData", + WALLET_GRANT_PERMISSIONS: "wallet_grantPermissions", + WALLET_GET_CAPABILITIES: "wallet_getCapabilities", + WALLET_SEND_CALLS: "wallet_sendCalls", + WALLET_GET_CALLS_STATUS: "wallet_getCallsStatus", + ETH_SIGN_TRANSACTION: "eth_signTransaction", + ETH_SIGN: "eth_sign", + ETH_SIGN_TYPED_DATA_V4: "eth_signTypedData_v4", +} as const; + +export const DEFAULT_EIP155_EVENTS = { + ETH_CHAIN_CHANGED: "chainChanged", + ETH_ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const EIP155Utils = { + verifyMessage: async ({ + message, + signature, + chainId, + address, + }: { + message: string; + signature: string; + chainId: string; + address: string; + }) => { + const rpc = rpcProvidersByChainId[Number(chainId)]; + + if (typeof rpc === "undefined") { + throw new Error(`Missing rpcProvider definition for chainId: ${chainId}`); + } + const hashMsg = hashPersonalMessage(message); + const valid = await verifySignature( + address, + signature, + hashMsg, + rpc.baseURL + ); + return valid; + }, +}; diff --git a/shared/chains/index.ts b/shared/chains/index.ts new file mode 100644 index 000000000..e7be1941d --- /dev/null +++ b/shared/chains/index.ts @@ -0,0 +1,188 @@ +/** + * Barrel export for all chain data + */ + +export * from "./eip155"; +export * from "./solana"; +export * from "./cosmos"; +export * from "./polkadot"; +export * from "./near"; +export * from "./kadena"; +export * from "./multiversx"; +export * from "./stacks"; +export * from "./sui"; +export * from "./tezos"; +export * from "./ton"; +export * from "./tron"; +export * from "./bip122"; + +import { ChainData, ChainMetadata } from "../types"; +import { EIP155Metadata, EIP155ChainData, EIP155Utils } from "./eip155"; +import { SolanaChainData, SolanaMetadata, SolanaUtils } from "./solana"; +import { CosmosChainData, CosmosMetadata, CosmosUtils } from "./cosmos"; +import { PolkadotChainData, PolkadotMetadata, PolkadotUtils } from "./polkadot"; +import { NearChainData, NearMetadata, NearUtils } from "./near"; +import { KadenaChainData, KadenaMetadata } from "./kadena"; +import { + MultiversxChainData, + MultiversxMetadata, + MultiversxUtils, +} from "./multiversx"; +import { StacksChainData, StacksMetadata, StacksUtils } from "./stacks"; +import { SuiChainData, SuiMetadata, SuiUtils } from "./sui"; +import { TezosChainData, TezosMetadata, TezosUtils } from "./tezos"; +import { TonChainData, TonMetadata, TONUtils } from "./ton"; +import { TronChainData, TronMetadata, TronUtils } from "./tron"; +import { BtcChainData, BtcMetadata, BtcUtils } from "./bip122"; + +export const ALL_CHAINS = Object.freeze({ + eip155: { + data: EIP155ChainData, + metadata: EIP155Metadata, + utils: EIP155Utils, + }, + solana: { + data: SolanaChainData, + metadata: SolanaMetadata, + utils: SolanaUtils, + }, + cosmos: { + data: CosmosChainData, + metadata: CosmosMetadata, + utils: CosmosUtils, + }, + polkadot: { + data: PolkadotChainData, + metadata: PolkadotMetadata, + utils: PolkadotUtils, + }, + near: { + data: NearChainData, + metadata: NearMetadata, + utils: NearUtils, + }, + kadena: { + data: KadenaChainData, + metadata: KadenaMetadata, + }, + mvx: { + data: MultiversxChainData, + metadata: MultiversxMetadata, + utils: MultiversxUtils, + }, + stacks: { + data: StacksChainData, + metadata: StacksMetadata, + utils: StacksUtils, + }, + sui: { + data: SuiChainData, + metadata: SuiMetadata, + utils: SuiUtils, + }, + tezos: { + data: TezosChainData, + metadata: TezosMetadata, + utils: TezosUtils, + }, + ton: { + data: TonChainData, + metadata: TonMetadata, + utils: TONUtils, + }, + tron: { + data: TronChainData, + metadata: TronMetadata, + utils: TronUtils, + }, + bip122: { + data: BtcChainData, + metadata: BtcMetadata, + utils: BtcUtils, + }, +}); + +/** + * Unified getChainMetadata function that handles all chains + */ +export function getChainMetadata(chainId: string): ChainMetadata { + const [namespace, reference] = chainId.split(":"); + + let metadata: ChainMetadata | undefined = + ALL_CHAINS[namespace as keyof typeof ALL_CHAINS]?.metadata?.[reference]; + if (typeof metadata === "undefined") { + throw new Error(`No chain metadata found for chainId: ${chainId}`); + } + + return metadata; +} + +function getMainnetChains(): string[] { + const mainnetChains: string[] = []; + try { + Object.values(ALL_CHAINS).forEach((namespace) => { + if (namespace?.data) { + Object.values(namespace.data).forEach((chain) => { + if ( + chain && + typeof chain === "object" && + chain.testnet === false && + chain.id + ) { + const chainId = String(chain.id); + if (chainId) { + mainnetChains.push(chainId); + } + } + }); + } + }); + } catch (error) { + console.error("Error getting mainnet chains:", error); + } + console.log("mainnetChains", mainnetChains); + return mainnetChains; +} + +function getTestnetChains(): string[] { + const testnetChains: string[] = []; + try { + Object.values(ALL_CHAINS).forEach((namespace) => { + if (namespace?.data) { + Object.values(namespace.data).forEach((chain) => { + if ( + chain && + typeof chain === "object" && + chain.testnet === true && + chain.id + ) { + const chainId = String(chain.id); + if (chainId) { + testnetChains.push(chainId); + } + } + }); + } + }); + } catch (error) { + console.error("Error getting testnet chains:", error); + } + console.log("testnetChains", testnetChains); + return testnetChains; +} + +// Create arrays explicitly to avoid webpack transpilation issues +const _mainnetChains = getMainnetChains(); +const _testnetChains = getTestnetChains(); + +// Create new arrays explicitly to ensure webpack doesn't optimize them incorrectly +export const DEFAULT_MAINNET_CHAINS: readonly string[] = Object.freeze([ + ..._mainnetChains, +]); +export const DEFAULT_TESTNET_CHAINS: readonly string[] = Object.freeze([ + ..._testnetChains, +]); +export const DEFAULT_CHAINS: readonly string[] = Object.freeze([ + ..._mainnetChains, + ..._testnetChains, +]); diff --git a/shared/chains/kadena.ts b/shared/chains/kadena.ts new file mode 100644 index 000000000..35021e573 --- /dev/null +++ b/shared/chains/kadena.ts @@ -0,0 +1,41 @@ +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const KadenaMetadata: NamespaceMetadata = { + mainnet01: { + logo: "/assets/kadena.png", + rgb: "237, 9, 143", + }, + testnet04: { + logo: "/assets/kadena.png", + rgb: "237, 9, 143", + }, +}; + +// TODO: add `kadena` namespace to `caip-api` package to avoid manual specification here. +export const KadenaChainData: ChainsMap = { + mainnet01: { + name: "Kadena", + id: "kadena:mainnet01", + rpc: ["https://api.chainweb.com"], + slip44: 626, + testnet: false, + }, + testnet04: { + name: "Kadena Testnet", + id: "kadena:testnet04", + rpc: ["https://api.chainweb.com"], + slip44: 626, + testnet: true, + }, +}; + +export const DEFAULT_KADENA_METHODS = { + KADENA_GET_ACCOUNTS: "kadena_getAccounts_v1", + KADENA_SIGN: "kadena_sign_v1", + KADENA_QUICKSIGN: "kadena_quicksign_v1", +} as const; + +export const DEFAULT_KADENA_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; diff --git a/shared/chains/multiversx.ts b/shared/chains/multiversx.ts new file mode 100644 index 000000000..a31c2326a --- /dev/null +++ b/shared/chains/multiversx.ts @@ -0,0 +1,69 @@ +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const MultiversxChainData: ChainsMap = { + "1": { + id: "mvx:1", + name: "MultiversX Mainnet", + rpc: ["https://api.multiversx.com"], + slip44: 508, + testnet: false, + }, + D: { + id: "mvx:D", + name: "MultiversX Devnet", + rpc: ["https://devnet-api.multiversx.com"], + slip44: 508, + testnet: true, + }, + // Keep only one Test Chain visible + // T: { + // id: "mvx:T", + // name: "MultiversX Testnet", + // rpc: ["https://testnet-api.multiversx.com"], + // slip44: 508, + // testnet: true, + // }, +}; + +export const MultiversxMetadata: NamespaceMetadata = { + // MultiversX Mainnet + "1": { + logo: "/assets/multiversx_logo.svg", + rgb: "0, 0, 0", + }, + // MultiversX Testnet + T: { + logo: "/assets/multiversx_logo.svg", + rgb: "0, 0, 0", + }, + // MultiversX Devnet + D: { + logo: "/assets/multiversx_logo.svg", + rgb: "0, 0, 0", + }, +}; + +export const DEFAULT_MULTIVERSX_METHODS = { + MULTIVERSX_SIGN_TRANSACTION: "mvx_signTransaction", + MULTIVERSX_SIGN_TRANSACTIONS: "mvx_signTransactions", + MULTIVERSX_SIGN_MESSAGE: "mvx_signMessage", +} as const; + +export const DEFAULT_MULTIVERSX_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const MultiversxUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + return true; + }, +}; diff --git a/shared/chains/near.ts b/shared/chains/near.ts new file mode 100644 index 000000000..a4a7d5021 --- /dev/null +++ b/shared/chains/near.ts @@ -0,0 +1,52 @@ +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const NearMetadata: NamespaceMetadata = { + testnet: { + logo: "https://avatars.githubusercontent.com/u/7613128?s=200&v=4", + rgb: "27, 31, 53", + }, +}; + +export const NearChainData: ChainsMap = { + "near:testnet": { + name: "NEAR Testnet", + id: "near:testnet", + rpc: ["https://rpc.testnet.near.org"], + slip44: 397, + testnet: true, + }, +}; + +export type TNearChain = typeof NearChainData.testnet; + +export const NEAR_TEST_CHAINS = { ...NearChainData }; +export const NEAR_MAINNET_CHAINS = NearChainData; + +export const DEFAULT_NEAR_METHODS = { + NEAR_SIGN_IN: "near_signIn", + NEAR_SIGN_OUT: "near_signOut", + NEAR_GET_ACCOUNTS: "near_getAccounts", + NEAR_SIGN_AND_SEND_TRANSACTION: "near_signAndSendTransaction", + NEAR_SIGN_AND_SEND_TRANSACTIONS: "near_signAndSendTransactions", + NEAR_SIGN_TRANSACTION: "near_signTransaction", + NEAR_SIGN_TRANSACTIONS: "near_signTransactions", +} as const; + +export const DEFAULT_NEAR_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const NearUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + return true; + }, +}; diff --git a/shared/chains/polkadot.ts b/shared/chains/polkadot.ts new file mode 100644 index 000000000..a264d97ef --- /dev/null +++ b/shared/chains/polkadot.ts @@ -0,0 +1,57 @@ +import { signatureVerify, cryptoWaitReady } from "@polkadot/util-crypto"; +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const PolkadotChainData: ChainsMap = { + ["91b171bb158e2d3848fa23a9f1c25182"]: { + id: "polkadot:91b171bb158e2d3848fa23a9f1c25182", + name: "Polkadot Mainnet", + rpc: ["wss://rpc.polkadot.io"], + slip44: 0, + testnet: false, + }, + ["e143f23803ac50e8f6f8e62695d1ce9e"]: { + id: "polkadot:e143f23803ac50e8f6f8e62695d1ce9e", + name: "Polkadot Testnet (Westend)", + rpc: ["wss://westend-rpc.polkadot.io"], + slip44: 0, + testnet: false, + }, +}; + +export const PolkadotMetadata: NamespaceMetadata = { + // eslint-disable-next-line no-useless-computed-key + ["91b171bb158e2d3848fa23a9f1c25182"]: { + logo: "/assets/polkadot.svg", + rgb: "230, 1, 122", + }, + ["e143f23803ac50e8f6f8e62695d1ce9e"]: { + logo: "/assets/westend-logo.svg", + rgb: "218, 104, 167", + }, +}; + +export const DEFAULT_POLKADOT_METHODS = { + POLKADOT_SIGN_TRANSACTION: "polkadot_signTransaction", + POLKADOT_SIGN_MESSAGE: "polkadot_signMessage", +} as const; + +export const DEFAULT_POLKADOT_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const PolkadotUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + await cryptoWaitReady(); + const result = signatureVerify(message, signature, address); + return result.isValid; + }, +}; diff --git a/shared/chains/solana.ts b/shared/chains/solana.ts new file mode 100644 index 000000000..300bcb9cd --- /dev/null +++ b/shared/chains/solana.ts @@ -0,0 +1,136 @@ +import { PublicKey } from "@solana/web3.js"; +import { verifyMessageSignature } from "solana-wallet"; +import bs58 from "bs58"; + +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const SolanaChainData: ChainsMap = { + "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { + id: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", + name: "Solana Mainnet", + rpc: [ + "https://api.mainnet-beta.solana.com", + "https://solana-api.projectserum.com", + ], + slip44: 501, + testnet: false, + }, + EtWTRABZaYq6iMfeYKouRu166VU2xqa1: { + id: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", + name: "Solana Devnet", + rpc: ["https://api.devnet.solana.com"], + slip44: 501, + testnet: true, + }, + "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z": { + id: "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z", + name: "Solana Testnet", + rpc: ["https://api.testnet.solana.com"], + slip44: 501, + testnet: true, + }, +}; + +export const SolanaMetadata: NamespaceMetadata = { + // Solana Mainnet + "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { + logo: "/assets/solana_logo.png", + rgb: "0, 0, 0", + }, + // Solana Devnet + EtWTRABZaYq6iMfeYKouRu166VU2xqa1: { + logo: "/assets/solana_logo.png", + rgb: "0, 0, 0", + }, + // Solana Testnet + "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z": { + logo: "/assets/solana_logo.png", + rgb: "0, 0, 0", + }, +}; + +// Wallet-specific data structures +export type TSolanaChain = keyof typeof SOLANA_MAINNET_CHAINS; + +export const SOLANA_MAINNET_CHAINS = { + "solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ": { + chainId: "4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ", + name: "Solana (Legacy)", + logo: "/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png", + rgb: "30, 240, 166", + rpc: "", + namespace: "solana", + }, + "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp": { + chainId: "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", + name: "Solana", + logo: "/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png", + rgb: "30, 240, 166", + rpc: "https://api.mainnet-beta.solana.com", + namespace: "solana", + }, +} as const; + +export const SOLANA_TEST_CHAINS = { + "solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K": { + chainId: "8E9rvCKLFQia2Y35HXjjpWzj8weVo44K", + name: "Solana Devnet (Legacy)", + logo: "/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png", + rgb: "30, 240, 166", + rpc: "", + namespace: "solana", + }, + "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1": { + chainId: "EtWTRABZaYq6iMfeYKouRu166VU2xqa1", + name: "Solana Devnet", + logo: "/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png", + rgb: "30, 240, 166", + rpc: "https://api.devnet.solana.com", + namespace: "solana", + }, + "solana:4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z": { + chainId: "4uhcVJyU9pJkvQyS88uRDiswHXSCkY3z", + name: "Solana Testnet", + logo: "/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png", + rgb: "30, 240, 166", + rpc: "https://api.testnet.solana.com", + namespace: "solana", + }, +} as const; + +export const SOLANA_CHAINS = { + ...SOLANA_MAINNET_CHAINS, + ...SOLANA_TEST_CHAINS, +}; + +export const DEFAULT_SOLANA_METHODS = { + SOL_SIGN_TRANSACTION: "solana_signTransaction", + SOL_SIGN_MESSAGE: "solana_signMessage", + SOL_SIGN_AND_SEND_TRANSACTION: "solana_signAndSendTransaction", + SOL_SIGN_ALL_TRANSACTIONS: "solana_signAllTransactions", +} as const; + +export const DEFAULT_SOLANA_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const SolanaUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + const senderPublicKey = new PublicKey(address); + const valid = verifyMessageSignature( + senderPublicKey.toBase58(), + signature, + bs58.encode(new Uint8Array(Buffer.from(message))) + ); + return valid; + }, +}; diff --git a/shared/chains/stacks.ts b/shared/chains/stacks.ts new file mode 100644 index 000000000..038655e08 --- /dev/null +++ b/shared/chains/stacks.ts @@ -0,0 +1,110 @@ +import { + getAddressFromPublicKey, + publicKeyFromSignatureRsv, +} from "@stacks/transactions"; +import { sha256 } from "@noble/hashes/sha2"; +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const StacksChainData: ChainsMap = { + "1": { + id: "stacks:1", + name: "Stacks Mainnet", + rpc: ["https://stacks-node-api.mainnet.stacks.co"], + slip44: 5757, + testnet: false, + }, + "2147483648": { + id: "stacks:2147483648", + name: "Stacks Testnet", + rpc: ["https://stacks-node-api.testnet.stacks.co"], + slip44: 5757, + testnet: true, + }, +}; + +export const StacksMetadata: NamespaceMetadata = { + "1": { + logo: "/assets/stacks.png", + rgb: "88, 86, 214", + }, + "2147483648": { + logo: "/assets/stacks.png", + rgb: "88, 86, 214", + }, +}; + +// Wallet-specific data structures +export const STACKS_NAMESPACE = "stacks"; + +export const STACKS_MAINNET_ID = "1"; +export const STACKS_TESTNET_ID = "2147483648"; +export const STACKS_MAINNET_CAIP2 = `${STACKS_NAMESPACE}:${STACKS_MAINNET_ID}`; +export const STACKS_TESTNET_CAIP2 = `${STACKS_NAMESPACE}:${STACKS_TESTNET_ID}`; + +export type IStacksChainId = + | typeof STACKS_MAINNET_CAIP2 + | typeof STACKS_TESTNET_CAIP2; + +export const STACKS_MAINNET = { + [STACKS_MAINNET_CAIP2]: { + chainId: STACKS_MAINNET_ID, + name: "Stacks Mainnet", + logo: "/chain-logos/stacks.png", + rgb: "107, 111, 147", + rpc: "", + coinType: "0", + caip2: STACKS_MAINNET_CAIP2 as IStacksChainId, + namespace: STACKS_NAMESPACE, + }, +}; + +export const STACKS_TESTNET = { + [STACKS_TESTNET_CAIP2]: { + chainId: STACKS_TESTNET_ID, + name: "Stacks Testnet", + logo: "/chain-logos/stacks.png", + rgb: "107, 111, 147", + rpc: "", + coinType: "1", + caip2: STACKS_TESTNET_CAIP2 as IStacksChainId, + namespace: STACKS_NAMESPACE, + }, +}; + +export const STACKS_CHAINS = { ...STACKS_MAINNET, ...STACKS_TESTNET } as Record< + IStacksChainId, + (typeof STACKS_MAINNET)[typeof STACKS_MAINNET_CAIP2] & + (typeof STACKS_TESTNET)[typeof STACKS_TESTNET_CAIP2] +>; + +export const DEFAULT_STACKS_METHODS = { + STACKS_SEND_TRANSFER: "stx_transferStx", + STACKS_SIGN_MESSAGE: "stx_signMessage", +} as const; + +export const DEFAULT_STACKS_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const StacksUtils = { + verifyMessage: async ({ + message, + signature, + address, + chainId, + }: { + message: string; + signature: string; + address: string; + chainId: string; + }) => { + const network = + chainId === "stacks:1" || chainId === "1" ? "mainnet" : "testnet"; + const hash = Buffer.from(sha256(message)).toString("hex"); + const pubKey = publicKeyFromSignatureRsv(hash, signature); + + const valid = getAddressFromPublicKey(pubKey, network) === address; + return valid; + }, +}; diff --git a/shared/chains/sui.ts b/shared/chains/sui.ts new file mode 100644 index 000000000..09ad7d18c --- /dev/null +++ b/shared/chains/sui.ts @@ -0,0 +1,80 @@ +import { + verifyPersonalMessageSignature, + verifyTransactionSignature, +} from "@mysten/sui/verify"; +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const SUI_MAINNET = "mainnet"; +export const SUI_TESTNET = "testnet"; +export const SUI_DEVNET = "devnet"; + +export const SuiChainData: ChainsMap = { + [SUI_MAINNET]: { + id: `sui:${SUI_MAINNET}`, + name: "SUI Mainnet", + rpc: [], + slip44: 0, + testnet: false, + }, + [SUI_TESTNET]: { + id: `sui:${SUI_TESTNET}`, + name: "SUI Testnet", + rpc: [], + slip44: 0, + testnet: true, + }, + [SUI_DEVNET]: { + id: `sui:${SUI_DEVNET}`, + name: "SUI Devnet", + rpc: [], + slip44: 0, + testnet: true, + }, +}; + +export const SuiMetadata: NamespaceMetadata = { + [SUI_MAINNET]: { + logo: "/assets/sui.png", + rgb: "6, 135, 245", + }, + [SUI_TESTNET]: { + logo: "/assets/sui.png", + rgb: "6, 135, 245", + }, + [SUI_DEVNET]: { + logo: "/assets/sui.png", + rgb: "6, 135, 245", + }, +}; + +export const DEFAULT_SUI_METHODS = { + SUI_SIGN_TRANSACTION: "sui_signTransaction", + SUI_SIGN_AND_EXECUTE_TRANSACTION: "sui_signAndExecuteTransaction", + SUI_SIGN_PERSONAL_MESSAGE: "sui_signPersonalMessage", +} as const; + +export const DEFAULT_SUI_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const SuiUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + const derivedPublicKey = await verifyPersonalMessageSignature( + new TextEncoder().encode(message), + signature, + { address } + ); + return ( + derivedPublicKey.toSuiAddress().toLowerCase() === address.toLowerCase() + ); + }, +}; diff --git a/shared/chains/tezos.ts b/shared/chains/tezos.ts new file mode 100644 index 000000000..7cba153e7 --- /dev/null +++ b/shared/chains/tezos.ts @@ -0,0 +1,54 @@ +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const TezosMetadata: NamespaceMetadata = { + mainnet: { + logo: "/assets/tezos.svg", + rgb: "44, 125, 247", + }, + testnet: { + logo: "/assets/tezos.svg", + rgb: "44, 125, 247", + }, +}; + +export const TezosChainData: ChainsMap = { + mainnet: { + name: "Tezos", + id: "tezos:mainnet", + rpc: ["https://mainnet.api.tez.ie"], + slip44: 1729, + testnet: false, + }, + testnet: { + name: "Tezos Testnet", + id: "tezos:testnet", + rpc: ["https://ghostnet.ecadinfra.com"], + slip44: 1729, + testnet: true, + }, +}; + +export const DEFAULT_TEZOS_METHODS = { + TEZOS_GET_ACCOUNTS: "tezos_getAccounts", + TEZOS_SEND: "tezos_send", + TEZOS_SIGN: "tezos_sign", +} as const; + +export const DEFAULT_TEZOS_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const TezosUtils = { + verifyMessage: async ({ + message, + signature, + address, + }: { + message: string; + signature: string; + address: string; + }) => { + return true; + }, +}; diff --git a/shared/chains/ton.ts b/shared/chains/ton.ts new file mode 100644 index 000000000..e01bc8e79 --- /dev/null +++ b/shared/chains/ton.ts @@ -0,0 +1,94 @@ +import { signVerify } from "@ton/crypto"; +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const TonChainData: ChainsMap = { + "-239": { + id: "ton:-239", + name: "TON Mainnet", + rpc: [], + slip44: 607, + testnet: false, + }, + "-3": { + id: "ton:-3", + name: "TON Testnet", + rpc: [], + slip44: 607, + testnet: true, + }, +}; + +export const TonMetadata: NamespaceMetadata = { + "-239": { + logo: "/assets/ton.png", + rgb: "0, 153, 255", + }, + "-3": { + logo: "/assets/ton.png", + rgb: "0, 153, 255", + }, +}; + +// Wallet-specific data structures +export type TTonChain = + | keyof typeof TON_MAINNET_CHAINS + | keyof typeof TON_TEST_CHAINS; + +export const tonCenterRpc = (testnet: boolean) => { + return testnet + ? "https://ton-testnet.api.onfinality.io/public" + : "https://toncenter.com/api/v2/jsonRPC"; +}; + +export const TON_MAINNET_CHAINS = { + "ton:-239": { + chainId: "-239", + name: "TON", + logo: "/chain-logos/ton.png", + rgb: "0, 136, 204", + rpc: tonCenterRpc(false), + namespace: "ton", + }, +} as const; + +export const TON_TEST_CHAINS = { + "ton:-3": { + chainId: "-3", + name: "TON Testnet", + logo: "/chain-logos/ton.png", + rgb: "0, 136, 204", + rpc: tonCenterRpc(true), + namespace: "ton", + }, +} as const; + +export const TON_CHAINS = { ...TON_MAINNET_CHAINS, ...TON_TEST_CHAINS }; + +export const DEFAULT_TON_METHODS = { + TON_SEND_MESSAGE: "ton_sendMessage", + TON_SIGN_DATA: "ton_signData", +} as const; + +export const DEFAULT_TON_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const TONUtils = { + verifyMessage: async ({ + message, + signature, + publicKey, + }: { + message: string; + signature: string; + publicKey: string; + }) => { + const valid = await signVerify( + Buffer.from(message, "utf-8"), + Buffer.from(signature, "base64"), + Buffer.from(publicKey, "base64") + ); + return valid; + }, +}; diff --git a/shared/chains/tron.ts b/shared/chains/tron.ts new file mode 100644 index 000000000..406f2b635 --- /dev/null +++ b/shared/chains/tron.ts @@ -0,0 +1,63 @@ +import { getTronWeb } from "../helpers"; +import { NamespaceMetadata, ChainsMap } from "../types"; + +export const TronChainData: ChainsMap = { + "0x2b6653dc": { + id: "tron:0x2b6653dc", + name: "Tron Mainnet", + rpc: [], + slip44: 195, + testnet: false, + }, + "0xcd8690dc": { + id: "tron:0xcd8690dc", + name: "Tron Testnet", + rpc: [], + slip44: 195, + testnet: true, + }, +}; + +export const TronMetadata: NamespaceMetadata = { + // Tron Mainnet + "0x2b6653dc": { + logo: "/assets/tron.png", + rgb: "183, 62, 49", + }, + // Tron TestNet + "0xcd8690dc": { + logo: "assets/tron.png", + rgb: "183, 62, 49", + }, +}; + +export const DEFAULT_TRON_METHODS = { + TRON_SIGN_TRANSACTION: "tron_signTransaction", + TRON_SIGN_MESSAGE: "tron_signMessage", +} as const; + +export const DEFAULT_TRON_EVENTS = { + CHAIN_CHANGED: "chainChanged", + ACCOUNTS_CHANGED: "accountsChanged", +} as const; + +export const TronUtils = { + verifyMessage: async ({ + message, + signature, + address, + chainId, + }: { + message: string; + signature: string; + address: string; + chainId: string; + }) => { + const tronWeb = getTronWeb(chainId); + if (!tronWeb) { + throw new Error("Tron web not found for chainId: " + chainId); + } + const valid = await tronWeb.trx.verifyMessageV2(message, signature); + return valid === address; + }, +}; diff --git a/shared/constants/default.ts b/shared/constants/default.ts new file mode 100644 index 000000000..9f20e910c --- /dev/null +++ b/shared/constants/default.ts @@ -0,0 +1,76 @@ +import { getAppMetadata } from "@walletconnect/utils"; + +if (!process.env.NEXT_PUBLIC_PROJECT_ID) + throw new Error("`NEXT_PUBLIC_PROJECT_ID` env variable is missing."); + +export const DEFAULT_PROJECT_ID = process.env.NEXT_PUBLIC_PROJECT_ID; +export const DEFAULT_RELAY_URL = process.env.NEXT_PUBLIC_RELAY_URL; + +export const DEFAULT_LOGGER = "debug"; + +export const DEFAULT_APP_METADATA = { + name: "React App", + description: "React App for WalletConnect", + url: "https://walletconnect.com/", + icons: ["https://avatars.githubusercontent.com/u/37784886"], + verifyUrl: "https://verify.walletconnect.com", +}; + +/** + * EIP5792 + */ +export const DEFAULT_EIP5792_METHODS = { + WALLET_GET_CAPABILITIES: "wallet_getCapabilities", + WALLET_SEND_CALLS: "wallet_sendCalls", + WALLET_GET_CALLS_STATUS: "wallet_getCallsStatus", +} as const; + +/** + * EIP7715 + */ +export const DEFAULT_EIP7715_METHODS = { + WALLET_GRANT_PERMISSIONS: "wallet_grantPermissions", +} as const; + +export const DEFAULT_GITHUB_REPO_URL = + "https://github.com/WalletConnect/web-examples/tree/main/dapps/react-dapp-v2"; + +type RelayerType = { + value: string | undefined; + label: string; +}; + +export const REGIONALIZED_RELAYER_ENDPOINTS: RelayerType[] = [ + { + value: DEFAULT_RELAY_URL, + label: "Default", + }, + + { + value: "wss://us-east-1.relay.walletconnect.com", + label: "US", + }, + { + value: "wss://eu-central-1.relay.walletconnect.com", + label: "EU", + }, + { + value: "wss://ap-southeast-1.relay.walletconnect.com", + label: "Asia Pacific", + }, +]; + +export const ORIGIN_OPTIONS = [ + { + value: getAppMetadata().url, + label: "VALID", + }, + { + value: "https://invalid.origin", + label: "INVALID", + }, + { + value: "unknown", + label: "UNKNOWN", + }, +]; diff --git a/shared/constants/index.ts b/shared/constants/index.ts new file mode 100644 index 000000000..f348fd43f --- /dev/null +++ b/shared/constants/index.ts @@ -0,0 +1 @@ +export * from "./default"; diff --git a/advanced/dapps/react-dapp-v2/src/helpers/api.ts b/shared/helpers/api.ts similarity index 98% rename from advanced/dapps/react-dapp-v2/src/helpers/api.ts rename to shared/helpers/api.ts index b7891782a..1fd4b10b7 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/api.ts +++ b/shared/helpers/api.ts @@ -1,7 +1,7 @@ import axios, { AxiosInstance } from "axios"; import { apiGetKadenaAccountBalance } from "./kadena"; -import { AssetData } from "./types"; +import { AssetData } from "../types"; import { PactCommand } from "@kadena/client"; import { apiGetBip122AccountBalance } from "./bip122"; import { getSuiClient } from "./sui"; @@ -170,6 +170,8 @@ export async function apiGetAccountBalance( return apiGetTronAccountBalance(address, networkId); } + // todo: add other chains here + if (namespace !== "eip155") { return { balance: "", symbol: "", name: "" }; } diff --git a/shared/helpers/bip122.ts b/shared/helpers/bip122.ts new file mode 100644 index 000000000..1075b0ad3 --- /dev/null +++ b/shared/helpers/bip122.ts @@ -0,0 +1,89 @@ +import { schnorr } from "@noble/curves/secp256k1"; +import * as bitcoin from "bitcoinjs-lib"; +import BitcoinMessage from "bitcoinjs-message"; +import { convertHexToBase64 } from "./formatting"; +import { IUTXO } from "../types"; +import { BIP122_TESTNET } from "../chains/bip122"; + +export async function apiGetBip122AccountBalance( + address: string, + chainId: string +) { + const utxo = await apiGetAddressUtxos(address, chainId); + const balanceInSatoshis = getAvailableBalanceFromUtxos(utxo); + const balanceInBtc = balanceInSatoshis * 0.00000001; + return { balance: balanceInBtc.toString(), symbol: "BTC", name: "BTC" }; +} + +export async function apiGetAddressUtxos(address: string, chainId: string) { + const isTestnet = chainId.includes(BIP122_TESTNET); + return await ( + await fetch( + `https://mempool.space${ + isTestnet ? "/testnet" : "" + }/api/address/${address}/utxo` + ) + ).json(); +} + +export function getAvailableBalanceFromUtxos(utxos: IUTXO[]) { + if (!utxos || !utxos.length) { + return 0; + } + return utxos.reduce((acc, { value }) => acc + value, 0); +} + +export function calculateChange( + utxos: IUTXO[], + amount: number, + feeRate: number +): number { + const inputSum = utxos.reduce((sum, utxo) => sum + utxo.value, 0); // Sum of all UTXO values + const estimatedSize = 10 + 148 * utxos.length + 34 * 2; // Rough estimate of transaction size + const fee = estimatedSize * feeRate; // Transaction fee + const change = inputSum - amount - fee; // Calculate change + return change; +} + +export async function isValidBip122Signature( + address: string, + signature: string, + message: string +) { + // if taproot address + if (address.startsWith("bc1p") || address.startsWith("tb1p")) { + // Convert the Ordinals address (Taproot) to the internal public key + const decoded = bitcoin.address.fromBech32(address); + if (decoded.version !== 1 || decoded.data.length !== 32) { + throw new Error("Invalid Taproot address"); + } + + const publicKey = decoded.data; // The 32-byte internal public key (X coordinate of pubkey) + + // Hash the message using SHA256 (standard Bitcoin message hashing) + const messageHash = bitcoin.crypto.sha256(Buffer.from(message)); + + // Verify the Schnorr signature using tiny-secp256k1 + return schnorr.verify( + new Uint8Array(Buffer.from(signature, "hex")), + new Uint8Array(messageHash), + new Uint8Array(publicKey) + ); + } + + return BitcoinMessage.verify( + message, + address, + convertHexToBase64(signature), + undefined, + true + ); +} + +export function isOrdinalAddress(address: string) { + return address.startsWith("tb1p"); +} + +export function isBip122Testnet(chainId: string) { + return chainId.includes(BIP122_TESTNET); +} diff --git a/shared/helpers/crypto.ts b/shared/helpers/crypto.ts new file mode 100644 index 000000000..350d6ef8e --- /dev/null +++ b/shared/helpers/crypto.ts @@ -0,0 +1,130 @@ +/** + * Cryptographic utilities for signing and verification + * Consolidated from react-dapp-v2 + */ + +import * as encoding from "@walletconnect/encoding"; +import { TypedDataUtils } from "eth-sig-util"; +import * as ethUtil from "ethereumjs-util"; +import { providers } from "ethers"; +import { eip1271 } from "./eip1271"; + +/** + * Encode a personal message for signing + */ +export function encodePersonalMessage(msg: string): string { + const data = encoding.utf8ToBuffer(msg); + const buf = Buffer.concat([ + new Uint8Array( + Buffer.from( + "\u0019Ethereum Signed Message:\n" + data.length.toString(), + "utf8" + ) + ), + new Uint8Array(data), + ]); + return ethUtil.bufferToHex(buf); +} + +/** + * Hash a personal message + */ +export function hashPersonalMessage(msg: string): string { + const data = encodePersonalMessage(msg); + const buf = ethUtil.toBuffer(data); + const hash = ethUtil.keccak256(buf); + return ethUtil.bufferToHex(hash); +} + +/** + * Encode a typed data message (EIP-712) + */ +export function encodeTypedDataMessage(msg: string): string { + const data = TypedDataUtils.sanitizeData(JSON.parse(msg)); + const buf = Buffer.concat([ + new Uint8Array(Buffer.from("1901", "hex")), + new Uint8Array( + TypedDataUtils.hashStruct("EIP712Domain", data.domain, data.types) + ), + new Uint8Array( + TypedDataUtils.hashStruct( + data.primaryType as string, + data.message, + data.types + ) + ), + ]); + return ethUtil.bufferToHex(buf); +} + +/** + * Hash a typed data message (EIP-712) + */ +export function hashTypedDataMessage(msg: string): string { + const data = encodeTypedDataMessage(msg); + const buf = ethUtil.toBuffer(data); + const hash = ethUtil.keccak256(buf); + return ethUtil.bufferToHex(hash); +} + +/** + * Recover the address from a signature and hash + */ +export function recoverAddress(sig: string, hash: string): string { + const params = ethUtil.fromRpcSig(sig); + const result = ethUtil.ecrecover( + ethUtil.toBuffer(hash), + params.v, + params.r, + params.s + ); + const signer = ethUtil.bufferToHex(ethUtil.publicToAddress(result)); + return signer; +} + +/** + * Recover the signer address from a personal signature + */ +export function recoverPersonalSignature(sig: string, msg: string): string { + const hash = hashPersonalMessage(msg); + const signer = recoverAddress(sig, hash); + return signer; +} + +/** + * Recover the signer address from a typed data signature (EIP-712) + */ +export function recoverTypedMessage(sig: string, msg: string): string { + const hash = hashTypedDataMessage(msg); + const signer = recoverAddress(sig, hash); + return signer; +} + +/** + * Verify a signature against an address + * Handles both EOA (Externally Owned Accounts) and smart contract wallets (EIP-1271) + */ +export async function verifySignature( + address: string, + sig: string, + hash: string, + rpcUrl: string +): Promise { + const provider = new providers.JsonRpcProvider(rpcUrl); + const bytecode = await provider.getCode(address); + + // Check if it's a smart contract + if ( + !bytecode || + bytecode === "0x" || + bytecode === "0x0" || + bytecode === "0x00" + ) { + // EOA verification + const signer = recoverAddress(sig, hash); + return signer.toLowerCase() === address.toLowerCase(); + } else { + // Smart contract verification (EIP-1271) + return eip1271.isValidSignature(address, sig, hash, provider); + } +} diff --git a/advanced/dapps/react-dapp-v2/src/helpers/eip1271.ts b/shared/helpers/eip1271.ts similarity index 92% rename from advanced/dapps/react-dapp-v2/src/helpers/eip1271.ts rename to shared/helpers/eip1271.ts index 20bf82b7b..0bbf30076 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/eip1271.ts +++ b/shared/helpers/eip1271.ts @@ -1,3 +1,8 @@ +/** + * EIP-1271 Smart Contract Signature Verification + * From react-dapp-v2 + */ + import { Contract, providers, utils } from "ethers"; const spec = { diff --git a/advanced/dapps/react-dapp-v2/src/helpers/eip712.ts b/shared/helpers/eip712.ts similarity index 93% rename from advanced/dapps/react-dapp-v2/src/helpers/eip712.ts rename to shared/helpers/eip712.ts index 9dcf66ec2..0d6590413 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/eip712.ts +++ b/shared/helpers/eip712.ts @@ -1,3 +1,8 @@ +/** + * EIP-712 Typed Data utilities + * From react-dapp-v2 + */ + // From spec: https://eips.ethereum.org/EIPS/eip-712 const example = { types: { diff --git a/shared/helpers/formatting.ts b/shared/helpers/formatting.ts new file mode 100644 index 000000000..7709332c4 --- /dev/null +++ b/shared/helpers/formatting.ts @@ -0,0 +1,160 @@ +/** + * Formatting utilities for text, addresses, and data + * Consolidated from react-dapp-v2 + */ + +import * as encoding from "@walletconnect/encoding"; +import { BigNumber, BigNumberish, utils } from "ethers"; + +/** + * Capitalize first letter of each word + */ +export function capitalize(string: string): string { + return string + .split(" ") + .map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()) + .join(" "); +} + +/** + * Ellipse text to a maximum length + */ +export function ellipseText(text = "", maxLength = 9999): string { + if (text.length <= maxLength) { + return text; + } + const _maxLength = maxLength - 3; + let ellipse = false; + let currentLength = 0; + const result = + text + .split(" ") + .filter((word) => { + currentLength += word.length; + if (ellipse || currentLength >= _maxLength) { + ellipse = true; + return false; + } else { + return true; + } + }) + .join(" ") + "..."; + return result; +} + +/** + * Ellipse an address for display + */ +export function ellipseAddress(address = "", width = 10): string { + return `${address.slice(0, width)}...${address.slice(-width)}`; +} + +/** + * Convert hex to number + */ +export function convertHexToNumber(hex: string) { + try { + return encoding.hexToNumber(hex); + } catch (e) { + return hex; + } +} + +/** + * Convert hex to UTF-8 string + */ +export function convertHexToUtf8(hex: string) { + try { + return encoding.hexToUtf8(hex); + } catch (e) { + return hex; + } +} + +/** + * Convert hex to Base64 + */ +export function convertHexToBase64(hex: string) { + try { + return encoding.hexToBuffer(hex).toString("base64"); + } catch (e) { + return hex; + } +} + +/** + * Sanitize decimal places + */ +export const sanitizeDecimals = (value: string, decimals = 18): string => { + const [integer, fractional] = value.split("."); + const _fractional = fractional + ? fractional.substring(0, decimals).replace(/0+$/gi, "") + : undefined; + return _fractional ? [integer, _fractional].join(".") : integer; +}; + +/** + * Convert amount to Wei/atomic units + */ +export const toWad = (amount: string, decimals = 18): BigNumber => { + return utils.parseUnits(sanitizeDecimals(amount, decimals), decimals); +}; + +/** + * Convert Wei/atomic units to human-readable format + */ +export const fromWad = (wad: BigNumberish, decimals = 18): string => { + try { + return sanitizeDecimals(utils.formatUnits(wad, decimals), decimals); + } catch (e) { + return wad?.toString(); + } +}; + +/** + * Check if running on mobile device + */ +export function isMobile(): boolean { + let mobile = false; + + function hasTouchEvent(): boolean { + try { + document.createEvent("TouchEvent"); + return true; + } catch (e) { + return false; + } + } + + function hasMobileUserAgent(): boolean { + if ( + /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test( + navigator.userAgent + ) || + /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test( + navigator.userAgent.substr(0, 4) + ) + ) { + return true; + } else if (hasTouchEvent()) { + return true; + } + return false; + } + + mobile = hasMobileUserAgent(); + + return mobile; +} + +/** + * Get data string for contract calls + */ +export function getDataString(func: string, arrVals: any[]): string { + let val = ""; + for (let i = 0; i < arrVals.length; i++) { + val += encoding.padLeft(arrVals[i], 64); + } + const data = func + val; + return data; +} diff --git a/shared/helpers/index.ts b/shared/helpers/index.ts new file mode 100644 index 000000000..7fa162359 --- /dev/null +++ b/shared/helpers/index.ts @@ -0,0 +1,20 @@ +/** + * Barrel export for all helper utilities + */ + +// Crypto and signing utilities +export * from "./crypto"; +export * from "./eip712"; +export * from "./eip1271"; +export * from "./formatting"; + +// Chain-specific helpers +export * from "./api"; +export * from "./bip122"; +export * from "./kadena"; +export * from "./solana"; +export * from "./sui"; +export * from "./ton"; +export * from "./tron"; +export * from "./tx"; +export * from "./namespaces"; diff --git a/shared/helpers/kadena.ts b/shared/helpers/kadena.ts new file mode 100644 index 000000000..6ff961f36 --- /dev/null +++ b/shared/helpers/kadena.ts @@ -0,0 +1,81 @@ +import { IPactCommand, PactCommand } from "@kadena/client"; + +export async function getKadenaChainAmount( + WCNetworkId: string +): Promise { + const ENDPOINT = WCNetworkId === "testnet04" ? "testnet." : ""; + + try { + const response = await fetch(`https://api.${ENDPOINT}chainweb.com/info`, { + mode: "cors", + }); + + const json = await response.json(); + return json.nodeNumberOfChains; + } catch (e) { + console.error("Error fetching Kadena chain info", e); + return 0; + } +} + +async function getKadenaBalanceForChain( + publicKey: string, + WCNetworkId: IPactCommand["networkId"], + kadenaChainID: IPactCommand["publicMeta"]["chainId"] +): Promise { + const ENDPOINT = WCNetworkId === "testnet04" ? "testnet." : ""; + const API_HOST = `https://api.${ENDPOINT}chainweb.com/chainweb/0.0/${WCNetworkId}/chain/${kadenaChainID}/pact`; + + // This request will fail if there is no on-chain activity for the given account yet + try { + const command = new PactCommand(); + command.code = `(coin.get-balance "k:${publicKey}")`; + command.setMeta( + { sender: `k:${publicKey}`, chainId: kadenaChainID }, + WCNetworkId + ); + const { result } = await command.local(API_HOST, { + preflight: false, + signatureVerification: false, + }); + + if (result.status !== "success") return 0; + + return result.data * 10e17; + } catch (e) { + return 0; + } +} + +const kadenaNumberOfChains: Record = { + mainnet01: 0, + testnet04: 0, +}; + +export async function apiGetKadenaAccountBalance( + publicKey: string, + WCNetworkId: IPactCommand["networkId"] +) { + if (!kadenaNumberOfChains[WCNetworkId]) { + kadenaNumberOfChains[WCNetworkId] = await getKadenaChainAmount(WCNetworkId); + } + + const chainBalances = await Promise.all( + Array.from(Array(kadenaNumberOfChains[WCNetworkId])).map( + async (_val, chainNumber) => + getKadenaBalanceForChain( + publicKey, + WCNetworkId, + chainNumber.toString() as IPactCommand["publicMeta"]["chainId"] + ) + ) + ); + + const totalBalance = chainBalances.reduce((acc, item) => acc + item, 0); + + return { + balance: totalBalance.toString(), + symbol: "KDA", + name: "KDA", + }; +} diff --git a/advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts b/shared/helpers/namespaces.ts similarity index 75% rename from advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts rename to shared/helpers/namespaces.ts index bf20ac89f..951193705 100644 --- a/advanced/dapps/react-dapp-v2/src/helpers/namespaces.ts +++ b/shared/helpers/namespaces.ts @@ -3,7 +3,6 @@ import { DEFAULT_COSMOS_EVENTS, DEFAULT_COSMOS_METHODS, DEFAULT_EIP155_METHODS, - DEFAULT_EIP_155_EVENTS, DEFAULT_SOLANA_EVENTS, DEFAULT_SOLANA_METHODS, DEFAULT_POLKADOT_EVENTS, @@ -20,14 +19,14 @@ import { DEFAULT_TON_EVENTS, DEFAULT_TEZOS_METHODS, DEFAULT_TEZOS_EVENTS, - DEFAULT_OPTIONAL_METHODS, DEFAULT_BIP122_METHODS, DEFAULT_BIP122_EVENTS, DEFAULT_SUI_METHODS, DEFAULT_SUI_EVENTS, DEFAULT_STACKS_METHODS, DEFAULT_STACKS_EVENTS, -} from "../constants"; + DEFAULT_EIP155_EVENTS, +} from "../chains"; export const getNamespacesFromChains = (chains: string[]) => { const supportedNamespaces: string[] = []; @@ -41,7 +40,7 @@ export const getNamespacesFromChains = (chains: string[]) => { return supportedNamespaces; }; -export const getSupportedRequiredMethodsByNamespace = (namespace: string) => { +export const getSupportedOptionalMethodsByNamespace = (namespace: string) => { switch (namespace) { case "eip155": return Object.values(DEFAULT_EIP155_METHODS); @@ -76,31 +75,10 @@ export const getSupportedRequiredMethodsByNamespace = (namespace: string) => { } }; -export const getSupportedOptionalMethodsByNamespace = (namespace: string) => { - switch (namespace) { - case "eip155": - return Object.values(DEFAULT_OPTIONAL_METHODS); - case "cosmos": - case "solana": - case "polkadot": - case "near": - case "mvx": - case "tron": - case "tezos": - case "kadena": - case "bip122": - return []; - default: - throw new Error( - `No default optional methods for namespace: ${namespace}` - ); - } -}; - export const getSupportedEventsByNamespace = (namespace: string) => { switch (namespace) { case "eip155": - return Object.values(DEFAULT_EIP_155_EVENTS); + return Object.values(DEFAULT_EIP155_EVENTS); case "cosmos": return Object.values(DEFAULT_COSMOS_EVENTS); case "solana": @@ -130,24 +108,6 @@ export const getSupportedEventsByNamespace = (namespace: string) => { } }; -export const getRequiredNamespaces = ( - chains: string[] -): ProposalTypes.OptionalNamespaces => { - const selectedNamespaces = getNamespacesFromChains(chains); - console.log("selected required namespaces:", selectedNamespaces); - - return Object.fromEntries( - selectedNamespaces.map((namespace) => [ - namespace, - { - methods: getSupportedRequiredMethodsByNamespace(namespace), - chains: chains.filter((chain) => chain.startsWith(namespace)), - events: getSupportedEventsByNamespace(namespace) as any[], - }, - ]) - ); -}; - export const getOptionalNamespaces = ( chains: string[] ): ProposalTypes.OptionalNamespaces => { diff --git a/shared/helpers/solana.ts b/shared/helpers/solana.ts new file mode 100644 index 000000000..6204eedf9 --- /dev/null +++ b/shared/helpers/solana.ts @@ -0,0 +1,20 @@ +import { PublicKey } from "@solana/web3.js"; + +export function getPublicKeysFromAccounts(accounts: string[]) { + return ( + accounts + // Filter out any non-solana accounts. + .filter((account) => account.startsWith("solana:")) + // Create a map of Solana address -> publicKey. + .reduce((map: Record, account) => { + const address = account.split(":").pop(); + if (!address) { + throw new Error( + `Could not derive Solana address from CAIP account: ${account}` + ); + } + map[address] = new PublicKey(address); + return map; + }, {}) + ); +} diff --git a/shared/helpers/sui.ts b/shared/helpers/sui.ts new file mode 100644 index 000000000..31c6d446e --- /dev/null +++ b/shared/helpers/sui.ts @@ -0,0 +1,26 @@ +import { SuiClient } from "@mysten/sui/client"; + +// Cache clients +const clients = new Map(); + +export function getSuiClient(chainId: string): SuiClient { + if (clients.has(chainId)) { + return clients.get(chainId)!; + } + let client: SuiClient; + switch (chainId) { + case "sui:mainnet": + client = new SuiClient({ url: "https://fullnode.mainnet.sui.io/" }); + break; + case "sui:testnet": + client = new SuiClient({ url: "https://fullnode.testnet.sui.io/" }); + break; + case "sui:devnet": + client = new SuiClient({ url: "https://fullnode.devnet.sui.io/" }); + break; + default: + throw new Error(`Unknown chainId: ${chainId}`); + } + clients.set(chainId, client); + return client; +} diff --git a/shared/helpers/ton.ts b/shared/helpers/ton.ts new file mode 100644 index 000000000..d606bf948 --- /dev/null +++ b/shared/helpers/ton.ts @@ -0,0 +1,179 @@ +import { + Message, + beginCell, + storeMessage, + Cell, + loadMessage, + Address, +} from "@ton/core"; +import { TonClient, Transaction } from "@ton/ton"; + +let clients = new Map(); +function getTonClient(chainId: string) { + if (clients.has(chainId)) { + return clients.get(chainId)!; + } + const client = new TonClient({ + endpoint: chainId?.includes("-3") + ? "https://ton-testnet.api.onfinality.io/public" + : "https://toncenter.com/api/v2/jsonRPC", + }); + clients.set(chainId, client); + return client; +} + +export async function getTonTransactionHash({ + boc, + address, + chainId, +}: { + boc: string; + address: string; + chainId: string; +}) { + const client = getTonClient(chainId); + const decodedTransfer = Cell.fromBase64(boc); + + // Build external-in message + const message: Message = { + info: { + type: "external-in", + src: null, + dest: Address.parse(address), + importFee: BigInt(0), + }, + init: null, + body: decodedTransfer, + }; + + const externalMessageCell = beginCell() + .store(storeMessage(message, { forceRef: true })) + .endCell(); + // Wait until the transaction with matching normalized incoming message appears + const tx = await retry( + async () => { + const found = await getTransactionByInMessage( + externalMessageCell.toBoc().toString("base64"), + client + ); + if (!found) throw new Error("Tx not found yet"); + return found; + }, + { retries: 60, delay: 2000, progress: true, progressLabel: "findTx" } + ); + if (!tx) { + console.log("Transaction was not found"); + return ""; + } + const txHashHex = tx.hash().toString("hex"); + console.log("Transaction found:", txHashHex); + // Explorer link: + console.log( + "Transaction link: ", + `https://testnet.tonviewer.com/transaction/${txHashHex}` + ); + return txHashHex; +} + +export function getNormalizedExtMessageHash(message: Message) { + if (message.info.type !== "external-in") { + throw new Error(`Message must be "external-in", got ${message.info.type}`); + } + const info = { + ...message.info, + src: undefined, + importFee: BigInt(0), + }; + const normalizedMessage = { + ...message, + init: null, + info: info, + }; + return beginCell() + .store(storeMessage(normalizedMessage, { forceRef: true })) + .endCell() + .hash(); +} + +// Modified version of the retry function from the TON Connect example +async function retry( + fn: () => Promise, + options: { + retries: number; + delay: number; + progress?: boolean; + progressLabel?: string; + } +): Promise { + let lastError: Error | undefined; + let printedHeader = false; + let printedAnything = false; + for (let i = 0; i < options.retries; i++) { + if (options.progress) { + if (!printedHeader && options.progressLabel) { + console.log(`${options.progressLabel}: `); + printedHeader = true; + } + console.log("."); + printedAnything = true; + } + try { + const result = await fn(); + if (printedAnything) console.log("\n"); + return result; + } catch (e) { + if (e instanceof Error) lastError = e; + if (i < options.retries - 1) { + } + } + + await new Promise((resolve) => setTimeout(resolve, options.delay)); + } + if (printedAnything) console.log("\n"); + throw lastError; +} + +async function getTransactionByInMessage( + inMessageBoc: string, + client: TonClient +): Promise { + const inMessage = loadMessage(Cell.fromBase64(inMessageBoc).beginParse()); + if (inMessage.info.type !== "external-in") { + throw new Error( + `Message must be "external-in", got ${inMessage.info.type}` + ); + } + const account = inMessage.info.dest; + const targetInMessageHash = getNormalizedExtMessageHash(inMessage); + let lt: string | undefined = undefined; + let hash: string | undefined = undefined; + while (true) { + const transactions = await retry( + () => + client.getTransactions(account, { + hash, + lt, + limit: 10, + archival: true, + }), + { delay: 2000, retries: 3 } + ); + if (transactions.length === 0) { + return undefined; + } + for (const transaction of transactions) { + if (transaction.inMessage?.info.type !== "external-in") { + continue; + } + const inMessageHash = getNormalizedExtMessageHash(transaction.inMessage); + if ( + inMessageHash.toString("hex") === targetInMessageHash.toString("hex") + ) { + return transaction; + } + } + const last = transactions.at(-1)!; + lt = last.lt.toString(); + hash = last.hash().toString("base64"); + } +} diff --git a/shared/helpers/tron.ts b/shared/helpers/tron.ts new file mode 100644 index 000000000..520946399 --- /dev/null +++ b/shared/helpers/tron.ts @@ -0,0 +1,22 @@ +import { TronWeb } from "tronweb"; +let tronWebMainnet: TronWeb; +let tronWebTestnet: TronWeb; +export const getTronWeb = (network: string) => { + if (network === "0xcd8690dc" || network === "tron:0xcd8690dc") { + if (!tronWebTestnet) { + tronWebTestnet = new TronWeb({ + fullHost: "https://nile.trongrid.io/", + }); + } + return tronWebTestnet; + } + if (network === "0x2b6653dc" || network === "tron:0x2b6653dc") { + if (!tronWebMainnet) { + tronWebMainnet = new TronWeb({ + fullHost: "https://api.trongrid.io/", + }); + } + return tronWebMainnet; + } + return undefined; +}; diff --git a/shared/helpers/tx.ts b/shared/helpers/tx.ts new file mode 100644 index 000000000..c62af9b6c --- /dev/null +++ b/shared/helpers/tx.ts @@ -0,0 +1,73 @@ +import * as encoding from "@walletconnect/encoding"; + +import { apiGetAccountNonce, apiGetGasPrice } from "./api"; +import { parseEther } from "ethers/lib/utils"; +import { SendCallsParams } from "../types"; + +export async function formatTestTransaction(account: string) { + const [namespace, reference, address] = account.split(":"); + const chainId = `${namespace}:${reference}`; + + let _nonce; + try { + _nonce = await apiGetAccountNonce(address, chainId); + } catch (error) { + throw new Error( + `Failed to fetch nonce for address ${address} on chain ${chainId}` + ); + } + + const nonce = encoding.sanitizeHex(encoding.numberToHex(_nonce)); + + // gasPrice + const _gasPrice = await apiGetGasPrice(chainId); + const gasPrice = encoding.sanitizeHex(_gasPrice); + + // gasLimit + const _gasLimit = 21000; + const gasLimit = encoding.sanitizeHex(encoding.numberToHex(_gasLimit)); + + // value + const _value = 0; + const value = encoding.sanitizeHex(encoding.numberToHex(_value)); + + const tx = { + from: address, + to: address, + data: "0x", + nonce, + gasPrice, + gasLimit, + value, + }; + + return tx; +} + +export async function formatTestBatchCall(account: string) { + const [namespace, reference, address] = account.split(":"); + // preparing calldata for batch send + //sepolia pow faucet address + const receiverAddress = "0x6Cc9397c3B38739daCbfaA68EaD5F5D77Ba5F455"; + const amountToSend = parseEther("0.0001").toHexString(); + const calls = [ + { + to: receiverAddress as `0x${string}`, + data: "0x" as `0x${string}`, + value: amountToSend as `0x${string}`, + }, + { + to: receiverAddress as `0x${string}`, + data: "0x" as `0x${string}`, + value: amountToSend as `0x${string}`, + }, + ]; + const sendCallsRequestParams: SendCallsParams = { + version: "1.0", + chainId: `0x${BigInt(reference).toString(16)}`, + from: address as `0x${string}`, + calls: calls, + }; + + return sendCallsRequestParams; +} diff --git a/shared/index.ts b/shared/index.ts new file mode 100644 index 000000000..aa79b1509 --- /dev/null +++ b/shared/index.ts @@ -0,0 +1,10 @@ +/** + * @web-examples/shared + * Shared utilities and chain data for WalletConnect web examples + */ + +export * from "./chains"; +export * from "./helpers"; +export * from "./wallets"; +export * from "./constants"; +export * from "./types"; diff --git a/shared/package.json b/shared/package.json new file mode 100644 index 000000000..cf634a341 --- /dev/null +++ b/shared/package.json @@ -0,0 +1,76 @@ +{ + "name": "@web-examples/shared", + "version": "1.0.0", + "description": "Shared utilities, chain data, and wallet libraries for WalletConnect web examples", + "main": "./dist/index.js", + "types": "./dist/index.d.ts", + "sideEffects": false, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js", + "require": "./dist/index.js", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "rm -rf dist && tsc", + "type-check": "tsc --noEmit", + "clean": "rm -rf dist", + "prepublishOnly": "npm run clean && npm run build" + }, + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/encoding": "^1.0.2", + "@walletconnect/types": "2.22.4-canary-auth-3", + "@walletconnect/utils": "2.22.4-canary-auth-3", + "axios": "^1.0.0", + "ethers": "5.7.2", + "ethereumjs-util": "^7.1.5", + "eth-sig-util": "^3.0.1", + "@cosmjs/amino": "0.32.3", + "@cosmjs/encoding": "0.32.3", + "@cosmjs/proto-signing": "0.32.3", + "@kadena/client": "^0.5.0", + "@kadena/cryptography-utils": "^0.4.0", + "@kadena/types": "^0.6.0", + "@multiversx/sdk-core": "12.18.0", + "@multiversx/sdk-wallet": "4.2.0", + "@mysten/sui": "^1.29.1", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.8.0", + "@noble/secp256k1": "^3.0.0", + "@polkadot/keyring": "^10.1.2", + "@polkadot/types": "^9.3.3", + "@polkadot/util": "^10.1.2", + "@polkadot/util-crypto": "^10.1.2", + "@solana/spl-token": "^0.4.13", + "@solana/web3.js": "1.98.2", + "@stacks/network": "^7.2.0", + "@stacks/transactions": "^7.2.0", + "@stacks/wallet-sdk": "^7.0.6", + "@taquito/local-forging": "^23.0.1", + "@taquito/signer": "^15.1.0", + "@taquito/taquito": "^15.1.0", + "@ton/core": "^0.61.0", + "@ton/crypto": "^3.3.0", + "@ton/ton": "^15.3.1", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.5", + "bitcoinjs-message": "^2.2.0", + "borsh": "^1.0.0", + "bs58": "6.0.0", + "ecpair": "^2.1.0", + "ed25519-hd-key": "^1.3.0", + "near-api-js": "^0.45.0", + "near-seed-phrase": "^0.2.1", + "tiny-secp256k1": "^2.2.3", + "tronweb": "^6.0.4", + "tweetnacl": "^1.0.3", + "solana-wallet": "^1.0.1" + }, + "devDependencies": { + "typescript": "^5.0.0" + } +} \ No newline at end of file diff --git a/shared/pnpm-lock.yaml b/shared/pnpm-lock.yaml new file mode 100644 index 000000000..865944466 --- /dev/null +++ b/shared/pnpm-lock.yaml @@ -0,0 +1,5267 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@cosmjs/amino': + specifier: 0.32.3 + version: 0.32.3 + '@cosmjs/encoding': + specifier: 0.32.3 + version: 0.32.3 + '@cosmjs/proto-signing': + specifier: 0.32.3 + version: 0.32.3 + '@kadena/client': + specifier: ^0.5.0 + version: 0.5.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@kadena/cryptography-utils': + specifier: ^0.4.0 + version: 0.4.4 + '@kadena/types': + specifier: ^0.6.0 + version: 0.6.2 + '@multiversx/sdk-core': + specifier: 12.18.0 + version: 12.18.0 + '@multiversx/sdk-wallet': + specifier: 4.2.0 + version: 4.2.0 + '@mysten/sui': + specifier: ^1.29.1 + version: 1.44.0(typescript@5.9.3) + '@noble/curves': + specifier: ^1.6.0 + version: 1.9.7 + '@noble/hashes': + specifier: ^1.8.0 + version: 1.8.0 + '@noble/secp256k1': + specifier: ^3.0.0 + version: 3.0.0 + '@polkadot/keyring': + specifier: ^10.1.2 + version: 10.4.2(@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2))(@polkadot/util@10.4.2) + '@polkadot/types': + specifier: ^9.3.3 + version: 9.14.2 + '@polkadot/util': + specifier: ^10.1.2 + version: 10.4.2 + '@polkadot/util-crypto': + specifier: ^10.1.2 + version: 10.4.2(@polkadot/util@10.4.2) + '@solana/spl-token': + specifier: ^0.4.13 + version: 0.4.14(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/web3.js': + specifier: 1.98.2 + version: 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@stacks/network': + specifier: ^7.2.0 + version: 7.2.0(encoding@0.1.13) + '@stacks/transactions': + specifier: ^7.2.0 + version: 7.2.0(encoding@0.1.13) + '@stacks/wallet-sdk': + specifier: ^7.0.6 + version: 7.2.0(encoding@0.1.13) + '@taquito/local-forging': + specifier: ^23.0.1 + version: 23.0.3 + '@taquito/signer': + specifier: ^15.1.0 + version: 15.1.0 + '@taquito/taquito': + specifier: ^15.1.0 + version: 15.1.0 + '@ton/core': + specifier: ^0.61.0 + version: 0.61.0(@ton/crypto@3.3.0) + '@ton/crypto': + specifier: ^3.3.0 + version: 3.3.0 + '@ton/ton': + specifier: ^15.3.1 + version: 15.4.0(@ton/core@0.61.0(@ton/crypto@3.3.0))(@ton/crypto@3.3.0) + '@walletconnect/encoding': + specifier: ^1.0.2 + version: 1.0.2 + '@walletconnect/jsonrpc-utils': + specifier: ^1.0.8 + version: 1.0.8 + '@walletconnect/types': + specifier: 2.22.4-canary-auth-3 + version: 2.22.4-canary-auth-3 + '@walletconnect/utils': + specifier: 2.22.4-canary-auth-3 + version: 2.22.4-canary-auth-3(typescript@5.9.3)(zod@3.25.76) + axios: + specifier: ^1.0.0 + version: 1.13.2 + bip32: + specifier: ^4.0.0 + version: 4.0.0 + bip39: + specifier: ^3.1.0 + version: 3.1.0 + bitcoinjs-lib: + specifier: ^6.1.5 + version: 6.1.7 + bitcoinjs-message: + specifier: ^2.2.0 + version: 2.2.0 + borsh: + specifier: ^1.0.0 + version: 1.0.0 + bs58: + specifier: 6.0.0 + version: 6.0.0 + ecpair: + specifier: ^2.1.0 + version: 2.1.0 + ed25519-hd-key: + specifier: ^1.3.0 + version: 1.3.0 + eth-sig-util: + specifier: ^3.0.1 + version: 3.0.1 + ethereumjs-util: + specifier: ^7.1.5 + version: 7.1.5 + ethers: + specifier: 5.7.2 + version: 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + near-api-js: + specifier: ^0.45.0 + version: 0.45.1(encoding@0.1.13) + near-seed-phrase: + specifier: ^0.2.1 + version: 0.2.1 + solana-wallet: + specifier: ^1.0.1 + version: 1.0.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + tiny-secp256k1: + specifier: ^2.2.3 + version: 2.2.4 + tronweb: + specifier: ^6.0.4 + version: 6.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + tweetnacl: + specifier: ^1.0.3 + version: 1.0.3 + devDependencies: + typescript: + specifier: ^5.0.0 + version: 5.9.3 + +packages: + + '@0no-co/graphql.web@1.2.0': + resolution: {integrity: sha512-/1iHy9TTr63gE1YcR5idjx8UREz1s0kFhydf3bBLCXyqjhkIc6igAzTOx3zPifCwFR87tsh/4Pa9cNts6d2otw==} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + graphql: + optional: true + + '@0no-co/graphqlsp@1.15.1': + resolution: {integrity: sha512-UBDBuVGpX5Ti0PjGnSAzkMG04psNYxKfJ+1bgF8HFPfHHpKNVl4GULHSNW0GTOngcYCYA70c+InoKw0qjHwmVQ==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@adraffy/ens-normalize@1.11.1': + resolution: {integrity: sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==} + + '@babel/runtime@7.26.10': + resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.28.4': + resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} + engines: {node: '>=6.9.0'} + + '@cosmjs/amino@0.32.3': + resolution: {integrity: sha512-G4zXl+dJbqrz1sSJ56H/25l5NJEk/pAPIr8piAHgbXYw88OdAOlpA26PQvk2IbSN/rRgVbvlLTNgX2tzz1dyUA==} + + '@cosmjs/crypto@0.32.4': + resolution: {integrity: sha512-zicjGU051LF1V9v7bp8p7ovq+VyC91xlaHdsFOTo2oVry3KQikp8L/81RkXmUIT8FxMwdx1T7DmFwVQikcSDIw==} + deprecated: This uses elliptic for cryptographic operations, which contains several security-relevant bugs. To what degree this affects your application is something you need to carefully investigate. See https://github.com/cosmos/cosmjs/issues/1708 for further pointers. Starting with version 0.34.0 the cryptographic library has been replaced. However, private keys might still be at risk. + + '@cosmjs/encoding@0.32.3': + resolution: {integrity: sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==} + + '@cosmjs/encoding@0.32.4': + resolution: {integrity: sha512-tjvaEy6ZGxJchiizzTn7HVRiyTg1i4CObRRaTRPknm5EalE13SV+TCHq38gIDfyUeden4fCuaBVEdBR5+ti7Hw==} + + '@cosmjs/math@0.32.4': + resolution: {integrity: sha512-++dqq2TJkoB8zsPVYCvrt88oJWsy1vMOuSOKcdlnXuOA/ASheTJuYy4+oZlTQ3Fr8eALDLGGPhJI02W2HyAQaw==} + + '@cosmjs/proto-signing@0.32.3': + resolution: {integrity: sha512-kSZ0ZUY0DwcRT0NcIn2HkadH4NKlwjfZgbLj1ABwh/4l0RgeT84QCscZCu63tJYq3K6auwqTiZSZERwlO4/nbg==} + + '@cosmjs/utils@0.32.4': + resolution: {integrity: sha512-D1Yc+Zy8oL/hkUkFUL/bwxvuDBzRGpc4cF7/SkdhxX4iHpSLgdOuTt1mhCh9+kl6NQREy9t7SYZ6xeW5gFe60w==} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-provider@5.8.0': + resolution: {integrity: sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/abstract-signer@5.8.0': + resolution: {integrity: sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/address@5.8.0': + resolution: {integrity: sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/base64@5.8.0': + resolution: {integrity: sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/basex@5.8.0': + resolution: {integrity: sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bignumber@5.8.0': + resolution: {integrity: sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/bytes@5.8.0': + resolution: {integrity: sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/constants@5.8.0': + resolution: {integrity: sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hash@5.8.0': + resolution: {integrity: sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/hdnode@5.8.0': + resolution: {integrity: sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/json-wallets@5.8.0': + resolution: {integrity: sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/keccak256@5.8.0': + resolution: {integrity: sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/logger@5.8.0': + resolution: {integrity: sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/networks@5.8.0': + resolution: {integrity: sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/pbkdf2@5.8.0': + resolution: {integrity: sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/properties@5.8.0': + resolution: {integrity: sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/random@5.8.0': + resolution: {integrity: sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/rlp@5.8.0': + resolution: {integrity: sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/sha2@5.8.0': + resolution: {integrity: sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/signing-key@5.8.0': + resolution: {integrity: sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/strings@5.8.0': + resolution: {integrity: sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/transactions@5.8.0': + resolution: {integrity: sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/web@5.8.0': + resolution: {integrity: sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@ethersproject/wordlists@5.8.0': + resolution: {integrity: sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==} + + '@gql.tada/cli-utils@1.7.2': + resolution: {integrity: sha512-Qbc7hbLvCz6IliIJpJuKJa9p05b2Jona7ov7+qofCsMRxHRZE1kpAmZMvL8JCI4c0IagpIlWNaMizXEQUe8XjQ==} + peerDependencies: + '@0no-co/graphqlsp': ^1.12.13 + '@gql.tada/svelte-support': 1.0.1 + '@gql.tada/vue-support': 1.0.1 + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + peerDependenciesMeta: + '@gql.tada/svelte-support': + optional: true + '@gql.tada/vue-support': + optional: true + + '@gql.tada/internal@1.0.8': + resolution: {integrity: sha512-XYdxJhtHC5WtZfdDqtKjcQ4d7R1s0d1rnlSs3OcBEUbYiPoJJfZU7tWsVXuv047Z6msvmr4ompJ7eLSK5Km57g==} + peerDependencies: + graphql: ^15.5.0 || ^16.0.0 || ^17.0.0 + typescript: ^5.0.0 + + '@graphql-typed-document-node/core@3.2.0': + resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + + '@kadena/chainweb-node-client@0.3.3': + resolution: {integrity: sha512-QmJYfRPMWJaMJEPD4Cai+9t1rA4ljACQo8XDr6dZ6WQnOItV968rLIDr43KG3p7FsyrJW2G6W97GqQUXcqVdDQ==} + + '@kadena/client@0.5.0': + resolution: {integrity: sha512-F3GPdfKBfmto7BGoDd2+gXAZe7IhSIAI1l3VgPUpZgqAz5jiSQp7CNR94nc5YsyZZE05cYsEOsk64odihDQqZQ==} + + '@kadena/cryptography-utils@0.3.3': + resolution: {integrity: sha512-6GYpjXKbMEeVR9TwIPnE2gv1yjIlIxnlMTH6R0fqlgg8AMkk5WwJ1DpKlahEh2ii2shoZISfmlKLa24U8Fkd/g==} + + '@kadena/cryptography-utils@0.4.4': + resolution: {integrity: sha512-8xUcGlmBuuR9PSW88eqJuW49EmcQeiplDlsvN1N++1Bw6KV4lXlBKlJn5TM8lxctGNpewtzlIUimQFIlMqm9aw==} + + '@kadena/pactjs@0.2.9': + resolution: {integrity: sha512-Y4c9QmcKCHFWOSqAQhQLVN/neFLsNhQRMHNmUvRjnY4BypTX+8PVKVTRWk6y92C709Smkdyh8uzmE6aRfkMHtQ==} + + '@kadena/types@0.3.3': + resolution: {integrity: sha512-61ltE1vx81r/OSrrHaEte1m2QixsCVLBT8koBmWu7wmITGltjEzjkIJNNUs/A0d4aZzlUVOa+6tnRq22clQu3w==} + + '@kadena/types@0.6.2': + resolution: {integrity: sha512-VmHLikwclzi3vtS8Bxi/zUUgdBixNd/Zz+hq3mTUqWuLiIzGBwvJrZ5Q2zzol11voPk2+fBCoCaxnh2EtYYxGw==} + + '@msgpack/msgpack@3.1.2': + resolution: {integrity: sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==} + engines: {node: '>= 18'} + + '@multiversx/sdk-bls-wasm@0.3.5': + resolution: {integrity: sha512-c0tIdQUnbBLSt6NYU+OpeGPYdL0+GV547HeHT8Xc0BKQ7Cj0v82QUoA2QRtWrR1G4MNZmLsIacZSsf6DrIS2Bw==} + engines: {node: '>=8.9.0'} + + '@multiversx/sdk-core@12.18.0': + resolution: {integrity: sha512-F+xGslPMkkZ0S/Q8UJZsMYl0mgHIuK/GdVsNFPiMKxQsKkxA2LTjNdPxVxjwgvRmN7WfdsTtQvmlsA5O1NYhBg==} + + '@multiversx/sdk-transaction-decoder@1.0.2': + resolution: {integrity: sha512-j43QsKquu8N51WLmVlJ7dV2P3A1448R7/ktvl8r3i6wRMpfdtzDPNofTdHmMRT7DdQdvs4+RNgz8hVKL11Etsw==} + + '@multiversx/sdk-wallet@4.2.0': + resolution: {integrity: sha512-EjSb9AnqMcpmDjZ7ebkUpOzpTfxj1plTuVXwZ6AaqJsdpxMfrE2izbPy18+bg5xFlr8V27wYZcW8zOhkBR50BA==} + + '@mysten/bcs@1.9.2': + resolution: {integrity: sha512-kBk5xrxV9OWR7i+JhL/plQrgQ2/KJhB2pB5gj+w6GXhbMQwS3DPpOvi/zN0Tj84jwPvHMllpEl0QHj6ywN7/eQ==} + + '@mysten/sui@1.44.0': + resolution: {integrity: sha512-3p/y5gUhsG/MBXLOdX6qw1b8r1z/lKMvdfpacH+CjuEx8Y0U98R9fLmnFFd+6K+d+CE1gctBuMtcOqr+SppBug==} + engines: {node: '>=18'} + + '@mysten/utils@0.2.0': + resolution: {integrity: sha512-CM6kJcJHX365cK6aXfFRLBiuyXc5WSBHQ43t94jqlCAIRw8umgNcTb5EnEA9n31wPAQgLDGgbG/rCUISCTJ66w==} + + '@noble/ciphers@1.3.0': + resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/curves@1.8.0': + resolution: {integrity: sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.1': + resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.4': + resolution: {integrity: sha512-2bKONnuM53lINoDrSmK8qP8W271ms7pygDhZt4SiLOoLwBtoHqeCFi6RG42V8zd3mLHuJFhU/Bmaqo4nX0/kBw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/curves@1.9.7': + resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} + engines: {node: ^14.21.3 || >=16} + + '@noble/ed25519@1.7.3': + resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + + '@noble/hashes@1.1.5': + resolution: {integrity: sha512-LTMZiiLc+V4v1Yi16TD6aX2gmtKszNye0pQgbaLqkvhIqP7nVsSaJsWloGQjJfJ8offaoP5GtX3yY5swbcJxxQ==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.0': + resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.7.0': + resolution: {integrity: sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==} + engines: {node: ^14.21.3 || >=16} + + '@noble/hashes@1.8.0': + resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} + engines: {node: ^14.21.3 || >=16} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@noble/secp256k1@1.7.2': + resolution: {integrity: sha512-/qzwYl5eFLH8OWIecQWM31qld2g1NfjgylK+TNhqtaUKP37Nm+Y+z30Fjhw0Ct8p9yCQEm2N3W/AckdIb3SMcQ==} + + '@noble/secp256k1@3.0.0': + resolution: {integrity: sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg==} + + '@polkadot/keyring@10.4.2': + resolution: {integrity: sha512-7iHhJuXaHrRTG6cJDbZE9G+c1ts1dujp0qbO4RfAPmT7YUvphHvAtCKueN9UKPz5+TYDL+rP/jDEaSKU8jl/qQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2 + + '@polkadot/networks@10.4.2': + resolution: {integrity: sha512-FAh/znrEvWBiA/LbcT5GXHsCFUl//y9KqxLghSr/CreAmAergiJNT0MVUezC7Y36nkATgmsr4ylFwIxhVtuuCw==} + engines: {node: '>=14.0.0'} + + '@polkadot/types-augment@9.14.2': + resolution: {integrity: sha512-WO9d7RJufUeY3iFgt2Wz762kOu1tjEiGBR5TT4AHtpEchVHUeosVTrN9eycC+BhleqYu52CocKz6u3qCT/jKLg==} + engines: {node: '>=14.0.0'} + + '@polkadot/types-codec@9.14.2': + resolution: {integrity: sha512-AJ4XF7W1no4PENLBRU955V6gDxJw0h++EN3YoDgThozZ0sj3OxyFupKgNBZcZb2V23H8JxQozzIad8k+nJbO1w==} + engines: {node: '>=14.0.0'} + + '@polkadot/types-create@9.14.2': + resolution: {integrity: sha512-nSnKpBierlmGBQT8r6/SHf6uamBIzk4WmdMsAsR4uJKJF1PtbIqx2W5PY91xWSiMSNMzjkbCppHkwaDAMwLGaw==} + engines: {node: '>=14.0.0'} + + '@polkadot/types@9.14.2': + resolution: {integrity: sha512-hGLddTiJbvowhhUZJ3k+olmmBc1KAjWIQxujIUIYASih8FQ3/YJDKxaofGOzh0VygOKW3jxQBN2VZPofyDP9KQ==} + engines: {node: '>=14.0.0'} + + '@polkadot/util-crypto@10.4.2': + resolution: {integrity: sha512-RxZvF7C4+EF3fzQv8hZOLrYCBq5+wA+2LWv98nECkroChY3C2ZZvyWDqn8+aonNULt4dCVTWDZM0QIY6y4LUAQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': 10.4.2 + + '@polkadot/util@10.4.2': + resolution: {integrity: sha512-0r5MGICYiaCdWnx+7Axlpvzisy/bi1wZGXgCSw5+ZTyPTOqvsYRqM2X879yxvMsGfibxzWqNzaiVjToz1jvUaA==} + engines: {node: '>=14.0.0'} + + '@polkadot/wasm-bridge@6.4.1': + resolution: {integrity: sha512-QZDvz6dsUlbYsaMV5biZgZWkYH9BC5AfhT0f0/knv8+LrbAoQdP3Asbvddw8vyU9sbpuCHXrd4bDLBwUCRfrBQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': '*' + '@polkadot/x-randomvalues': '*' + + '@polkadot/wasm-crypto-asmjs@6.4.1': + resolution: {integrity: sha512-UxZTwuBZlnODGIQdCsE2Sn/jU0O2xrNQ/TkhRFELfkZXEXTNu4lw6NpaKq7Iey4L+wKd8h4lT3VPVkMcPBLOvA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': '*' + + '@polkadot/wasm-crypto-init@6.4.1': + resolution: {integrity: sha512-1ALagSi/nfkyFaH6JDYfy/QbicVbSn99K8PV9rctDUfxc7P06R7CoqbjGQ4OMPX6w1WYVPU7B4jPHGLYBlVuMw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': '*' + '@polkadot/x-randomvalues': '*' + + '@polkadot/wasm-crypto-wasm@6.4.1': + resolution: {integrity: sha512-3VV9ZGzh0ZY3SmkkSw+0TRXxIpiO0nB8lFwlRgcwaCihwrvLfRnH9GI8WE12mKsHVjWTEVR3ogzILJxccAUjDA==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': '*' + + '@polkadot/wasm-crypto@6.4.1': + resolution: {integrity: sha512-FH+dcDPdhSLJvwL0pMLtn/LIPd62QDPODZRCmDyw+pFjLOMaRBc7raomWUOqyRWJTnqVf/iscc2rLVLNMyt7ag==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': '*' + '@polkadot/x-randomvalues': '*' + + '@polkadot/wasm-util@6.4.1': + resolution: {integrity: sha512-Uwo+WpEsDmFExWC5kTNvsVhvqXMZEKf4gUHXFn4c6Xz4lmieRT5g+1bO1KJ21pl4msuIgdV3Bksfs/oiqMFqlw==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@polkadot/util': '*' + + '@polkadot/x-bigint@10.4.2': + resolution: {integrity: sha512-awRiox+/XSReLzimAU94fPldowiwnnMUkQJe8AebYhNocAj6SJU00GNoj6j6tAho6yleOwrTJXZaWFBaQVJQNg==} + engines: {node: '>=14.0.0'} + + '@polkadot/x-global@10.4.2': + resolution: {integrity: sha512-g6GXHD/ykZvHap3M6wh19dO70Zm43l4jEhlxf5LtTo5/0/UporFCXr2YJYZqfbn9JbQwl1AU+NroYio+vtJdiA==} + engines: {node: '>=14.0.0'} + + '@polkadot/x-randomvalues@10.4.2': + resolution: {integrity: sha512-mf1Wbpe7pRZHO0V3V89isPLqZOy5XGX2bCqsfUWHgb1NvV1MMx5TjVjdaYyNlGTiOkAmJKlOHshcfPU2sYWpNg==} + engines: {node: '>=14.0.0'} + + '@polkadot/x-textdecoder@10.4.2': + resolution: {integrity: sha512-d3ADduOKUTU+cliz839+KCFmi23pxTlabH7qh7Vs1GZQvXOELWdqFOqakdiAjtMn68n1KVF4O14Y+OUm7gp/zA==} + engines: {node: '>=14.0.0'} + + '@polkadot/x-textencoder@10.4.2': + resolution: {integrity: sha512-mxcQuA1exnyv74Kasl5vxBq01QwckG088lYjc3KwmND6+pPrW2OWagbxFX5VFoDLDAE+UJtnUHsjdWyOTDhpQA==} + engines: {node: '>=14.0.0'} + + '@protobuf-ts/grpcweb-transport@2.11.1': + resolution: {integrity: sha512-1W4utDdvOB+RHMFQ0soL4JdnxjXV+ddeGIUg08DvZrA8Ms6k5NN6GBFU2oHZdTOcJVpPrDJ02RJlqtaoCMNBtw==} + + '@protobuf-ts/runtime-rpc@2.11.1': + resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==} + + '@protobuf-ts/runtime@2.11.1': + resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.4': + resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} + + '@protobufjs/eventemitter@1.1.0': + resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} + + '@protobufjs/fetch@1.1.0': + resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/inquire@1.1.0': + resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.0': + resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + + '@scure/base@1.1.1': + resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} + + '@scure/base@1.2.6': + resolution: {integrity: sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==} + + '@scure/bip32@1.1.3': + resolution: {integrity: sha512-dSH3+LCWONlSNQuF34xZrG6Xas7tp2jSSqHb/pMfXWM0vKE4JZOtK3uJfoWouUVW5IGlls75HkXmYLldZ8ySgQ==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip32@1.7.0': + resolution: {integrity: sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==} + + '@scure/bip39@1.1.0': + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@scure/bip39@1.6.0': + resolution: {integrity: sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==} + + '@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-core@2.3.0': + resolution: {integrity: sha512-oG+VZzN6YhBHIoSKgS5ESM9VIGzhWjEHEGNPSibiDTxFhsFWxNaz8LbMDPjBUE69r9wmdGLkrQ+wVPbnJcZPvw==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@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-numbers@2.3.0': + resolution: {integrity: sha512-jFvvwKJKffvG7Iz9dmN51OGB7JBcy2CJ6Xf3NqD/VP90xak66m/Lg48T01u5IQ/hc15mChVHiBm+HHuOFDUrQg==} + engines: {node: '>=20.18.0'} + peerDependencies: + typescript: '>=5.3.3' + + '@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/errors@2.3.0': + resolution: {integrity: sha512-66RI9MAbwYV0UtP7kGcTBVLxJgUxoZGm8Fbc0ah+lGiAw17Gugco6+9GrJCV83VyF2mDWyYnYM9qdI3yjgpnaQ==} + engines: {node: '>=20.18.0'} + hasBin: true + peerDependencies: + typescript: '>=5.3.3' + + '@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.14': + resolution: {integrity: sha512-u09zr96UBpX4U685MnvQsNzlvw9TiY005hk1vJmJr7gMJldoPG1eYU5/wNEyOA5lkMLiR/gOi9SFD4MefOYEsA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.95.5 + + '@solana/web3.js@1.98.2': + resolution: {integrity: sha512-BqVwEG+TaG2yCkBMbD3C4hdpustR4FpuUFRPUmqRZYYlPI9Hg4XMWxHWOWRzHE9Lkc9NDjzXFX7lDXSgzC7R1A==} + + '@stablelib/aead@1.0.1': + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + '@stablelib/binary@1.0.1': + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + + '@stablelib/blake2b@1.0.1': + resolution: {integrity: sha512-B3KyKoBAjkIFeH7romcF96i+pVFYk7K2SBQ1pZvaxV+epSBXJ+n0C66esUhyz6FF+5FbdQVm77C5fzGFcEZpKA==} + + '@stablelib/bytes@1.0.1': + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + '@stablelib/chacha20poly1305@1.0.1': + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + + '@stablelib/chacha@1.0.1': + resolution: {integrity: sha512-Pmlrswzr0pBzDofdFuVe1q7KdsHKhhU24e8gkEwnTGOmlC7PADzLVxGdn2PoNVBBabdg0l/IfLKg6sHAbTQugg==} + + '@stablelib/constant-time@1.0.1': + resolution: {integrity: sha512-tNOs3uD0vSJcK6z1fvef4Y+buN7DXhzHDPqRLSXUel1UfqMB1PWNsnnAezrKfEwTLpN0cGH2p9NNjs6IqeD0eg==} + + '@stablelib/ed25519@1.0.3': + resolution: {integrity: sha512-puIMWaX9QlRsbhxfDc5i+mNPMY+0TmQEskunY1rZEBPi1acBCVQAhnsk/1Hk50DGPtVsZtAWQg4NHGlVaO9Hqg==} + + '@stablelib/hash@1.0.1': + resolution: {integrity: sha512-eTPJc/stDkdtOcrNMZ6mcMK1e6yBbqRBaNW55XA1jU8w/7QdnCF0CmMmOD1m7VSkBR44PWrMHU2l6r8YEQHMgg==} + + '@stablelib/hkdf@1.0.1': + resolution: {integrity: sha512-SBEHYE16ZXlHuaW5RcGk533YlBj4grMeg5TooN80W3NpcHRtLZLLXvKyX0qcRFxf+BGDobJLnwkvgEwHIDBR6g==} + + '@stablelib/hmac@1.0.1': + resolution: {integrity: sha512-V2APD9NSnhVpV/QMYgCVMIYKiYG6LSqw1S65wxVoirhU/51ACio6D4yDVSwMzuTJXWZoVHbDdINioBwKy5kVmA==} + + '@stablelib/int@1.0.1': + resolution: {integrity: sha512-byr69X/sDtDiIjIV6m4roLVWnNNlRGzsvxw+agj8CIEazqWGOQp2dTYgQhtyVXV9wpO6WyXRQUzLV/JRNumT2w==} + + '@stablelib/keyagreement@1.0.1': + resolution: {integrity: sha512-VKL6xBwgJnI6l1jKrBAfn265cspaWBPAPEc62VBQrWHLqVgNRE09gQ/AnOEyKUWrrqfD+xSQ3u42gJjLDdMDQg==} + + '@stablelib/nacl@1.0.4': + resolution: {integrity: sha512-PJ2U/MrkXSKUM8C4qFs87WeCNxri7KQwR8Cdwm9q2sweGuAtTvOJGuW0F3N+zn+ySLPJA98SYWSSpogMJ1gCmw==} + + '@stablelib/pbkdf2@1.0.1': + resolution: {integrity: sha512-d5jwK6jW1DkMyzqY8D1Io+fRXcsUVr95lk5LKX9ghaUdAITTc1ZL0bff+R0IrwSixbHluxhnivG7vDw59AZ/Nw==} + + '@stablelib/poly1305@1.0.1': + resolution: {integrity: sha512-1HlG3oTSuQDOhSnLwJRKeTRSAdFNVB/1djy2ZbS35rBSJ/PFqx9cf9qatinWghC2UbfOYD8AcrtbUQl8WoxabA==} + + '@stablelib/random@1.0.2': + resolution: {integrity: sha512-rIsE83Xpb7clHPVRlBj8qNe5L8ISQOzjghYQm/dZ7VaM2KHYwMW5adjQjrzTZCchFnNCNhkwtnOBa9HTMJCI8w==} + + '@stablelib/salsa20@1.0.2': + resolution: {integrity: sha512-nfjKzw0KTKrrKBasEP+j7UP4I8Xudom8lVZIBCp0kQNARXq72IlSic0oabg2FC1NU68L4RdHrNJDd8bFwrphYA==} + + '@stablelib/sha256@1.0.1': + resolution: {integrity: sha512-GIIH3e6KH+91FqGV42Kcj71Uefd/QEe7Dy42sBTeqppXV95ggCcxLTk39bEr+lZfJmp+ghsR07J++ORkRELsBQ==} + + '@stablelib/sha512@1.0.1': + resolution: {integrity: sha512-13gl/iawHV9zvDKciLo1fQ8Bgn2Pvf7OV6amaRVKiq3pjQ3UmEpXxWiAfV8tYjUpeZroBxtyrwtdooQT/i3hzw==} + + '@stablelib/wipe@1.0.1': + resolution: {integrity: sha512-WfqfX/eXGiAd3RJe4VU2snh/ZPwtSjLG4ynQ/vYzvghTh7dHFcI1wl+nrkWG6lGhukOxOsUHfv8dUXr58D0ayg==} + + '@stablelib/x25519@1.0.3': + resolution: {integrity: sha512-KnTbKmUhPhHavzobclVJQG5kuivH+qDLpe84iRqX3CLrKp881cF160JvXJ+hjn1aMyCwYOKeIZefIH/P5cJoRw==} + + '@stablelib/xsalsa20@1.0.2': + resolution: {integrity: sha512-7XdBGbcNgBShmuhDXv1G1WPVCkjZdkb1oPMzSidO7Fve0MHntH6TjFkj5bfLI+aRE+61weO076vYpP/jmaAYog==} + + '@stacks/auth@7.2.0': + resolution: {integrity: sha512-u+Ky4CMQWFTPI6Au3VFcW74nSIA4Zb8YjsbOkcv0q9E6LiALyK4gozpKTxKvfW3/z1ER3z1Ky9uH/s4zY59rvg==} + + '@stacks/common@7.0.2': + resolution: {integrity: sha512-+RSecHdkxOtswmE4tDDoZlYEuULpnTQVeDIG5eZ32opK8cFxf4EugAcK9CsIsHx/Se1yTEaQ21WGATmJGK84lQ==} + + '@stacks/encryption@7.2.0': + resolution: {integrity: sha512-XDgb5GuR2kURC0YJWo70xnWPKeizBg/qpGPDApBVLFgaOqFL4FdFmvxHXU5lVbFR3W+mtdxPHedWtQpxxOBlMQ==} + + '@stacks/network@7.2.0': + resolution: {integrity: sha512-AkLougCF2RLbK97TtISZxAhF3cE757XMXWOGKvEFWNauiQ5/bYyI9W5jZypG3yI/AyYIo04NKoFWWTnpJcn1iA==} + + '@stacks/profile@7.2.0': + resolution: {integrity: sha512-pzPgn/NpmjA7TdeA5U9OjXLwBNqGPrjWhsMy/ZC3iUdnIUvthgWwlPpydgQOTJaRqaDMdY24hFgT+og6QbyQQA==} + + '@stacks/storage@7.2.0': + resolution: {integrity: sha512-aBfHhfhIom/xMseJSArH0xWqOAhN7waY255s4PfxmRdCsE6GKeXxIdZvgNYcHXrSiIPH3spk00UDA4+8xiRAQA==} + + '@stacks/transactions@7.2.0': + resolution: {integrity: sha512-U7wjlxM9Q+408ihRsv5mlKRslXGt2WCShKi1lduiqf5+dBSRGdVi8ttCIEckSsg3ulCVF3EHTQF3LZgw4kwKlQ==} + + '@stacks/wallet-sdk@7.2.0': + resolution: {integrity: sha512-w4UmIaulB03ki0eosWA2ju4vXtF1N+n+nX+/GuV8ZW3rbZ7xeRCv16IzZZL6TspMcaUKyZKTVB2uximqBNbqPQ==} + + '@substrate/ss58-registry@1.51.0': + resolution: {integrity: sha512-TWDurLiPxndFgKjVavCniytBIw+t4ViOi7TYp9h/D0NMmkEc9klFTo+827eyEJ0lELpqO207Ey7uGxUa+BS1jQ==} + + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + + '@taquito/axios-fetch-adapter@https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6': + resolution: {tarball: https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6} + version: 0.3.1 + peerDependencies: + axios: '>=0.26.0' + + '@taquito/core@23.0.3': + resolution: {integrity: sha512-ivCR0kxMzJ53spPw7xm/wMMYI5rP7ADurq+us6R2Z8t5jwkCtXWBAqpvwMrJeaoNjjJvTaOXf0khLg8WsdDKgg==} + engines: {node: '>=18'} + + '@taquito/http-utils@15.1.0': + resolution: {integrity: sha512-Uug5hN0XvMlFFN+rxSMW+Y9Z8pw5uqHRDZC83eLOBSijbpMo+ScG/2nKkC8MUUrqLaLeHru1HD4kT5DHc1fI+A==} + engines: {node: '>=6.0.0'} + + '@taquito/local-forging@15.1.0': + resolution: {integrity: sha512-ib/2RqtxQQC9SjyTB9T5OSc5yUx9GUSdMOA4dmtiiFcN2+AG+aw7ixn6Hjt9Td8ZIOPt9H6HkyTypKrX7+cENw==} + engines: {node: '>=6.0.0'} + + '@taquito/local-forging@23.0.3': + resolution: {integrity: sha512-xT5h+rutSJSI0QfxZ1M1FiDXcQuFDqSwRDhdYx28twYGFAhsGvGfknXmtN3F5SiO9hkGXL7dZR5w8NpIdk8yEw==} + engines: {node: '>=18'} + + '@taquito/michel-codec@15.1.0': + resolution: {integrity: sha512-wKucIhs7vhaq5H+YSF2f6Qu9+g+QiEL6MPc5ROpxBrXJTeKSwBOEIpfqcKfkfMuecJyHZJW3glNfkpAVTCgkxg==} + engines: {node: '>=6.0.0'} + + '@taquito/michelson-encoder@15.1.0': + resolution: {integrity: sha512-uQMEu3g+8WcYb5ZV6+XGvoWJhKoNxU0F2RqodLJB7UxQ1rI/OMa+VlxSLMt4niIxpKXqnO9j4tD7Y4mPC3ufaA==} + engines: {node: '>=6.0.0'} + + '@taquito/rpc@15.1.0': + resolution: {integrity: sha512-OeQA8QwT+s6IUmLaF5yeWruPYzWi/DVCA3kl+AaQ8IFfCMzmAW/MszbbNkJSzHpY2p4jPBwdRNxg3qeJdL482A==} + engines: {node: '>=6.0.0'} + + '@taquito/signer@15.1.0': + resolution: {integrity: sha512-VP7hS8cYQ6cMerVkbD5X3AqpoIXvh72xNuv3++R4reEjdl+E3VWs1CZZGnJj6yzlFV21SrdGKSILx8Rl3Ql4DA==} + engines: {node: '>=6.0.0'} + + '@taquito/taquito@15.1.0': + resolution: {integrity: sha512-2AXWeNoXsmMOSkJVXtXjOlJkS+hKXITaSybMA6nJuS1YWY4e7iAr678Y6UgVEHRJxeGohX4R4Ww12Ymr3Sfedg==} + engines: {node: '>=6.0.0'} + + '@taquito/utils@15.1.0': + resolution: {integrity: sha512-lqVThoFMmOKPg9jyREr4A63cpeckf5esCwOyOAW3sm+yCxD9s5khnBPtH8s52cRVnChFdwk/eqmADka9gat5hw==} + engines: {node: '>=6.0.0'} + + '@taquito/utils@23.0.3': + resolution: {integrity: sha512-7ef9V8d1z++wCODo03LlvGq6D3P8Gr0nc93nbzDNaKWS+wJfS7lNz2tlYSsVkvBmVOt9KVdFcVLZ1/heySfuOw==} + engines: {node: '>=18'} + + '@ton/core@0.61.0': + resolution: {integrity: sha512-0qyVfP2dDue2bq80ydXggo2MlufcmzuFk6G94qRrZxvyQ3NSe4UeBTeRf1gQmN7tywgTsX2gS61e4yvJrlUu4Q==} + peerDependencies: + '@ton/crypto': '>=3.2.0' + + '@ton/crypto-primitives@2.1.0': + resolution: {integrity: sha512-PQesoyPgqyI6vzYtCXw4/ZzevePc4VGcJtFwf08v10OevVJHVfW238KBdpj1kEDQkxWLeuNHEpTECNFKnP6tow==} + + '@ton/crypto@3.3.0': + resolution: {integrity: sha512-/A6CYGgA/H36OZ9BbTaGerKtzWp50rg67ZCH2oIjV1NcrBaCK9Z343M+CxedvM7Haf3f/Ee9EhxyeTp0GKMUpA==} + + '@ton/ton@15.4.0': + resolution: {integrity: sha512-f19y2Rez88KZK+lv3CT3ghXi07LcToJtJhlgRSfK+3GzjdIcoW/wbmXG1ffi6fkc8W2LO5z6Q3gZaIEvNGnz6w==} + peerDependencies: + '@ton/core': '>=0.62.0 <1.0.0' + '@ton/crypto': '>=3.2.0' + + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + + '@types/bn.js@5.2.0': + resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} + + '@types/bs58check@2.1.2': + resolution: {integrity: sha512-xpXaQlOIY1KoXlA/ytHGHpEIU87PJt+g9SH7nC6HdCgaBwT2IEZIwBMHbjuX6BpnfbiUMlmwqurdLDwXpcdmSA==} + + '@types/connect@3.4.38': + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + + '@types/isomorphic-fetch@0.0.39': + resolution: {integrity: sha512-I0gou/ZdA1vMG7t7gMzL7VYu2xAKU78rW9U1l10MI0nn77pEHq3tQqHQ8hMmXdMpBlkxZOorjI4sO594Z3kKJw==} + + '@types/node@11.11.6': + resolution: {integrity: sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==} + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@22.7.5': + resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + + '@types/node@24.10.1': + resolution: {integrity: sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/secp256k1@4.0.7': + resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==} + + '@types/uuid@8.3.4': + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + '@types/ws@7.4.7': + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@walletconnect/core@2.8.6': + resolution: {integrity: sha512-rnSqm1KJLcww/v6+UH8JeibQkJ3EKgyUDPfEK0stSEkrIUIcXaFlq3Et8S+vgV8bPhI0MVUhAhFL5OJZ3t2ryg==} + + '@walletconnect/encoding@1.0.2': + resolution: {integrity: sha512-CrwSBrjqJ7rpGQcTL3kU+Ief+Bcuu9PH6JLOb+wM6NITX1GTxR/MfNwnQfhLKK6xpRAyj2/nM04OOH6wS8Imag==} + + '@walletconnect/environment@1.0.1': + resolution: {integrity: sha512-T426LLZtHj8e8rYnKfzsw1aG6+M0BT1ZxayMdv/p8yM0MU+eJDISqNY3/bccxRr4LrF9csq02Rhqt08Ibl0VRg==} + + '@walletconnect/events@1.0.1': + resolution: {integrity: sha512-NPTqaoi0oPBVNuLv7qPaJazmGHs5JGyO8eEAk5VGKmJzDR7AHzD4k6ilox5kxk1iwiOnFopBOOMLs86Oa76HpQ==} + + '@walletconnect/heartbeat@1.2.1': + resolution: {integrity: sha512-yVzws616xsDLJxuG/28FqtZ5rzrTA4gUjdEMTbWB5Y8V1XHRmqq4efAxCw5ie7WjbXFSUyBHaWlMR+2/CpQC5Q==} + + '@walletconnect/heartbeat@1.2.2': + resolution: {integrity: sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==} + + '@walletconnect/jsonrpc-provider@1.0.13': + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + + '@walletconnect/jsonrpc-types@1.0.3': + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + + '@walletconnect/jsonrpc-types@1.0.4': + resolution: {integrity: sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==} + + '@walletconnect/jsonrpc-utils@1.0.8': + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + + '@walletconnect/jsonrpc-ws-connection@1.0.16': + resolution: {integrity: sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==} + + '@walletconnect/keyvaluestorage@1.1.1': + resolution: {integrity: sha512-V7ZQq2+mSxAq7MrRqDxanTzu2RcElfK1PfNYiaVnJgJ7Q7G7hTVwF8voIBx92qsRyGHZihrwNPHuZd1aKkd0rA==} + peerDependencies: + '@react-native-async-storage/async-storage': 1.x + peerDependenciesMeta: + '@react-native-async-storage/async-storage': + optional: true + + '@walletconnect/logger@2.1.3': + resolution: {integrity: sha512-wRsD0eDQSajj8YMM/jpxoH1yeSLyS7FPkh0VKCQ1BWrERTy1Z7/DmOE8FYm/gmd7Cg6BNXVWiymhGq6wnmlq8w==} + + '@walletconnect/logger@3.0.0': + resolution: {integrity: sha512-DDktPBFdmt5d7U3sbp4e3fQHNS1b6amsR8FmtOnt6L2SnV7VfcZr8VmAGL12zetAR+4fndegbREmX0P8Mw6eDg==} + + '@walletconnect/relay-api@1.0.11': + resolution: {integrity: sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==} + + '@walletconnect/relay-auth@1.1.0': + resolution: {integrity: sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==} + + '@walletconnect/safe-json@1.0.2': + resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} + + '@walletconnect/sign-client@2.8.6': + resolution: {integrity: sha512-rOFTKTHP7oJfXgYHX7+SdB8VbcsEE3ZFG/bMdmZboWaBim1mrY3vUyDdKrNr0VgI3AwBiEQezQDfKxBX0pMSQQ==} + deprecated: 'Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases' + + '@walletconnect/time@1.0.2': + resolution: {integrity: sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g==} + + '@walletconnect/types@2.22.4-canary-auth-3': + resolution: {integrity: sha512-mWLz6ur82bv4ocnqVtRiJaP4Ef10fHZxjFucxxZ3VXtYWyZeJQrMyQwREy2EC62c0CFtNvkAs0A/VBRmAMjcoA==} + + '@walletconnect/types@2.8.6': + resolution: {integrity: sha512-Z/PFa3W1XdxeTcCtdR6lUsFgZfU/69wWJBPyclPwn7cu1+eriuCr6XZXQpJjib3flU+HnwHiXeUuqZaheehPxw==} + + '@walletconnect/utils@2.22.4-canary-auth-3': + resolution: {integrity: sha512-MyBp5mBT6tKBDz1Ge90E9MFzHxt7c3alCQPVVajep/vw61ZSxlHof4ZZA4XtyYHMiKWtV9S+G98RlCyEps1GOw==} + + '@walletconnect/utils@2.8.6': + resolution: {integrity: sha512-wcy6e5+COYo7tfNnW8YqidnATdJDIW6vDiWWE7A1F78Sl/VflkaevB9cIgyn8eLdxC1SxXgGoeC2oLP90nnHJg==} + + '@walletconnect/window-getters@1.0.1': + resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} + + '@walletconnect/window-metadata@1.0.1': + resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} + + abitype@1.1.1: + resolution: {integrity: sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3.22.0 || ^4.0.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + + agentkeepalive@4.6.0: + resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} + engines: {node: '>= 8.0.0'} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + async@2.6.4: + resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@0.26.1: + resolution: {integrity: sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==} + + axios@1.12.2: + resolution: {integrity: sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw==} + + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + + backslash@0.2.2: + resolution: {integrity: sha512-PKRYPE2LLTtNUYz1dszquxKSBs6XyLyJRHgFpY5rlq7y3DscDx239k5Gm+zenoY47OU4CApan1o0k2R8ptZC1Q==} + + base-x@3.0.11: + resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} + + base-x@4.0.1: + resolution: {integrity: sha512-uAZ8x6r6S3aUM9rbHGVOIsR15U/ZSc82b3ymnCPsT45Gk1DDvhDPdIgB5MrhirZWt+5K0EEPQH985kNqZgNPFw==} + + base-x@5.0.1: + resolution: {integrity: sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + + bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + + bignumber.js@9.0.1: + resolution: {integrity: sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==} + + bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + bip174@2.1.1: + resolution: {integrity: sha512-mdFV5+/v0XyNYXjBS6CQPLo9ekCx4gtKZFnJm5PMto7Fs9hTTDpkkzOB7/FtluRI6JbUUAu+snTYfJRgHLZbZQ==} + engines: {node: '>=8.0.0'} + + bip32@4.0.0: + resolution: {integrity: sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==} + engines: {node: '>=6.0.0'} + + bip39-light@1.0.7: + resolution: {integrity: sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q==} + + bip39@3.0.2: + resolution: {integrity: sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==} + + bip39@3.1.0: + resolution: {integrity: sha512-c9kiwdk45Do5GL0vJMe7tS95VjCii65mYAH7DfWl3uW8AVzXKQVUm64i3hzVybBDMp9r7j9iNxR85+ul8MdN/A==} + + bip66@1.1.5: + resolution: {integrity: sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==} + + bitcoinjs-lib@6.1.7: + resolution: {integrity: sha512-tlf/r2DGMbF7ky1MgUqXHzypYHakkEnm0SZP23CJKIqNY/5uNAnMbFhMJdhjrL/7anfb/U8+AlpdjPWjPnAalg==} + engines: {node: '>=8.0.0'} + + bitcoinjs-message@2.2.0: + resolution: {integrity: sha512-103Wy3xg8Y9o+pdhGP4M3/mtQQuUWs6sPuOp1mYphSUoSMHjHTlkj32K4zxU8qMH0Ckv23emfkGlFWtoWZ7YFA==} + engines: {node: '>=0.10'} + + blake2b-wasm@1.1.7: + resolution: {integrity: sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==} + + blake2b@2.1.3: + resolution: {integrity: sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.12.2: + resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} + + bn.js@5.2.0: + resolution: {integrity: sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==} + + bn.js@5.2.2: + resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + + borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + + borsh@1.0.0: + resolution: {integrity: sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ==} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + + bs58@6.0.0: + resolution: {integrity: sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + bs58check@3.0.1: + resolution: {integrity: sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==} + + buffer-equals@1.0.4: + resolution: {integrity: sha512-99MsCq0j5+RhubVEtKQgKaD6EM+UP3xJgIvQqwJ3SOLDUekzxMX1ylXBng+Wa2sh7mGT0W6RUly8ojjr1Tt6nA==} + engines: {node: '>=0.10.0'} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bufferutil@4.0.9: + resolution: {integrity: sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw==} + engines: {node: '>=6.14.2'} + + c32check@2.0.0: + resolution: {integrity: sha512-rpwfAcS/CMqo0oCqDf3r9eeLgScRE3l/xHDCXhM3UyrfvIn7PrLq63uHh7yYbv8NzaZn5MVsVhIRpQ+5GZ5HyA==} + engines: {node: '>=8'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + capability@0.2.5: + resolution: {integrity: sha512-rsJZYVCgXd08sPqwmaIqjAd5SUTfonV0z/gDJ8D6cN8wQphky1kkAYEqQ+hmDxTw7UihvBfjUVUSY+DBEe44jg==} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@12.1.0: + resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} + engines: {node: '>=18'} + + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + cookie-es@1.2.2: + resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmjs-types@0.9.0: + resolution: {integrity: sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==} + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + cross-fetch@3.1.8: + resolution: {integrity: sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==} + + cross-fetch@3.2.0: + resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} + + crossws@0.3.5: + resolution: {integrity: sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==} + + dataloader@2.2.3: + resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decode-uri-component@0.2.2: + resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} + engines: {node: '>=0.10'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + + delay@5.0.0: + resolution: {integrity: sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==} + engines: {node: '>=10'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + + detect-browser@5.3.0: + resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} + + drbg.js@1.0.1: + resolution: {integrity: sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==} + engines: {node: '>=0.10'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexify@4.1.3: + resolution: {integrity: sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==} + + ecpair@2.1.0: + resolution: {integrity: sha512-cL/mh3MtJutFOvFc27GPZE2pWL3a3k4YvzUWEOvilnfZVlH3Jwgx/7d6tlD7/75tNk8TG2m+7Kgtz0SI1tWcqw==} + engines: {node: '>=8.0.0'} + + ed25519-hd-key@1.1.2: + resolution: {integrity: sha512-/0y9y6N7vM6Kj5ASr9J9wcMVDTtygxSOvYX+PJiMD7VcxCx2G03V5bLRl8Dug9EgkLFsLhGqBtQWQRcElEeWTA==} + + ed25519-hd-key@1.3.0: + resolution: {integrity: sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg==} + + ed2curve@0.3.0: + resolution: {integrity: sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.6.1: + resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==} + + encoding@0.1.13: + resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + error-polyfill@0.1.3: + resolution: {integrity: sha512-XHJk60ufE+TG/ydwp4lilOog549iiQF2OAPhkk9DdiYWMrltz5yhDz/xnKuenNwP7gy3dsibssO5QpVhkrSzzg==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es6-promise@4.2.8: + resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} + + es6-promisify@5.0.0: + resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} + + eth-sig-util@3.0.1: + resolution: {integrity: sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==} + deprecated: Deprecated in favor of '@metamask/eth-sig-util' + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + deprecated: This library has been deprecated and usage is discouraged. + + ethereumjs-util@5.2.1: + resolution: {integrity: sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==} + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethers@6.13.5: + resolution: {integrity: sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==} + engines: {node: '>=14.0.0'} + + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + + fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + + fast-text-encoding@1.0.6: + resolution: {integrity: sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w==} + + fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + filter-obj@1.1.0: + resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==} + engines: {node: '>=0.10.0'} + + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + form-data@4.0.4: + resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + engines: {node: '>= 6'} + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + google-protobuf@3.21.4: + resolution: {integrity: sha512-MnG7N936zcKTco4Jd2PX2U96Kf9PxygAPKBug+74LHzmHXmceN16MmRcdgZv+DGef/S9YvQAfRsNCn4cjf9yyQ==} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + gql.tada@1.9.0: + resolution: {integrity: sha512-1LMiA46dRs5oF7Qev6vMU32gmiNvM3+3nHoQZA9K9j2xQzH8xOAWnnJrLSbZOFHTSdFxqn86TL6beo1/7ja/aA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 + + graphql@16.12.0: + resolution: {integrity: sha512-DKKrynuQRne0PNpEbzuEdHlYOMksHSUI8Zc9Unei5gTsMNA2/vMpoMz/yKba50pejK56qj98qM0SjYxAKi13gQ==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + + h3@1.15.4: + resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + + idb-keyval@6.2.2: + resolution: {integrity: sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + iron-webcrypto@1.2.1: + resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isomorphic-ws@4.0.1: + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + + jayson@4.2.0: + resolution: {integrity: sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg==} + engines: {node: '>=8'} + hasBin: true + + js-sha256@0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + json-duplicate-key-handle@1.0.0: + resolution: {integrity: sha512-OLIxL+UpfwUsqcLX3i6Z51ChTou/Vje+6bSeGUSubj96dF/SfjObDprLy++ZXYH07KITuEzsXS7PX7e/BGf4jw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + jsontokens@4.0.1: + resolution: {integrity: sha512-+MO415LEN6M+3FGsRz4wU20g7N2JA+2j9d9+pGaNJHviG4L8N0qzavGyENw6fJqsq9CcrHOIL6iWX5yeTZ86+Q==} + + jssha@3.2.0: + resolution: {integrity: sha512-QuruyBENDWdN4tZwJbQq7/eAK85FqrI4oDbXjy5IBhYD+2pTJyBUWZe8ctWaCkrV0gy6AaelgOZZBMeswEa/6Q==} + + keccak@3.0.1: + resolution: {integrity: sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==} + engines: {node: '>=10.0.0'} + + keccak@3.0.2: + resolution: {integrity: sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==} + engines: {node: '>=10.0.0'} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keyvaluestorage-interface@1.0.0: + resolution: {integrity: sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g==} + + libsodium-sumo@0.7.15: + resolution: {integrity: sha512-5tPmqPmq8T8Nikpm1Nqj0hBHvsLFCXvdhBFV7SGOitQPZAA6jso8XoL0r4L7vmfKXr486fiQInvErHtEvizFMw==} + + libsodium-wrappers-sumo@0.7.15: + resolution: {integrity: sha512-aSWY8wKDZh5TC7rMvEdTHoyppVq/1dTSAeAR7H6pzd6QRT3vQWcT5pGwCotLcpPEOLXX6VvqihSPkpEhYAjANA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + multiformats@9.9.0: + resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} + + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + + nan@2.23.1: + resolution: {integrity: sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==} + + nanoassert@1.1.0: + resolution: {integrity: sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==} + + near-api-js@0.45.1: + resolution: {integrity: sha512-QyPO/vjvMFlcMO1DCpsqzmnSqPIyHsjK1Qi4B5ZR1cJCIWMkqugDF/TDf8FVQ85pmlcYeYwfiTqKanKz+3IG0A==} + + near-hd-key@1.2.1: + resolution: {integrity: sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg==} + + near-seed-phrase@0.2.1: + resolution: {integrity: sha512-feMuums+kVL3LSuPcP4ld07xHCb2mu6z48SGfP3W+8tl1Qm5xIcjiQzY2IDPBvFgajRDxWSb8GzsRHoInazByw==} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + + node-fetch@2.6.13: + resolution: {integrity: sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + node-mock-http@1.0.3: + resolution: {integrity: sha512-jN8dK25fsfnMrVsEhluUTPkBFY+6ybu7jSB1n+ri/vOGjJxU8J9CZhpSGkHXSkFjtUhbmoncG/YG9ta5Ludqog==} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + o3@1.0.3: + resolution: {integrity: sha512-f+4n+vC6s4ysy7YO7O2gslWZBUu8Qj2i2OUJOvjRxQva7jVjYjB29jrr9NCjmxZQR0gzrOcv1RnqoYOeMs5VRQ==} + + ofetch@1.5.1: + resolution: {integrity: sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA==} + + on-exit-leak-free@0.2.0: + resolution: {integrity: sha512-dqaz3u44QbRXQooZLTUKU41ZrzYrcvLISVgbrzbyCMxpmSLJvZ3ZamIJIZ29P6OhZIkNIQKosdeM6t1LYbA9hg==} + + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + ox@0.9.3: + resolution: {integrity: sha512-KzyJP+fPV4uhuuqrTZyok4DC7vFzi7HLUFiUNEmpbyh59htKWkOC98IONC1zgXJPbHAhQgqs6B0Z6StCGhmQvg==} + peerDependencies: + typescript: '>=5.4.0' + peerDependenciesMeta: + typescript: + optional: true + + pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pino-abstract-transport@0.5.0: + resolution: {integrity: sha512-+KAgmVeqXYbTtU2FScx1XS3kNyfZ5TrXY07V96QnUSFqo2gAqlvmaxH67Lj7SWazqsMabf+58ctdTcBgnOLUOQ==} + + pino-abstract-transport@2.0.0: + resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} + + pino-std-serializers@4.0.0: + resolution: {integrity: sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==} + + pino-std-serializers@7.0.0: + resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} + + pino@10.0.0: + resolution: {integrity: sha512-eI9pKwWEix40kfvSzqEP6ldqOoBIN7dwD/o91TY5z8vQI12sAffpR/pOqAD1IVVwIVHDpHjkq0joBPdJD0rafA==} + hasBin: true + + pino@7.11.0: + resolution: {integrity: sha512-dMACeu63HtRLmCG8VKdy4cShCPKaYDR4youZqoSWLxl5Gu99HUw8bw75thbPv9Nip+H+QYX8o3ZJbTdVZZ2TVg==} + hasBin: true + + poseidon-lite@0.2.1: + resolution: {integrity: sha512-xIr+G6HeYfOhCuswdqcFpSX47SPhm0EpisWJ6h7fHlWwaVIvH3dLnejpatrtw6Xc6HaLrpq05y7VRfvDmDGIog==} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process-warning@1.0.0: + resolution: {integrity: sha512-du4wfLyj4yCZq1VupnVSZmRsPJsNuxoDQFdCFHLaYiEbFBD7QE0a+I4D7hOxrVnh78QE/YipFAj9lXHiXocV+Q==} + + process-warning@5.0.0: + resolution: {integrity: sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==} + + protobufjs@7.2.4: + resolution: {integrity: sha512-AT+RJgD2sH8phPmCf7OUZR8xGdcJRga4+1cOaXJ64hvcSkVhNcRHOwIxUatPH15+nj59WAGTDv3LSGZPEQbJaQ==} + engines: {node: '>=12.0.0'} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + + radix3@1.1.2: + resolution: {integrity: sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + + readonly-date@1.0.0: + resolution: {integrity: sha512-tMKIV7hlk0h4mO3JTmmVuIlJVXjKk3Sep9Bf5OH0O+758ruuVkUy2J9SttDLm91IEX/WHlXPSpxMGjPj4beMIQ==} + + real-require@0.1.0: + resolution: {integrity: sha512-r/H9MzAWtrv8aSVjPCMFpDMl5q66GqtmmRkRjpHTsp4zBAa+snZyiQNlMONiUmEJcsnaw0wCauJ2GWODr/aFkg==} + engines: {node: '>= 12.13.0'} + + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} + + ripemd160-min@0.0.6: + resolution: {integrity: sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==} + engines: {node: '>=8'} + + ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + rpc-websockets@9.3.1: + resolution: {integrity: sha512-bY6a+i/lEtBJ/mUxwsCTgevoV1P0foXTVA7UoThzaIWbM+3NDqorf8NBWs5DmqKTFeA1IoNzgvkWjFCPgnzUiQ==} + + rxjs@6.6.7: + resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==} + engines: {npm: '>=2.0.0'} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + schema-inspector@2.1.0: + resolution: {integrity: sha512-3bmQVhbA01/EW8cZin4vIpqlpNU2SIy4BhKCfCgogJ3T/L76dLx3QAE+++4o+dNT33sa+SN9vOJL7iHiHFjiNg==} + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + scryptsy@2.1.0: + resolution: {integrity: sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==} + + secp256k1@3.8.1: + resolution: {integrity: sha512-tArjQw2P0RTdY7QmkNehgp6TVvQXq6ulIhxv8gaH6YubKG/wxxAoNKcbuXjDhybbc+b2Ihc7e0xxiGN744UIiQ==} + engines: {node: '>=4.0.0'} + + secp256k1@4.0.4: + resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} + engines: {node: '>=18.0.0'} + + semver@7.7.1: + resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} + hasBin: true + + slow-redact@0.3.2: + resolution: {integrity: sha512-MseHyi2+E/hBRqdOi5COy6wZ7j7DxXRz9NkseavNYSvvWC06D8a5cidVZX3tcG5eCW3NIyVU4zT63hw0Q486jw==} + + solana-wallet@1.0.2: + resolution: {integrity: sha512-oZnLJvwBFnQ0Hf0vTuAUFizq59AhxDfoMpdDUuqo02seNsV7AbYl3QGJZBJ1uCr36cRJnXFr2NqI3RM2IDq62Q==} + + sonic-boom@2.8.0: + resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} + + sonic-boom@4.2.0: + resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} + + split-on-first@1.1.0: + resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} + engines: {node: '>=6'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + statuses@1.5.0: + resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==} + engines: {node: '>= 0.6'} + + stream-chain@2.2.5: + resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==} + + stream-json@1.9.1: + resolution: {integrity: sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==} + + stream-shift@1.0.3: + resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} + + strict-uri-encode@2.0.0: + resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} + engines: {node: '>=4'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + superstruct@2.0.2: + resolution: {integrity: sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==} + engines: {node: '>=14.0.0'} + + symbol.inspect@1.0.1: + resolution: {integrity: sha512-YQSL4duoHmLhsTD1Pw8RW6TZ5MaTX5rXJnqacJottr2P2LZBF/Yvrc3ku4NUpMOm8aM0KOCqM+UAkMA5HWQCzQ==} + + teslabot@1.5.0: + resolution: {integrity: sha512-e2MmELhCgrgZEGo7PQu/6bmYG36IDH+YrBI1iGm6jovXkeDIGa3pZ2WSqRjzkuw2vt1EqfkZoV5GpXgqL8QJVg==} + + text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + + thread-stream@0.15.2: + resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} + + thread-stream@3.1.0: + resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} + + tiny-secp256k1@2.2.4: + resolution: {integrity: sha512-FoDTcToPqZE454Q04hH9o2EhxWsm7pOSpicyHkgTwKhdKWdsTUuqfP5MLq3g+VjAtl2vSx6JpXGdwA2qpYkI0Q==} + engines: {node: '>=14.0.0'} + + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + tronweb@6.1.0: + resolution: {integrity: sha512-ANEr2YneA2frXTpsxDR21yk2cJLIvOdPe7dg7gu96TyqfVbS9eCrguNuN+qCUZOC/zW3n6R880bBDbEWKZiWzA==} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typedarray-to-buffer@3.1.5: + resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==} + + typedarray-to-buffer@4.0.0: + resolution: {integrity: sha512-6dOYeZfS3O9RtRD1caom0sMxgK59b27+IwoNy8RDPsmslSGOyU+mpTamlaIW7aNKi90ZQZ9DFaZL3YRoiSCULQ==} + + typeforce@1.18.0: + resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + u3@0.1.1: + resolution: {integrity: sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==} + + ufo@1.6.1: + resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + + uint8array-tools@0.0.7: + resolution: {integrity: sha512-vrrNZJiusLWoFWBqz5Y5KMCgP9W9hnjZHzZiZRT8oNAkq3d5Z5Oe76jAvVVSRh4U8GGR90N2X1dWtrhvx6L8UQ==} + engines: {node: '>=14.0.0'} + + uint8arrays@3.1.1: + resolution: {integrity: sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==} + + uncrypto@0.1.3: + resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} + + undici-types@6.19.8: + resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + unstorage@1.17.2: + resolution: {integrity: sha512-cKEsD6iBWJgOMJ6vW1ID/SYuqNf8oN4yqRk8OYqaVQ3nnkJXOT1PSpaMh2QfzLs78UN5kSNRD2c/mgjT8tX7+w==} + peerDependencies: + '@azure/app-configuration': ^1.8.0 + '@azure/cosmos': ^4.2.0 + '@azure/data-tables': ^13.3.0 + '@azure/identity': ^4.6.0 + '@azure/keyvault-secrets': ^4.9.0 + '@azure/storage-blob': ^12.26.0 + '@capacitor/preferences': ^6.0.3 || ^7.0.0 + '@deno/kv': '>=0.9.0' + '@netlify/blobs': ^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0 + '@planetscale/database': ^1.19.0 + '@upstash/redis': ^1.34.3 + '@vercel/blob': '>=0.27.1' + '@vercel/functions': ^2.2.12 || ^3.0.0 + '@vercel/kv': ^1.0.1 + aws4fetch: ^1.0.20 + db0: '>=0.2.1' + idb-keyval: ^6.2.1 + ioredis: ^5.4.2 + uploadthing: ^7.4.4 + peerDependenciesMeta: + '@azure/app-configuration': + optional: true + '@azure/cosmos': + optional: true + '@azure/data-tables': + optional: true + '@azure/identity': + optional: true + '@azure/keyvault-secrets': + optional: true + '@azure/storage-blob': + optional: true + '@capacitor/preferences': + optional: true + '@deno/kv': + optional: true + '@netlify/blobs': + optional: true + '@planetscale/database': + optional: true + '@upstash/redis': + optional: true + '@vercel/blob': + optional: true + '@vercel/functions': + optional: true + '@vercel/kv': + optional: true + aws4fetch: + optional: true + db0: + optional: true + idb-keyval: + optional: true + ioredis: + optional: true + uploadthing: + optional: true + + utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + valibot@0.36.0: + resolution: {integrity: sha512-CjF1XN4sUce8sBK9TixrDqFM7RwNkuXdJu174/AwmQUB62QbCQADg5lLe8ldBalFgtj1uKj+pKwDJiNo4Mn+eQ==} + + validator@13.15.20: + resolution: {integrity: sha512-KxPOq3V2LmfQPP4eqf3Mq/zrT0Dqp2Vmx2Bn285LwVahLc+CsxOM0crBHczm8ijlcjZ0Q5Xd6LW3z3odTPnlrw==} + engines: {node: '>= 0.10'} + + varuint-bitcoin@1.1.2: + resolution: {integrity: sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + + wif@2.0.6: + resolution: {integrity: sha512-HIanZn1zmduSF+BQhkE+YXIbEiH0xPr1012QbFEGB0xsKqJii0/SqJjyn8dFv6y36kOznMgMB+LGcbZTJ1xACQ==} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + engines: {node: '>=8.3.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + ws@8.18.0: + resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + yaml@2.1.3: + resolution: {integrity: sha512-AacA8nRULjKMX2DvWvOAdBZMOfQlypSFkjcOcu9FalllIDJ1kvlREzcdIZmidQUqqeMv7jorHjq2HlLv/+c2lg==} + engines: {node: '>= 14'} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + + zone-file@2.0.0-beta.3: + resolution: {integrity: sha512-6tE3PSRcpN5lbTTLlkLez40WkNPc9vw/u1J2j6DBiy0jcVX48nCkWrx2EC+bWHqC2SLp069Xw4AdnYn/qp/W5g==} + engines: {node: '>=10'} + +snapshots: + + '@0no-co/graphql.web@1.2.0(graphql@16.12.0)': + optionalDependencies: + graphql: 16.12.0 + + '@0no-co/graphqlsp@1.15.1(graphql@16.12.0)(typescript@5.9.3)': + dependencies: + '@gql.tada/internal': 1.0.8(graphql@16.12.0)(typescript@5.9.3) + graphql: 16.12.0 + typescript: 5.9.3 + + '@adraffy/ens-normalize@1.10.1': {} + + '@adraffy/ens-normalize@1.11.1': {} + + '@babel/runtime@7.26.10': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/runtime@7.28.4': {} + + '@cosmjs/amino@0.32.3': + dependencies: + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + + '@cosmjs/crypto@0.32.4': + dependencies: + '@cosmjs/encoding': 0.32.4 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + '@noble/hashes': 1.8.0 + bn.js: 5.2.2 + elliptic: 6.6.1 + libsodium-wrappers-sumo: 0.7.15 + + '@cosmjs/encoding@0.32.3': + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + + '@cosmjs/encoding@0.32.4': + dependencies: + base64-js: 1.5.1 + bech32: 1.1.4 + readonly-date: 1.0.0 + + '@cosmjs/math@0.32.4': + dependencies: + bn.js: 5.2.2 + + '@cosmjs/proto-signing@0.32.3': + dependencies: + '@cosmjs/amino': 0.32.3 + '@cosmjs/crypto': 0.32.4 + '@cosmjs/encoding': 0.32.3 + '@cosmjs/math': 0.32.4 + '@cosmjs/utils': 0.32.4 + cosmjs-types: 0.9.0 + + '@cosmjs/utils@0.32.4': {} + + '@ethersproject/abi@5.7.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + + '@ethersproject/abstract-provider@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + + '@ethersproject/abstract-signer@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/abstract-signer@5.8.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/address@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + + '@ethersproject/address@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/rlp': 5.8.0 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + + '@ethersproject/base64@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/basex@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/properties': 5.8.0 + + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + bn.js: 5.2.2 + + '@ethersproject/bignumber@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + bn.js: 5.2.2 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/bytes@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + + '@ethersproject/constants@5.8.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/transactions': 5.8.0 + + '@ethersproject/hash@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/hash@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/hdnode@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/hdnode@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/json-wallets@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/json-wallets@5.8.0': + dependencies: + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/pbkdf2': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + js-sha3: 0.8.0 + + '@ethersproject/keccak256@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/logger@5.8.0': {} + + '@ethersproject/networks@5.7.1': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/networks@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/pbkdf2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/sha2': 5.8.0 + + '@ethersproject/pbkdf2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/sha2': 5.8.0 + + '@ethersproject/properties@5.7.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/properties@5.8.0': + dependencies: + '@ethersproject/logger': 5.8.0 + + '@ethersproject/providers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/base64': 5.8.0 + '@ethersproject/basex': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/networks': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/web': 5.8.0 + bech32: 1.1.4 + ws: 7.4.6(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/random@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/rlp@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/rlp@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + + '@ethersproject/sha2@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + bn.js: 5.2.2 + elliptic: 6.5.4 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + bn.js: 5.2.2 + elliptic: 6.6.1 + hash.js: 1.1.7 + + '@ethersproject/solidity@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/sha2': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/strings@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/strings@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/transactions@5.7.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + + '@ethersproject/transactions@5.8.0': + dependencies: + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/rlp': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + + '@ethersproject/units@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/constants': 5.8.0 + '@ethersproject/logger': 5.8.0 + + '@ethersproject/wallet@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.8.0 + '@ethersproject/abstract-signer': 5.8.0 + '@ethersproject/address': 5.8.0 + '@ethersproject/bignumber': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/hdnode': 5.8.0 + '@ethersproject/json-wallets': 5.8.0 + '@ethersproject/keccak256': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/random': 5.8.0 + '@ethersproject/signing-key': 5.8.0 + '@ethersproject/transactions': 5.8.0 + '@ethersproject/wordlists': 5.8.0 + + '@ethersproject/web@5.7.1': + dependencies: + '@ethersproject/base64': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/web@5.8.0': + dependencies: + '@ethersproject/base64': 5.8.0 + '@ethersproject/bytes': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/wordlists@5.7.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@ethersproject/wordlists@5.8.0': + dependencies: + '@ethersproject/bytes': 5.8.0 + '@ethersproject/hash': 5.8.0 + '@ethersproject/logger': 5.8.0 + '@ethersproject/properties': 5.8.0 + '@ethersproject/strings': 5.8.0 + + '@gql.tada/cli-utils@1.7.2(@0no-co/graphqlsp@1.15.1(graphql@16.12.0)(typescript@5.9.3))(graphql@16.12.0)(typescript@5.9.3)': + dependencies: + '@0no-co/graphqlsp': 1.15.1(graphql@16.12.0)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.12.0)(typescript@5.9.3) + graphql: 16.12.0 + typescript: 5.9.3 + + '@gql.tada/internal@1.0.8(graphql@16.12.0)(typescript@5.9.3)': + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.12.0) + graphql: 16.12.0 + typescript: 5.9.3 + + '@graphql-typed-document-node/core@3.2.0(graphql@16.12.0)': + dependencies: + graphql: 16.12.0 + + '@kadena/chainweb-node-client@0.3.3(encoding@0.1.13)': + dependencies: + '@kadena/cryptography-utils': 0.3.3 + '@kadena/pactjs': 0.2.9 + '@kadena/types': 0.3.3 + '@types/isomorphic-fetch': 0.0.39 + cross-fetch: 3.1.8(encoding@0.1.13) + node-fetch: 2.6.13(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@kadena/client@0.5.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@kadena/chainweb-node-client': 0.3.3(encoding@0.1.13) + '@kadena/cryptography-utils': 0.3.3 + '@kadena/pactjs': 0.2.9 + '@kadena/types': 0.3.3 + '@walletconnect/sign-client': 2.8.6(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/types': 2.8.6 + cross-fetch: 3.1.8(encoding@0.1.13) + debug: 4.3.7 + encoding: 0.1.13 + yaml: 2.1.3 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - supports-color + - uploadthing + - utf-8-validate + + '@kadena/cryptography-utils@0.3.3': + dependencies: + '@kadena/types': 0.3.3 + blakejs: 1.2.1 + buffer: 6.0.3 + tweetnacl: 1.0.3 + + '@kadena/cryptography-utils@0.4.4': + dependencies: + blakejs: 1.2.1 + buffer: 6.0.3 + tweetnacl: 1.0.3 + + '@kadena/pactjs@0.2.9': + dependencies: + '@kadena/types': 0.3.3 + bignumber.js: 9.3.1 + + '@kadena/types@0.3.3': {} + + '@kadena/types@0.6.2': {} + + '@msgpack/msgpack@3.1.2': {} + + '@multiversx/sdk-bls-wasm@0.3.5': {} + + '@multiversx/sdk-core@12.18.0': + dependencies: + '@multiversx/sdk-transaction-decoder': 1.0.2 + bech32: 1.1.4 + bignumber.js: 9.0.1 + blake2b: 2.1.3 + buffer: 6.0.3 + json-duplicate-key-handle: 1.0.0 + keccak: 3.0.2 + protobufjs: 7.2.4 + + '@multiversx/sdk-transaction-decoder@1.0.2': + dependencies: + bech32: 2.0.0 + + '@multiversx/sdk-wallet@4.2.0': + dependencies: + '@multiversx/sdk-bls-wasm': 0.3.5 + '@noble/ed25519': 1.7.3 + '@noble/hashes': 1.3.0 + bech32: 1.1.4 + bip39: 3.0.2 + blake2b: 2.1.3 + ed25519-hd-key: 1.1.2 + ed2curve: 0.3.0 + keccak: 3.0.1 + scryptsy: 2.1.0 + tweetnacl: 1.0.3 + uuid: 8.3.2 + + '@mysten/bcs@1.9.2': + dependencies: + '@mysten/utils': 0.2.0 + '@scure/base': 1.2.6 + + '@mysten/sui@1.44.0(typescript@5.9.3)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.12.0) + '@mysten/bcs': 1.9.2 + '@mysten/utils': 0.2.0 + '@noble/curves': 1.9.4 + '@noble/hashes': 1.8.0 + '@protobuf-ts/grpcweb-transport': 2.11.1 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + '@scure/base': 1.2.6 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + gql.tada: 1.9.0(graphql@16.12.0)(typescript@5.9.3) + graphql: 16.12.0 + poseidon-lite: 0.2.1 + valibot: 0.36.0 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - typescript + + '@mysten/utils@0.2.0': + dependencies: + '@scure/base': 1.2.6 + + '@noble/ciphers@1.3.0': {} + + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/curves@1.8.0': + dependencies: + '@noble/hashes': 1.7.0 + + '@noble/curves@1.9.1': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/curves@1.9.4': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/curves@1.9.7': + dependencies: + '@noble/hashes': 1.8.0 + + '@noble/ed25519@1.7.3': {} + + '@noble/hashes@1.1.5': {} + + '@noble/hashes@1.2.0': {} + + '@noble/hashes@1.3.0': {} + + '@noble/hashes@1.3.2': {} + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.7.0': {} + + '@noble/hashes@1.8.0': {} + + '@noble/secp256k1@1.7.1': {} + + '@noble/secp256k1@1.7.2': {} + + '@noble/secp256k1@3.0.0': {} + + '@polkadot/keyring@10.4.2(@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2))(@polkadot/util@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2(@polkadot/util@10.4.2) + + '@polkadot/networks@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@substrate/ss58-registry': 1.51.0 + + '@polkadot/types-augment@9.14.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/types': 9.14.2 + '@polkadot/types-codec': 9.14.2 + '@polkadot/util': 10.4.2 + + '@polkadot/types-codec@9.14.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@polkadot/x-bigint': 10.4.2 + + '@polkadot/types-create@9.14.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/types-codec': 9.14.2 + '@polkadot/util': 10.4.2 + + '@polkadot/types@9.14.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/keyring': 10.4.2(@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2))(@polkadot/util@10.4.2) + '@polkadot/types-augment': 9.14.2 + '@polkadot/types-codec': 9.14.2 + '@polkadot/types-create': 9.14.2 + '@polkadot/util': 10.4.2 + '@polkadot/util-crypto': 10.4.2(@polkadot/util@10.4.2) + rxjs: 7.8.2 + + '@polkadot/util-crypto@10.4.2(@polkadot/util@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@polkadot/networks': 10.4.2 + '@polkadot/util': 10.4.2 + '@polkadot/wasm-crypto': 6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2) + '@polkadot/x-bigint': 10.4.2 + '@polkadot/x-randomvalues': 10.4.2 + '@scure/base': 1.1.1 + ed2curve: 0.3.0 + tweetnacl: 1.0.3 + + '@polkadot/util@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/x-bigint': 10.4.2 + '@polkadot/x-global': 10.4.2 + '@polkadot/x-textdecoder': 10.4.2 + '@polkadot/x-textencoder': 10.4.2 + '@types/bn.js': 5.2.0 + bn.js: 5.2.2 + + '@polkadot/wasm-bridge@6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@polkadot/x-randomvalues': 10.4.2 + + '@polkadot/wasm-crypto-asmjs@6.4.1(@polkadot/util@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + + '@polkadot/wasm-crypto-init@6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@polkadot/wasm-bridge': 6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2) + '@polkadot/wasm-crypto-asmjs': 6.4.1(@polkadot/util@10.4.2) + '@polkadot/wasm-crypto-wasm': 6.4.1(@polkadot/util@10.4.2) + '@polkadot/x-randomvalues': 10.4.2 + + '@polkadot/wasm-crypto-wasm@6.4.1(@polkadot/util@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@polkadot/wasm-util': 6.4.1(@polkadot/util@10.4.2) + + '@polkadot/wasm-crypto@6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + '@polkadot/wasm-bridge': 6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2) + '@polkadot/wasm-crypto-asmjs': 6.4.1(@polkadot/util@10.4.2) + '@polkadot/wasm-crypto-init': 6.4.1(@polkadot/util@10.4.2)(@polkadot/x-randomvalues@10.4.2) + '@polkadot/wasm-crypto-wasm': 6.4.1(@polkadot/util@10.4.2) + '@polkadot/wasm-util': 6.4.1(@polkadot/util@10.4.2) + '@polkadot/x-randomvalues': 10.4.2 + + '@polkadot/wasm-util@6.4.1(@polkadot/util@10.4.2)': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/util': 10.4.2 + + '@polkadot/x-bigint@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/x-global': 10.4.2 + + '@polkadot/x-global@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + + '@polkadot/x-randomvalues@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/x-global': 10.4.2 + + '@polkadot/x-textdecoder@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/x-global': 10.4.2 + + '@polkadot/x-textencoder@10.4.2': + dependencies: + '@babel/runtime': 7.28.4 + '@polkadot/x-global': 10.4.2 + + '@protobuf-ts/grpcweb-transport@2.11.1': + dependencies: + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + + '@protobuf-ts/runtime-rpc@2.11.1': + dependencies: + '@protobuf-ts/runtime': 2.11.1 + + '@protobuf-ts/runtime@2.11.1': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.4': {} + + '@protobufjs/eventemitter@1.1.0': {} + + '@protobufjs/fetch@1.1.0': + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/inquire@1.1.0': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.0': {} + + '@scure/base@1.1.1': {} + + '@scure/base@1.1.9': {} + + '@scure/base@1.2.6': {} + + '@scure/bip32@1.1.3': + dependencies: + '@noble/hashes': 1.1.5 + '@noble/secp256k1': 1.7.2 + '@scure/base': 1.1.9 + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip32@1.7.0': + dependencies: + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@scure/bip39@1.1.0': + dependencies: + '@noble/hashes': 1.1.5 + '@scure/base': 1.1.9 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 + + '@scure/bip39@1.6.0': + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + + '@solana/buffer-layout-utils@0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + bigint-buffer: 1.1.5 + bignumber.js: 9.3.1 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@solana/buffer-layout@4.0.1': + dependencies: + buffer: 6.0.3 + + '@solana/codecs-core@2.0.0-rc.1(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.0.0-rc.1(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-core@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-data-structures@2.0.0-rc.1(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-numbers@2.0.0-rc.1(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-numbers@2.3.0(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.3.0(typescript@5.9.3) + '@solana/errors': 2.3.0(typescript@5.9.3) + typescript: 5.9.3 + + '@solana/codecs-strings@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.9.3) + fastestsmallesttextencoderdecoder: 1.0.22 + typescript: 5.9.3 + + '@solana/codecs@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/options': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/errors@2.0.0-rc.1(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 12.1.0 + typescript: 5.9.3 + + '@solana/errors@2.3.0(typescript@5.9.3)': + dependencies: + chalk: 5.6.2 + commander: 14.0.2 + typescript: 5.9.3 + + '@solana/options@2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs-core': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-data-structures': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-numbers': 2.0.0-rc.1(typescript@5.9.3) + '@solana/codecs-strings': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/errors': 2.0.0-rc.1(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + + '@solana/spl-token-group@0.0.7(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token-metadata@0.1.6(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)': + dependencies: + '@solana/codecs': 2.0.0-rc.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + - typescript + + '@solana/spl-token@0.4.14(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + '@solana/spl-token-group': 0.0.7(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/spl-token-metadata': 0.1.6(@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10))(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3) + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - typescript + - utf-8-validate + + '@solana/web3.js@1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)': + dependencies: + '@babel/runtime': 7.28.4 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@solana/buffer-layout': 4.0.1 + '@solana/codecs-numbers': 2.3.0(typescript@5.9.3) + agentkeepalive: 4.6.0 + bn.js: 5.2.2 + borsh: 0.7.0 + bs58: 4.0.1 + buffer: 6.0.3 + fast-stable-stringify: 1.0.0 + jayson: 4.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + node-fetch: 2.7.0(encoding@0.1.13) + rpc-websockets: 9.3.1 + superstruct: 2.0.2 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + '@stablelib/aead@1.0.1': {} + + '@stablelib/binary@1.0.1': + dependencies: + '@stablelib/int': 1.0.1 + + '@stablelib/blake2b@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/bytes@1.0.1': {} + + '@stablelib/chacha20poly1305@1.0.1': + dependencies: + '@stablelib/aead': 1.0.1 + '@stablelib/binary': 1.0.1 + '@stablelib/chacha': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/poly1305': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/chacha@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/constant-time@1.0.1': {} + + '@stablelib/ed25519@1.0.3': + dependencies: + '@stablelib/random': 1.0.2 + '@stablelib/sha512': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hash@1.0.1': {} + + '@stablelib/hkdf@1.0.1': + dependencies: + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/hmac@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/int@1.0.1': {} + + '@stablelib/keyagreement@1.0.1': + dependencies: + '@stablelib/bytes': 1.0.1 + + '@stablelib/nacl@1.0.4': + dependencies: + '@stablelib/poly1305': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@stablelib/xsalsa20': 1.0.2 + + '@stablelib/pbkdf2@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/hmac': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/poly1305@1.0.1': + dependencies: + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/random@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/salsa20@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/constant-time': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha256@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/sha512@1.0.1': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/hash': 1.0.1 + '@stablelib/wipe': 1.0.1 + + '@stablelib/wipe@1.0.1': {} + + '@stablelib/x25519@1.0.3': + dependencies: + '@stablelib/keyagreement': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/wipe': 1.0.1 + + '@stablelib/xsalsa20@1.0.2': + dependencies: + '@stablelib/binary': 1.0.1 + '@stablelib/salsa20': 1.0.2 + '@stablelib/wipe': 1.0.1 + + '@stacks/auth@7.2.0(encoding@0.1.13)': + dependencies: + '@noble/secp256k1': 1.7.1 + '@stacks/common': 7.0.2 + '@stacks/encryption': 7.2.0 + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/profile': 7.2.0(encoding@0.1.13) + cross-fetch: 3.2.0(encoding@0.1.13) + jsontokens: 4.0.1 + transitivePeerDependencies: + - encoding + + '@stacks/common@7.0.2': {} + + '@stacks/encryption@7.2.0': + dependencies: + '@noble/hashes': 1.1.5 + '@noble/secp256k1': 1.7.1 + '@scure/bip39': 1.1.0 + '@stacks/common': 7.0.2 + base64-js: 1.5.1 + bs58: 5.0.0 + ripemd160-min: 0.0.6 + varuint-bitcoin: 1.1.2 + + '@stacks/network@7.2.0(encoding@0.1.13)': + dependencies: + '@stacks/common': 7.0.2 + cross-fetch: 3.2.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + '@stacks/profile@7.2.0(encoding@0.1.13)': + dependencies: + '@stacks/common': 7.0.2 + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/transactions': 7.2.0(encoding@0.1.13) + jsontokens: 4.0.1 + schema-inspector: 2.1.0 + zone-file: 2.0.0-beta.3 + transitivePeerDependencies: + - encoding + + '@stacks/storage@7.2.0(encoding@0.1.13)': + dependencies: + '@stacks/auth': 7.2.0(encoding@0.1.13) + '@stacks/common': 7.0.2 + '@stacks/encryption': 7.2.0 + '@stacks/network': 7.2.0(encoding@0.1.13) + base64-js: 1.5.1 + jsontokens: 4.0.1 + transitivePeerDependencies: + - encoding + + '@stacks/transactions@7.2.0(encoding@0.1.13)': + dependencies: + '@noble/hashes': 1.1.5 + '@noble/secp256k1': 1.7.1 + '@stacks/common': 7.0.2 + '@stacks/network': 7.2.0(encoding@0.1.13) + c32check: 2.0.0 + lodash.clonedeep: 4.5.0 + transitivePeerDependencies: + - encoding + + '@stacks/wallet-sdk@7.2.0(encoding@0.1.13)': + dependencies: + '@scure/bip32': 1.1.3 + '@scure/bip39': 1.1.0 + '@stacks/auth': 7.2.0(encoding@0.1.13) + '@stacks/common': 7.0.2 + '@stacks/encryption': 7.2.0 + '@stacks/network': 7.2.0(encoding@0.1.13) + '@stacks/profile': 7.2.0(encoding@0.1.13) + '@stacks/storage': 7.2.0(encoding@0.1.13) + '@stacks/transactions': 7.2.0(encoding@0.1.13) + c32check: 2.0.0 + jsontokens: 4.0.1 + zone-file: 2.0.0-beta.3 + transitivePeerDependencies: + - encoding + + '@substrate/ss58-registry@1.51.0': {} + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@taquito/axios-fetch-adapter@https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6(axios@0.26.1)': + dependencies: + axios: 0.26.1 + + '@taquito/core@23.0.3': + dependencies: + json-stringify-safe: 5.0.1 + + '@taquito/http-utils@15.1.0': + dependencies: + '@vespaiach/axios-fetch-adapter': '@taquito/axios-fetch-adapter@https://codeload.github.com/ecadlabs/axios-fetch-adapter/tar.gz/167684f522e90343b9f3439d9a43ac571e2396f6(axios@0.26.1)' + axios: 0.26.1 + transitivePeerDependencies: + - debug + + '@taquito/local-forging@15.1.0': + dependencies: + '@taquito/utils': 15.1.0 + bignumber.js: 9.3.1 + + '@taquito/local-forging@23.0.3': + dependencies: + '@taquito/core': 23.0.3 + '@taquito/utils': 23.0.3 + bignumber.js: 9.3.1 + fast-text-encoding: 1.0.6 + + '@taquito/michel-codec@15.1.0': {} + + '@taquito/michelson-encoder@15.1.0': + dependencies: + '@taquito/rpc': 15.1.0 + '@taquito/utils': 15.1.0 + bignumber.js: 9.3.1 + fast-json-stable-stringify: 2.1.0 + transitivePeerDependencies: + - debug + + '@taquito/rpc@15.1.0': + dependencies: + '@taquito/http-utils': 15.1.0 + '@taquito/utils': 15.1.0 + bignumber.js: 9.3.1 + transitivePeerDependencies: + - debug + + '@taquito/signer@15.1.0': + dependencies: + '@stablelib/blake2b': 1.0.1 + '@stablelib/ed25519': 1.0.3 + '@stablelib/hmac': 1.0.1 + '@stablelib/nacl': 1.0.4 + '@stablelib/pbkdf2': 1.0.1 + '@stablelib/sha512': 1.0.1 + '@taquito/taquito': 15.1.0 + '@taquito/utils': 15.1.0 + '@types/bn.js': 5.2.0 + bip39: 3.1.0 + elliptic: 6.6.1 + pbkdf2: 3.1.5 + typedarray-to-buffer: 4.0.0 + transitivePeerDependencies: + - debug + + '@taquito/taquito@15.1.0': + dependencies: + '@taquito/http-utils': 15.1.0 + '@taquito/local-forging': 15.1.0 + '@taquito/michel-codec': 15.1.0 + '@taquito/michelson-encoder': 15.1.0 + '@taquito/rpc': 15.1.0 + '@taquito/utils': 15.1.0 + bignumber.js: 9.3.1 + rxjs: 6.6.7 + transitivePeerDependencies: + - debug + + '@taquito/utils@15.1.0': + dependencies: + '@stablelib/blake2b': 1.0.1 + '@stablelib/ed25519': 1.0.3 + '@types/bs58check': 2.1.2 + bignumber.js: 9.3.1 + blakejs: 1.2.1 + bs58check: 2.1.2 + buffer: 6.0.3 + elliptic: 6.6.1 + typedarray-to-buffer: 4.0.0 + + '@taquito/utils@23.0.3': + dependencies: + '@noble/curves': 1.9.7 + '@stablelib/blake2b': 1.0.1 + '@stablelib/ed25519': 1.0.3 + '@taquito/core': 23.0.3 + '@types/bs58check': 2.1.2 + bignumber.js: 9.3.1 + blakejs: 1.2.1 + bs58check: 3.0.1 + buffer: 6.0.3 + elliptic: 6.6.1 + typedarray-to-buffer: 4.0.0 + + '@ton/core@0.61.0(@ton/crypto@3.3.0)': + dependencies: + '@ton/crypto': 3.3.0 + symbol.inspect: 1.0.1 + + '@ton/crypto-primitives@2.1.0': + dependencies: + jssha: 3.2.0 + + '@ton/crypto@3.3.0': + dependencies: + '@ton/crypto-primitives': 2.1.0 + jssha: 3.2.0 + tweetnacl: 1.0.3 + + '@ton/ton@15.4.0(@ton/core@0.61.0(@ton/crypto@3.3.0))(@ton/crypto@3.3.0)': + dependencies: + '@ton/core': 0.61.0(@ton/crypto@3.3.0) + '@ton/crypto': 3.3.0 + axios: 1.13.2 + dataloader: 2.2.3 + symbol.inspect: 1.0.1 + teslabot: 1.5.0 + zod: 3.25.76 + transitivePeerDependencies: + - debug + + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 24.10.1 + + '@types/bn.js@5.2.0': + dependencies: + '@types/node': 24.10.1 + + '@types/bs58check@2.1.2': + dependencies: + '@types/node': 24.10.1 + + '@types/connect@3.4.38': + dependencies: + '@types/node': 24.10.1 + + '@types/isomorphic-fetch@0.0.39': {} + + '@types/node@11.11.6': {} + + '@types/node@12.20.55': {} + + '@types/node@22.7.5': + dependencies: + undici-types: 6.19.8 + + '@types/node@24.10.1': + dependencies: + undici-types: 7.16.0 + + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 24.10.1 + + '@types/secp256k1@4.0.7': + dependencies: + '@types/node': 24.10.1 + + '@types/uuid@8.3.4': {} + + '@types/ws@7.4.7': + dependencies: + '@types/node': 24.10.1 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 24.10.1 + + '@walletconnect/core@2.8.6(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/jsonrpc-ws-connection': 1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.3 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.8.6 + '@walletconnect/utils': 2.8.6 + events: 3.3.0 + lodash.isequal: 4.5.0 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/encoding@1.0.2': + dependencies: + is-typedarray: 1.0.0 + tslib: 1.14.1 + typedarray-to-buffer: 3.1.5 + + '@walletconnect/environment@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/events@1.0.1': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/heartbeat@1.2.1': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + tslib: 1.14.1 + + '@walletconnect/heartbeat@1.2.2': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/time': 1.0.2 + events: 3.3.0 + + '@walletconnect/jsonrpc-provider@1.0.13': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-types@1.0.3': + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-types@1.0.4': + dependencies: + events: 3.3.0 + keyvaluestorage-interface: 1.0.0 + + '@walletconnect/jsonrpc-utils@1.0.8': + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.4 + tslib: 1.14.1 + + '@walletconnect/jsonrpc-ws-connection@1.0.16(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + events: 3.3.0 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@walletconnect/keyvaluestorage@1.1.1': + dependencies: + '@walletconnect/safe-json': 1.0.2 + idb-keyval: 6.2.2 + unstorage: 1.17.2(idb-keyval@6.2.2) + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/logger@2.1.3': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 7.11.0 + + '@walletconnect/logger@3.0.0': + dependencies: + '@walletconnect/safe-json': 1.0.2 + pino: 10.0.0 + + '@walletconnect/relay-api@1.0.11': + dependencies: + '@walletconnect/jsonrpc-types': 1.0.4 + + '@walletconnect/relay-auth@1.1.0': + dependencies: + '@noble/curves': 1.8.0 + '@noble/hashes': 1.7.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + uint8arrays: 3.1.1 + + '@walletconnect/safe-json@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/sign-client@2.8.6(bufferutil@4.0.9)(utf-8-validate@5.0.10)': + dependencies: + '@walletconnect/core': 2.8.6(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/logger': 2.1.3 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.8.6 + '@walletconnect/utils': 2.8.6 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - bufferutil + - db0 + - ioredis + - uploadthing + - utf-8-validate + + '@walletconnect/time@1.0.2': + dependencies: + tslib: 1.14.1 + + '@walletconnect/types@2.22.4-canary-auth-3': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.2 + '@walletconnect/jsonrpc-types': 1.0.4 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 3.0.0 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/types@2.8.6': + dependencies: + '@walletconnect/events': 1.0.1 + '@walletconnect/heartbeat': 1.2.1 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 2.1.3 + events: 3.3.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/utils@2.22.4-canary-auth-3(typescript@5.9.3)(zod@3.25.76)': + dependencies: + '@msgpack/msgpack': 3.1.2 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.7 + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/keyvaluestorage': 1.1.1 + '@walletconnect/logger': 3.0.0 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/relay-auth': 1.1.0 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.22.4-canary-auth-3 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + blakejs: 1.2.1 + bs58: 6.0.0 + detect-browser: 5.3.0 + ox: 0.9.3(typescript@5.9.3)(zod@3.25.76) + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - typescript + - uploadthing + - zod + + '@walletconnect/utils@2.8.6': + dependencies: + '@stablelib/chacha20poly1305': 1.0.1 + '@stablelib/hkdf': 1.0.1 + '@stablelib/random': 1.0.2 + '@stablelib/sha256': 1.0.1 + '@stablelib/x25519': 1.0.3 + '@walletconnect/relay-api': 1.0.11 + '@walletconnect/safe-json': 1.0.2 + '@walletconnect/time': 1.0.2 + '@walletconnect/types': 2.8.6 + '@walletconnect/window-getters': 1.0.1 + '@walletconnect/window-metadata': 1.0.1 + detect-browser: 5.3.0 + query-string: 7.1.3 + uint8arrays: 3.1.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@deno/kv' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/blob' + - '@vercel/functions' + - '@vercel/kv' + - aws4fetch + - db0 + - ioredis + - uploadthing + + '@walletconnect/window-getters@1.0.1': + dependencies: + tslib: 1.14.1 + + '@walletconnect/window-metadata@1.0.1': + dependencies: + '@walletconnect/window-getters': 1.0.1 + tslib: 1.14.1 + + abitype@1.1.1(typescript@5.9.3)(zod@3.25.76): + optionalDependencies: + typescript: 5.9.3 + zod: 3.25.76 + + aes-js@3.0.0: {} + + aes-js@4.0.0-beta.5: {} + + agentkeepalive@4.6.0: + dependencies: + humanize-ms: 1.2.1 + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + async@2.6.4: + dependencies: + lodash: 4.17.21 + + asynckit@0.4.0: {} + + atomic-sleep@1.0.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axios@0.26.1: + dependencies: + follow-redirects: 1.15.11 + transitivePeerDependencies: + - debug + + axios@1.12.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + axios@1.13.2: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.4 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + backslash@0.2.2: {} + + base-x@3.0.11: + dependencies: + safe-buffer: 5.2.1 + + base-x@4.0.1: {} + + base-x@5.0.1: {} + + base64-js@1.5.1: {} + + bech32@1.1.4: {} + + bech32@2.0.0: {} + + bigint-buffer@1.1.5: + dependencies: + bindings: 1.5.0 + + bignumber.js@9.0.1: {} + + bignumber.js@9.1.2: {} + + bignumber.js@9.3.1: {} + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + bip174@2.1.1: {} + + bip32@4.0.0: + dependencies: + '@noble/hashes': 1.8.0 + '@scure/base': 1.2.6 + typeforce: 1.18.0 + wif: 2.0.6 + + bip39-light@1.0.7: + dependencies: + create-hash: 1.2.0 + pbkdf2: 3.1.5 + + bip39@3.0.2: + dependencies: + '@types/node': 11.11.6 + create-hash: 1.2.0 + pbkdf2: 3.1.5 + randombytes: 2.1.0 + + bip39@3.1.0: + dependencies: + '@noble/hashes': 1.8.0 + + bip66@1.1.5: + dependencies: + safe-buffer: 5.2.1 + + bitcoinjs-lib@6.1.7: + dependencies: + '@noble/hashes': 1.8.0 + bech32: 2.0.0 + bip174: 2.1.1 + bs58check: 3.0.1 + typeforce: 1.18.0 + varuint-bitcoin: 1.1.2 + + bitcoinjs-message@2.2.0: + dependencies: + bech32: 1.1.4 + bs58check: 2.1.2 + buffer-equals: 1.0.4 + create-hash: 1.2.0 + secp256k1: 3.8.1 + varuint-bitcoin: 1.1.2 + + blake2b-wasm@1.1.7: + dependencies: + nanoassert: 1.1.0 + + blake2b@2.1.3: + dependencies: + blake2b-wasm: 1.1.7 + nanoassert: 1.1.0 + + blakejs@1.2.1: {} + + bn.js@4.12.2: {} + + bn.js@5.2.0: {} + + bn.js@5.2.2: {} + + borsh@0.7.0: + dependencies: + bn.js: 5.2.2 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + + borsh@1.0.0: {} + + brorand@1.1.0: {} + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.7 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + bs58@4.0.1: + dependencies: + base-x: 3.0.11 + + bs58@5.0.0: + dependencies: + base-x: 4.0.1 + + bs58@6.0.0: + dependencies: + base-x: 5.0.1 + + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + bs58check@3.0.1: + dependencies: + '@noble/hashes': 1.8.0 + bs58: 5.0.0 + + buffer-equals@1.0.4: {} + + buffer-xor@1.0.3: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufferutil@4.0.9: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + c32check@2.0.0: + dependencies: + '@noble/hashes': 1.8.0 + base-x: 4.0.1 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + capability@0.2.5: {} + + chalk@5.6.2: {} + + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + cipher-base@1.0.7: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@12.1.0: {} + + commander@14.0.2: {} + + commander@2.20.3: {} + + cookie-es@1.2.2: {} + + core-util-is@1.0.3: {} + + cosmjs-types@0.9.0: {} + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + + cross-fetch@3.1.8(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + cross-fetch@3.2.0(encoding@0.1.13): + dependencies: + node-fetch: 2.7.0(encoding@0.1.13) + transitivePeerDependencies: + - encoding + + crossws@0.3.5: + dependencies: + uncrypto: 0.1.3 + + dataloader@2.2.3: {} + + debug@4.3.7: + dependencies: + ms: 2.1.3 + + decode-uri-component@0.2.2: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + defu@6.1.4: {} + + delay@5.0.0: {} + + delayed-stream@1.0.0: {} + + depd@1.1.2: {} + + depd@2.0.0: {} + + destr@2.0.5: {} + + detect-browser@5.3.0: {} + + drbg.js@1.0.1: + dependencies: + browserify-aes: 1.2.0 + create-hash: 1.2.0 + create-hmac: 1.1.7 + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexify@4.1.3: + dependencies: + end-of-stream: 1.4.5 + inherits: 2.0.4 + readable-stream: 3.6.2 + stream-shift: 1.0.3 + + ecpair@2.1.0: + dependencies: + randombytes: 2.1.0 + typeforce: 1.18.0 + wif: 2.0.6 + + ed25519-hd-key@1.1.2: + dependencies: + bip39: 3.0.2 + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + + ed25519-hd-key@1.3.0: + dependencies: + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + + ed2curve@0.3.0: + dependencies: + tweetnacl: 1.0.3 + + elliptic@6.5.4: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.6.1: + dependencies: + bn.js: 4.12.2 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + encoding@0.1.13: + dependencies: + iconv-lite: 0.6.3 + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + error-polyfill@0.1.3: + dependencies: + capability: 0.2.5 + o3: 1.0.3 + u3: 0.1.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + + es6-promise@4.2.8: {} + + es6-promisify@5.0.0: + dependencies: + es6-promise: 4.2.8 + + eth-sig-util@3.0.1: + dependencies: + ethereumjs-abi: 0.6.8 + ethereumjs-util: 5.2.1 + tweetnacl: 1.0.3 + tweetnacl-util: 0.15.1 + + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.7 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.5 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.4 + setimmediate: 1.0.5 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.2 + ethereumjs-util: 6.2.1 + + ethereumjs-util@5.2.1: + dependencies: + bn.js: 4.12.2 + create-hash: 1.2.0 + elliptic: 6.6.1 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + safe-buffer: 5.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.2 + create-hash: 1.2.0 + elliptic: 6.6.1 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.2.0 + bn.js: 5.2.2 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + + ethers@5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.9)(utf-8-validate@5.0.10) + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethers@6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + + eventemitter3@5.0.1: {} + + events@3.3.0: {} + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + eyes@0.1.8: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-redact@3.5.0: {} + + fast-stable-stringify@1.0.0: {} + + fast-text-encoding@1.0.6: {} + + fastestsmallesttextencoderdecoder@1.0.22: {} + + file-uri-to-path@1.0.0: {} + + filter-obj@1.1.0: {} + + follow-redirects@1.15.11: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + form-data@4.0.4: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + + function-bind@1.1.2: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + google-protobuf@3.21.4: {} + + gopd@1.2.0: {} + + gql.tada@1.9.0(graphql@16.12.0)(typescript@5.9.3): + dependencies: + '@0no-co/graphql.web': 1.2.0(graphql@16.12.0) + '@0no-co/graphqlsp': 1.15.1(graphql@16.12.0)(typescript@5.9.3) + '@gql.tada/cli-utils': 1.7.2(@0no-co/graphqlsp@1.15.1(graphql@16.12.0)(typescript@5.9.3))(graphql@16.12.0)(typescript@5.9.3) + '@gql.tada/internal': 1.0.8(graphql@16.12.0)(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - '@gql.tada/svelte-support' + - '@gql.tada/vue-support' + - graphql + + graphql@16.12.0: {} + + h3@1.15.4: + dependencies: + cookie-es: 1.2.2 + crossws: 0.3.5 + defu: 6.1.4 + destr: 2.0.5 + iron-webcrypto: 1.2.1 + node-mock-http: 1.0.3 + radix3: 1.1.2 + ufo: 1.6.1 + uncrypto: 0.1.3 + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-base@3.1.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + http-errors@1.8.1: + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + + idb-keyval@6.2.2: {} + + ieee754@1.2.1: {} + + inherits@2.0.4: {} + + iron-webcrypto@1.2.1: {} + + is-callable@1.2.7: {} + + is-hex-prefixed@1.0.0: {} + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + + is-typedarray@1.0.0: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isomorphic-ws@4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)): + dependencies: + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + + jayson@4.2.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + commander: 2.20.3 + delay: 5.0.0 + es6-promisify: 5.0.0 + eyes: 0.1.8 + isomorphic-ws: 4.0.1(ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10)) + json-stringify-safe: 5.0.1 + stream-json: 1.9.1 + uuid: 8.3.2 + ws: 7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + js-sha256@0.9.0: {} + + js-sha3@0.8.0: {} + + json-duplicate-key-handle@1.0.0: + dependencies: + backslash: 0.2.2 + + json-stringify-safe@5.0.1: {} + + jsontokens@4.0.1: + dependencies: + '@noble/hashes': 1.8.0 + '@noble/secp256k1': 1.7.2 + base64-js: 1.5.1 + + jssha@3.2.0: {} + + keccak@3.0.1: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + + keccak@3.0.2: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + + keyvaluestorage-interface@1.0.0: {} + + libsodium-sumo@0.7.15: {} + + libsodium-wrappers-sumo@0.7.15: + dependencies: + libsodium-sumo: 0.7.15 + + lodash.clonedeep@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash@4.17.21: {} + + long@5.3.2: {} + + lru-cache@10.4.3: {} + + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + ms@2.1.3: {} + + multiformats@9.9.0: {} + + mustache@4.2.0: {} + + nan@2.23.1: {} + + nanoassert@1.1.0: {} + + near-api-js@0.45.1(encoding@0.1.13): + dependencies: + bn.js: 5.2.0 + borsh: 0.7.0 + bs58: 4.0.1 + depd: 2.0.0 + error-polyfill: 0.1.3 + http-errors: 1.8.1 + js-sha256: 0.9.0 + mustache: 4.2.0 + node-fetch: 2.7.0(encoding@0.1.13) + text-encoding-utf-8: 1.0.2 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - encoding + + near-hd-key@1.2.1: + dependencies: + bip39: 3.0.2 + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + + near-seed-phrase@0.2.1: + dependencies: + bip39-light: 1.0.7 + bs58: 4.0.1 + near-hd-key: 1.2.1 + tweetnacl: 1.0.3 + + node-addon-api@2.0.2: {} + + node-addon-api@5.1.0: {} + + node-fetch-native@1.6.7: {} + + node-fetch@2.6.13(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-fetch@2.7.0(encoding@0.1.13): + dependencies: + whatwg-url: 5.0.0 + optionalDependencies: + encoding: 0.1.13 + + node-gyp-build@4.8.4: {} + + node-mock-http@1.0.3: {} + + normalize-path@3.0.0: {} + + o3@1.0.3: + dependencies: + capability: 0.2.5 + + ofetch@1.5.1: + dependencies: + destr: 2.0.5 + node-fetch-native: 1.6.7 + ufo: 1.6.1 + + on-exit-leak-free@0.2.0: {} + + on-exit-leak-free@2.1.2: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + ox@0.9.3(typescript@5.9.3)(zod@3.25.76): + dependencies: + '@adraffy/ens-normalize': 1.11.1 + '@noble/ciphers': 1.3.0 + '@noble/curves': 1.9.1 + '@noble/hashes': 1.8.0 + '@scure/bip32': 1.7.0 + '@scure/bip39': 1.6.0 + abitype: 1.1.1(typescript@5.9.3)(zod@3.25.76) + eventemitter3: 5.0.1 + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - zod + + pbkdf2@3.1.5: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + + picomatch@2.3.1: {} + + pino-abstract-transport@0.5.0: + dependencies: + duplexify: 4.1.3 + split2: 4.2.0 + + pino-abstract-transport@2.0.0: + dependencies: + split2: 4.2.0 + + pino-std-serializers@4.0.0: {} + + pino-std-serializers@7.0.0: {} + + pino@10.0.0: + dependencies: + atomic-sleep: 1.0.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 2.0.0 + pino-std-serializers: 7.0.0 + process-warning: 5.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.5.0 + slow-redact: 0.3.2 + sonic-boom: 4.2.0 + thread-stream: 3.1.0 + + pino@7.11.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 0.2.0 + pino-abstract-transport: 0.5.0 + pino-std-serializers: 4.0.0 + process-warning: 1.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.1.0 + safe-stable-stringify: 2.5.0 + sonic-boom: 2.8.0 + thread-stream: 0.15.2 + + poseidon-lite@0.2.1: {} + + possible-typed-array-names@1.1.0: {} + + process-nextick-args@2.0.1: {} + + process-warning@1.0.0: {} + + process-warning@5.0.0: {} + + protobufjs@7.2.4: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.4 + '@protobufjs/eventemitter': 1.1.0 + '@protobufjs/fetch': 1.1.0 + '@protobufjs/float': 1.0.2 + '@protobufjs/inquire': 1.1.0 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.0 + '@types/node': 24.10.1 + long: 5.3.2 + + proxy-from-env@1.1.0: {} + + query-string@7.1.3: + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 + + quick-format-unescaped@4.0.4: {} + + radix3@1.1.2: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@4.1.2: {} + + readonly-date@1.0.0: {} + + real-require@0.1.0: {} + + real-require@0.2.0: {} + + regenerator-runtime@0.14.1: {} + + ripemd160-min@0.0.6: {} + + ripemd160@2.0.3: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + + rlp@2.2.7: + dependencies: + bn.js: 5.2.2 + + rpc-websockets@9.3.1: + dependencies: + '@swc/helpers': 0.5.17 + '@types/uuid': 8.3.4 + '@types/ws': 8.18.1 + buffer: 6.0.3 + eventemitter3: 5.0.1 + uuid: 8.3.2 + ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + rxjs@6.6.7: + dependencies: + tslib: 1.14.1 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + schema-inspector@2.1.0: + dependencies: + async: 2.6.4 + + scrypt-js@3.0.1: {} + + scryptsy@2.1.0: {} + + secp256k1@3.8.1: + dependencies: + bindings: 1.5.0 + bip66: 1.1.5 + bn.js: 4.12.2 + create-hash: 1.2.0 + drbg.js: 1.0.1 + elliptic: 6.6.1 + nan: 2.23.1 + safe-buffer: 5.2.1 + + secp256k1@4.0.4: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + + semver@7.7.1: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.12: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + + slow-redact@0.3.2: {} + + solana-wallet@1.0.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10): + dependencies: + '@solana/web3.js': 1.98.2(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10) + bs58: 5.0.0 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - typescript + - utf-8-validate + + sonic-boom@2.8.0: + dependencies: + atomic-sleep: 1.0.0 + + sonic-boom@4.2.0: + dependencies: + atomic-sleep: 1.0.0 + + split-on-first@1.1.0: {} + + split2@4.2.0: {} + + statuses@1.5.0: {} + + stream-chain@2.2.5: {} + + stream-json@1.9.1: + dependencies: + stream-chain: 2.2.5 + + stream-shift@1.0.3: {} + + strict-uri-encode@2.0.0: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + + superstruct@2.0.2: {} + + symbol.inspect@1.0.1: {} + + teslabot@1.5.0: {} + + text-encoding-utf-8@1.0.2: {} + + thread-stream@0.15.2: + dependencies: + real-require: 0.1.0 + + thread-stream@3.1.0: + dependencies: + real-require: 0.2.0 + + tiny-secp256k1@2.2.4: + dependencies: + uint8array-tools: 0.0.7 + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + tronweb@6.1.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + dependencies: + '@babel/runtime': 7.26.10 + axios: 1.12.2 + bignumber.js: 9.1.2 + ethereum-cryptography: 2.2.1 + ethers: 6.13.5(bufferutil@4.0.9)(utf-8-validate@5.0.10) + eventemitter3: 5.0.1 + google-protobuf: 3.21.4 + semver: 7.7.1 + validator: 13.15.20 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + tslib@1.14.1: {} + + tslib@2.7.0: {} + + tslib@2.8.1: {} + + tweetnacl-util@0.15.1: {} + + tweetnacl@1.0.3: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typedarray-to-buffer@3.1.5: + dependencies: + is-typedarray: 1.0.0 + + typedarray-to-buffer@4.0.0: {} + + typeforce@1.18.0: {} + + typescript@5.9.3: {} + + u3@0.1.1: {} + + ufo@1.6.1: {} + + uint8array-tools@0.0.7: {} + + uint8arrays@3.1.1: + dependencies: + multiformats: 9.9.0 + + uncrypto@0.1.3: {} + + undici-types@6.19.8: {} + + undici-types@7.16.0: {} + + unstorage@1.17.2(idb-keyval@6.2.2): + dependencies: + anymatch: 3.1.3 + chokidar: 4.0.3 + destr: 2.0.5 + h3: 1.15.4 + lru-cache: 10.4.3 + node-fetch-native: 1.6.7 + ofetch: 1.5.1 + ufo: 1.6.1 + optionalDependencies: + idb-keyval: 6.2.2 + + utf-8-validate@5.0.10: + dependencies: + node-gyp-build: 4.8.4 + optional: true + + util-deprecate@1.0.2: {} + + uuid@8.3.2: {} + + valibot@0.36.0: {} + + validator@13.15.20: {} + + varuint-bitcoin@1.1.2: + dependencies: + safe-buffer: 5.2.1 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + wif@2.0.6: + dependencies: + bs58check: 2.1.2 + + wrappy@1.0.2: {} + + ws@7.4.6(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@7.5.10(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@8.17.1(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10): + optionalDependencies: + bufferutil: 4.0.9 + utf-8-validate: 5.0.10 + + yaml@2.1.3: {} + + zod@3.25.76: {} + + zone-file@2.0.0-beta.3: {} diff --git a/shared/public/chain-logos/arbitrum.webp b/shared/public/chain-logos/arbitrum.webp new file mode 100644 index 0000000000000000000000000000000000000000..01109e015f0e38e9e4ec608adefb4c21d250c3d1 GIT binary patch literal 77042 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 literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/base.webp b/shared/public/chain-logos/base.webp new file mode 100644 index 0000000000000000000000000000000000000000..a402e62648b206c8c01f9740cfa1ceec2c602a0f GIT binary patch literal 48604 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

ONANbH^Tz_=xp<^*uoKSP!?0M zzNgzi{@OX|L&_i>v-ipn^`9t|LS1oZUjHu%NJjn1Wy9iBS`Xs;7Kk?&)4D&nQQeV^ zMY)lZwQ9GjT9;F%E!rWP*hBq%6lk({`=nHGnsc)%&98V+gI{1jru6@s;aXqcYWE8- zB0SuzM}jfrqk=G19=m-PQX&vVaHe!M2t&Exf=2t^54k$DAFe}@xa!qL z;SAZoa2~>oaA}F}r(?zi%Q}>&l5$ueySI}zKS(KW%yYOUTv~vaor(}C=gTr% zd2Gt3C;M;C`*(T_z5T1po!2EGF%642m(8IFzx@NC(AevwLC^c{vwzuupBIccu3&Xy zS;x#nS-}{|vH7rRr*^G+n`2jRG}=F;LRXe> z`iz3_6yf0>@FvGGjHUIQbk><8n4jb&TU9P`h8MYM1vuP6`-{Jn>IQZ${4Uv7T2PUQ z$?a1x$(AM(VhdxvJDV_21>*pX%J5BjA@yd9w|$xNi&*@*BXlq5=fUTF&fo@cuGQNMLq~1EgZ4IpdL~N=0{NA%pY=Q; zyt{LXBBmzsFH%3444u>{)d^K3J{kx}>M6J0bjj)Vr_EnaGzq}Z^I4Fh!%Q8vk z_WBLyGqK`VFy2;@i$evWE;`XPcY{%n7MC2Sx~k+hQ`c)g#$+6W!BhAPODM1|1zw<@ zhH!lwu83jnjoJA1tvR~mVyJqWpLVYrS~Cy5*87xGPiyW(tynGcyA0;xYD&wGHx@8O zhCiu68^?E}ry?P~{FX!2dj68k;Ox|e6ezj;$MpZW2^$6L4YN;uG#2GmTjDqj+*8$V z$=U?%{in|HG=>!*H4trIPJWs6xf_06I1QTiA@0h}Ta15vXB7Zo*6-XZ6hbpWVKcM> zuAk1ok^GT={}sy~qkZSY7}i#Ekccgip$+*OamAC_*H06d_V8%FC{c8nl#G}m#7^kN{~L5n3%=C{HFb*tPq2r z5V6Tr*wVq9z0B#TxA*6$RnO96W)Y(=x41bT<;ar0j=@U9$HQuWmsg20&TcH&e4OHp zF#}9>DXnCdN`Kn@ny`&N;dwc6Ow8=JxeA{?p4SO?Nl>3;vtA9)CGemRUOoVifajym zRNg5eVF^X4!oT?|bVh2#s$2Yq$uP>V7M;PRRMDLA_5K~57!JYEkT07V?MTfK;F^<& z3TxDDQrMhQuLbL4182(Z3WACy|M2+2nzZql1j5DX{fvfXZ&8hBrIG3P0PJC7=+dGCm+T$^F014S2Y zz9Tk|Wy1-pqam10a{6BT;P*E*cm7jXN`t~cZIwf$(t`@rMtAnD*{-V7-|7@P*00l} z(w1N~hRbHF#bN&tF)K|+8%?C@SVSaPrhgX}MOO~16K5K>2luTFWs@kO*{tA?UB>i^0J8$t_li#Ss zgZR7!K=M135SR9V%;-fb)ihSvGu&LQ%az;B@Xe(&xc(|SN)DV~0x6w81U#*wRXM!% z`fG=Vjw9hMbc<0~t^of>+TCgpf6^*oEqz0NAQ-5b6MTEBe1KhIs67wHgS0Oz ze=lm~Ea~(o(hs%lK1Y;&tzuLZA(_xxC3%I&Do3SkA*c4MXxIDDn{!@8Q3XBXkI!DYmb6z_Mon)x0-*%0ESoq)YL&d)AI!&-cZDxpz*g z%A)FvATpGfu%qCwD}vrnhp5H@th=>37#N$y1`f6>W~d2Xc+be>cvi^}>;7*GvMHpG zR*nIC_F-WDbt{LL72AgrRM5IIZ@qTvKM zR#xsd_biA0c2=RkWx=kK1E~GQ-4K+GiO7-Om8Osey*nf#MA1wMrWgxfWA4)5iQW~v zC~|;vW92R`a{B3U-|s)i@)vxEaRRzj(T8_C9Yi@?K5OS_EQ$MzWgumXu-Zzm+#Ll- zH&WPZR$>CDdV*&NH&Xb!W55)h$1fyT$PI9?X;DaSR))RrZ`u%PqV`{HF$;tn?$hH7(#uE4tsZw^unN0lG6>Je?_joCj9p?CU9XvOEueJ*qOhF18m?_nrqld zPM($Ay>$V^<+A*YS&ALKSap8cOc2pqZMAXh2z`b1pag{E-;g_vE5FnjWVsX*I$Ww6Z_`F68CSt=6(8~AS1b=-mB7r7B? z?TkT3FA+&qq<{BOu0{6N9_Z%ZkJUSi<_}-=KNUo9XUInK&G%Mwq(jg;R~h5ixLwmI zoZ*)+c`sK;7SgJm`1ks)u^s4h)4KipeX`jQL88+lb&N^D9Dn`Y8}(Gn_gU;o>qgo>3|nh!k!b&x z4LMJbbqdhuIYB!wp0f$*tqvlLp}(zEs3_ZUq=yjxs}7J^v?6wwe1Je1H_V)>+m%^u z)II$+r(BGpk7u+o)oc>0ZF64zaW|aV5UuYoJhY5k>-+b8I=YF6p=KDKHdzzz@avrK zx$K`~50~aWxs?%&wL`n_Uw+pU?*GT>Nru@|bey>UH?tg6FU>oLU^#3rGFZctHTE&q zk)D_E*Bz&wIf&4SZhrU%Xzb;3^H4li3rO7bnKkdH3G;yA+3ID#RZYmvjJ@{W#$H7G zc9gx4ewI#&`0a7nh8N!EmqK&s@Qj}u z4$-Wz{_f@L`@bzUIzG_c3Q?j|#Ov?e4zu%(-2+Y(Ger1+4wf%BRejAEv{T-Uju5iR zK|W%#N9;e|GOGGQ_Axt_62wKZz(=qh$_A=)tDkkPVb!&Xw7xm%wsF$9I`xTi44DhH zR*8W&OM~xs&idPiJ)^@^^bfH`_O}hQ{zVDI))=D8rET!(=amcgKFqBr@ZT!(cn|*z zB4dU+JVg3+M>t94Xf|EgNm#rN&EX+&bF=?>*DZ=AC^bCL~<$5n~Y7=pUy{ zNkQ4&)sXFg*sT*s;W);nRIIs5DxTd~6IIA1X_tfOmxc(l;}prdZ}a1%+UqKV1ic^_ z>lTr~zOgMZKEy-+}mE}5+c&UG|z-FSSJxc;Zm!5%5wtZH?1 zl~_dhF#%%6mMX<3P+8zl!ID<3LT0i8<*If-R7}udNK?{qE4<|(J2rq&452y7uS)*& zbpfQRwO($UoCodP>=^d88Imn=fyEJ(!*z8ba9k$iAEpE`ITGM^W7Mv-EA@aaI8PVo z`Xsx8ns3=LxDOm7PVy6%W<`=P!`gdq^=wo1bGbnkPOyE@sSX}}ar9;O54}FFL#FtI zZtqFWi%jgGY2bc%RcG=p7>1uoQtwI)y`J*_nC`U0hn|p; z^u*^c;}6CuG9UhI(1R&dYmMA#6aBHD_Jdb}T>huy<)TAH zu}fb2zFWS~jnfbU(DnG?>V53_v`95mj{!EMIJA4%=rT31AhR-zCqLBDR`y9R7jI4V z?y%)nQ}KlV=D;tSI0I(v0NQsvrD)N(?oiVn%F%H0OsNVp4`;Q$ zBl;`0TJ!||0FyHtYH4i_(QB2MOX6#0@H4M-MCaKtS9jywN#!Gfquvd#IxeHoRnq!D z{p*XKD+o~oYzG{7y%imX=f@Acj+N!b4Tr0skI|67VMp%~a>jZFo-7{7CW?{M!`<>* z^-&KDNHB~GL2$E7+()c#Bp!q0e_d3o_DA$<+zGsVxl7V+*C-1@bSYID+$k$`iLOeV zBFtoC>W^~hl8#hz5$gH(vT&0yIceiHP67KaBM#LPekf$DRBn5fgus;#x2&_mRk%2SsHH!G$Hb%$s?@*QZy95#}J=e7te+gxpxL9nV9G00Dsfg_KTbl1M zdg>ka|2MPk(4WQ8HO;R5FhgruO zjUtZVMgmvW!ma;4$%)A~#}&9arPeVnWcyIV2yxj6Lq|(`to(mXQ5B-J_fs>mkHlev zZG8VG$&3o5`5qD1Z}{HwBKRQ$wC7N)Nq>}eTwaHPV6m7nSciT|qquk($q3=eqFy?u zFNa_9Anu{LPJgk@t30G~3xYXgrc@~_{?P}!vJSPtt6QUAEn$Ewm>I65u$f4;J;#Fx zXog@H+1TEnX;ev15c^fTd_P_}q41J+PiQJsJALPbXC_Y8+VfL<4Eg!u`=OZk}eu3yK1QtTjg#aV5CE3 zv1^;!BW4WohU-29@^$WvogZhFv|#&<%z$Zl&Aa@~2GRm-!?6c};h|-mT%7!G2&0Ta zZjFwr;HstauO6svtjKyjjTULThAWsKdi^*ZJ|I6Ae;jqVc~{EaBM+bgHKQCVoGnki z4SddDfi0Q26)E#oe)V3xHl6`&&V{QS53$xYs1@1est7HGouIWm+JZ_;eiQC5c2Z*5 z(Bqhj%iK|9@@jlj4bHEkR+`CnW*Ibga{8>JCQ6#UrdlY(f22-2U7ZyO;7 zcIeZdFmP)u=%b9*3})LX0hXrpRh@w0u#2~keQbg@`EWm22Sx&?-`rNq=70?75w_ER;^lo0cB;YMiW(ir=+E2v`{+qm zI~c|ue_C$!I{t9E`PZS2My-0f5lRD%X#-E@k->;zUcZpq1EoNzlOC25Y^Q2F5k!*jKE2~Pv57@7p;-A>b_clPA7bA# z%-pLM5n4RAerW@i=!V0lt$)o4iA#WqiTyTkS-i;_*WyhY zW;Dg9(4qRFNKK4#)4c@pk|+`(^L0953Ua1(qZd| zzu!@_RwX8q$W>xavzu6-UtAo;6}LGOP6rVj(aq0xdlU*N4^teM2v-rYsmqnW^I-7p z*C=fH((C!Q6}C5F+0OLT$boFGl)zr3X+O3+_L_J`9j{AH43!?H@S@O~P_8fV{kw)w z^YG0Vpj9U@E}i8cOya33!^Nd7_?*}BaQ4?b?Z{QwQ z(|iGT0o-*@nNx1x52ggm)rt#3jbz!V1NJPn9tih@D)W0zFjL!|B>O4%N8c8X5H7Qk zq&L2~)dgHPERP>g=D$OGBq0_0MaQDfgBQY%sU{B z4_TnFd|`C&eF>~}7|H}O6T!Ev%Ovh8YwF#Lvq!FcmkY(+0h{k7Y7}c@U&pyMMb4Ib z2cTuX3bdQ@8tTuZfq=qlLZ;j5)Y+Voom;pt`I>a$n;*@=lzn7(wd<~` zqLU8Dq4}1M?`F5Y9tg!&QL`Jep?-;~EEpt7_%VF?ZUmKZE1qM@isj$H66zE7AzUAn zy(AbOXd#|6B~o!~L~FIcYfsny_4m%x^w?P5+nksA8Fu_nSBcq-&e|oQVKNt6O!_{_ zo97N)Gtr2o)v>q+?*nuwDejogg8#U7>QT7OUxv*!q{kMnlCm_dUhdc=HvEOylD;ak zP>wl-p2a_exQa2z#L`TIga0N}a%=c6%R_K#2jP07|0pX(jjCdhQY>JYeJc;y*T=7x3=F!MtL+-kKxVCeu%x$y2;LOSMvDm3d3H_cMD$F-=&U zd&MA0@cLJEaeYCY|Ig2ze{=kcl|aLLc|7}6q#mqsML{2LF4_KeW;IR_Y1fzzX6&Ry z!E5v+%%YolWbb;8HVnJWOM}92NZKhP`>Q|7qnY+gM}(`rp4$cq2!9xMOoQ7nWk*-~ znlOXlDl(;NI|WSLsAoeiotC|Ll1-0V2m#r_i$i6`$?1XmR#ZJFM7kOQGpzM2((nWG zoH0jC@{Trd5@0zFT(nL7R2keEqhaZB_ufb>rL|6$M%*i4PPg5SDX7*yl7PUGE3$5I z*H1~{>i#_ueD`Hvv{9VUn%Itz8j+8>Kvy^mehiaNt4ErN@p`DXcv6Ti;#K=UO>{1H$@^9hu2|H) zb#g=w72X&ca-320!eooR_1MH>{`*+@iAmBAZGmS_DB?gAbou-{YE7VADZ>7XKZpY_ z@PNR;&_0(n&3fNif^r^fX_Q8VSqsau)8a+F*g8es@<;zY(V?gk*+={$Cp1TOM7(r* z=VnNcCMMgBO{F2Ij2^tps07Uc9o9dtR~+~#=_c+JEAZEMdw?z*;`GG7`T7v`h33FH z7_5?iB?u~(#SUK9qVl{R7&-zcO2hSDm=Xs@P5_tblUE@Z_cZJ@y1KJhj?ObYu*4D`c|1|-yaUSyKzYfZc$r%v*Z=gSe91B2?vCTZL*zu>NO`+& zz}4B@gb!%PeGw)rP9<@?qP)08mVtBh*c*BGDb-5?);d$IaI6~1UbNz^R^I=%Ag-(P z?*PUPRzqbHup7TvK1j&zAXf!Go^duop*#2LpDBDLW6Y7BLg*7g#`w=rC7j@Z+d23L zg35p?CB6;bBDl+}snQ)v@dJ z+vJAnzeSoxS8pPfb!{S#_qc39@ z??gwy*P$$M!Bg?!dg=axbpAw5qt%VJ(^BSc^w`xwK_!!@Z$-`bcAlk4AbD+8umilB zyjb9Y!YQZ<%L+f%4c-rdycZw9Y93n{E=138*gqzm3PwE0nUP0m_4oaFI_shv zJz+VLcro*ouhf&8=}m-eC4;amlH?w++ecs%0U!ka1S6*o2Cn3;jpJPrfnWp|0`X6; z&57TX2*Ha(TVtyI;pOx2&=ZlS-!A1h>q8VsJ1bPf9cI0LoPVD(tLR?JQ2W)d(*i#R zZmJaPHrQ(^C<~>-y%4P&ZW#SUt;3oXVq<4VAVt^#x_skag7(JKW>A%(5X}Yhh}tKU zg)sW8|Lc37FM+SBg2G>jQ-YoXYJ!XGtM@0^Tm7|;_o5TDc)B)w#-$7G3h+0>QIz$|)yq?f z*mk6;EF{-vO%|J+aZa;ft1p~lmU2XD4xhV!{RaS)s7-G2z2`Z!J@q>etJ+9z8;EovhqlSHdLI9Fq*OC>PEet%Wxk zI}0hwwu^ma*uU;{t+@d`_Vgo?6?3lbh979v1wAx;qdmiJ|1b7CNaccHq_H+&pF|>Z zi^~rGB_`IyNhgIA44l}v9=3XFV>F1#52H()8H0Gd__9UsZh9I!e_0SXJ6Gr1*U0V7 zf>(0J;FJw;Hp5QhDit4@Jq<7bJ_)&$1urTkU)%mAHkhYOt0I{(NHPa$8c1TJ)cxVp z66pw;q2$#0xrM;ukiSMz+E7V*zYVdGv59R%Kh zy9qAvx|$aTF>OD$WKw{2LQ5>QWFmJI7k$NY(i#q$UczEo^zHaAYA2ek+GS7!hC`GH zH!EmhrbzjA49bHxA5THKu+l5fRsRCO6tpmE#9P0)Q#dKAV+g%>Ca^nA#!Y)&DmO}= z_CXLWKBwEOA*!ziK~C8`s~88gUHBw({Ve*O^bwpm%Ya11mk(bKP;)0nRGsAs=dV(T zdPCjrRz-3eK;bq-Yojxe(PE-fvozVxbvP@!Kmre3#rM9~G__Pa^v}2e*!Ft|E_# z>7N1NuryVVOCuMjh21Omx($kA@q18Z@#STEPF0FF$>6f-@D_YVitFNY6Jd<&UY)}r2vw7WcQ;s-TVaW`SSVPAR4XdUD>@*3Ol-U*Sk_31`; z^O_!`DLEMx)>1mocUl<5#xA+g!`J3`olSe6FbEQdWLk33bfc1ZE*^bBOwLxWfjV^p zbOpk2w$oD3+0tbn>He*zyeBOb4bDyVcg9*Ky3TVCl<9ENmjGgAX89VbkFok~uMPdz z%~10q;yOMz054en>-JWu>#N;4<@ zIbk`CP1$n)R}E;*{ftS>VElUh1@7mjCVKOYOVXsCf9lfF;E~h6 z|CuTqkZqF)7e$wdLtg?qD_%K{^Au|VFb*FkHpF1=ihV}-ORCHR9MZ%(zx8UT`$?y9 zLw+2&ul(Vak81wa;dKXPn69)x8>`{pg<1X9^?0NbCjO&Ys04Y>9- zJ9I%Z;!2U30iP?P?e_V&jMBXons$Qc0*K+)W8azUHSuDo!PV`hI{9K9=XRjSFml&- zo_#Uf=5<$?9@oGU9q#aR{AZ=$q6A)fQ z7@w4R7=sqrBR5}L@%?VX2~PW0*npo=E;46fK!F@-Kp_+k_mO3*RWxxNxgn{bfwByGX zchsIUr|_|04vy7tl~JTa6>>smt?o9V+_o=D4#pAmSB@3=r~0DFnB_G-LI+smym{c$ z2QqKp2G;)n=l;Xst9--nOxbFZ)_2km$%;RMFMj~I9_jug%`q;sD^T(v zr~N;KZ=azG?#cC_R+~((a~y_#q;M69=rF(>%|s=I#~f*n_2r>BL9$m@x#QDdv-=D-NnUYNMSqPP7J3lj%kr8^W84#XpO31$0}Sp(q=EIy3%7C@Jc`Hn-Ql06pIHC)mQch7#q~y38$k zrls~Mj*(0l9}@B|^z@?mxm_GJ8md#aNJAHZRx@U=v3Y*bjoq+y0%Fj?axk*|iy5-@ zgl^NvlJ0=Kz~VBFtOle`yit-Xu0eN_vH4{kCYRQ~M(AKTmz_-4i;}=mGX*eO;Da1m zegnBPO(h+e6x0a^{}FV5`ax9xB%~}8^7CVF+T~)kq2Cfw_sh=jPF@A2;bMxeHC8~l zFR8e8U`@ZZQoCgEz`dx-+;=mi405=oFN7o7lBv2l5cw~H8)7=+671!=x>tv!JRE$g zlLPlIX`DDg1z;K9;1CVUXfX z*%kZS1M3>K&bTF_GgM*hE$+ADlV0x$)Jop!0_((U zs>f;ChbuO#aLV}Sku!40Z9ey1JZb!q$~&bE(xS)2K>92@PR0$9krql4*{RUIGPmxw zP~)wfcU`Ym97@982Poau@+YsU;oSuZecm!L*Ac6ibeJLAG%pkjr5FO#YB~WWJHH~X z7q|FKPT2zQQ{0}%NmeX<@x#Q$E@N;HyIYr!U@~pr+*sK9mEQ-NS-3nAq`|Ygsuo9u{ z0$8nC$6_(FMsEl3;D3(^fLJ5@e?km{d+H#p1J$_TUK}KEr?hJmsrfkamq{8yKg9uq z2KHCD_SWprLUIw{Ib@%fLgU|;4cnCCCYH~zr;G6AIf zNTkW{>q1qD>*DjaJ{27`d5^=khi)UdY1X-lKNs7C`Ud|L;4kn<2LkO)jxCNeNRT95i>LUAuW8tGU>3m5?PW# zEW0_r6v!zTy&(O^hDh*k`v_GlEnIuW}cwE8B_e~^u#+0wzraUVK><)V~1W9HwB2y$azK<{)N;w`H)?t47nR8LphpFHq z{!Q+p#QbDsc+sqo`X`~h?^pl$o+P|)6QSQ0keR9WrVC3Rh9J+Zw%_QIO}sMaaNebM zPZJNWa*(t_?0Q(2Lz&*NX2zKhK%L&Mtib_^sjV!K5Px!MfHJE>J{n++FaK_piNc~) z#PTN}z(gU0MEc&)_kNW{Z^T9i2unRT$w$~00EHZ}?S8X*V(adVevKfk2Scswik`=N z9jZ6u{|DPJIySuBLysPN-$E2Ps7r4*| zo3w=jew{gqB{>P*J>(Sw$lF48?azLd3)LkZtNmkiF~iFjvU!#>_#{jLxpx9Xk{vqKyp zvB?Q#!=5KWhK#4I=Hg8se}H~iQ|a_Y+p#dU9WYA5_>316dX~kg-fN|?V*G9C1XVXY zH8F!(iB{u>ot`{P$Zb|8`iu8ay$pnz;Xz0E#yzA(_vG)xW#~fWUQ!ueIXfJ#MXX6m z2>6@u9&E;ov!-lxgPFIlL1V~{HI?n6jpG!lyhxz>tDnCXc?hxg&UYbTx%guYHSDvN zM76oB3};UU0$;&Q9=1T8jP0f-#AN1XLj$jq7x2DLyQ>lC=V@Daiy4^vb@WwZjA4v; zKr2&=ajOY4zXE!z2~++Dw=kI)NnMVS?&V$b^Cd#z?~`bJO=nn~dTCh5BHqSX!86eo77 zs6wYDYo^;EwY2}!xqoyN5dfOp?SsId!g}%wvpUjt!xl4i+#Yh3+4s$IWo7vBKC+q2 zqW{_R=FefZ`G=Reg~f0NtPs?sS6`f3M&o|&2FDt=iBFV1qsbr(?m zUMKUJU0+pSDcbzLXZPSq8xj#nyd5SH-ry2&`FZ1pnP6(w!O~;NAr4x6PlS?{P}#fc zkP1JyMgL{%Hl|;Z5cV9JS=|n$Te~b7+^T4DY!n#wa|SC5zxZq&7sAy`T5m{46*FBH zlT*d5u2d+MfBd9Qxte_t;r2^4vmb!~_l&wToEw}>XMA^~?SsDwRBi{$oPP766l5r@ z%&9uL!Qbn9%KyB${%!dMfX&R>*yZe5id@|u28|?@G_n8Yu+PT2O<2emE@-8EnQpFX z$3T&yj*O=ZTmCToDDWQ|-gOtdWJ@caYjM@?^f4!fpqDkKJc$yEp<$cu?nq7&!qO+* z=YShz)PjY;O=XQOLLqtXPcQKFuGTavp#3LqMxH%(GCQo6Fue{?k4IHV++~ zF{a!6Sj$ML%+#OM*H6bQh++(9<@YxVqa*&YtC$xcz)BwPu)Lg|Bg2Wegh2A?+GgYolhbWP>TbH@^r)5T%a+wBC)_XJb&Z#825);bZzuZ0Ge$sV;9? z_XNWnNr66jcr8_@XJ;jwtEzRF0S{! z=L8-GTi>71NycO9Li=Tw=d4sZ29gVTxBuDHG0aZtpfC!Z7BD`)6jlwwfEpJ^F!U_*_Wvq zo$+`@*1&wJK2dReXOrfl2 zt0e#VSJ&G6r5+!95jDm#%fbdvH16sHqWAe6N%F(zZ7Qe5BtZA( z896A15J$UEOH*(r*SLS$+)W^_ce$1v%(YP&Odt0PV-WgODui2k3joFLl64WRQ zwi~QujiICvqY9IssDA`DXaG(0nA}ICg{=eP76;BVvtLgH^o3ZnVh_8)jk(0HZ>|d0 zN~l@oaQ}*xO#1U}lo5B*IEwJ%X5-Eu9)jq0tKF5KzK>Wefa@crfh4+|G0--ETjjxvl-E*g8t(N-Os z7UVd0FpFWU$=2&LA*q3~0i8(qY z{#y;`jxL@gF}dp6rDzO3h%9JwoVYNeL|(bV%1y0sHchoz+5F}4&qs*%&O1IvGj6J6 zShqppp)5hOnO)LF^1C}Dg}Vx)6tyq z%*3Atx{ffBM>7EPHH~0sR zjSlac=xQU^$}~&HF2S||pVVD#!(-zG#FDmc!$;xk=K9t@Y}HJqSz9W4<*!lYfhmDk zQiN?c{jc8M(t}b+wwi%7iS$izK~HEra6>lOWAIS4Jt92X@}yTx4yvAP;1l3KGP&C zqm_N5k6NmBT{9q~q`CNy{(eRxdWVq<*%VO_kZF>#%|{XX#?Jr%)#jq_<*ZGPXswl% zu@20@TF;}}YUwgAoVxVu#hjFu>hCY3w}bk_O<2Wuhr-}cW%waW7olt!{Tmg3yaY|S z$k33VcRh)osXE@8=GS!R=W``rn_G3)Tiq~9vUO}}HhK-D0l8%rTFJ;f>~!VKt5|A_ zw#grNz=nFN&pM_<2}xfk0c1ntmm)j4K!>@-L>8G>*v#)td6U=kRAm-3O;}*|)?r(^ z0K-sbwN#>S=AyrX%`f@Dxw+TH?<3Fd3i!R`xYW1m_>Z}aQ5T<3-Sy9-kB(ZuA4=ym z&3bPnH2!A)?gvUHNy_FN4*fiB!_sZTIgLx@ou(7vj((j+D|+dNX2;&p`ErU@Hl|VF?8jl@rqX(I2pQ^a}()YuBhF!IQ!j|YZ5#}_Rdm}kk-xAv`#&nnLZuvtxQpZ4E88lD2 zY5XdhTK5hjyku}cZ7lI;v?KP>)Y$jHaOApXrQQEfD{aBZ`?|?W=^Bu!$r6_l7MU4- zFmG&Iz?#4tllS?MgSFBNU%;ME9&VF>`$coBr*9XVJqJwp)qpw;vJr})($4?~V z@u`LdBX=1G8=4G`Nj*~=IR2r#;XECt`ITT&;6GE;lL9HpLu1!9Qe9+sPo-X_ zrlVkm_Q0TDz}vWDU;Ug7dIdAM2Om^kQiB?8Qg=}w#}nG|A>Pslgq$OhH22f0tvf;|r4Yr|W$m@~HM&!3`(5A@~ckArx zxq;{9&2t9^s6ELuMi|**6gbvcJc#tv!eg|v{qwH@I{<{-+ zps)3ZQgkvSPPOuq>xPqvs^xyE_!+qB&UqhGe5W~hiu;L)H<{ym9p&i zkQTR)WNPV!TznqZQUwb-mfDqleyebxl?(HssLKS<+fQMC4z2lAa{5=Dg zHw+TCw;1N=60?3#mk%H~P1a~ud6J)NnE#A^N*%3M&?JiEZuCK8dA_kAx+T6ZHx8f! zi!BVCD+(DGg*=R^^~1sqPAWQHLu8G`8krCD^SH863v_=(G9?WIzT zyt#->i=m#SHzMwbzv05D`3WX}C(cd~$*hQUK+Lwq+HMG9C>9^{8IePoz^E>T!l8!b ziS`~prva|Bp&lk1%Ri1v{rbij)P(%nADXx631`Xl_*vxQKO1|G>bZglOlVkCWd{WL z#iXeuN)2QP2N>E1y}y^|0uU5F(4sCWwc8hCLR8uWpjvw?rM-#(Q5 zl=hn@QdgaS)TH&*EWZ7-Kd5b6A32_-rVS?GszGte5)aa7EWS4)d{-#3X9ah6^_!?I zuc8t;`xHKK-w>&5K?4f1akt%I zuxb5gp(EbxZ+?zj1Bz4E(=<0kH{Tft+iu4GGB3L%G=<$b)z)QT{?UqXY z0d_O)k>_5<^Z@Z(K1BOj_L#e1N+kZfa*p}{0KV+^A0gde9#0SEcz={}s?cHDtw8+w? zLbc1pet)4BxWJhO0FdT}{6eBoXwAyvt*E=Sn;2kt2Gf!YP(ealHjZKoKn~KEkGfQo zipf8XgSr)YsUY8HwZdAC1e)^5?Zy>AA*nx7X_L`<1wi41${)0XJ1&j|LKIGqiuuPP zdb@HRPQ0K=Q6fjW3CYSzR0=uT|6?Pj$4x_H^l0!d*hpdQrWuJztTwG0#_y>0V#ToOQ2z8$#Y?|iy6_jH}tq- zdr~(YMMD2f&kln#Ub$BosP2ua^&%OL8naYCbq^-te78KLou~IL>e7eX8QR5wuh|wf zyYK5poCLOmJmYw$#zB%QK)5|j(OcAZ%vQ`lg6wPOfA+BIjAE~1qOrknvrBrQd>iH( zvQfz36p+yOUw6{ZSjQ!~FcnhV^C#&ovErzV7M0Uu()!)YR;kh8R2p^cL%;(k zLs{yzQ3@^c!`+6q-11~h*5q<{u?Sn9xBCk~xMlOA=9gRlhl*(i8=ozw2|&ZQAdVvms)? z{KArJ*bHt#rr-Jw?Kuj%n89!HnI%ZO#1z0QIzQ5q515^tf2{GM|Cz3iG)%y)Qy9iw zpq3*~nw$!O^r|pbc;iF~QW0rsnaZSNs9y6O7dNQ0)p(scztA$Ynkul4M{@f&zS)YU z4iO=>L*MV!({xGB61TJLohzmz%-iG@m3^?tB9YuW_S49Up=y_P9|}sPr#}VuYKcI5 zpi!9mK@j0C!#My4tB+}1XC&OsV50#Ko7|v4?OM$cP5X3 zi3Su=8roQpHj;XrHIpGt+}Z6**G1;#Ytsx>nqb5+4Tx+v)mbHBL5K~a)NN=K4%NVD zz+r+N8IVo)M{A1dn|o-f%U@r7v?0=9F6Js`63za+uMh%gOv;m*5t?MrbJb*Apu<3- zxSvkHB18nB+!UTTk+DoU85-2xICLn*wSAv{0Y^asl@-|}*B38?J`vIx&ea+k?tNz2 zkdjyn6IjcnpWUnpVs_^-%g@IWCX2jaSAOj{Kg>@aR&z`b zu`p)k14)qhTXws@H0uUM^RUw|0$(s-udoJ9muU#oSSDFU_>igH=zn~)C1OJu4zUb; zUhTVMGbz-=^|@2+K3y;^sIo3Xg79jc7!Om?v6gjiXq0xh}@BDA1q?0Z&!*jtdM zM3Q`#9j2D31Feuhyk~HxyIOQ-YD0_XbTJlz#_FBKhg}<19IuS?AGVNR2n*On1w%P$gQm2j75N zjBF=P)=}*#*7_=nD@)kIZ?t!aJa9)*ph5J^6RVKoz~zO=?xl>{LGe9Q>fwGcNh19B zUm4RV;V2%FTk-OXb6sASV(COP^>%Zj5mP-oa-eln;JN~D&z^MHc9ZrUCQr0VVB{x* z&8)QoTG$3kC~SzwJi5~Z1a+$NTUfV4MYXr6Xlz>Vx165%F*Bqhel6f-D zokp4w4UCh8t=0U2X4YJIrTU1^J)t_XrA*#n&^A&cTQ3N42IPhUo6~w zPW6r#ymBz?0e=-KX=aPM5_Is&%C^sX1s75EF*~A34a}$_!=2vy003m+a||- z{J2qe*n&Iy(r;CDNJVH_&DU>xKij5=><}FT65`s(iKEP>vGs>DvC8mH)rS?pVHV(yG9vP!Eo}8;Uul` zgCyfDlI3zJ?F=L5v0H)?N4L_*hq<~HHx#VhVd)#n^_`X^q`xKn)qo|O2ej$cfmS~F{Hln?LM_VJMItASE4OG&wA zttU-RK6pdZD8e*@3IkHyb0&QI0PT+mE*H&>cvcQlaEw9NQ8bt!p0kT2w*uFtCpAJ9 zZ#<`2X`U6|jGEnrbUxHGaHo+HeOs)_oMW`J?sj3E7fq_*k3OBGca1zk%cN5UQ-AE$ zoqF<3UQ_m6LHq`Mdk3xcs8O^Tv5Fg>%q%Uf0_WLE!hJz5f{)|;>v49x>rI&4-hGDEX?n5MII6QrdKhujOy0~)p^sRmimVrv0Rzf?ry z(cNDy0(VX1tt8dFwzT?*j|+3n-|!WfU!FM8mzOy|Hzcj51=0=yMmGvfdE%F?!t6P+ z%O(YCr1;OH$&tAg`yMoO9F&y_Mx9exBMOXwOvKhqR>*XEuU?v7EaD}-H+aKB6%A|> z!^}}v<&f*H^Loyp!Sho1P(rHyY9#-t8k8Eq& z%Ot6SPFQ)6tle9XQsuKg^_ZZI>8UvQ(vPGHzVE#MAJSf-#U!S>!!+%kVID95JDG&#Kd~v2rG;PEvT=1pAqL=$Bfq;SG1>S$Ch8dU?k+Oww{f*55k7FKA$nHDnu| zY=HZCkd(+_AIEnN=4+8ZL_BW-iG--tO2gH!HMK+3;}Iq`8hr$LkFTHEdCN(&18ZP)+Nlql;*z3Ek{2l*$uSyX860A+z?b zWleIFiFIHYN}B2Mz47;gmFdw5QbtYE7Zd2oQwwn5XO7^^w**ZR%xQ@dwwE7O&r`W2 z?D4Mtf8PLBQX4;v3bH+uFy(V-Ci$7i^PJgb1OGogdr{gQ76#6{ekIdendTm=(so_@ z#SDg_-|D{!cEa)B-Fr`xw1V%;C(g*uOYkyc3 z6Z|YUiC)?3h~sp}8@p}(7$bj4?j$w2{pY>fpKhZ&_52Xt@NGXSkk57OH1I0)CgI!n zN) zv(`qa^PkHrTGD)Cw91E{+V>D&5IdGjz^xw3`l4iQ@%$tqMEJb7k7(Ul!OPn1WJ`*Z zVR)HbM*22H;wLubc^z&Z+%PMd(h-{H)-m{{7Q;(2nFY4tT@f=*HXo8%&Ef_;*XB?KU_E2{eEDwd!Kr& zZfFC<1U>@?>-&C?z9#boZT?A1bez<-0`{p(+45*dnFyD%zqT?2lZ?Lm*cBYf>mrR{ z{i7uKEKo8>^x5-QYl+h6(3dwGty*2y)a}D`z8hj#1nsj*PMwb&B zW4uAbYR;PB|3}uB2SV9?f8WMTSt@ImvP|}}M^VI7vZPQHvSx`&Ns(lknWxphv{(w0 zlp-pXvc&Y1Eo85d$S(W7oA=z9@qB;pe}%c{zOL)6pYu8Aii`J0!o0rvu5JK}oLrU9 zLG?{{*zJ1QFxU&eo?i#>EM#HldO zBh(fcBb?8&2##W#Dv7?y{CS968=O>taUvCILxFhAP2i$|T(OGNT_Bwcw|Fif5iiaO>ZEVD)?2oq&=gc{4w zPkSDJUq$-}SWL=wOlhWRQg*LPl1J~9Zr@Y8tyybjaz60Vd>KSMAO%U2HNzWDb(FrS zr1g0=but=2tBlFt?i9e=`Oxg*iyr@VhO?jL0=yq>S*jsrVM z)4)Y6=>Hrww|+{-;NPqKJopO)eA8lQ$<)vbHND?qe#OGogL(Pmk9>liCVV0<2QlsB zwOVs%BaTTr{pI_}esJ4WisU4A!}gk?;PHQno9I#QNO#rcf>UZMTn$vumAUo1;tJh! z-#GF{nlM}*%UxaY+^5gqBNQLPzq~R>v&|l}nc^!%;(sW!VRl*zmzJ7-G&%oRk>b&UzW$$KRvD~2(3XJ7pw@F4w&$y{X`AG%Y{;wo+x+;W^zu>>DOnri7 z5#lX*`d(;0<)t*IdMeyU?y|9&X(!)Hetu!h&R)(77>yKoy9;9Ej<+tw9h-^Ts1JXe zF_&F3rRkYe7SG5i@g^c<&8=BTNlk+U9I4M>oIWFpDcXy-@jjsAcu{B{7c)7EwIlLe z?rSIIaJ>&R-*S_hef)c;x|t6ikKfok>yS(Omc`WfGN@y`J4BC?g!&r;>?Y7y)o;G_ z^I1r`)uNux_iY9p|NbW)bt9`f*r|m26&2Hp*Nm=?+ab5Jy3&Z6f zI%l#ua*wBB`Ys6u9Aa{woHRnqKV{2{@DinDyrq&DMNISpZ5*I?Hhye=rh&I%~>nxtce&7MHNSJUxdYRH|trJkEi+ zugz9&{8c{w&z`Mu)w$X=7CeZo4PvTUZ@#f9My~Iw5qe3J$vLvbCjR^#HDk8I>6-&a zO6ASxo8LB0S<|f|`3!5arL89-(}-MwxpivCcQT~x+D82!c7LwD`NaL;V=5YO@5CYE z*&ls0AZ&>z7FNI=HW{~#xS%3emgF&5CI(hPoV6?oJ};n0cA9yvJQ8FVRP?5W_tK9= zr;hOEJz*zTF$WU$2*xL_|J>69OoWVx2^k@GM!e6do&cah@0FB1V-l4WJ1XqWD}T>B zp_MJ=rc_lUe}g~Gd$E4oWoP~4F9IQxCd)H_Bc79x{jouwmmSQEy)`&ZwZcr|;#76c z$j9p0d3V0UW=-vzQa`NfVmW)qfYDl#=H%#q5swi}Z(V(G!Owf3I@~2$=e5S&X#$F5 zzm~_<`EP#CKJcDpWO{tAl0TcBKZJ4@TWqLd}pi*|WLxb-%`<)CskZLj*O_i~54n3I<|8pcrE+ zAb5Ek+h5T*iS*ogewwlHZ3>Wbh$YEj0AQ&~Cx|qR-#@=LJ767lG`2YS8zP!W^!nG} zcp`uA%*((c6x}fh`Tpc2AEc_2e{F!`_%P$A)n|{E!gTf_7V;A3%1uJsSr{$ z2p1c1?CZTzDtG5bnMJjiJ~KNGaMc+)4&Kogn)#+t_8_=~VeGbvUpV^sqhiC1Y^A!F z&!x*Q&Y4kg`_YQZkoU6kp0kUlQKQc>DaqK49Y0||_>zck^!CrI*>!O60=eU^LmEjs zmaCn8#zl$3q(f~fd?;{|U)!v7Tw)bY6Crmty+15514I~PZ2^_ zJR;%aR;hvs@yC|GQn3f+BZ|w{Du8i*KJqsDgjROZNO+Zzy

)NMc_ps6 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 \ No newline at end of file diff --git a/shared/public/chain-logos/eth.svg b/shared/public/chain-logos/eth.svg new file mode 100644 index 000000000..11ef7af30 --- /dev/null +++ b/shared/public/chain-logos/eth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shared/public/chain-logos/githubLogo.svg b/shared/public/chain-logos/githubLogo.svg new file mode 100644 index 000000000..4cb6f620c --- /dev/null +++ b/shared/public/chain-logos/githubLogo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shared/public/chain-logos/kadena.png b/shared/public/chain-logos/kadena.png new file mode 100644 index 0000000000000000000000000000000000000000..28f08cb08ef07cc3af4b41680e941cb6b067e8a7 GIT binary patch literal 48586 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

)Hqat{P&>Jf@{z^hnKcXI5nYE+;z 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 \ No newline at end of file diff --git a/shared/public/chain-logos/multiversx_logo.svg b/shared/public/chain-logos/multiversx_logo.svg new file mode 100644 index 000000000..402203c3f --- /dev/null +++ b/shared/public/chain-logos/multiversx_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shared/public/chain-logos/near.png b/shared/public/chain-logos/near.png new file mode 100644 index 0000000000000000000000000000000000000000..27913acd886f1ca47544a5fd6a2603db4e46c7b6 GIT binary patch literal 2879 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 dBMD \ No newline at end of file diff --git a/shared/public/chain-logos/settings.svg b/shared/public/chain-logos/settings.svg new file mode 100644 index 000000000..0d6f5507c --- /dev/null +++ b/shared/public/chain-logos/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shared/public/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png b/shared/public/chain-logos/solana-5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba7236a90b2d10de28172891ca795472d24935e GIT binary patch literal 3213 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 jWVBdqrsMVRL!{ \ No newline at end of file diff --git a/shared/public/chain-logos/ton.png b/shared/public/chain-logos/ton.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb06e936dcdc56bf40f9a81bbf14a90e3c53bf7 GIT binary patch literal 4204 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 Eg4BC!lmGw# literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/walletconnect.png b/shared/public/chain-logos/walletconnect.png new file mode 100644 index 0000000000000000000000000000000000000000..603c47d313c258482bb8a6bfeae91f3e2768db1a GIT binary patch literal 26031 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 z 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 uL@D1{z0se3rtvi*f-?D05BG<2`uD-L \ No newline at end of file diff --git a/shared/public/chain-logos/westend.svg b/shared/public/chain-logos/westend.svg new file mode 100644 index 000000000..fb7cbc49f --- /dev/null +++ b/shared/public/chain-logos/westend.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/shared/tsconfig.json b/shared/tsconfig.json new file mode 100644 index 000000000..c9ec403b2 --- /dev/null +++ b/shared/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "target": "ES2020", + "module": "ES2020", + "lib": ["ES2020", "DOM"], + "moduleResolution": "node", + "esModuleInterop": true, + "skipLibCheck": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./dist", + "rootDir": ".", + "allowSyntheticDefaultImports": true + }, + "include": [ + "chains/**/*", + "helpers/**/*", + "wallets/**/*", + "types/*", + "index.ts" + ], + "exclude": [ + "node_modules", + "dist", + "**/*.spec.ts", + "**/*.test.ts" + ] +} diff --git a/shared/types/index.ts b/shared/types/index.ts new file mode 100644 index 000000000..eea524d65 --- /dev/null +++ b/shared/types/index.ts @@ -0,0 +1 @@ +export * from "./types"; diff --git a/shared/types/types.ts b/shared/types/types.ts new file mode 100644 index 000000000..17f5e7623 --- /dev/null +++ b/shared/types/types.ts @@ -0,0 +1,158 @@ +export interface AssetData { + symbol: string; + name: string; + contractAddress?: string; + balance?: string; + decimals?: number; +} + +export interface ChainData { + name: string; + id: string; + rpc: string[]; + slip44: number; + testnet: boolean; +} + +export interface ChainsMap { + [reference: string]: ChainData; +} + +export interface ChainMetadata { + name?: string; + logo: string; + rgb: string; +} + +export interface NamespaceMetadata { + [reference: string]: ChainMetadata; +} + +export interface ChainNamespaces { + [namespace: string]: ChainsMap; +} + +export interface ChainRequestRender { + label: string; + value: string; +} + +// Modern chain structure used by wallet-v2 +export interface ChainInfo { + chainId: string | number; + name: string; + logo: string; + rgb: string; + rpc: string; + namespace: string; + smartAccountEnabled?: boolean; +} + +export type ChainRecord = Record; + +export interface AccountAction { + method: string; + callback: (chainId: string, address: string) => Promise; +} + +export interface AccountBalances { + [account: string]: AssetData[]; +} + +export interface KadenaAccount { + publicKey: string; // Kadena public key + account: string; // Kadena account + chainId: any; // Kadena ChainId +} + +export interface IUTXO { + txid: string; + vout: number; + value: number; + status: { + confirmed: boolean; + block_height: number; + block_hash: string; + block_time: number; + }; +} + +export type SendCallsParams = { + version: string; + chainId: `0x${string}`; // Hex chain id + from: `0x${string}`; + calls: { + to?: `0x${string}` | undefined; + data?: `0x${string}` | undefined; + value?: `0x${string}` | undefined; // Hex value + }[]; + capabilities?: Record | undefined; +}; + +// capability names as string literals +export type CapabilityName = "atomicBatch" | "paymasterService" | "sessionKey"; +// Capability type where each key is a capability name and value has `supported` field +export type Capabilities = { + [K in CapabilityName]: { + supported: boolean; + }; +}; +// GetCapabilitiesResult type using mapped types +export type GetCapabilitiesResult = Record; + +export type GetCallsResult = { + status: "PENDING" | "CONFIRMED"; + receipts?: { + logs: { + address: `0x${string}`; + data: `0x${string}`; + topics: `0x${string}`[]; + }[]; + status: `0x${string}`; // Hex 1 or 0 for success or failure, respectively + blockHash: `0x${string}`; + blockNumber: `0x${string}`; + gasUsed: `0x${string}`; + transactionHash: `0x${string}`; + }[]; +}; + +export type WalletGrantPermissionsParameters = { + signer?: + | { + type: string; + data?: unknown | undefined; + } + | undefined; + permissions: readonly { + data: unknown; + policies: readonly { + data: unknown; + type: string; + }[]; + required?: boolean | undefined; + type: string; + }[]; + expiry: number; +}; + +export type WalletGrantPermissionsReturnType = { + expiry: number; + factory?: `0x${string}` | undefined; + factoryData?: string | undefined; + grantedPermissions: readonly { + data: unknown; + policies: readonly { + data: unknown; + type: string; + }[]; + required?: boolean | undefined; + type: string; + }[]; + permissionsContext: string; + signerData?: + | { + userOpBuilder?: `0x${string}` | undefined; + submitToAddress?: `0x${string}` | undefined; + } + | undefined; +}; diff --git a/shared/wallets/Bip122Lib.ts b/shared/wallets/Bip122Lib.ts new file mode 100644 index 000000000..07689ca70 --- /dev/null +++ b/shared/wallets/Bip122Lib.ts @@ -0,0 +1,439 @@ +import ECPairFactory from 'ecpair' +import * as bitcoin from 'bitcoinjs-lib' +import * as ecc from 'tiny-secp256k1' +import * as bip39 from 'bip39' +import BIP32Factory, { BIP32Interface } from 'bip32' +import bitcoinMessage from 'bitcoinjs-message' +import { schnorr } from '@noble/secp256k1' +import { BIP122_CHAINS, BIP122_TESTNET_ID, IBip122ChainId } from '../chains' +bitcoin.initEccLib(ecc) + +const ECPair = ECPairFactory(ecc) +const bip32 = BIP32Factory(ecc) +interface IInitArguments { + privateKey?: string +} + +interface IUTXO { + txid: string + vout: number + value: number + status: { + confirmed: boolean + block_height: number + block_hash: string + block_time: number + } +} + +interface ICreateTransaction { + network: bitcoin.Network + recipientAddress: string + amount: number + changeAddress: string + memo?: string + utxos: IUTXO[] + privateKeyWIF: string + feeRate: number +} + +interface IAddressData { + address: string + path: string + publicKey: string +} + +interface IPsbtInput { + address: string + index: number + sighashTypes: number[] +} + +interface ISignPsbt { + account: string + psbt: string + signInputs: IPsbtInput[] + broadcast: boolean + chainId: IBip122ChainId +} + +const validator = (pubkey: Buffer, msghash: Buffer, signature: Buffer): boolean => { + return ECPair.fromPublicKey(pubkey).verify(msghash, signature) +} + +/** + * Library + */ +export default class Bip122Lib { + private account: BIP32Interface + private mnemonic: string + private addresses = {} as Record> + private ordinals = {} as Record> + private keys = {} as Record< + IBip122ChainId, + Map + > + + constructor(key?: string) { + this.keys = Object.values(BIP122_CHAINS).reduce((acc, chain) => { + acc[chain.caip2] = new Map() + return acc + }, this.keys) + this.addresses = Object.values(BIP122_CHAINS).reduce((acc, chain) => { + acc[chain.caip2] = new Map() + return acc + }, this.addresses) + this.ordinals = Object.values(BIP122_CHAINS).reduce((acc, chain) => { + acc[chain.caip2] = new Map() + return acc + }, this.ordinals) + + this.mnemonic = key ? key : bip39.generateMnemonic() + const seed = bip39.mnemonicToSeedSync(this.mnemonic) + const root = bip32.fromSeed(seed) + this.account = bip32.fromBase58(root.toBase58()) + const addressIndex = (localStorage.getItem(`${seed}_index`) || 0) as number + this.loadAddresses(addressIndex) + } + + static async init({ privateKey }: IInitArguments) { + return new Bip122Lib(privateKey) + } + + public getAddress(chainId: IBip122ChainId) { + return Array.from(this.addresses[chainId].values())[0].address + } + + public getOrdinalsAddress(chainId: IBip122ChainId) { + return Array.from(this.ordinals[chainId].values())[0].address + } + + public getPrivateKey() { + return this.mnemonic + } + + public getAddresses(chainId: IBip122ChainId, intentions?: string[]) { + if (intentions && intentions[0] === 'ordinal') { + return this.ordinals[chainId] + } + return this.addresses[chainId] + } + + public async signMessage({ + message, + address, + protocol, + chainId + }: { + message: string + address: string + protocol?: string + chainId: IBip122ChainId + }) { + if (protocol && protocol !== 'ecdsa') { + throw new Error(`Supported signing protols: ecdsa, received: ${protocol}`) + } + const addressData = this.getAddressData(address, chainId) + if (!addressData) { + throw new Error(`Unkown address: ${address}`) + } + const keyData = this.keys[chainId].get(address)! + var keyPair = ECPair.fromWIF(keyData.wif) + var privateKey = keyPair.privateKey! + + let signature + if (this.isOrdinal(address, chainId)) { + const messageHash = bitcoin.crypto.sha256(Buffer.from(message)) + + const sig = await schnorr.sign(new Uint8Array(messageHash), new Uint8Array(privateKey)) + signature = Buffer.from(sig) + } else { + signature = bitcoinMessage.sign(message, privateKey, keyPair.compressed, { + segwitType: 'p2wpkh' + }) + } + + return { + signature: signature.toString('hex').replace('0x', ''), + address + } + } + + public async sendTransfer(params: { + account: string + recipientAddress: string + amount: string + changeAddress?: string + memo?: string + chainId: IBip122ChainId + }) { + const { account, recipientAddress, amount, changeAddress, memo, chainId } = params + const satoshis = parseInt(amount) + + const addressData = this.getAddressData(account, chainId) + if (!addressData) { + throw new Error(`Unkown address: ${account}`) + } + + if (satoshis < 0) { + throw new Error(`Invalid amount: ${amount}`) + } + + const utxos = (await this.getUTXOs(account, chainId)) as IUTXO[] + if (!utxos || utxos.length === 0) { + throw new Error(`No UTXOs found for address: ${account}`) + } + + let utxosValue = 0 + const utxosToSpend: IUTXO[] = [] + utxos.forEach(utxo => { + utxosValue += utxo.value + utxosToSpend.push(utxo) + if (utxosValue >= satoshis) { + return + } + }) + + const keyData = this.keys[chainId].get(account)! + const transaction = await this.createTransaction({ + network: keyData.network, + recipientAddress, + amount: satoshis, + changeAddress: changeAddress || account, + utxos: utxosToSpend, + privateKeyWIF: keyData.wif, + memo, + feeRate: await this.getFeeRate() + }) + return await this.broadcastTransaction(transaction, chainId) + } + + async getUTXOs(address: string, chainId: IBip122ChainId): Promise { + const isTestnet = this.isTestnet(chainId) + // make chain dynamic + return await ( + await fetch(`https://mempool.space${isTestnet ? '/testnet' : ''}/api/address/${address}/utxo`) + ).json() + } + + async broadcastTransaction(transaction: string, chainId: IBip122ChainId) { + const isTestnet = this.isTestnet(chainId) + const result = await fetch(`https://mempool.space${isTestnet ? '/testnet' : ''}/api/tx`, { + method: 'POST', + body: transaction + }) + + if (result.ok) { + return await result.text() + } + throw new Error('Error broadcasting transaction: ' + (await result.text())) + } + + getAvailableBalance(utxos: IUTXO[]) { + return utxos.reduce((acc, { value }) => acc + value, 0) + } + + private async getFeeRate() { + const defaultFeeRate = 2 + try { + const response = await fetch('https://mempool.space/api/v1/fees/recommended') + if (response.ok) { + const data = await response.json() + return parseInt(data?.economyFee ?? defaultFeeRate) + } + } catch (e) { + console.error('Error fetching fee rate', e) + } + return defaultFeeRate + } + + private generateAddress({ + index, + coinType, + chainId, + change = false, + taproot = false + }: { + index: number + coinType: string + chainId: IBip122ChainId + change?: boolean + taproot?: boolean + }) { + const network = this.getNetwork(coinType) + const path = `m/84'/${coinType}'/0'/${change ? 1 : 0}/${index}` + const child = this.account.derivePath(path) + let address + if (taproot) { + address = bitcoin.payments.p2tr({ + pubkey: child.publicKey.slice(1), + network + }).address! + } else { + address = bitcoin.payments.p2wpkh({ + pubkey: child.publicKey, + network + }).address! + } + const wif = child.toWIF() + this.keys[chainId].set(address, { wif, network }) + return { address, path, publicKey: child.publicKey.toString('hex') } + } + + private loadAddresses(startIndex = 0) { + console.log('Loading addresses...') + console.log('Keys:', this.keys) + console.log('Addresses:', this.addresses) + console.log('Ordinals:', this.ordinals) + Object.keys(this.keys).forEach(chainId => { + const data = BIP122_CHAINS[chainId as IBip122ChainId] + const addressesToLoad = startIndex + 20 + + for (let i = startIndex; i < addressesToLoad; i++) { + const addressParams = { + index: i, + chainId: data.caip2, + coinType: data.coinType + } + // payment addresses + const addressData = this.generateAddress(addressParams) + this.addresses[data.caip2].set(addressData.address, addressData) + // ordinals + const taprootAddress = this.generateAddress({ + ...addressParams, + taproot: true + }) + this.ordinals[data.caip2].set(taprootAddress.address, taprootAddress) + } + console.log('Loaded addresses:', this.addresses, this.ordinals) + }) + } + + private getNetwork(coinType: string) { + if (coinType === '0') { + return bitcoin.networks.bitcoin + } else if (coinType === '1') { + return bitcoin.networks.testnet + } + throw new Error(`Unsupported coin type: ${coinType}`) + } + + private async createTransaction({ + network, + recipientAddress, + amount, + changeAddress, + memo, + utxos, + privateKeyWIF, + feeRate + }: ICreateTransaction) { + const psbt = new bitcoin.Psbt({ network }) + const keyPair = ECPair.fromWIF(privateKeyWIF) + const payment = bitcoin.payments.p2wpkh({ + pubkey: keyPair.publicKey, + network: bitcoin.networks.testnet + }) + + utxos.forEach(utxo => { + psbt.addInput({ + hash: utxo.txid, + index: utxo.vout, + witnessUtxo: { + script: Buffer.from(payment.output?.toString('hex')!, 'hex'), + value: utxo.value + } + }) + }) + + psbt.addOutput({ + address: recipientAddress, + value: amount + }) + const change = this.calculateChange(utxos, amount, feeRate) + + if (change > 0) { + psbt.addOutput({ + address: changeAddress, + value: change + }) + } + + if (memo) { + const data = Buffer.from(memo, 'utf8') + const embed = bitcoin.payments.embed({ data: [data] }) + psbt.addOutput({ + script: embed.output!, + value: 0 + }) + } + + psbt.signAllInputs(keyPair) + + psbt.validateSignaturesOfInput(0, validator) + + psbt.finalizeAllInputs() + + const tx = psbt.extractTransaction() + + return tx.toHex() + } + + public async signPsbt({ account, psbt, signInputs, broadcast = false, chainId }: ISignPsbt) { + const keyData = this.keys[chainId].get(account)! + const keyPair = ECPair.fromWIF(keyData.wif) + const transaction = bitcoin.Psbt.fromBase64(psbt, { network: keyData.network }) + signInputs.forEach(({ address, index, sighashTypes }) => { + let keyPairToSignWith = keyPair + if (address !== account) { + const keyData = this.keys[chainId].get(address)! + keyPairToSignWith = ECPair.fromWIF(keyData.wif) + } + transaction.signInput(index, keyPairToSignWith, sighashTypes) + }) + transaction.validateSignaturesOfInput(0, validator) + transaction.finalizeAllInputs() + + if (!broadcast) { + return { + psbt: transaction.toBase64() + } + } + + const tx = transaction.extractTransaction() + const txId = await this.broadcastTransaction(tx.toHex(), chainId) + return { + psbt: transaction.toBase64(), + txid: txId + } + } + + // Helper function to calculate change + private calculateChange(utxos: IUTXO[], amount: number, feeRate: number): number { + const inputSum = utxos.reduce((sum, utxo) => sum + utxo.value, 0) + /** + * 10 bytes: This is an estimated fixed overhead for the transaction. + * 148 bytes: This is the average size of each input (UTXO). + * 34 bytes: This is the size of each output. + * The multiplication by 2 indicates that there are usually two outputs in a typical transaction (one for the recipient and one for change) + */ + const estimatedSize = 10 + 148 * utxos.length + 34 * 2 + const fee = estimatedSize * feeRate + const change = inputSum - amount - fee + return change + } + + private getAddressData(address: string, chainId: IBip122ChainId) { + const addressData = this.addresses[chainId].get(address) + if (addressData) return addressData + return this.ordinals[chainId].get(address) + } + + private isOrdinal(address: string, chainId: IBip122ChainId) { + return this.ordinals[chainId].has(address) + } + + private isTestnet(chainId: IBip122ChainId) { + return chainId.includes(BIP122_TESTNET_ID) + } +} diff --git a/shared/wallets/CosmosLib.ts b/shared/wallets/CosmosLib.ts new file mode 100644 index 000000000..0372c31c0 --- /dev/null +++ b/shared/wallets/CosmosLib.ts @@ -0,0 +1,65 @@ +import { Secp256k1Wallet, StdSignDoc } from '@cosmjs/amino' +import { fromHex } from '@cosmjs/encoding' +import { DirectSecp256k1Wallet } from '@cosmjs/proto-signing' +// @ts-expect-error +import { SignDoc } from '@cosmjs/proto-signing/build/codec/cosmos/tx/v1beta1/tx' +import { Wallet } from 'ethers' + +/** + * Constants + */ +const DEFAULT_PATH = "m/44'/118'/0'/0/0" +const DEFAULT_PREFIX = 'cosmos' + +/** + * Types + */ +interface IInitArguments { + mnemonic?: string + path?: string + prefix?: string +} + +/** + * Library + */ +export default class CosmosLib { + private mnemonic: string + private directSigner: DirectSecp256k1Wallet + private aminoSigner: Secp256k1Wallet + + constructor(mnemonic: string, directSigner: DirectSecp256k1Wallet, aminoSigner: Secp256k1Wallet) { + this.directSigner = directSigner + this.mnemonic = mnemonic + this.aminoSigner = aminoSigner + } + + static async init({ mnemonic, path, prefix }: IInitArguments) { + const wallet = mnemonic + ? Wallet.fromMnemonic(mnemonic, path ?? DEFAULT_PATH) + : Wallet.createRandom({ path: path ?? DEFAULT_PATH }) + const privateKey = fromHex(wallet.privateKey.replace('0x', '')) + const directSigner = await DirectSecp256k1Wallet.fromKey(privateKey, prefix ?? DEFAULT_PREFIX) + const aminoSigner = await Secp256k1Wallet.fromKey(privateKey, prefix ?? DEFAULT_PREFIX) + + return new CosmosLib(wallet.mnemonic.phrase, directSigner, aminoSigner) + } + + public getMnemonic() { + return this.mnemonic + } + + public async getAddress() { + const account = await this.directSigner.getAccounts() + + return account[0].address + } + + public async signDirect(address: string, signDoc: SignDoc) { + return await this.directSigner.signDirect(address, signDoc) + } + + public async signAmino(address: string, signDoc: StdSignDoc) { + return await this.aminoSigner.signAmino(address, signDoc) + } +} diff --git a/shared/wallets/EIP155Lib.ts b/shared/wallets/EIP155Lib.ts new file mode 100644 index 000000000..b4e7488df --- /dev/null +++ b/shared/wallets/EIP155Lib.ts @@ -0,0 +1,62 @@ +import { providers, Wallet } from 'ethers' + +/** + * Types + */ +interface IInitArgs { + mnemonic?: string +} +export interface EIP155Wallet { + getMnemonic(): string + getPrivateKey(): string + getAddress(): string + signMessage(message: string): Promise + _signTypedData(domain: any, types: any, data: any, _primaryType?: string): Promise + connect(provider: providers.JsonRpcProvider): Wallet + signTransaction(transaction: providers.TransactionRequest): Promise +} + +/** + * Library + */ +export default class EIP155Lib implements EIP155Wallet { + wallet: Wallet + + constructor(wallet: Wallet) { + this.wallet = wallet + } + + static init({ mnemonic }: IInitArgs) { + const wallet = mnemonic ? Wallet.fromMnemonic(mnemonic) : Wallet.createRandom() + + return new EIP155Lib(wallet) + } + + getMnemonic() { + return this.wallet.mnemonic.phrase + } + + getPrivateKey() { + return this.wallet.privateKey + } + + getAddress() { + return this.wallet.address + } + + signMessage(message: string) { + return this.wallet.signMessage(message) + } + + _signTypedData(domain: any, types: any, data: any, _primaryType?: string) { + return this.wallet._signTypedData(domain, types, data) + } + + connect(provider: providers.JsonRpcProvider) { + return this.wallet.connect(provider) + } + + signTransaction(transaction: providers.TransactionRequest) { + return this.wallet.signTransaction(transaction) + } +} diff --git a/shared/wallets/KadenaLib.ts b/shared/wallets/KadenaLib.ts new file mode 100644 index 000000000..a6825ea37 --- /dev/null +++ b/shared/wallets/KadenaLib.ts @@ -0,0 +1,48 @@ +import { restoreKeyPairFromSecretKey, genKeyPair, sign } from '@kadena/cryptography-utils' +import { IKeyPair } from '@kadena/types' + +interface IInitArguments { + secretKey?: string +} + +export default class KadenaLib { + keyPair: IKeyPair + + constructor(keyPair: IKeyPair) { + this.keyPair = keyPair + } + + static init({ secretKey }: IInitArguments) { + const keyPair = secretKey ? restoreKeyPairFromSecretKey(secretKey) : genKeyPair() + + return new KadenaLib(keyPair) + } + + public getAddress() { + return this.keyPair.publicKey + } + + public getSecretKey() { + return this.keyPair.secretKey! + } + + public signRequest(transaction: string) { + const signResponse = sign(transaction.toString(), this.keyPair) + + return { body: { cmd: transaction, sigs: [signResponse.sig] } } + } + + public quicksignRequest(transactions: any) { + const transaction = transactions.commandSigDatas[0].cmd + const signResponse = sign(transaction.toString(), this.keyPair) + + return { + responses: [ + { + outcome: { result: 'success', hash: signResponse.hash }, + commandSigData: { sigs: [{ sig: signResponse.sig, pubKey: this.keyPair.publicKey }] } + } + ] + } + } +} diff --git a/shared/wallets/MultiversxLib.ts b/shared/wallets/MultiversxLib.ts new file mode 100644 index 000000000..a6be49861 --- /dev/null +++ b/shared/wallets/MultiversxLib.ts @@ -0,0 +1,90 @@ +import { Transaction, SignableMessage } from '@multiversx/sdk-core' +import { Mnemonic, UserSecretKey, UserWallet, UserSigner } from '@multiversx/sdk-wallet' + +/** + * Types + */ +interface IInitArgs { + mnemonic?: string +} + +/** + * Library + */ +export default class MultiversxLib { + wallet: UserWallet + mnemonic: Mnemonic + password: string + + constructor(mnemonic: Mnemonic) { + this.mnemonic = mnemonic + this.password = 'password' // test purposes only + + this.wallet = UserWallet.fromMnemonic({ + password: this.password, + mnemonic: mnemonic.toString() + }) + } + + static init({ mnemonic }: IInitArgs) { + const mnemonicObj = mnemonic ? Mnemonic.fromString(mnemonic) : Mnemonic.generate() + + return new MultiversxLib(mnemonicObj) + } + + getMnemonic() { + const secretKey = this.mnemonic.getWords().join(' ') + + return secretKey + } + + getAddress() { + const secretKey = UserWallet.decryptSecretKey(this.wallet.toJSON(), this.password) + const address = secretKey.generatePublicKey().toAddress().bech32() + + return address + } + + async signMessage(message: string) { + const secretKey = UserWallet.decryptSecretKey(this.wallet.toJSON(), this.password) + const secretKeyHex = secretKey.hex() + + const signMessage = new SignableMessage({ + message: Buffer.from(message) + }) + + const signer = new UserSigner(UserSecretKey.fromString(secretKeyHex)) + const signature = await signer.sign(signMessage.serializeForSigning()) + + return { signature: signature.toString('hex') } + } + + async signTransaction(transaction: any) { + const secretKey = UserWallet.decryptSecretKey(this.wallet.toJSON(), this.password) + const secretKeyHex = secretKey.hex() + + const signTransaction = Transaction.fromPlainObject(transaction) + + const signer = new UserSigner(UserSecretKey.fromString(secretKeyHex)) + const signature = await signer.sign(signTransaction.serializeForSigning()) + + return { signature: signature.toString('hex') } + } + + async signTransactions(transactions: any[]) { + const secretKey = UserWallet.decryptSecretKey(this.wallet.toJSON(), this.password) + const secretKeyHex = secretKey.hex() + + const signatures = await Promise.all( + transactions.map(async (transaction: any): Promise => { + const signTransaction = Transaction.fromPlainObject(transaction) + const signer = new UserSigner(UserSecretKey.fromString(secretKeyHex)) + const signature = await signer.sign(signTransaction.serializeForSigning()) + + return { signature: signature.toString('hex') } + }) + ) + + return { signatures } + } +} diff --git a/shared/wallets/NearLib.ts b/shared/wallets/NearLib.ts new file mode 100644 index 000000000..3e2d698b5 --- /dev/null +++ b/shared/wallets/NearLib.ts @@ -0,0 +1,423 @@ +import { + InMemorySigner, + providers, + keyStores as nearKeyStores, + transactions as nearTransactions, + utils, + connect, + keyStores, + KeyPair, +} from "near-api-js"; +import { parseSeedPhrase } from "near-seed-phrase"; +import { AccessKeyView } from "near-api-js/lib/providers/provider"; +import { Schema, serialize } from "borsh"; + +import { NEAR_TEST_CHAINS, TNearChain } from "../chains/near"; + +const RPC_URL = "https://rpc.testnet.near.org"; + +interface Account { + accountId: string; + publicKey: string; +} + +interface Transaction { + signerId: string; + receiverId: string; + actions: Array; +} + +interface CreateTransactionsParams { + chainId: string; + transactions: Array; +} + +interface GetAccountsParams { + topic: string; +} + +interface SignInParams { + chainId: string; + topic: string; + permission: nearTransactions.FunctionCallPermission; + accounts: Array; +} + +interface SignOutParams { + chainId: string; + topic: string; + accounts: Array; +} + +interface SignTransactionsParams { + chainId: string; + topic: string; + transactions: Array; +} + +interface SignAndSendTransactionParams { + chainId: string; + topic: string; + transaction: nearTransactions.Transaction; +} + +interface SignAndSendTransactionsParams { + chainId: string; + topic: string; + transactions: Array; +} + +export interface SignMessageParamsNEP { + message: string; + recipient: string; + nonce: Buffer; + callbackUrl?: string; + state?: string; +} + +interface SignMessageParams { + chainId: string; + messageParams: SignMessageParamsNEP & { + accountId?: string; + }; +} + +interface SignedMessage { + accountId: string; + publicKey: string; + signature: string; + state?: string; +} + +export class MessagePayload { + tag: number; + message: string; + nonce: Buffer; + recipient: string; + callbackUrl?: string; + + constructor(data: SignMessageParamsNEP) { + // The tag's value is a hardcoded value as per + // defined in the NEP [NEP413](https://github.com/near/NEPs/blob/master/neps/nep-0413.md) + this.tag = 2147484061; + this.message = data.message; + this.nonce = data.nonce; + this.recipient = data.recipient; + if (data.callbackUrl) { + this.callbackUrl = data.callbackUrl; + } + } +} + +export const payloadSchema: Schema = { + struct: { + tag: "u32", + message: "string", + nonce: { array: { type: "u8", len: 32 } }, + recipient: "string", + callbackUrl: { option: "string" }, + }, +}; + +export default class NearWallet { + private networkId: string; + private keyStore: nearKeyStores.KeyStore; + + static async init(networkId: string, seedPhrase: string) { + // Derive keypair from seed phrase + const { secretKey, publicKey } = parseSeedPhrase(seedPhrase); + + const keyPair = KeyPair.fromString(secretKey); + + const keyStore = new keyStores.BrowserLocalStorageKeyStore(); + + await keyStore.setKey(networkId, "0xgancho.testnet", keyPair); + + return new NearWallet(networkId, keyStore); + } + + private constructor(networkId: string, keyStore: nearKeyStores.KeyStore) { + this.networkId = networkId; + this.keyStore = keyStore; + } + + getKeyStore() { + return this.keyStore; + } + + // Retrieve all imported accounts from wallet. + async getAllAccounts(): Promise> { + const accountIds = await this.keyStore.getAccounts(this.networkId); + + return Promise.all( + accountIds.map(async (accountId) => { + const keyPair = await this.keyStore.getKey(this.networkId, accountId); + + return { + accountId, + publicKey: keyPair.getPublicKey().toString(), + }; + }) + ); + } + + async createTransactions({ + chainId, + transactions, + }: CreateTransactionsParams): Promise> { + const provider = new providers.JsonRpcProvider( + NEAR_TEST_CHAINS[chainId].rpc[0] + ); + const txs: Array = []; + + const [block, accounts] = await Promise.all([ + provider.block({ finality: "final" }), + this.getAllAccounts(), + ]); + console.log("block", block); + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + const account = accounts.find( + (x) => x.accountId === transaction.signerId + ); + console.log("account", account); + if (!account) { + throw new Error("Invalid signer id"); + } + + const accessKey = await provider.query({ + request_type: "view_access_key", + finality: "final", + account_id: transaction.signerId, + public_key: account.publicKey, + }); + console.log("accessKey", accessKey); + txs.push( + nearTransactions.createTransaction( + transaction.signerId, + utils.PublicKey.from(account.publicKey), + transaction.receiverId, + accessKey.nonce + i + 1, + transaction.actions, + new Uint8Array(utils.serialize.base_decode(block.header.hash)) + ) + ); + } + + return txs; + } + + async getAccounts(): Promise> { + return this.getAllAccounts(); + } + + async signIn({ + chainId, + topic, + permission, + accounts, + }: SignInParams): Promise> { + const result: Array = []; + + for (let i = 0; i < accounts.length; i += 1) { + const account = accounts[i]; + + try { + const [transaction] = await this.createTransactions({ + chainId, + transactions: [ + { + signerId: account.accountId, + receiverId: account.accountId, + actions: [ + nearTransactions.addKey( + utils.PublicKey.from(account.publicKey), + nearTransactions.functionCallAccessKey( + permission.receiverId, + permission.methodNames, + permission.allowance + ) + ), + ], + }, + ], + }); + + await this.signAndSendTransaction({ chainId, topic, transaction }); + + result.push(account); + } catch (err) { + console.log( + `Failed to create FunctionCall access key for ${account.accountId}` + ); + console.error(err); + } + } + + return result; + } + + async signOut({ + chainId, + topic, + accounts, + }: SignOutParams): Promise> { + const result: Array = []; + + for (let i = 0; i < accounts.length; i += 1) { + const account = accounts[i]; + + try { + const [transaction] = await this.createTransactions({ + chainId, + transactions: [ + { + signerId: account.accountId, + receiverId: account.accountId, + actions: [ + nearTransactions.deleteKey( + utils.PublicKey.from(account.publicKey) + ), + ], + }, + ], + }); + + await this.signAndSendTransaction({ chainId, topic, transaction }); + } catch (err) { + console.log( + `Failed to remove FunctionCall access key for ${account.accountId}` + ); + console.error(err); + + result.push(account); + } + } + + return result; + } + + async signTransactions({ + chainId, + topic, + transactions, + }: SignTransactionsParams): Promise< + Array + > { + const networkId = chainId.split(":")[1]; + const signer = new InMemorySigner(this.keyStore); + const signedTxs: Array = []; + + for (let i = 0; i < transactions.length; i += 1) { + const transaction = transactions[i]; + + const [, signedTx] = await nearTransactions.signTransaction( + transaction, + signer, + transaction.signerId, + networkId + ); + + signedTxs.push(signedTx); + } + + return signedTxs; + } + + async signAndSendTransaction({ + chainId, + topic, + transaction, + }: SignAndSendTransactionParams): Promise { + const provider = new providers.JsonRpcProvider( + NEAR_TEST_CHAINS[chainId].rpc[0] + ); + const [signedTx] = await this.signTransactions({ + chainId, + topic, + transactions: [transaction], + }); + return provider.sendTransaction(signedTx); + } + + async signAndSendTransactions({ + chainId, + topic, + transactions, + }: SignAndSendTransactionsParams): Promise< + Array + > { + const provider = new providers.JsonRpcProvider( + NEAR_TEST_CHAINS[chainId].rpc[0] + ); + const signedTxs = await this.signTransactions({ + chainId, + topic, + transactions, + }); + const results: Array = []; + + for (let i = 0; i < signedTxs.length; i += 1) { + const signedTx = signedTxs[i]; + + results.push(await provider.sendTransaction(signedTx)); + } + + return results; + } + + async signMessage({ + chainId, + messageParams, + }: SignMessageParams): Promise { + const { message, nonce, recipient, callbackUrl, state, accountId } = + messageParams; + const nonceArray = nonce; //Buffer.from(nonce); + + if (nonceArray.length !== 32) { + throw Error("Expected nonce to be a 32 bytes buffer"); + } + + const accounts = await this.getAllAccounts(); + const account = accounts.find((acc) => acc.accountId === accountId); + + // If no accountId is provided in params default to the first accountId in accounts. + // in a real wallet it would default to the `active/selected` account + // this is because we should be able to use `signMessage` without `signIn`. + const accId = account ? account.accountId : accounts[0].accountId; + + const signer = new InMemorySigner(this.getKeyStore()); + const networkId = chainId.split(":")[1]; + + // Create the message payload and sign it + const payload = new MessagePayload({ + message, + nonce: nonceArray, + recipient, + callbackUrl, + }); + const encodedPayload = serialize(payloadSchema, payload); + const signed = await signer.signMessage(encodedPayload, accId, networkId); + + return { + accountId: accId, + publicKey: signed.publicKey.toString(), + signature: Buffer.from(signed.signature).toString("base64"), + }; + } +} + +// by spec, transactions are encoded as a buffer array +// but JSON.stringify converts it to an object +// so we need to account for both cases +export function decodeTransaction(transaction: Uint8Array | Object) { + try { + return nearTransactions.Transaction.decode( + Buffer.from(transaction as Uint8Array) + ); + } catch (error) { + return nearTransactions.Transaction.decode( + Buffer.from(Object.values(transaction as Object)) + ); + } +} diff --git a/shared/wallets/PolkadotLib.ts b/shared/wallets/PolkadotLib.ts new file mode 100644 index 000000000..4a82e8a7e --- /dev/null +++ b/shared/wallets/PolkadotLib.ts @@ -0,0 +1,65 @@ +import { Keyring } from '@polkadot/keyring' +import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto' +import { KeyringPair } from '@polkadot/keyring/types' +import { u8aToHex } from '@polkadot/util' +import { SignerPayloadJSON } from '@polkadot/types/types' +import { TypeRegistry } from '@polkadot/types' + +/** + * Types + */ +interface IInitArguments { + mnemonic?: string +} + +/** + * Library + */ +export default class PolkadotLib { + keypair: KeyringPair + mnemonic: string + registry: TypeRegistry + + constructor(keypair: KeyringPair, mnemonic: string) { + this.keypair = keypair + this.mnemonic = mnemonic + this.registry = new TypeRegistry() + } + + static async init({ mnemonic }: IInitArguments) { + // wait till WASM is initialized, in case it is not initialized already (WASM is required for 'sr25519'). + await cryptoWaitReady() + + // create a keyring to load the account. + const keyring = new Keyring({ type: 'sr25519', ss58Format: 1 }) + + mnemonic = mnemonic || mnemonicGenerate() + const keypair = keyring.createFromUri(mnemonic) + + return new PolkadotLib(keypair, mnemonic) + } + + public getAddress() { + return this.keypair.address + } + + public getMnemonic() { + return this.mnemonic + } + + public async signMessage(message: string) { + return { + signature: u8aToHex(this.keypair.sign(message)) + } + } + + public async signTransaction(payload: SignerPayloadJSON) { + this.registry.setSignedExtensions(payload.signedExtensions) + const txPayload = this.registry.createType('ExtrinsicPayload', payload, { + version: payload.version + }) + + const { signature } = txPayload.sign(this.keypair) + return { signature } + } +} diff --git a/shared/wallets/SolanaLib.ts b/shared/wallets/SolanaLib.ts new file mode 100644 index 000000000..f43fe581e --- /dev/null +++ b/shared/wallets/SolanaLib.ts @@ -0,0 +1,271 @@ +import { + Keypair, + Connection, + SendOptions, + VersionedTransaction, + PublicKey, + Transaction, + SystemProgram +} from '@solana/web3.js' +import bs58 from 'bs58' +import nacl from 'tweetnacl' +import { + getAssociatedTokenAddress, + createTransferInstruction, + TOKEN_PROGRAM_ID, + getOrCreateAssociatedTokenAccount +} from '@solana/spl-token' +import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '../chains' + +/** + * Types + */ +interface IInitArguments { + secretKey?: Uint8Array +} + +/** + * Library + */ +export default class SolanaLib { + keypair: Keypair + + constructor(keypair: Keypair) { + this.keypair = keypair + } + + static init({ secretKey }: IInitArguments) { + const keypair = secretKey ? Keypair.fromSecretKey(secretKey) : Keypair.generate() + + return new SolanaLib(keypair) + } + + public async getAddress() { + return await this.keypair.publicKey.toBase58() + } + + public getSecretKey() { + return this.keypair.secretKey.toString() + } + + public async signMessage( + params: SolanaLib.SignMessage['params'] + ): Promise { + const signature = nacl.sign.detached(bs58.decode(params.message), this.keypair.secretKey) + const bs58Signature = bs58.encode(signature) + + return { signature: bs58Signature } + } + + public async signTransaction( + params: SolanaLib.SignTransaction['params'] + ): Promise { + const transaction = this.deserialize(params.transaction) + this.sign(transaction) + + return { + transaction: this.serialize(transaction), + signature: bs58.encode(transaction.signatures[0]) + } + } + + public async signAndSendTransaction( + params: SolanaLib.SignAndSendTransaction['params'], + chainId: string + ): Promise { + const rpc = { ...SOLANA_TEST_CHAINS, ...SOLANA_MAINNET_CHAINS }[chainId]?.rpc + + if (!rpc) { + throw new Error('There is no RPC URL for the provided chain') + } + + const connection = new Connection(rpc) + const transaction = this.deserialize(params.transaction) + this.sign(transaction) + + const signature = await connection.sendTransaction(transaction, { + maxRetries: 3, + preflightCommitment: 'confirmed', + ...params.options + }) + + return { signature } + } + + public async signAllTransactions( + params: SolanaLib.SignAllTransactions['params'] + ): Promise { + const signedTransactions = params.transactions.map(transaction => { + const transactionObj = this.deserialize(transaction) + + this.sign(transactionObj) + + return this.serialize(transactionObj) + }) + + return { transactions: signedTransactions } + } + + private serialize(transaction: VersionedTransaction): string { + return Buffer.from(transaction.serialize()).toString('base64') + } + + private deserialize(transaction: string): VersionedTransaction { + let bytes: Uint8Array + try { + bytes = bs58.decode(transaction) + } catch { + // Convert base64 to Uint8Array to avoid type issues + const buffer = Buffer.from(transaction, 'base64') + bytes = new Uint8Array(buffer) + } + + return VersionedTransaction.deserialize(bytes) + } + + private sign(transaction: VersionedTransaction) { + transaction.sign([this.keypair]) + } + + /** + * Send SOL to a recipient + * @param recipientAddress The recipient's address + * @param amount The amount to send in lamports (as a bigint) + * @returns The transaction signature/hash + */ + public async sendSol(recipientAddress: string, chainId: string, amount: bigint): Promise { + console.log({ chainId }) + const rpc = { ...SOLANA_TEST_CHAINS, ...SOLANA_MAINNET_CHAINS }[chainId]?.rpc + + if (!rpc) { + throw new Error('There is no RPC URL for the provided chain') + } + + const connection = new Connection(rpc, 'confirmed') + const fromPubkey = this.keypair.publicKey + const toPubkey = new PublicKey(recipientAddress) + + // Create a simple SOL transfer transaction + const transaction = new Transaction().add( + SystemProgram.transfer({ + fromPubkey, + toPubkey, + lamports: amount + }) + ) + + // Get recent blockhash + const { blockhash } = await connection.getLatestBlockhash('confirmed') + transaction.recentBlockhash = blockhash + transaction.feePayer = fromPubkey + + // Sign the transaction + transaction.sign(this.keypair) + + // Send and confirm the transaction + const signature = await connection.sendRawTransaction(transaction.serialize()) + + // Wait for confirmation + await connection.confirmTransaction(signature, 'confirmed') + + return signature + } + + /** + * Send an SPL token to a recipient + * @param tokenAddress The token's mint address + * @param recipientAddress The recipient's address + * @param amount The amount to send (as a bigint) + * @returns The transaction signature/hash + */ + public async sendSplToken( + tokenAddress: string, + recipientAddress: string, + chainId: string, + amount: bigint + ): Promise { + const rpc = { ...SOLANA_TEST_CHAINS, ...SOLANA_MAINNET_CHAINS }[chainId]?.rpc + + if (!rpc) { + throw new Error('There is no RPC URL for the provided chain') + } + + const connection = new Connection(rpc, 'confirmed') + const fromWallet = this.keypair + const fromPubkey = fromWallet.publicKey + const toPubkey = new PublicKey(recipientAddress) + const mint = new PublicKey(tokenAddress) + + // Get sender's token account (create if it doesn't exist) + const fromTokenAccount = await getOrCreateAssociatedTokenAccount( + connection, + fromWallet, + mint, + fromPubkey + ) + + // Check if recipient has a token account WITHOUT creating one + const associatedTokenAddress = await getAssociatedTokenAddress(mint, toPubkey) + + const recipientTokenAccount = await connection.getAccountInfo(associatedTokenAddress) + + if (!recipientTokenAccount) { + throw new Error( + `Recipient ${recipientAddress} doesn't have a token account for this SPL token. Transaction cannot proceed.` + ) + } + + // Create transfer instruction to existing account + const transferInstruction = createTransferInstruction( + fromTokenAccount.address, + associatedTokenAddress, + fromPubkey, + amount, + [], + TOKEN_PROGRAM_ID + ) + + // Create transaction and add the transfer instruction + const transaction = new Transaction().add(transferInstruction) + + // Get recent blockhash + const { blockhash } = await connection.getLatestBlockhash('confirmed') + transaction.recentBlockhash = blockhash + transaction.feePayer = fromPubkey + + // Sign the transaction + transaction.sign(fromWallet) + + // Send and confirm the transaction + const signature = await connection.sendRawTransaction(transaction.serialize()) + + // Wait for confirmation + await connection.confirmTransaction(signature, 'confirmed') + + return signature + } +} + +export namespace SolanaLib { + type RPCRequest = { + params: Params + result: Result + } + + export type SignMessage = RPCRequest<{ message: string }, { signature: string }> + + export type SignTransaction = RPCRequest< + { transaction: string }, + { transaction: string; signature: string } + > + + export type SignAndSendTransaction = RPCRequest< + { transaction: string; options?: SendOptions }, + { signature: string } + > + + export type SignAllTransactions = RPCRequest< + { transactions: string[] }, + { transactions: string[] } + > +} diff --git a/shared/wallets/StacksLib.ts b/shared/wallets/StacksLib.ts new file mode 100644 index 000000000..e5305299a --- /dev/null +++ b/shared/wallets/StacksLib.ts @@ -0,0 +1,202 @@ +import { generateWallet, generateSecretKey, Wallet } from '@stacks/wallet-sdk' +import { + broadcastTransaction, + getAddressFromPrivateKey, + getAddressFromPublicKey, + makeSTXTokenTransfer, + privateKeyToPublic, + signMessageHashRsv, + publicKeyFromSignatureRsv, + publicKeyToHex, +} from '@stacks/transactions' +import { networkFromName, StacksNetworks } from '@stacks/network' +import { STACKS_MAINNET, STACKS_TESTNET, STACKS_TESTNET_CAIP2 } from '../chains' +import { STACKS_MAINNET_CAIP2 } from '../chains' +import { sha256 } from '@noble/hashes/sha2' + +/** + * Types + */ +interface IInitArgs { + mnemonic?: string +} +export interface StacksWallet { + // getMnemonic(): string + // getPrivateKey(): string + // getAddress(): string + // signMessage(message: string): Promise + // _signTypedData(domain: any, types: any, data: any, _primaryType?: string): Promise + // connect(provider: providers.JsonRpcProvider): Wallet + // signTransaction(transaction: providers.TransactionRequest): Promise +} + +/** + * Library + */ +export default class StacksLib implements StacksWallet { + wallet: Wallet + accounts: { + mainnet: { + address: string + publicKey: string + } + testnet: { + address: string + publicKey: string + } + } + mnemonic: string + + constructor(wallet: Wallet, mnemonic: string) { + this.wallet = wallet + this.accounts = { + mainnet: { + address: getAddressFromPrivateKey( + wallet.accounts[0].stxPrivateKey, + networkFromName('mainnet') + ), + publicKey: publicKeyToHex(privateKeyToPublic(wallet.accounts[0].stxPrivateKey)) + }, + testnet: { + address: getAddressFromPrivateKey( + wallet.accounts[0].stxPrivateKey, + networkFromName('testnet') + ), + publicKey: publicKeyToHex(privateKeyToPublic(wallet.accounts[0].stxPrivateKey)) + } + } + this.mnemonic = mnemonic + } + + static async init({ mnemonic }: IInitArgs) { + const password = 'password' + const secretKey = mnemonic ? mnemonic : generateSecretKey() + + const wallet = await generateWallet({ + secretKey, + password + }) + console.log('stackswallet', wallet) + return new StacksLib(wallet, secretKey) + } + + getMnemonic() { + return this.mnemonic + } + + getPrivateKey() { + return this.wallet.configPrivateKey + } + + getAddress(chainId: string) { + if (chainId === STACKS_MAINNET_CAIP2) { + return this.accounts.mainnet.address + } else if (chainId === STACKS_TESTNET_CAIP2) { + return this.accounts.testnet.address + } + console.error( + `No stacks address found for chainId: ${chainId}, supported chains: ${STACKS_MAINNET_CAIP2}, ${STACKS_TESTNET_CAIP2}` + ) + return '' + } + + getAddresses() { + return { + mainnet: this.accounts.mainnet.address, + testnet: this.accounts.testnet.address + } + } + + getAccounts() { + return this.accounts + } + + async sendTransfer(request: { + sender: string + recipient: string + amount: number + chainId: string + }) { + const address = this.getAddress(request.chainId) + if (address !== request.sender) { + throw new Error(`Invalid sender pubkey/address: ${request.sender}, expected: ${address}`) + } + const network = request.chainId === STACKS_MAINNET_CAIP2 ? 'mainnet' : 'testnet' + + const tx = await makeSTXTokenTransfer({ + recipient: request.recipient, + amount: request.amount, + senderKey: this.wallet.accounts[0].stxPrivateKey, + network + }) + console.log('tx', tx) + const result = (await broadcastTransaction({ + transaction: tx, + network + })) as { error?: string; reason?: string; txid?: string } + console.log('result', result) + if (result.error) { + throw new Error( + `Transaction broadcast failed: ${(result as any)?.error}: ${(result as any)?.reason}` + ) + } + + console.log('Transaction broadcasted! TXID:', tx.txid()) + + return { + txId: result.txid + } + } + + signMessage(request: { message: string; address: string; chainId: string }) { + const address = this.getAddress(request.chainId) + if (address !== request.address) { + throw new Error(`Invalid sender pubkey/address: ${request.address}, expected: ${address}`) + } + + const network = this.getNetworkFromAddress(address) + console.log('signMessage', request.message, network, address) + + /** two separate ways to sign & validate signatures, choose the better one */ + // const hash = Buffer.from(sha256(request.message)).toString('hex') + // const sig1 = signWithKey(this.wallet.accounts[0].stxPrivateKey, hash) + // const pubKey = publicKeyFromSignatureVrs(hash, sig1) + // // Skip the recovery params bytes from signature and then verify + // const isValid = verifySignature(sig1.slice(2), hash, pubKey) + + const hash = Buffer.from(sha256(request.message)).toString('hex') + const signature = signMessageHashRsv({ + messageHash: hash, + privateKey: this.wallet.accounts[0].stxPrivateKey + }) + + console.log('signature', signature) + const pubKey = publicKeyFromSignatureRsv(hash, signature) + + console.log('isValid', getAddressFromPublicKey(pubKey, network), address) + + if (getAddressFromPublicKey(pubKey, network) !== address) { + throw new Error( + `Signing failed, expected address: ${address}, got: ${getAddressFromPublicKey( + pubKey, + network + )}` + ) + } + + return { + signature + } + } + + private getNetworkFromAddress(address: string) { + switch (address) { + case this.accounts.mainnet.address: + return 'mainnet' + case this.accounts.testnet.address: + return 'testnet' + default: + throw new Error(`Invalid address: ${address}`) + } + } +} diff --git a/shared/wallets/SuiLib.ts b/shared/wallets/SuiLib.ts new file mode 100644 index 000000000..9ff60be5b --- /dev/null +++ b/shared/wallets/SuiLib.ts @@ -0,0 +1,143 @@ +import * as bip39 from 'bip39' +import { mnemonicToSeedSync } from 'bip39' +import { Ed25519Keypair, Ed25519PublicKey } from '@mysten/sui/keypairs/ed25519' +import { verifyPersonalMessageSignature } from '@mysten/sui/verify' +import { derivePath } from 'ed25519-hd-key' +import { SerialTransactionExecutor, Transaction } from '@mysten/sui/transactions' +import { SuiClient } from '@mysten/sui/client' + +interface IInitArguments { + mnemonic?: string +} + +interface ISignMessageArguments { + message: string +} + +interface ISignTransactionArguments { + transaction: string + chainId: string +} + +interface ISignAndExecuteTransactionArguments { + transaction: string + chainId: string +} + +const SUI_PATH = "m/44'/784'/0'/0'/0'" + +/** + * Library + */ +export default class SuiLib { + private keypair: Ed25519Keypair + private mnemonic: string + private suiClients: Record = {} + private publicKey: Ed25519PublicKey + + constructor(mnemonic?: string) { + this.mnemonic = mnemonic ? mnemonic : bip39.generateMnemonic() + const seed = mnemonicToSeedSync(this.mnemonic) + const { key } = derivePath(SUI_PATH, seed.toString('hex')) + + this.keypair = Ed25519Keypair.fromSecretKey(new Uint8Array(key)) + this.publicKey = this.keypair.getPublicKey() + console.log('Sui Address:', this.publicKey.toSuiAddress()) + } + + static async init({ mnemonic }: IInitArguments) { + return new SuiLib(mnemonic) + } + + public getPublicKey() { + return this.publicKey.toBase64() + } + + public getAddress() { + return this.publicKey.toSuiAddress() + } + + public getMnemonic() { + return this.mnemonic + } + + public getAccounts(): { address: string; pubkey: string }[] { + return [{ address: this.getAddress(), pubkey: this.getPublicKey() }] + } + + public async signMessage({ message }: ISignMessageArguments) { + const messageToSign = new TextEncoder().encode(message) + + const signature = await this.keypair.signPersonalMessage(messageToSign) + + // Output + console.log('Signature:', signature) + console.log('Public Key:', this.keypair.getPublicKey().toBase64()) + + const verified = await verifyPersonalMessageSignature(messageToSign, signature.signature) + console.log('Verified:', verified, verified.equals(this.keypair.getPublicKey())) + + return { + signature: signature.signature, + publicKey: this.keypair.getPublicKey().toBase64() + } + } + + public async signTransaction({ transaction, chainId }: ISignTransactionArguments) { + const tx = Transaction.from(transaction) + const client = this.getSuiClient(chainId) + console.log('tx', tx) + const signature = await tx.sign({ signer: this.keypair, client }) + console.log('signature', signature) + const transactionBytes = Buffer.from(await tx.build({ client })).toString('base64') + console.log('transactionBytes', transactionBytes) + return { + transactionBytes, + signature: signature.signature + } + } + + public async signAndExecuteTransaction({ + transaction, + chainId + }: ISignAndExecuteTransactionArguments) { + const tx = Transaction.from(transaction) + const client = this.getSuiClient(chainId) + const executor = new SerialTransactionExecutor({ signer: this.keypair, client }) + const result = await executor.executeTransaction(tx) + console.log('result', result) + return result + } + + private getSuiClient(chainId: string) { + if (this.suiClients[chainId]) { + return this.suiClients[chainId] + } + + switch (chainId) { + case 'sui:mainnet': + this.suiClients[chainId] = new SuiClient({ url: 'https://fullnode.mainnet.sui.io/' }) + break + case 'sui:testnet': + this.suiClients[chainId] = new SuiClient({ url: 'https://fullnode.testnet.sui.io/' }) + break + case 'sui:devnet': + this.suiClients[chainId] = new SuiClient({ url: 'https://fullnode.devnet.sui.io/' }) + break + default: + throw new Error(`Unknown chainId: ${chainId}`) + } + return this.suiClients[chainId] + } + + public async getJsonTransactionFromBase64(transaction: string) { + try { + const tx = Transaction.from(transaction) + const jsonTx = await tx.toJSON() + return jsonTx + } catch (e) { + console.error('Error decoding transaction', e) + return undefined + } + } +} diff --git a/shared/wallets/TezosLib.ts b/shared/wallets/TezosLib.ts new file mode 100644 index 000000000..8e2db75ad --- /dev/null +++ b/shared/wallets/TezosLib.ts @@ -0,0 +1,109 @@ +import { TezosToolkit } from '@taquito/taquito' +import { InMemorySigner } from '@taquito/signer' +import { localForger } from '@taquito/local-forging' +import { Wallet } from 'ethers/' + +/** + * Constants + */ +const DEFAULT_PATH = "m/44'/1729'/0'/0'" +const DEFAULT_CURVE = 'ed25519' + +/** + * Types + */ +interface IInitArguments { + mnemonic?: string + path?: string + curve?: 'ed25519' | 'secp256k1' +} + +/** + * Library + */ +export default class TezosLib { + tezos: TezosToolkit + signer: InMemorySigner + mnemonic: string + secretKey: string + publicKey: string + address: string + curve: 'ed25519' | 'secp256k1' + + constructor( + tezos: TezosToolkit, + mnemonic: string, + signer: InMemorySigner, + secretKey: string, + publicKey: string, + address: string, + curve: 'ed25519' | 'secp256k1' + ) { + this.tezos = tezos + this.mnemonic = mnemonic + this.signer = signer + this.secretKey = secretKey + this.publicKey = publicKey + this.address = address + this.curve = curve + } + + static async init({ mnemonic, path, curve }: IInitArguments) { + const params = { + mnemonic: mnemonic ?? Wallet.createRandom().mnemonic.phrase, + derivationPath: path ?? DEFAULT_PATH, + curve: curve ?? DEFAULT_CURVE + } + + const Tezos = new TezosToolkit('https://mainnet.api.tez.ie') + + const signer = InMemorySigner.fromMnemonic(params) + + Tezos.setSignerProvider(signer) + + const secretKey = await signer.secretKey() + const publicKey = await signer.publicKey() + const address = await signer.publicKeyHash() + + return new TezosLib(Tezos, params.mnemonic, signer, secretKey, publicKey, address, params.curve) + } + + public getMnemonic() { + return this.mnemonic + } + + public getPublicKey() { + return this.publicKey + } + + public getCurve() { + return this.curve + } + + public getAddress() { + return this.address + } + + public async signTransaction(transaction: any) { + const prepared = await this.tezos.prepare.batch( + transaction.map((tx: any) => ({ + amount: tx.amount, + to: tx.destination, + kind: tx.kind, + mutez: true + })) + ) + + const forged = await localForger.forge(prepared.opOb) + + const tx = await this.signer.sign(forged, new Uint8Array([3])) + + const hash = await this.tezos.rpc.injectOperation(tx.sbytes) + + return hash + } + + public async signPayload(payload: any) { + return await this.signer.sign(payload) + } +} diff --git a/shared/wallets/TonLib.ts b/shared/wallets/TonLib.ts new file mode 100644 index 000000000..5f7460bbd --- /dev/null +++ b/shared/wallets/TonLib.ts @@ -0,0 +1,211 @@ +import { KeyPair, keyPairFromSeed, keyPairFromSecretKey, sign, signVerify } from '@ton/crypto' +import { + WalletContractV4, + TonClient, + internal, + Address, + Transaction, + Cell, + Message, + address, + beginCell, + storeMessage +} from '@ton/ton' +import { TON_MAINNET_CHAINS, TON_TEST_CHAINS } from '../chains' + +/** + * Types + */ +interface IInitArguments { + secretKey?: string + seed?: string +} + +/** + * Library + */ +export default class TonLib { + keypair: KeyPair + wallet: WalletContractV4 + + constructor(keypair: KeyPair) { + this.keypair = keypair + this.wallet = WalletContractV4.create({ workchain: 0, publicKey: keypair.publicKey }) + } + + static async init({ secretKey, seed }: IInitArguments) { + let keypair: KeyPair + + if (secretKey) { + keypair = keyPairFromSecretKey(Buffer.from(secretKey, 'hex')) + } else if (seed) { + keypair = keyPairFromSeed(Buffer.from(seed, 'hex')) + } else { + // Generate random keypair using crypto.getRandomValues + const seed = crypto.getRandomValues(new Uint8Array(32)) + keypair = keyPairFromSeed(Buffer.from(seed)) + } + + return new TonLib(keypair) + } + + public async getAddress() { + return this.wallet.address.toString({ bounceable: false }) + } + + public getSecretKey() { + return this.keypair.secretKey.toString('hex') + } + + public async signMessage( + params: TonLib.SignMessage['params'] + ): Promise { + const signature = sign(Buffer.from(params.message), this.keypair.secretKey) + return { + signature: signature.toString('base64'), + publicKey: this.keypair.publicKey.toString('base64') + } + } + + public async sendMessage( + params: TonLib.SendMessage['params'], + chainId: string + ): Promise { + const client = this.getTonClient(chainId) + const walletContract = client.open(this.wallet) + const seqno = await walletContract.getSeqno() + const messages = (params.messages || []).map(m => { + const amountBigInt = typeof m.amount === 'string' ? BigInt(m.amount) : BigInt(m.amount) + return internal({ + to: Address.parse(m.address), + value: amountBigInt, + body: m.payload ?? 'Test transfer from ton WalletConnect' + }) + }) + + const transfer = walletContract.createTransfer({ + seqno, + secretKey: this.keypair.secretKey, + messages + }) + + await walletContract.send(transfer) + + // Build external-in message for the result + const message: Message = { + info: { + type: 'external-in', + src: null, + dest: Address.parse(this.wallet.address.toString()), + importFee: BigInt(0) + }, + init: null, + body: transfer + } + + const externalMessageCell = beginCell() + .store(storeMessage(message, { forceRef: true })) + .endCell() + + return externalMessageCell.toBoc().toString('base64') + } + + public async signData(params: TonLib.SignData['params']): Promise { + const payload: TonLib.SignData['params'] = params + + const dataToSign = this.getToSign(params) + const signature = sign(dataToSign, this.keypair.secretKey as unknown as Buffer) + const addressStr = await this.getAddress() + + const result = { + signature: signature.toString('base64'), + address: addressStr, + publicKey: this.keypair.publicKey.toString('base64'), + timestamp: Math.floor(Date.now() / 1000), + domain: + typeof window !== 'undefined' && window.location && window.location.hostname + ? window.location.hostname + : 'unknown', + payload + } + + try { + const verified = signVerify( + dataToSign, + Buffer.from(result.signature, 'base64'), + this.keypair.publicKey + ) + console.log('TON signData verified:', verified) + } catch (e) { + console.warn('TON signData verification failed to run', e) + } + + return result + } + + private getTonClient(chainId: string): TonClient { + const rpc = { ...TON_TEST_CHAINS, ...TON_MAINNET_CHAINS }[chainId]?.rpc + + if (!rpc) { + throw new Error('There is no RPC URL for the provided chain') + } + + return new TonClient({ + endpoint: rpc, + apiKey: process.env.NEXT_PUBLIC_TON_CENTER_API_KEY + }) + } + + private getToSign(params: TonLib.SignData['params']): Buffer { + if (params.type === 'text') { + return Buffer.from(params.text) + } else if (params.type === 'binary') { + return Buffer.from(params.bytes) + } else if (params.type === 'cell') { + return Buffer.from(params.cell) + } else { + throw new Error('Unsupported sign data type') + } + } +} + +export namespace TonLib { + type RPCRequest = { + params: Params + result: Result + } + + export type SignMessage = RPCRequest< + { message: string }, + { signature: string; publicKey: string } + > + + export type SendMessage = RPCRequest< + { + valid_until?: number + from?: string + messages: Array<{ + address: string + amount: number | string + payload?: string + stateInit?: string + extra_currency?: Record + }> + }, + string + > + + export type SignData = RPCRequest< + | { type: 'text'; text: string; from?: string } + | { type: 'binary'; bytes: string; from?: string } + | { type: 'cell'; schema: string; cell: string; from?: string }, + { + signature: string + address: string + publicKey: string + timestamp: number + domain: string + payload: unknown + } + > +} diff --git a/shared/wallets/TronLib.ts b/shared/wallets/TronLib.ts new file mode 100644 index 000000000..2e2b2d8d5 --- /dev/null +++ b/shared/wallets/TronLib.ts @@ -0,0 +1,57 @@ +import { TronWeb, utils } from 'tronweb' + +/** + * Types + */ +interface IInitArguments { + privateKey: string +} + +/** + * Library + */ +export default class TronLib { + privateKey: string + tronWeb: TronWeb + + constructor(privateKey: string) { + this.privateKey = privateKey + this.tronWeb = new TronWeb({ + // Nile TestNet, if you want to use in MainNet, change the fullHost to 'https://api.trongrid.io', or use tronWeb.setFullNode + fullHost: 'https://nile.trongrid.io/', + privateKey: privateKey + }) + } + + static async init({ privateKey }: IInitArguments) { + if (!privateKey) { + const account = utils.accounts.generateAccount() + return new TronLib(account.privateKey) + } else { + return new TronLib(privateKey) + } + } + + public getAddress() { + return this.tronWeb.defaultAddress.base58 + } + + public createAccount() { + return this.tronWeb.createAccount() + } + + public setFullNode(node: string) { + return this.tronWeb.setFullNode(node) + } + + public async signMessage(message: string) { + const signedtxn = await this.tronWeb.trx.signMessageV2(message) + return signedtxn + } + + public async signTransaction(transaction: any) { + // The transaction parameter is expected to be unwrapped already. + const signedtxn = await this.tronWeb.trx.sign(transaction) + return signedtxn + } +} diff --git a/shared/wallets/index.ts b/shared/wallets/index.ts new file mode 100644 index 000000000..eee66009e --- /dev/null +++ b/shared/wallets/index.ts @@ -0,0 +1,20 @@ +/** + * Barrel export for all wallet libraries + */ + +export { default as EIP155Lib } from "./EIP155Lib"; +export { default as SolanaLib } from "./SolanaLib"; +export { default as CosmosLib } from "./CosmosLib"; +export { default as PolkadotLib } from "./PolkadotLib"; +export { default as NearLib } from "./NearLib"; +export { default as KadenaLib } from "./KadenaLib"; +export { default as MultiversxLib } from "./MultiversxLib"; +export { default as StacksLib } from "./StacksLib"; +export { default as SuiLib } from "./SuiLib"; +export { default as TezosLib } from "./TezosLib"; +export { default as TonLib } from "./TonLib"; +export { default as TronLib } from "./TronLib"; +export { default as Bip122Lib } from "./Bip122Lib"; + +// Re-export types +export type { EIP155Wallet } from "./EIP155Lib";

C9I-DdW?^jT_9TBm+H^#JWKJ1?Q)D)XMe{YK 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 literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/chain-placeholder.png b/shared/public/chain-logos/chain-placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..12975dfa5cf7d64f41792fec38bb09ab4d793588 GIT binary patch literal 483 zcmV<90UZ8`P)Px$ok>JNR5(wim1~lOAPj`RP~K~plc6UQ?`6Rf9wSbz=+@@fFh!cA(`kigF#`_7 zW8y|Y&%=4^+yW8siC$M2ARDOw81Y*Pk z?-7kpDpq>eM1ut(5|;`5uCxr|3fN{o&v8Y8oq+F$egjqjkKtQZzX7W;8VpBTogRDyO40m5{4dm$jX+ z?8X{`3ZQqjHiJghoO)J!Rk@lOg6k$fDZc12=o2}z|(TDqj9m+l4uX;517 zw|?Juu9-7)pE>6~_dM79^9)j36GluxM*si-h*gvobkXy>e*+H-ZO_*~{sjOqZ?x6n zif9M|E2AyHAWUChAHC)mM8kI=K^Op_FC!xZ0>c1kzaWfLNCq8)jue3WivgiKL>UNF z0)ds#5Gbg`z#uLtsLT(Bp||+?B|%^nv>%;{Ou&p!|NpJf$N0D@rx5Eb+; z5F-CCMo{s80$?Bz3@CtRMyLOeTmZ%|@UJM}KL`V%A-X8&|C9gE^Z)ApqZI%vfrOQT z5Cv|iynvAEKN2vE3#`a5022^U7C>tNDS;pgK(sbAC*+^D$Hzys3_&4Pb}nfSZW*w! z8V?YyN12;X?&0A9&B@EJz``yC5m95~lm-i{3JR%l@yc=X$g*<26ckdqzkdJ=tD^<8 za7gii6a^rvx3_l(2glmFwv5c;fB)Vvu}Vlv!&g^--re0Xvq`dYynO2vba!_zD6F26 znkOu(;q3ZuXJ=no%|cvKmk*?L^7{{1SVIV^9uyMG#3q6M;G!?I(K=-njO^_F(1+^k z9=N=^($Ka(J3B8at$l6lZEoRqb$xwvbNjuc&&MxPL`?IIqrbGAVSU5*FWFyvehi0x zNZj1o+1opik~J_fcgZiP1PiG)w{$-|JQ^6ijfzQ+Pxy>NO?rBV{pTEvj7rVPE&G`G zWps2pHNC*X%0n0arn0JOdwX|(|A>ZOL{LcG)%|^O>9_8l!I-$rh{#WHLkGnBgv8|R z6t~DpG#CVtO^RNCMM^MOq~1!qrH5>6_w4btUX^y>G=gjH8yn) z434R3zOJrmX>IM1S2Bf)YY7Oc&CD*XuW$ACp)M{i9o`1o*!gVy+zxpcKQuhPxU~AM zw)ODn4n0gYP#p5fBu{~xrB6d_RlY@jE~PIrR4VYkEEp+qA$SLvihtq zC3ADjlT-8LR02!O>){HS-sszG=&7rz2YA4^!@9r4yvM@6!@8sD!_)a0hx2{5T6yH`dNENL;X}OPw5E&N%IF*xab+;-S2iPomq0 znNy23HCmPR>|d+^02B!-3bJtDS0fTQuBL_!T96;!bP_dFf*wiUnZhbb?u|#@OHMS> zSpiH@=_nNHP*CW9tr)d(FZB2_T~B2;y8Y}ieIiD9a!UMaTuNC5quC|lOv5!E)YDIj zPdnpN9g~`Je!Cl6Ez1@Wzelc)Bs+hfb<_AxQu%K4INOte_&{1rQb3<6PF2;HoQz5V)4*%kipq(NV<0h?fqmk+@uX4#I6 zmt6yu?Y(P_JWN{x*on3A0qp|c_WiO+j<9Un2orGXPS$%4DoRdnH=iU%EY{QFf8V;; zAHS-8Iv5ye(*|SiSl4+TEO4&>r>jAZX?kzd%5OUuyV;QW?250k;qkgkf$^2Si2uj< z&;I)rZShP37?^?A@abATvY8t5gAZCZ($I3Vlbw^(-(PH5rXsEwG;|OZ+Bn^vbK$!e z-vAHI%rZqVrpL{{`m)az+NUexXR65CJt^)^Z-|dHq_Rz!yAKxq=udhY2?ABiT|A#Y zszb1Kv07utZ_g@l(zSfAmsUz;N)KIN?U!*gvA+w4bLZYtczwLP?s&4hve53yxr^JT zGPte#V-1|l?=aR#TPHB#lazypfd5W_yHC}z4A>mzSn`gW-i441($5xMD_&*MP#k`K z6O8b$IfI6LAL$A)t)gkqWlr$_!-#*)q4Rq*8lEG%qm{BA7?prsoV?hq_}sI=|LU8n zn6v?}7lm)9_k)D&2FBLudV&)LigY4Uga!Xs2`T=kVX2!ASwD(V7bv^Mb!BHH`)_8K z$f{dyjbk;hq@VW-1@bbM>C|cyKeUGokD=H8Nf&3U4E#V7H0cFA%)!hi{hJ+8Nb{9G{=(S6~X7FdG&p^Yq}<3j$cc@O`5zXtU?quB6X zP(hg<6XF8-U%S=|>@{Jsch&N}n=S9i4+b`!Az>I7-b+f&&+)@1YLF(f$Z8TP zYivEb=C}{hzlF_=qX$qE3uk_GY}98^go^GIrd;JoL9UmhvNOWfkcj&mKK%~Rw82OJ zDPLM$LlI0?(qGk?)nkPV_9uTpH|31-mug4kSetQ?{sQexT?u}KCa0kr$(Aa9_bqAi z+>2b$oSEMStL+VnicGfVaqyV97a2n!;3)Wh5;a)J@b$Lf#{orNj8R~w$E6{&rLnlQ zxRYWfCLVjBkTh=dY5xrldoI-!U^92hwo|o(*%_N%{N`=Fs`-(4tPZ(H zG(Ac9hX}#0N=n826&x_NBIXYi);m+5komeI&gXFpUZARiIed3j&5Pq`8xU5UG0$)V zfw1+Ko%&j%5RT9QOpIKp27NOlkD zd*ZdM7uJh>Y><7s<6A4fCj1my>IEWZ2?WYADa87GCSZYi+x<9V|L9#{?Uyq6@^O5G zL%Z46KbX}ekm!JL;fb9?aSsW}R8efi4rT#2Rg%@2eoDAvUU0HSqq=4F0sDrN4t`5V znNJYu?qNL3LwWwI8SwB#xYPmizm6sP#*2V7$}$Ia?N8mw0#1!@G@lsN&?<-(+8!KU z2*U9comul=tsp5LYT`4E+CJ=@^l-4rUC?rOr{zu&9%Cs~ekY<`ynBKf990%Kc8#%K zmd*9cX2#}aOM;n?orbPbcR{SuA*bBQ8BDJ8S)=naLYl_TQzL3VCq*yGAM>9IB=uP6 z7BB5dB$`7#8@m6-Qvud0zjq5NW|f``TkPZ;weV6LbL=gL+nM8GWEXq82J9^*@h6S- zLNdy}hRaj!`I?A%@W_!j|6*mc{9u&X?yD(Tu#D2q5R38qAdaZ&88d4mlvuXVW7L($ z$B=4l=6ILph2Z$Px){=zZ84tqp7lQ{*asmPIHH)rw#&4JqvmydXH+0R0%H60-4_eA z-9)Ot=t7uZvM!w*5UE%ly zZbB_3M6mCXcERJ<*tBXoS-prAjHt-Ts`Q{Wnbf@9c{;HPvzaKP z+aLU{%>xK2h5p?usS>yC=Y;O_*VsS+L71&P8)3q}Dk=!(?|Ilg2mllA?K*__xE7_C zlQ%GZ4L?I?QJ-|TYWGMPvRAu>$*}_{GJGj(wQY@Mr|6k9!;7^rKw0E@S6!Y*d7O}+ z8Xi=?Yx!{-wX2?K#-5uccAr~CYI9QnGtcN#@aZ)>4;>=PtR5@R@7^~9GNZJ*bJ-gv zB1)T#0n+Z!Wx3!SCN1JqhB(%lJ6|%ZV@xl3%Pu-%U0IdudQ#&3s|FG)CkN4+m&2!a{Bk|s&Hih-J&I{ObIh)_5wRaA?w_LdwIJ15{tUnHjyN zuQe}f=}uy#G&5nIOJ;`MR?KAr0Gu#u3>hf z>`@iCpUkY{>@tNq&l9Dwi8oXZR!+fH*`X;pRTm&FO>w|pU{qY&i1+Y4qF2_k7n^H_BnL%WG*TH0HS($afO~z3%LygS@G|+krvd7D0@L7yt%DN}h8Hdj6ZCN9 zrfeE&UvF@rSJdFdOfcNR$JFweCsW6A(wM*a^-v{NIXO{%U_Xh!A-35UyYV_RE*{eS z@LepEN?gTzf_{Mvy1>?OajVkG4^cQV1XdiMIUv|1y}v~JFm2=49g;Jgni1egx~eM& zULT3W9gSw@4I|tIk!dSwZ3HwJ%_JYCC*fPK!9V*Fs!Q?7ddx~3z8Y+hNfvTpX*)B7 z3n0ypdxdF~idu&Mx0PY~Qtq;!VBV>}ZKpbm;B36uS_8+GZ()@|nqulVDv}#uK`8sRL^2Y z<_8qWLF$Vs6(Y>bS(q2r(H!z4Em|Wlxv)L|BxETaMR<&y<83koOdum>0M({W<-J@G z8#$5AHe;RlDoD55Iy}t z3tHcPm33Hv?7N0J* z$$c4yq25}@ouU&$-?P=eFEvif&?i(r@X+5f9@f@6zd!X+L9j;puhsL(neBC@2?-x4 zjGpq=gAbN*aM+jCL7H{6sa>b`8kFV;x-L8ER(D33AyTedB5%#X{irP38{`noP;9Hk zL?SVVw4kqrM>qX>kNk^lL8{V2N87#Cvqk{)u?e2zVH6uA0i6EX$GhNo{l&^SWf1CS z#V&IpdZo$MYJe1+Eqoi_^A3DG0q8LnfOXpJcku4A>{_3S1dcx0WXkYFp?Qc~JA3FCs>h zpNQHWnY0$MzJlM-?=+^;9i%YO=L4^zlNB#g;~hDdOP>n&LF--p9TnLDDAPY`vJ2t* zLL2YQcTQPdsdSCooE zq8BM)ukD*$KTr_)&-D4-U8AI~%S?AE7Yp3XqF-~Y zipvhy`cupEqxNE12EjYE&% zpb964rBY=wm1|x#nLPRuM5%73!8h`39Ym~CD_Ick$po8eOD!kK`g9Q7#uP&*amm}N zz-g|)%}+yhlL9}Q1+(+@LP&;uTYBp$x2UG$raQKS8T51ZUm4YdPxha2C@k@TR9=87 zF3VzF#{(!(8RW9q_FTh;IqZEvvt|0ZpcF0=TQb~&eLrVy*d{XX@A8AGF6V%+jaWO% zy~n<+zMH3di$JXI9<7jLbx$n}wt%W)fF9<0nrjL5d!x2>acfiVk2oo2aJFJ0_xzTZm1$ zB$UAomoGmivCo%Iq*@#&*Dvu&`k{qPhS)$I4an6_B~<-{(x!rG8$wUR&H6^HTjcSB z{yFQ(pXhc-a~pB^LKK-O&Mf=WQN)4Kpc;dnhxF*&Y5+m?9|d)V(;sHTycL@7arPgT z{ zcEr}-#tYxa>b3;wfDTJCN#(U!LXuMXmlxC>yUE)tmGwta{q@d_g@-p}ra`q%sb&vK z5AdIf3vW+M?icMwV0K49uaW*zyp=T)QWq@F>jM}OqcYCRwXbvZvx&2n{(oj)Wq*_o z7`1I&mA~DtcU~A-EM8KBC*1u_<$wGGb{uKR4jy>>qo&Sz!_9NdwOzdhl+dmf~vHTlBkm(N+IY!&ENiJXq_+t&P7{wI3BHY3i$+h;gRh_9SW z4dvJP#^l>X-*!N3_(NRmmn!acy(Car{q1X_%dNdTbNyai^Gn`Wi_JGH0p|mx1N&DE z?ps$&GcLwQ`&X?l@%MG!`fW$4YoBdLwEALBj63e)vaZz}Q`dTMuSf}x&Q*MNv>wd~ zuLY*79^+|Wo_6#o1qr_s{(|-7it#DL{_ZzutnuNoW7^~k@3c@RKKl6!prWX$P$_5m G{{H|s)Tyfg literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-1.png b/shared/public/chain-logos/eip155-1.png new file mode 100644 index 0000000000000000000000000000000000000000..db601549733159b8ecc75e73ba0ee7cf46fe669b GIT binary patch literal 4886 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 literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-10.png b/shared/public/chain-logos/eip155-10.png new file mode 100644 index 0000000000000000000000000000000000000000..ff6ca5078f36d5677a2dce569359cb008a83ad9c GIT binary patch literal 9027 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 literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-100.png b/shared/public/chain-logos/eip155-100.png new file mode 100644 index 0000000000000000000000000000000000000000..66a1db57e13047a57acbd43fa8856f63b83d0237 GIT binary patch literal 323 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7?_xWRHv9tCXnI`@CkAK|NpC00093P)t-sf=A{5 z|NnzX<^KNvgGuFvP3HUg{`~v?hD_%E{r`wi=J)jeiBabH_WqGx=!j3|>EHXQfbG${ z_Vn)k{rvuiPv*Rw@$>Ed^zZ%s{QsnR?3H8bl3wVMT+0eA(!Tbti0-O^?e*~e!lm->==_~; z>Y;V(-Oc!fO68Sg>5Nt9uZix{zV`6x{M*X-w2<(QS?7vU=J)dcgi7YlxAncA@#We1 ztc2~dkMH~V{)|`W*~j>^j_>d3{HuiR_3!{V(Hn&_@;gBvX1ZR-TR7D=Etn` z!lv_>XX&GN?7yJ#u#4}sk?-^F{k)s;kX+}bd+h4p`{mmDpmXcu)cMD)^qz6+!>IE0 z@BY=o_PLnwy`Ay>`~H<;=;z(~>EQeP`u@bJ^Rtid-p}~j$@jF7@1Jk$f_bWx_Eu#4`)r}L_U?bycmlVRxI z&-s*L>A9Kk?&tiWbnAys=Dwftx0Ud#gYBt-?%>n;wv_Pu`u>Yn=YmM(_3-}h>HWv8 z^Wf3>wUY3OQ0C{``qjbq+sXLKvGm2N^TMU`&$#y4$oQIS>8OA0=iK`27Vd(Ja{E%AbBI=;#000A>NklzDmX$t-|47lE5q65+oq~A?ZBj)~^-dv})^R9RV}`@1x;2>X zE`y`cW3zG!W=A1*e3F9MQE>XdK*8`RY;!6F!=q4muS-?(jFCH*d~vR+QHbpqp=yVR zdZ1IkjVM%K3@u`pP`I=oJRRFn*d01lQq{Wy3TMqKs%AoiiOi^4H3TU!?FMGt2o2)& zMEVr@1UBsI(z7`2$c!2j0Z$-UsfmCs5bP-v0bv9i`M(U9 z-Bep=I$&d@grwzl{6-f~@20sF7N44#4SGcCHyToVD&)0V)q`lxcM zHa&Z=_JFO=gQxxZB(r_HmF9riNIQ5O{cJx_SAbNvkOAD~i}eRw*;3A61xHut4G32z zDHN;|r*Pf8Q2qg&i*7mhPp7b9lY^ZPSwLa8)AJ9QjP6VrOJT3Q(Fx&m3aHw5esjJ7 z6AwV30}rA?u5P{B;#3u<@(kdRpeqkMJW5sMh$5(tl#j+RQD^JqQ;==KgB0%T3m?v+Gc$$A%`mFYs)wrZVVA1W{T=vw{Cs+lo74qV zU3gIfo{A9>s(P*zL!kOdo&jikfdksEn$mk1m7fv01!FdjODlGBf|t0ZZU%ZY!se0H9%#%T9dy z8Mz9Z3IO^Ji8KD}i%3h2BTWVXMTIXx@d%9sNI3^gF%VD_MzB{51n^Y^n`I)PwE{t2 zqlo~%-V44$Z@j59;4P;0tc(HOZjLn?0^WXy8Sf4aL6VzeF*JCOszEcLsF)U^>H}!- z;YU=t9~YvFGr5t%Cn4yN_%!Qu^jQj>ng&sbd_EYO%=wbS)Dbhk`dTj3bm!MYqv7As zhdedu<&6K1l3bh}XqV_yK!3^aV=&@}QkR1G(`LkvKQY_Sb6`|SD^4~D \ No newline at end of file diff --git a/shared/public/chain-logos/eip155-420.png b/shared/public/chain-logos/eip155-420.png new file mode 100644 index 0000000000000000000000000000000000000000..da484cf4121979e0e3a2a08a055105f1283093ce GIT binary patch literal 9026 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 literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-42161.png b/shared/public/chain-logos/eip155-42161.png new file mode 100644 index 0000000000000000000000000000000000000000..a00737e8d597d24944f3b022915f75a36bb623cc GIT binary patch literal 44395 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 Hu0mjfmJo<0 literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-421611.png b/shared/public/chain-logos/eip155-421611.png new file mode 100644 index 0000000000000000000000000000000000000000..a982ac4359a77375bbd180efb2374afc04aaecd9 GIT binary patch literal 44399 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 LNkvXXu0mjf`?ij+ literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-42220.png b/shared/public/chain-logos/eip155-42220.png new file mode 100644 index 0000000000000000000000000000000000000000..9277441e0b037fa2a3ba320f71a54d6c1dee583c GIT binary patch literal 13644 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%0DfyTBV zuV<(wWc_OVPAJAZ{*|xF+_WwiE0B~FuZ?Q8TFB7b23*9-boGcuE=SoAQi6tH(H(RcRMm%bCm|Fa)j#9iBF+$Ng{34PN)AAfP3{FOXIH_aVx3LQ(Y3n-=5#i4YyXrHm0kCxGej zTKg9f22 zw=Q(Mv9LVxyzVq3iXIP}>uU8*4R-`$#dg1m=cek0y#s!<(cc&a?|{ockc#>ih$k4i zOr%+ye*2Lv)Whn1EcSSa>I)pL>;DxUiRkpGz%RTuGhJbmwlC7|H>++O^D9SsCK@Ij z07mPwYMid2C4$OkA1BdxNz4T0uPoM>H>O7)_>X020q=4kL4m*EM0G2XEX{57o;Aix7U_C+SV%bQ1j#$&(PVnYvmXU%NzSeC>%1AbAql?K4~<0_UD1B zqVK^WNrZKqk_QA9>rANV`&8<@pufmW-Np@e$^k&_pwjUJaWB+4nc?I|{`dcA;FKgz zupz>keum##OW3nCCQ-IomE1+I&7&TTZD>9pOcCtM)AVF6?BV1hrdK5$4aSY;kmqaN ztJlEJG<{1fr=><_EQa;xZvF8q~v&=t*)^=y z2w<^|Ywxu-Q_7j&(%8B=0Gd*lBt2|(dxLGtM05vJTfU>utNREPDbw6VQZbpMgU2T< z@BDO%`=W|p(OY$7wQ#>T=N$eSS{9XMr*+R!4(Q;s$mcA2U-a^oQxT_I>vD-$-uOkf zb22nJ8~U&Ih0geYFuyk2VVx5!tyS=yj&Y)%RukPfzwhx4jdN}8yA5tuF7%EyYN{N3 zHK?`3F49~MxS$@d;QhXi1L1%T!+in*S4%d?609~S23YV9X`9|S*KZFNn(ahWVUY4S3lL5`M!H`r|fKB zQl;WB=b@41;>+@)San`qDmyy-!|pb(bmBhLBoELcQTes~bMGdk=%M(u)gkpJL}*Wc z)9StYk%8dTZySdpfVu*;MTpLC%1ztzexk5f!WnNHFp_z~qLIy`8O+X6B*`(jxWPdf zz@-LDwET-Jn$%bN`ns=hhFKYYEn23_0yq_N4J!2Z03No{T$U#rG!8^37k zQ2J(T5?9zvB4rCaWUZzcLj?=*E|1$AVq78x_$^n9H5P9S7h8ffDe)TAH z3IzbU{(mxO1C2N}jbhe1x*q|-yIX8S{*?7M!^!IbWtrz!1 zhs>UN#mdGdwgJ(ZyoZCHXtacBW-n73UB!md%t3HwGvY`UR|{n7kqnc+MZKo^WHwhO zybU@>-3wlbOm&`b6fJyjnU zfTwgW#aHMO=uH*!y5wUv)}QeXT_7k|88fxHFNyssaSXeBPk5KVI5t5)109~C8?T=s z6)KO9L-1>Dt|?EeI^3orytpqk`CBQ8zL7_Yl*dX7n#wP#T^?n-pIUii$Peb9%=Sy_ zAT3+M*VvUU7D7i=Sz6>BWi9+^f;EYVD)}z1!=llh_(+4pdcJsrNI#_Gj6E8{l)d@0 zA3^tKo(gSsmpnCYD64s(juMZvHlRTZb>3Mq3~si(lAh&$cwbMQcN7L26&lRi{)uqk zZ$WFT=s0S*31JQ(eU2BiULtH68y=2&LalB8Y!~63Z~5}K4w9Ud@|UX5#=-v!OuZ{o literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-43113.png b/shared/public/chain-logos/eip155-43113.png new file mode 100644 index 0000000000000000000000000000000000000000..619576f3ab600a8de0596ead79fcb7f8ada61e50 GIT binary patch literal 3601 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 XvQV2>PI9_^00000NkvXXu0mjf+5zT< literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-44787.png b/shared/public/chain-logos/eip155-44787.png new file mode 100644 index 0000000000000000000000000000000000000000..9277441e0b037fa2a3ba320f71a54d6c1dee583c GIT binary patch literal 13644 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%0DfyTBV zuV<(wWc_OVPAJAZ{*|xF+_WwiE0B~FuZ?Q8TFB7b23*9-boGcuE=SoAQi6tH(H(RcRMm%bCm|Fa)j#9iBF+$Ng{34PN)AAfP3{FOXIH_aVx3LQ(Y3n-=5#i4YyXrHm0kCxGej zTKg9f22 zw=Q(Mv9LVxyzVq3iXIP}>uU8*4R-`$#dg1m=cek0y#s!<(cc&a?|{ockc#>ih$k4i zOr%+ye*2Lv)Whn1EcSSa>I)pL>;DxUiRkpGz%RTuGhJbmwlC7|H>++O^D9SsCK@Ij z07mPwYMid2C4$OkA1BdxNz4T0uPoM>H>O7)_>X020q=4kL4m*EM0G2XEX{57o;Aix7U_C+SV%bQ1j#$&(PVnYvmXU%NzSeC>%1AbAql?K4~<0_UD1B zqVK^WNrZKqk_QA9>rANV`&8<@pufmW-Np@e$^k&_pwjUJaWB+4nc?I|{`dcA;FKgz zupz>keum##OW3nCCQ-IomE1+I&7&TTZD>9pOcCtM)AVF6?BV1hrdK5$4aSY;kmqaN ztJlEJG<{1fr=><_EQa;xZvF8q~v&=t*)^=y z2w<^|Ywxu-Q_7j&(%8B=0Gd*lBt2|(dxLGtM05vJTfU>utNREPDbw6VQZbpMgU2T< z@BDO%`=W|p(OY$7wQ#>T=N$eSS{9XMr*+R!4(Q;s$mcA2U-a^oQxT_I>vD-$-uOkf zb22nJ8~U&Ih0geYFuyk2VVx5!tyS=yj&Y)%RukPfzwhx4jdN}8yA5tuF7%EyYN{N3 zHK?`3F49~MxS$@d;QhXi1L1%T!+in*S4%d?609~S23YV9X`9|S*KZFNn(ahWVUY4S3lL5`M!H`r|fKB zQl;WB=b@41;>+@)San`qDmyy-!|pb(bmBhLBoELcQTes~bMGdk=%M(u)gkpJL}*Wc z)9StYk%8dTZySdpfVu*;MTpLC%1ztzexk5f!WnNHFp_z~qLIy`8O+X6B*`(jxWPdf zz@-LDwET-Jn$%bN`ns=hhFKYYEn23_0yq_N4J!2Z03No{T$U#rG!8^37k zQ2J(T5?9zvB4rCaWUZzcLj?=*E|1$AVq78x_$^n9H5P9S7h8ffDe)TAH z3IzbU{(mxO1C2N}jbhe1x*q|-yIX8S{*?7M!^!IbWtrz!1 zhs>UN#mdGdwgJ(ZyoZCHXtacBW-n73UB!md%t3HwGvY`UR|{n7kqnc+MZKo^WHwhO zybU@>-3wlbOm&`b6fJyjnU zfTwgW#aHMO=uH*!y5wUv)}QeXT_7k|88fxHFNyssaSXeBPk5KVI5t5)109~C8?T=s z6)KO9L-1>Dt|?EeI^3orytpqk`CBQ8zL7_Yl*dX7n#wP#T^?n-pIUii$Peb9%=Sy_ zAT3+M*VvUU7D7i=Sz6>BWi9+^f;EYVD)}z1!=llh_(+4pdcJsrNI#_Gj6E8{l)d@0 zA3^tKo(gSsmpnCYD64s(juMZvHlRTZb>3Mq3~si(lAh&$cwbMQcN7L26&lRi{)uqk zZ$WFT=s0S*31JQ(eU2BiULtH68y=2&LalB8Y!~63Z~5}K4w9Ud@|UX5#=-v!OuZ{o literal 0 HcmV?d00001 diff --git a/shared/public/chain-logos/eip155-80001.png b/shared/public/chain-logos/eip155-80001.png new file mode 100644 index 0000000000000000000000000000000000000000..5b89293879f4de9236e3bb82de1898afc455e892 GIT binary patch literal 42863 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