From d60134567beb7e3f164ebb4719289205957e3050 Mon Sep 17 00:00:00 2001 From: gin-lsl Date: Sun, 18 Feb 2024 13:53:33 +0800 Subject: [PATCH] feat: Add adapter for Solana (#472) * feat: Add adapter for Solana * fix: conflict * chore: format * test: update snapshot * test: fix test cases * chore: update deps * refactor: update types * docs: del solana basic demo * chore(solana): remove re-export web3-assets * feat: revert chain.id type to number * test: add chain id duplicate check * chore: add changeset * feat: handle switch chain * docs: add SolanaWeb3ConfigProvider * feat: SolanaProvider support pass chains and balance * feat: price prop * feat: add solana testnet and devnet * docs: udpate api doc * feat: add address prefix * docs: add solana demos * test: add solana test cases * feat: improve * test: update test * test: fix test * chore: remove log * chore: update web3-assets entry point * feat: delete mainnet * fix: rename solana index.tsx to index.ts for fix ci * chore: fix build and typescript error * docs: enable demos * test: add tests * refactor: format * chore: update pnpm-lock.yaml * feat: Components adapts Solana's address format * test: add address format tests * chore: add changeset * chore: update changeset * feat: remove selectWallet event and solana chain check * test: add test * test: remove unused tests * chore: remove comment * test: fix vitest config * chore: improve assets multi entry conf --------- Co-authored-by: tingzhao.ytz --- .changeset/many-falcons-film.md | 7 + .changeset/tall-clocks-tell.md | 5 + .changeset/tidy-starfishes-flow.md | 6 + .dumirc.ts | 15 +- package.json | 2 + packages/assets/package.json | 28 +- .../src/{chains.tsx => chains/ethereum.tsx} | 0 packages/assets/src/index.ts | 2 +- packages/assets/src/solana/chains.tsx | 39 + packages/assets/src/solana/index.ts | 1 + packages/assets/src/wallets/index.ts | 1 + packages/assets/src/wallets/phantom.tsx | 20 + packages/common/src/types.ts | 9 + packages/solana/.fatherrc.ts | 5 + packages/solana/README.md | 3 + packages/solana/package.json | 69 + packages/solana/src/chains.tsx | 35 + packages/solana/src/index.ts | 6 + .../__tests__/balance.test.tsx | 99 + .../solana-provider/__tests__/basic.test.tsx | 267 ++ .../__tests__/connect.test.tsx | 258 ++ .../__tests__/get-nft-metadata.test.tsx | 115 + .../__tests__/rpc-provider.test.tsx | 130 + .../__tests__/switch-chain.test.tsx | 155 + .../__tests__/switch-wallet.test.tsx | 149 + .../src/solana-provider/__tests__/utils.tsx | 27 + .../src/solana-provider/config-provider.tsx | 176 + packages/solana/src/solana-provider/index.tsx | 72 + packages/solana/src/wallets/built-in.ts | 8 + packages/solana/src/wallets/factory.ts | 23 + packages/solana/src/wallets/types.ts | 16 + packages/solana/tsconfig.json | 4 + .../src/wagmi-provider/config-provider.tsx | 5 +- packages/web3/package.json | 1 + .../address/__tests__/address-prefix.test.tsx | 70 + .../web3/src/address/__tests__/index.test.tsx | 4 + packages/web3/src/address/index.tsx | 21 +- packages/web3/src/browser-link/index.tsx | 20 +- .../src/connect-button/connect-button.tsx | 21 +- packages/web3/src/connect-button/interface.ts | 1 + .../web3/src/connect-button/profile-modal.tsx | 9 +- .../web3/src/connect-modal/context/index.ts | 2 + packages/web3/src/connect-modal/interface.ts | 2 + .../src/connector/__tests__/basic.test.tsx | 4 + packages/web3/src/connector/connector.tsx | 4 +- packages/web3/src/solana/demos/balance.tsx | 14 + packages/web3/src/solana/demos/basic.tsx | 14 + .../web3/src/solana/demos/more-components.tsx | 20 + .../web3/src/solana/demos/more-wallets.tsx | 14 + packages/web3/src/solana/demos/networks.tsx | 27 + packages/web3/src/solana/index.md | 36 + packages/web3/src/solana/index.zh-CN.md | 52 + .../web3/src/utils/__tests__/format.test.ts | 23 +- packages/web3/src/utils/format.ts | 50 +- pnpm-lock.yaml | 3732 ++++++++++++++++- tsconfig.base.json | 4 +- vitest.config.mts | 4 + 57 files changed, 5710 insertions(+), 196 deletions(-) create mode 100644 .changeset/many-falcons-film.md create mode 100644 .changeset/tall-clocks-tell.md create mode 100644 .changeset/tidy-starfishes-flow.md rename packages/assets/src/{chains.tsx => chains/ethereum.tsx} (100%) create mode 100644 packages/assets/src/solana/chains.tsx create mode 100644 packages/assets/src/solana/index.ts create mode 100644 packages/assets/src/wallets/phantom.tsx create mode 100644 packages/solana/.fatherrc.ts create mode 100644 packages/solana/README.md create mode 100644 packages/solana/package.json create mode 100644 packages/solana/src/chains.tsx create mode 100644 packages/solana/src/index.ts create mode 100644 packages/solana/src/solana-provider/__tests__/balance.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/basic.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/connect.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx create mode 100644 packages/solana/src/solana-provider/__tests__/utils.tsx create mode 100644 packages/solana/src/solana-provider/config-provider.tsx create mode 100644 packages/solana/src/solana-provider/index.tsx create mode 100644 packages/solana/src/wallets/built-in.ts create mode 100644 packages/solana/src/wallets/factory.ts create mode 100644 packages/solana/src/wallets/types.ts create mode 100644 packages/solana/tsconfig.json create mode 100644 packages/web3/src/address/__tests__/address-prefix.test.tsx create mode 100644 packages/web3/src/solana/demos/balance.tsx create mode 100644 packages/web3/src/solana/demos/basic.tsx create mode 100644 packages/web3/src/solana/demos/more-components.tsx create mode 100644 packages/web3/src/solana/demos/more-wallets.tsx create mode 100644 packages/web3/src/solana/demos/networks.tsx create mode 100644 packages/web3/src/solana/index.md create mode 100644 packages/web3/src/solana/index.zh-CN.md diff --git a/.changeset/many-falcons-film.md b/.changeset/many-falcons-film.md new file mode 100644 index 000000000..eecaa3ecd --- /dev/null +++ b/.changeset/many-falcons-film.md @@ -0,0 +1,7 @@ +--- +'@ant-design/web3-solana': major +'@ant-design/web3-assets': minor +'@ant-design/web3': minor +--- + +Add support for Solana diff --git a/.changeset/tall-clocks-tell.md b/.changeset/tall-clocks-tell.md new file mode 100644 index 000000000..c8b09d6cf --- /dev/null +++ b/.changeset/tall-clocks-tell.md @@ -0,0 +1,5 @@ +--- +'@ant-design/web3-solana': major +--- + +Add support for Solana diff --git a/.changeset/tidy-starfishes-flow.md b/.changeset/tidy-starfishes-flow.md new file mode 100644 index 000000000..d191f1e2e --- /dev/null +++ b/.changeset/tidy-starfishes-flow.md @@ -0,0 +1,6 @@ +--- +'@ant-design/web3-assets': minor +'@ant-design/web3': minor +--- + +Address-like components support addressPrefix prop, add solana chain configs diff --git a/.dumirc.ts b/.dumirc.ts index 2391bf92c..f5fb61351 100644 --- a/.dumirc.ts +++ b/.dumirc.ts @@ -5,8 +5,11 @@ import { defineConfig } from 'dumi'; // utils must build before core // runtime must build before renderer-react const pkgList = readdirSync(join(__dirname, 'packages')).map((pkg) => { + const packageJson = require(join(__dirname, 'packages', pkg, 'package.json')); + return { - name: require(join(__dirname, 'packages', pkg, 'package.json')).name, + name: packageJson.name, + exports: packageJson.exports, path: join(__dirname, 'packages', pkg, 'src'), }; }); @@ -14,6 +17,14 @@ const pkgList = readdirSync(join(__dirname, 'packages')).map((pkg) => { const alias = pkgList.reduce( (pre, pkg) => { pre[pkg.name] = pkg.path; + + // has multiple entries + if (pkg.exports && pkg.exports['.']) { + Object.keys(pkg.exports).forEach((key) => { + pre[`${pkg.name}/${key}`] = join(pkg.path, key); + }); + } + return { ...pre, }; @@ -32,7 +43,7 @@ export default defineConfig({ window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); - + gtag('config', 'G-C31HWEY1D4'); `, ], diff --git a/package.json b/package.json index c6a219ec3..104363da8 100644 --- a/package.json +++ b/package.json @@ -52,10 +52,12 @@ "@ant-design/web3-common": "workspace:*", "@ant-design/web3-icons": "workspace:*", "@ant-design/web3-wagmi": "workspace:*", + "@ant-design/web3-solana": "workspace:*", "@biomejs/biome": "^1.4.1", "@changesets/changelog-git": "^0.2.0", "@changesets/cli": "^2.27.1", "@ianvs/prettier-plugin-sort-imports": "^4.1.1", + "@solana/wallet-adapter-wallets": "^0.19.24", "@tanstack/react-query": "^5.17.0", "@testing-library/react": "^14.1.2", "@types/lodash": "^4.14.202", diff --git a/packages/assets/package.json b/packages/assets/package.json index 363290209..1631a3236 100755 --- a/packages/assets/package.json +++ b/packages/assets/package.json @@ -6,9 +6,31 @@ "module": "dist/esm/index.js", "typings": "dist/esm/index.d.ts", "exports": { - "import": "./dist/esm/index.js", - "require": "./dist/lib/index.js", - "types": "./dist/esm/index.d.ts" + ".": { + "import": "./dist/esm/index.js", + "require": "./dist/lib/index.js", + "types": "./dist/esm/index.d.ts" + }, + "./ethereum": { + "import": "./dist/esm/chains/ethereum.js", + "require": "./dist/lib/chains/ethereum.js", + "types": "./dist/esm/chains/ethereum.d.ts" + }, + "./solana": { + "import": "./dist/esm/solana/index.js", + "require": "./dist/lib/solana/index.js", + "types": "./dist/esm/solana/index.d.ts" + } + }, + "typesVersions": { + "*": { + "solana": [ + "./dist/esm/solana/index.d.ts" + ], + "*": [ + "./dist/esm/index.d.ts" + ] + } }, "files": [ "dist", diff --git a/packages/assets/src/chains.tsx b/packages/assets/src/chains/ethereum.tsx similarity index 100% rename from packages/assets/src/chains.tsx rename to packages/assets/src/chains/ethereum.tsx diff --git a/packages/assets/src/index.ts b/packages/assets/src/index.ts index f2077e636..4d5909c70 100644 --- a/packages/assets/src/index.ts +++ b/packages/assets/src/index.ts @@ -1,2 +1,2 @@ export * from './wallets'; -export * from './chains'; +export * from './chains/ethereum'; diff --git a/packages/assets/src/solana/chains.tsx b/packages/assets/src/solana/chains.tsx new file mode 100644 index 000000000..b287e2ac2 --- /dev/null +++ b/packages/assets/src/solana/chains.tsx @@ -0,0 +1,39 @@ +import { createGetBrowserLink, SolanaChainIds, type Chain } from '@ant-design/web3-common'; +import { SolanaColorful } from '@ant-design/web3-icons'; + +export interface SolanaChain extends Chain { + id: SolanaChainIds; +} + +export const Solana: SolanaChain = { + id: SolanaChainIds.MainnetBeta, + name: 'Solana', + icon: , + browser: { + icon: , + getBrowserLink: createGetBrowserLink('https://explorer.solana.com'), + }, + nativeCurrency: { name: 'Solana', symbol: 'SOL', decimals: 9 }, +}; + +export const SolanaDevnet: SolanaChain = { + id: SolanaChainIds.Devnet, + name: 'Solana Devnet', + icon: , + browser: { + icon: , + getBrowserLink: createGetBrowserLink('https://explorer.solana.com/?cluster=devnet'), + }, + nativeCurrency: { name: 'Solana', symbol: 'SOL', decimals: 9 }, +}; + +export const SolanaTestnet: SolanaChain = { + id: SolanaChainIds.Testnet, + name: 'Solana Testnet', + icon: , + browser: { + icon: , + getBrowserLink: createGetBrowserLink('https://explorer.solana.com/?cluster=testnet'), + }, + nativeCurrency: { name: 'Solana', symbol: 'SOL', decimals: 9 }, +}; diff --git a/packages/assets/src/solana/index.ts b/packages/assets/src/solana/index.ts new file mode 100644 index 000000000..c2037b545 --- /dev/null +++ b/packages/assets/src/solana/index.ts @@ -0,0 +1 @@ +export * from './chains'; diff --git a/packages/assets/src/wallets/index.ts b/packages/assets/src/wallets/index.ts index 212f8aa74..2a42af269 100644 --- a/packages/assets/src/wallets/index.ts +++ b/packages/assets/src/wallets/index.ts @@ -4,3 +4,4 @@ export * from './coinbase-wallet'; export * from './token-pocket'; export * from './safeheron'; export * from './okx-wallet'; +export * from './phantom'; diff --git a/packages/assets/src/wallets/phantom.tsx b/packages/assets/src/wallets/phantom.tsx new file mode 100644 index 000000000..20af46cc9 --- /dev/null +++ b/packages/assets/src/wallets/phantom.tsx @@ -0,0 +1,20 @@ +import type { WalletMetadata } from '@ant-design/web3-common'; +import { ChromeCircleColorful, PhantomColorful } from '@ant-design/web3-icons'; + +export const metadata_Phantom: WalletMetadata = { + icon: , + name: 'Phantom', + remark: 'Phantom Wallet', + app: { + link: 'https://phantom.app/', + }, + extensions: [ + { + key: 'Chrome', + browserIcon: , + browserName: 'Chrome', + link: 'https://chromewebstore.google.com/detail/phantom/bfnaelmomeimhlpmgjnjophhpkkoljpa', + description: 'Access your wallet right from your favorite web browser.', + }, + ], +}; diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index e07235fc7..8af9b3ee2 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -13,6 +13,12 @@ export enum ChainIds { Avalanche = 43_114, } +export enum SolanaChainIds { + MainnetBeta = 2, + Devnet = 3, + Testnet = 4, +} + export type BrowserLinkType = 'address' | 'transaction'; export type BalanceMetadata = { @@ -61,6 +67,9 @@ export interface UniversalWeb3ProviderInterface { extendsContextFromParent?: boolean; + /** Such as `0x` */ + addressPrefix?: string | false; + connect?: (wallet?: Wallet) => Promise; disconnect?: () => Promise; switchChain?: (chain: Chain) => Promise; diff --git a/packages/solana/.fatherrc.ts b/packages/solana/.fatherrc.ts new file mode 100644 index 000000000..3305dd5a7 --- /dev/null +++ b/packages/solana/.fatherrc.ts @@ -0,0 +1,5 @@ +import { defineConfig } from 'father'; + +export default defineConfig({ + extends: '../../.fatherrc.base.ts', +}); diff --git a/packages/solana/README.md b/packages/solana/README.md new file mode 100644 index 000000000..ddaa4d913 --- /dev/null +++ b/packages/solana/README.md @@ -0,0 +1,3 @@ +# @ant-design/web3-solana + +[https://web3.ant.design](https://web3.ant.design) diff --git a/packages/solana/package.json b/packages/solana/package.json new file mode 100644 index 000000000..fadcb285f --- /dev/null +++ b/packages/solana/package.json @@ -0,0 +1,69 @@ +{ + "name": "@ant-design/web3-solana", + "version": "0.0.1", + "main": "dist/lib/index.js", + "module": "dist/esm/index.js", + "typings": "dist/esm/index.d.ts", + "exports": { + "import": "./dist/esm/index.js", + "require": "./dist/lib/index.js", + "types": "./dist/esm/index.d.ts" + }, + "files": [ + "dist", + "CHANGELOG.md", + "README.md" + ], + "keywords": [ + "ant", + "component", + "components", + "design", + "framework", + "frontend", + "react", + "react-component", + "ui", + "web3", + "solana" + ], + "homepage": "https://we3.ant.design", + "bugs": { + "url": "https://github.com/ant-design/ant-design-web3/issues" + }, + "repository": { + "type": "git", + "url": "https://github.com/ant-design/ant-design-web3" + }, + "scripts": { + "dev": "father dev", + "build": "father build" + }, + "dependencies": { + "@ant-design/web3-assets": "workspace:*", + "@ant-design/web3-common": "workspace:*", + "@metaplex-foundation/js": "^0.20.1", + "@solana/wallet-adapter-react": "^0.15.35", + "@solana/wallet-adapter-wallets": "^0.19.24", + "debug": "^4.3.4" + }, + "devDependencies": { + "@types/debug": "^4.1.12", + "father": "^4.3.8", + "typescript": "^5.3.3", + "@solana/wallet-adapter-base": "^0.9.23" + }, + "peerDependencies": { + "@solana/web3.js": "^1.89.1" + }, + "publishConfig": { + "registry": "https://registry.npmjs.org", + "access": "public" + }, + "browserslist": [ + "last 2 versions", + "Firefox ESR", + "> 1%", + "ie >= 11" + ] +} diff --git a/packages/solana/src/chains.tsx b/packages/solana/src/chains.tsx new file mode 100644 index 000000000..99ac1e99b --- /dev/null +++ b/packages/solana/src/chains.tsx @@ -0,0 +1,35 @@ +import { SolanaChainIds } from '@ant-design/web3-common'; + +export interface SolanaChainConfig { + id: SolanaChainIds; + name: string; + network: string; + rpcUrls: Record; +} + +export const solana: SolanaChainConfig = { + id: SolanaChainIds.MainnetBeta, + name: 'Solana', + network: 'mainnet-beta', + rpcUrls: { + default: 'https://api.mainnet-beta.solana.com', + }, +}; + +export const solanaDevnet: SolanaChainConfig = { + id: SolanaChainIds.Devnet, + name: 'Solana Devnet', + network: 'devnet', + rpcUrls: { + default: 'https://api.devnet.solana.com', + }, +}; + +export const solanaTestnet: SolanaChainConfig = { + id: SolanaChainIds.Testnet, + name: 'Solana Testnet', + network: 'testnet', + rpcUrls: { + default: 'https://api.testnet.solana.com', + }, +}; diff --git a/packages/solana/src/index.ts b/packages/solana/src/index.ts new file mode 100644 index 000000000..c9ad07864 --- /dev/null +++ b/packages/solana/src/index.ts @@ -0,0 +1,6 @@ +export { useWallet } from '@solana/wallet-adapter-react'; + +export * from './solana-provider'; +export { solana, solanaDevnet, solanaTestnet, type SolanaChainConfig } from './chains'; +export * from './wallets/factory'; +export * from './wallets/built-in'; diff --git a/packages/solana/src/solana-provider/__tests__/balance.test.tsx b/packages/solana/src/solana-provider/__tests__/balance.test.tsx new file mode 100644 index 000000000..849d3d615 --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/balance.test.tsx @@ -0,0 +1,99 @@ +import { type FC } from 'react'; +import { useProvider } from '@ant-design/web3'; +import type { ConnectionContextState } from '@solana/wallet-adapter-react'; +import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { SolanaWeb3ConfigProvider } from '../index'; +import { xrender } from './utils'; + +type TestConnection = Partial; + +describe('SolanaWeb3ConfigProvider balance', () => { + beforeEach(() => { + vi.resetAllMocks(); + }); + + afterAll(() => { + vi.resetModules(); + }); + + const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + const balance = 10002; + + const mockedDisconnect = vi.fn(); + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + balance, + mockedDisconnect, + }; + }); + + vi.mock('@solana/wallet-adapter-react', async () => { + const originModules = await vi.importActual('@solana/wallet-adapter-react'); + const mfjs = + // eslint-disable-next-line @typescript-eslint/consistent-type-imports + await vi.importActual('@metaplex-foundation/js'); + const PublicKey = mfjs.PublicKey; + + const publicKey = new PublicKey(mockedData.address.value); + + const ConnectionProvider: FC> = ({ + children, + }) =>
{children}
; + const WalletProvider: FC = ({ children }) => <>{children}; + + return { + ...originModules, + useWallet: () => { + return { + publicKey, + connected: true, + connect: () => {}, + select: () => {}, + disconnect: () => {}, + wallet: { name: 'Coinbase Wallet' }, + }; + }, + useConnection: () => { + const connection: TestConnection = { + getBalance: async (_publicKey: any) => { + return mockedData.balance; + }, + }; + + return { connection }; + }, + ConnectionProvider, + WalletProvider, + }; + }); + + it('availabel show balance', async () => { + const BalanceDisplay: FC = () => { + const { balance } = useProvider(); + + return
{balance?.value?.toString()}
; + }; + + const App: FC = () => ( + +
test
+ +
+ ); + + const { selector } = xrender(App); + expect(selector('.content')?.textContent).toBe('test'); + const shownBalance = selector('.shown-balance'); + + await vi.waitFor(() => { + expect(shownBalance?.textContent).toBe(mockedData.balance.toString()); + }); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/basic.test.tsx b/packages/solana/src/solana-provider/__tests__/basic.test.tsx new file mode 100644 index 000000000..ecca572c4 --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/basic.test.tsx @@ -0,0 +1,267 @@ +import { useState, type FC, type PropsWithChildren } from 'react'; +import { Connector, useProvider, type ConnectorTriggerProps } from '@ant-design/web3'; +import { SolanaTestnet } from '@ant-design/web3-assets/solana'; +import type { ConnectionContextState } from '@solana/wallet-adapter-react'; +import { fireEvent, render } from '@testing-library/react'; +import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { solana } from '../../chains'; +import { SolanaWeb3ConfigProvider } from '../index'; +import { xrender } from './utils'; + +type TestConnection = Partial; + +describe('SolanaWeb3ConfigProvider', () => { + beforeEach(() => { + vi.resetAllMocks(); + }); + + afterAll(() => { + vi.resetModules(); + }); + + const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + const balance = 10002; + + const mockedDisconnect = vi.fn(); + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + balance, + mockedDisconnect, + }; + }); + + vi.mock('@solana/wallet-adapter-react', async () => { + const originModules = await vi.importActual('@solana/wallet-adapter-react'); + const { remember } = await import('./utils'); + const mfjs = + // eslint-disable-next-line @typescript-eslint/consistent-type-imports + await vi.importActual('@metaplex-foundation/js'); + const PublicKey = mfjs.PublicKey; + + const publicKey = new PublicKey(mockedData.address.value); + + const ConnectionProvider: React.FC> = ({ + children, + endpoint, + }) => ( +
+
{endpoint}
+ {children} +
+ ); + const WalletProvider: React.FC = ({ children }) => <>{children}; + + const connectedRef = remember(false); + const currentWalletRef = remember(null); + + return { + ...originModules, + useWallet: () => { + // provide a state to emit re-render + const [, setConnected] = useState(connectedRef.value); + const [, setCurrentWallet] = useState(currentWalletRef.value); + + return { + publicKey, + connected: connectedRef.value, + connect: () => { + connectedRef.value = true; + setConnected(true); + }, + select: (_wallet: any) => { + currentWalletRef.value = _wallet; + setCurrentWallet(_wallet); + }, + disconnect: () => { + mockedData.mockedDisconnect(); + }, + wallet: currentWalletRef.value, + }; + }, + useConnection: () => { + const connection: TestConnection = { + getBalance: async (_publicKey: any) => { + return mockedData.balance; + }, + }; + + return { connection }; + }, + ConnectionProvider, + WalletProvider, + }; + }); + + it('mount correctly', () => { + const App = () => ( + +
test
+
+ ); + + const { baseElement } = render(); + expect(baseElement.querySelector('.content')?.textContent).toBe('test'); + }); + + it('print error if not found chainAsset', async () => { + const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {}); + + const App = () => ( + +
test
+
+ ); + + render(); + + await vi.waitFor(() => { + expect(consoleErrorSpy).toHaveBeenCalled(); + }); + expect(consoleErrorSpy).toHaveBeenCalledWith( + `Can not find chain ${solana.id}, you should config it in SolanaWeb3ConfigProvider 'chainAssets'.`, + ); + + consoleErrorSpy.mockRestore(); + }); + + it('available custom trigger', () => { + const CustomButton: FC> = (props) => { + const { chain, onSwitchChain } = props; + + return ( +
{ + onSwitchChain?.(solana); + }} + className="content" + > + {chain?.name} +
+ ); + }; + + const switchChain = vi.fn(); + + const App = () => ( + + + + + + ); + + // const { baseElement } = render(); + // expect(baseElement.querySelector('.content')?.textContent).toBe('Solana'); + }); + + it('available custom rpcProvider by function', () => { + const mockRpcEndpoint = 'https://fake-api.mainnet-beta.solana.com/'; + const mockRpcProvider = vi.fn(() => mockRpcEndpoint); + + const App = () => ( + +
test
+
+ ); + + const { selector } = xrender(App); + expect(selector('.content')?.textContent).toBe('test'); + + expect(mockRpcProvider).toBeCalled(); + }); + + it('ConnectionProvider', () => { + const App = () => ( + `https://main-beta.fake-domain.com/`}> +
test
+
+ ); + + const { selector } = xrender(App); + expect(selector('.endpoint')?.textContent).toBe('https://main-beta.fake-domain.com/'); + }); + + it('available show account address', async () => { + const { useWallet } = await import('@solana/wallet-adapter-react'); + const connectRunned = vi.fn(); + + const Address: React.FC = () => { + const { account } = useProvider(); + return
{account?.address}
; + }; + + const App = () => { + const { connect } = useWallet(); + return ( + +
+
test
+ +
+
+
+ ); + }; + + const { selector } = xrender(App); + expect(selector('.content')?.textContent).toBe('test'); + + const connectBtn = selector('.connect')!; + const address = selector('.address'); + + expect(connectBtn).not.toBeNull(); + + // default address is empty + expect(address?.textContent).toBe(''); + + fireEvent.click(connectBtn); + + await vi.waitFor(() => { + expect(connectRunned).toBeCalled(); + expect(address?.textContent).toBe(mockedData.address.value); + }); + }); + + it('available disconnect', () => { + const CustomConnector: FC = () => { + const { disconnect } = useProvider(); + return ( +
+ +
+ ); + }; + + const App: FC = () => { + return ( + + + + ); + }; + + const { selector } = xrender(App); + + const btn = selector('button')!; + + expect(btn?.textContent).toBe('Disconnect'); + fireEvent.click(btn); + + expect(mockedData.mockedDisconnect).toBeCalled(); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/connect.test.tsx b/packages/solana/src/solana-provider/__tests__/connect.test.tsx new file mode 100644 index 000000000..3cffc270d --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/connect.test.tsx @@ -0,0 +1,258 @@ +import { useEffect, useState } from 'react'; +import { useProvider } from '@ant-design/web3'; +import type { ConnectionContextState } from '@solana/wallet-adapter-react'; +import { fireEvent } from '@testing-library/react'; +import { afterAll, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { CoinbaseWallet, PhantomWallet } from '../../wallets/built-in'; +import { SolanaWeb3ConfigProvider } from '../index'; +import { xrender } from './utils'; + +type TestConnection = Partial; + +const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + const balance = 10002; + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + balance, + }; +}); + +const mockSelectWalletFn = vi.fn(); +const mockWalletChanged = vi.fn(); +const mockSelectWalletFnNotWalletName = vi.fn(); + +vi.mock('@solana/wallet-adapter-react', async () => { + const originModules = await vi.importActual('@solana/wallet-adapter-react'); + const { remember } = await import('./utils'); + const mfjs = + // eslint-disable-next-line @typescript-eslint/consistent-type-imports + await vi.importActual('@metaplex-foundation/js'); + const PublicKey = mfjs.PublicKey; + + const publicKey = new PublicKey(mockedData.address.value); + + const ConnectionProvider: React.FC> = ({ + children, + endpoint, + }) => ( +
+
{endpoint}
+ {children} +
+ ); + const WalletProvider: React.FC = ({ children }) => <>{children}; + + const connectedRef = remember(false); + const currentWalletRef = remember(null); + + const useWallet = () => { + // provide a state to emit re-render + const [connected, setConnected] = useState(() => 0); + const [currentWallet, setCurrentWallet] = useState(() => currentWalletRef.value); + const [connecting, setConnecting] = useState(() => false); + + useEffect(() => { + mockWalletChanged(); + + if (currentWallet) { + connectedRef.value = true; + setConnected((p) => p + 1); + } + }, [currentWallet]); + + useEffect(() => { + if (connecting) { + setConnecting(false); + connectedRef.value = true; + setConnected((p) => p + 1); + } + }, [connecting]); + + return { + publicKey, + connecting, + connected: connected, + connect: async () => { + setConnecting(true); + }, + select: (walletName: string | null) => { + mockSelectWalletFnNotWalletName(walletName); + const mockWalletAdapter = { adapter: { name: walletName } }; + currentWalletRef.value = mockWalletAdapter; + setCurrentWallet(mockWalletAdapter); + mockSelectWalletFn(); + }, + disconnect: () => {}, + wallet: currentWalletRef.value, + }; + }; + + return { + ...originModules, + useWallet, + useConnection: () => { + const connection: TestConnection = { + getBalance: async (_publicKey: any) => { + return mockedData.balance; + }, + }; + + return { connection }; + }, + ConnectionProvider, + WalletProvider, + }; +}); + +describe('Solana Connect', () => { + beforeEach(() => { + vi.resetAllMocks(); + }); + + afterAll(() => { + vi.resetModules(); + vi.clearAllMocks(); + mockSelectWalletFn.mockClear(); + }); + + it('could connect', async () => { + const { useWallet } = await import('@solana/wallet-adapter-react'); + const switchWalletRunned = vi.fn(); + const connectRunned = vi.fn(); + + const CustomConnectBtn: React.FC = () => { + const { connect, availableWallets } = useProvider(); + const { connect: connectWallet } = useWallet(); + + const [connectRunDone, setConnectRunDone] = useState(false); + + return ( +
+ + +
{connectRunDone ? 'true' : 'false'}
+
+ ); + }; + + const App = () => { + return ( + +
+
test
+ +
+
+ ); + }; + + const { selector } = xrender(App); + expect(selector('.content')?.textContent).toBe('test'); + + const connectBtn = selector('.btn-connect')!; + const switchWalletBtn = selector('.btn-switchwallet')!; + const shownConnectRunDone = selector('.shown-connectRunDone')!; + + expect(connectBtn).not.toBeNull(); + expect(shownConnectRunDone.textContent).toBe('false'); + + fireEvent.click(switchWalletBtn); + await vi.waitFor(() => { + expect(switchWalletRunned).toBeCalled(); + }); + + await vi.waitFor(() => { + expect(mockWalletChanged).toBeCalled(); + }); + + fireEvent.click(connectBtn); + await vi.waitFor(() => { + expect(mockSelectWalletFn).toBeCalledTimes(2); + }); + + await vi.waitFor( + () => { + expect(connectRunned).toBeCalled(); + expect(shownConnectRunDone.textContent).toBe('true'); + }, + { + timeout: 5000, + }, + ); + }); + + it('call connect but not provide wallet', async () => { + const { useWallet } = await import('@solana/wallet-adapter-react'); + const connectRunned = vi.fn(); + + const CustomConnectBtn: React.FC = () => { + const { connect } = useProvider(); + const { connect: connectWallet } = useWallet(); + + return ( +
+ +
+ ); + }; + + const App = () => { + return ( + +
+
test
+ +
+
+ ); + }; + + const { selector } = xrender(App); + expect(selector('.content')?.textContent).toBe('test'); + + const connectBtn = selector('.btn-connect')!; + expect(connectBtn).not.toBeNull(); + + fireEvent.click(connectBtn); + await vi.waitFor(() => { + expect(connectRunned).toBeCalled(); + expect(mockSelectWalletFnNotWalletName).toBeCalledWith(null); + }); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx b/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx new file mode 100644 index 000000000..892485575 --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/get-nft-metadata.test.tsx @@ -0,0 +1,115 @@ +/* eslint-disable @typescript-eslint/consistent-type-imports */ + +import React from 'react'; +import { useProvider } from '@ant-design/web3'; +import { metadata_CoinbaseWallet } from '@ant-design/web3-assets'; +import type { ConnectionContextState } from '@solana/wallet-adapter-react'; +import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-wallets'; +import { fireEvent } from '@testing-library/react'; +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { SolanaWeb3ConfigProvider } from '..'; +import { WalletFactory } from '../../wallets/factory'; +import { xrender } from './utils'; + +type TestConnection = Partial; + +const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + const mockTokenId = 1234n; + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + tokenId: mockTokenId, + }; +}); + +vi.mock('@metaplex-foundation/js', async () => { + const mfjs = + await vi.importActual('@metaplex-foundation/js'); + + class NFTClient { + findByMint(_input: { mintAddresss: any }) { + return new Promise((resolve) => { + return resolve({ + json: { + name: 'test test', + image: 'test image', + description: 'test description', + attributes: [{ trait_type: 'test trait_type', value: 'test value' }], + }, + }); + }); + } + } + + class Metaplex { + constructor(public readonly connection: TestConnection) {} + + nfts() { + return new NFTClient(); + } + } + + return { + ...mfjs, + Metaplex, + }; +}); + +describe('GetNFTMetadata', () => { + afterEach(() => { + vi.resetModules(); + }); + + it('could get nft metadata', async () => { + let nftMetadata: any; + const mockfn = vi.fn(); + + const NFTMetadata: React.FC = () => { + const { getNFTMetadata } = useProvider(); + return ( + + ); + }; + + const App: React.FC = () => { + return ( + + + + ); + }; + + const { selector } = xrender(App); + const btn = selector('.btn')!; + fireEvent.click(btn); + + await vi.waitFor(() => { + expect(mockfn).toBeCalled(); + expect(nftMetadata).toEqual({ + name: 'test test', + image: 'test image', + description: 'test description', + attributes: [{ trait_type: 'test trait_type', value: 'test value' }], + }); + }); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx b/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx new file mode 100644 index 000000000..abbd7c341 --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/rpc-provider.test.tsx @@ -0,0 +1,130 @@ +import type { FC, PropsWithChildren } from 'react'; +import { fireEvent, render } from '@testing-library/react'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +import { solana } from '../../chains'; +import { SolanaWeb3ConfigProvider } from '../index'; +import { xrender } from './utils'; + +const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + }; +}); + +vi.mock('@solana/wallet-adapter-react', async () => { + const originModules = await vi.importActual('@solana/wallet-adapter-react'); + const mfjs = + // eslint-disable-next-line @typescript-eslint/consistent-type-imports + await vi.importActual('@metaplex-foundation/js'); + const PublicKey = mfjs.PublicKey; + + const publicKey = new PublicKey(mockedData.address.value); + + const ConnectionProvider: React.FC> = ({ + children, + endpoint, + }) => ( +
+
{endpoint}
+ {children} +
+ ); + const WalletProvider: React.FC = ({ children }) => <>{children}; + + return { + ...originModules, + useWallet: () => { + return { + publicKey, + connected: false, + connect: () => {}, + select: () => {}, + disconnect: () => {}, + wallet: { + name: 'Coinbase', + }, + }; + }, + ConnectionProvider, + WalletProvider, + }; +}); + +const mockFn = vi.fn(() => {}); + +describe('SolanaWeb3ConfigProvider rpcProvider', () => { + beforeEach(async () => { + vi.resetAllMocks(); + + vi.mock('../config-provider.tsx', () => { + const AntDesignWeb3ConfigProvider: FC< + PropsWithChildren<{ onCurrentChainChange: () => void }> + > = ({ children, onCurrentChainChange }) => { + return ( +
+ + {children} +
+ ); + }; + + return { + AntDesignWeb3ConfigProvider, + }; + }); + }); + + afterEach(() => { + vi.resetModules(); + }); + + it('available custom rpcProvider by function', () => { + const mockRpcEndpoint = 'https://fake-api.mainnet-beta.solana.com/'; + const mockRpcProvider = vi.fn(() => mockRpcEndpoint); + + const App = () => ( + +
test
+
+ ); + + const { baseElement } = render(); + expect(baseElement.querySelector('.content')?.textContent).toBe('test'); + + expect(mockRpcProvider).toBeCalled(); + }); + + it('use default solana rpcProvider if not chain connected', async () => { + const App = () => ( + +
test
+
+ ); + + const { selector } = xrender(App); + expect(selector('.content')?.textContent).toBe('test'); + + expect(selector('.btn')).not.toBeNull(); + + fireEvent.click(selector('.btn')!); + + expect(mockFn).toBeCalled(); + + expect(selector('.endpoint')?.textContent).toBe(solana.rpcUrls.default); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx b/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx new file mode 100644 index 000000000..251b68f0d --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/switch-chain.test.tsx @@ -0,0 +1,155 @@ +/* eslint-disable @typescript-eslint/consistent-type-imports */ + +import { ConnectButton, Connector, useProvider } from '@ant-design/web3'; +import { metadata_CoinbaseWallet } from '@ant-design/web3-assets'; +import { Solana, SolanaDevnet, SolanaTestnet } from '@ant-design/web3-assets/solana'; +import type { ConnectionContextState } from '@solana/wallet-adapter-react'; +import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-wallets'; +import { fireEvent } from '@testing-library/react'; +import { afterEach, describe, expect, it, vi } from 'vitest'; + +import { solana, solanaDevnet, solanaTestnet } from '../../chains'; +import { WalletFactory } from '../../wallets/factory'; +import { AntDesignWeb3ConfigProvider } from '../config-provider'; +import { SolanaWeb3ConfigProvider } from '../index'; +import { xrender } from './utils'; + +type TestConnection = Partial; + +const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + }; +}); + +vi.mock('@solana/wallet-adapter-react', async () => { + const adapterReact = await vi.importActual('@solana/wallet-adapter-react'); + const mfjs = + await vi.importActual('@metaplex-foundation/js'); + const PublicKey = mfjs.PublicKey; + + const publicKey = new PublicKey(mockedData.address.value); + + return { + ...adapterReact, + useWallet: () => { + return { + publicKey, + connected: true, + connect: () => {}, + select: () => {}, + disconnect: () => {}, + wallet: { + name: 'Coinbase', + }, + }; + }, + useConnection: () => { + const connection: TestConnection = { + getBalance: async (_publicKey: any) => { + return 10001; + }, + }; + + return { connection }; + }, + }; +}); + +describe('Switch network', () => { + afterEach(() => { + vi.resetModules(); + }); + + it('switch network when connected', async () => { + const App = () => { + return ( + + + + + + ); + }; + + const { selector, selectors } = xrender(App); + + fireEvent.click(selector('.ant-web3-connect-button-chain-select')!); + + await vi.waitFor(() => { + expect(selector('.ant-web3-connect-button-text')?.textContent).toBe(mockedData.address.short); + expect(selector('.ant-web3-connect-button-chain-select')?.textContent).toBe('Solana'); + }); + + fireEvent.click(selector('.ant-web3-connect-button-chain-select')!); + + expect(selector('.ant-dropdown-menu-item .ant-web3-icon-solana-colorful')).not.toBeNull(); + + fireEvent.click(selectors('.ant-dropdown-menu-item')[1]); + + await vi.waitFor(() => { + expect(selector('.ant-web3-connect-button-chain-select')?.textContent).toBe('Solana Devnet'); + expect(selector('.ant-web3-connect-button-text')?.textContent).toBe(mockedData.address.short); + }); + }); + + it('default use first chain when switchChain target not in `chains`', async () => { + const mockSwitchChain = vi.fn(); + + const CustomConnector = () => { + const { switchChain } = useProvider(); + return ( +
+ +
+ ); + }; + const App = () => { + return ( + { + mockSwitchChain(chain?.id); + }} + chainAssets={[SolanaDevnet]} + > + + + ); + }; + + const { selector } = xrender(App); + + const btn = selector('.btn-switch'); + expect(btn?.textContent).toBe('Switch chain'); + + fireEvent.click(btn!); + + await vi.waitFor(() => { + expect(mockSwitchChain).toBeCalledWith(solanaDevnet.id); + }); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx b/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx new file mode 100644 index 000000000..c040571b0 --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/switch-wallet.test.tsx @@ -0,0 +1,149 @@ +import EventEmitter from 'node:events'; +import React, { useEffect, useState } from 'react'; +import { useProvider } from '@ant-design/web3'; +import { metadata_CoinbaseWallet, metadata_Phantom } from '@ant-design/web3-assets'; +import { Solana, SolanaDevnet } from '@ant-design/web3-assets/solana'; +import { WalletReadyState, type Adapter } from '@solana/wallet-adapter-base'; +import type { Wallet } from '@solana/wallet-adapter-react'; +import { CoinbaseWalletAdapter, PhantomWalletAdapter } from '@solana/wallet-adapter-wallets'; +import { fireEvent } from '@testing-library/react'; +import { afterAll, describe, expect, it, vi } from 'vitest'; + +import { solana, solanaDevnet } from '../../chains'; +import { WalletFactory } from '../../wallets/factory'; +import { AntDesignWeb3ConfigProvider } from '../config-provider'; +import { xrender } from './utils'; + +const mockFn = vi.fn(); +const mockSelectWalletFn = vi.fn(); + +const mockedData = vi.hoisted(() => { + const mockAddress = '8dQE449ozUAS2XPyvao6hEpkAtGALo1A1q4TApayFfCo'; + const mockAddressShort = '8dQE44...FfCo'; + + return { + address: { + value: mockAddress, + short: mockAddressShort, + }, + }; +}); + +const event = new EventEmitter(); + +vi.mock('@solana/wallet-adapter-react', async () => { + const originModules = await vi.importActual('@solana/wallet-adapter-react'); + const mfjs = + // eslint-disable-next-line @typescript-eslint/consistent-type-imports + await vi.importActual('@metaplex-foundation/js'); + const PublicKey = mfjs.PublicKey; + + const publicKey = new PublicKey(mockedData.address.value); + + const ConnectionProvider: React.FC> = ({ + children, + endpoint, + }) => ( +
+
{endpoint}
+ {children} +
+ ); + const WalletProvider: React.FC = ({ children }) => ( +
{children}
+ ); + + const adapters: Adapter[] = [new CoinbaseWalletAdapter(), new PhantomWalletAdapter()]; + + return { + ...originModules, + useWallet: () => { + const [currentWallet, setCurrentWallet] = useState(() => { + return { adapter: adapters[0], readyState: WalletReadyState.Installed }; + }); + + useEffect(() => { + event.on('walletChange', (c: string) => { + const foundAdapter = adapters.find((w) => w.name === c)!; + setCurrentWallet({ + adapter: foundAdapter, + readyState: WalletReadyState.Installed, + }); + }); + return () => { + event.removeAllListeners('walletChange'); + }; + }); + return { + publicKey, + connected: false, + wallet: currentWallet, + connect: () => {}, + select: (walletName: string) => { + event.emit('walletChange', walletName); + mockSelectWalletFn(walletName); + }, + disconnect: () => {}, + }; + }, + ConnectionProvider, + WalletProvider, + }; +}); + +describe('AntDesignWeb3ConfigProvider wallet', () => { + afterAll(() => { + mockFn.mockClear(); + vi.unmock('@ant-design/web3-common'); + }); + + it('switchChain', async () => { + const { WalletProvider, useWallet } = await import('@solana/wallet-adapter-react'); + + const CustomConnector: React.FC = () => { + const { switchChain } = useProvider(); + const { connected } = useWallet(); + + return ( +
+ +
{connected}
+
+ ); + }; + + const App: React.FC = () => { + return ( + + + + + + ); + }; + + const { selector } = xrender(App); + + const btn = selector('.btn-switchchain')!; + const shownCurrentChain = selector('.current-chain'); + + expect(btn?.textContent).toBe('Switch Chain'); + expect(shownCurrentChain).not.toBeNull(); + + fireEvent.click(btn); + }); +}); diff --git a/packages/solana/src/solana-provider/__tests__/utils.tsx b/packages/solana/src/solana-provider/__tests__/utils.tsx new file mode 100644 index 000000000..68cfa0a93 --- /dev/null +++ b/packages/solana/src/solana-provider/__tests__/utils.tsx @@ -0,0 +1,27 @@ +import type { FC } from 'react'; +import { render } from '@testing-library/react'; + +type RenderResult = ReturnType; +type RenderWithUtils = RenderResult & { + selector: (selector: string) => T | null; + selectors: (selector: string) => NodeListOf; +}; +type XRender = (Comp: FC, options?: Parameters[1]) => RenderWithUtils; + +export const xrender: XRender = (Comp, options) => { + const { baseElement, ...others } = render(, options); + return { + baseElement, + ...others, + selector: (selector) => baseElement.querySelector(selector), + selectors: (selector) => baseElement.querySelectorAll(selector), + }; +}; + +/** + * Need to wrap an object to ensure that when `use*` is called multiple times, + * the `value` returns the same value + */ +export function remember(value: T) { + return { value }; +} diff --git a/packages/solana/src/solana-provider/config-provider.tsx b/packages/solana/src/solana-provider/config-provider.tsx new file mode 100644 index 000000000..8f9137afb --- /dev/null +++ b/packages/solana/src/solana-provider/config-provider.tsx @@ -0,0 +1,176 @@ +import React, { useEffect, useMemo, useRef, useState } from 'react'; +import type { Account, Chain, Locale, Wallet } from '@ant-design/web3-common'; +import { Web3ConfigProvider } from '@ant-design/web3-common'; +import { Metaplex, PublicKey } from '@metaplex-foundation/js'; +import type { WalletName } from '@solana/wallet-adapter-base'; +import { useConnection, useWallet } from '@solana/wallet-adapter-react'; + +import type { SolanaChainConfig } from '../chains'; + +interface ConnectAsync { + promise: Promise; + resolve: () => void; +} + +export interface AntDesignWeb3ConfigProviderProps { + locale?: Locale; + chainAssets?: Chain[]; + availableChains: SolanaChainConfig[]; + balance?: boolean; + currentChain?: SolanaChainConfig; + availableWallets: Wallet[]; + onCurrentChainChange?: (chain?: SolanaChainConfig) => void; +} + +export const AntDesignWeb3ConfigProvider: React.FC< + React.PropsWithChildren +> = (props) => { + const { publicKey, connected, connect, select: selectWallet, disconnect, wallet } = useWallet(); + + const { connection } = useConnection(); + + const connectAsyncRef = useRef(); + + const [balanceData, setBalanceData] = useState(); + const [account, setAccount] = useState(); + const [currentWalletName, setCurrentWalletName] = useState(() => wallet?.adapter?.name ?? null); + + // get account address + useEffect(() => { + if (!(publicKey && connected)) { + setAccount(undefined); + return; + } + + setAccount({ + address: publicKey.toBase58(), + }); + }, [publicKey, connected, wallet?.adapter?.name]); + + useEffect(() => { + if (!connectAsyncRef.current) { + return; + } + + if (connected) { + connectAsyncRef.current.resolve(); + connectAsyncRef.current = undefined; + } + }, [connected]); + + // get balance + useEffect(() => { + if (!(props.balance && connection && publicKey)) { + return; + } + + const getBalance = async () => { + const balanceVal = await connection.getBalance(publicKey); + setBalanceData(BigInt(balanceVal)); + }; + + getBalance(); + }, [connection, publicKey, props.balance]); + + // connect/disconnect wallet + useEffect(() => { + if (wallet?.adapter?.name) { + connect(); + } else { + if (connected) { + disconnect(); + } + } + }, [wallet, wallet?.adapter?.name, props.currentChain, connect, disconnect, connected]); + + const chainList = useMemo(() => { + return props.availableChains + .map((item) => { + const c = props.chainAssets?.find((asset) => { + return asset.id === item.id; + }) as Chain; + + if (c?.id) { + return { + ...item, + ...c, + id: c.id, + name: c.name, + icon: c.icon, + }; + } else { + console.error( + `Can not find chain ${item.id}, you should config it in SolanaWeb3ConfigProvider 'chainAssets'.`, + ); + return null; + } + }) + .filter((item) => item !== null) as (Chain & SolanaChainConfig)[]; + }, [props.availableChains, props.chainAssets]); + + const currentChain = useMemo(() => { + return chainList.find((c) => c.id === props.currentChain?.id); + }, [props.currentChain, chainList]); + + const currency = currentChain?.nativeCurrency; + + return ( + { + const foundChain = chainList.find((c) => c.id === _chain.id); + props.onCurrentChainChange?.(foundChain ?? chainList[0]); + selectWallet(currentWalletName); + }} + connect={async (_wallet) => { + let resolve: any; + const promise = new Promise((res) => { + resolve = res; + }); + + connectAsyncRef.current?.resolve(); + connectAsyncRef.current = { promise, resolve }; + + const walletName = (_wallet?.name as WalletName) ?? null; + selectWallet(walletName); + setCurrentWalletName(walletName); + + return promise; + }} + disconnect={async () => { + disconnect(); + }} + getNFTMetadata={async ({ address }) => { + // TODO: cache metadatas + const mx = new Metaplex(connection); + const nftClient = mx.nfts(); + const mintAddress = new PublicKey(address); + const metadata = await nftClient.findByMint({ mintAddress }); + + return { + name: metadata.json?.name, + image: metadata.json?.image, + description: metadata.json?.description, + attributes: metadata.json?.attributes, + }; + }} + > + {props.children} + + ); +}; diff --git a/packages/solana/src/solana-provider/index.tsx b/packages/solana/src/solana-provider/index.tsx new file mode 100644 index 000000000..3a5f3ba69 --- /dev/null +++ b/packages/solana/src/solana-provider/index.tsx @@ -0,0 +1,72 @@ +import { useMemo, useState, type FC, type PropsWithChildren } from 'react'; +import { Solana } from '@ant-design/web3-assets/solana'; +import type { Chain, Locale } from '@ant-design/web3-common'; +import { ConnectionProvider, WalletProvider } from '@solana/wallet-adapter-react'; +import { type ConnectionConfig } from '@solana/web3.js'; + +import { solana, type SolanaChainConfig } from '../chains'; +import type { WalletFactory } from '../wallets/types'; +import { AntDesignWeb3ConfigProvider } from './config-provider'; + +export interface SolanaWeb3ConfigProviderProps { + locale?: Locale; + chains?: SolanaChainConfig[]; + chainAssets?: Chain[]; + wallets?: WalletFactory[]; + balance?: boolean; + + rpcProvider?: (chain?: SolanaChainConfig) => string; + + //#region Solana ConnectionProvider specific + connectionConfig?: ConnectionConfig; + //#endregion + + //#region Solana WalletProvider specific + autoConnect?: boolean; + walletProviderProps?: React.ComponentProps; + //#endregion +} + +export const SolanaWeb3ConfigProvider: FC> = ({ + locale, + chains, + chainAssets, + wallets: walletFactorys = [], + balance, + rpcProvider, + connectionConfig, + autoConnect, + children, + walletProviderProps, +}) => { + const [currentChain, setCurrentChain] = useState(solana); + + const endpoint = useMemo(() => { + if (typeof rpcProvider === 'function') { + return rpcProvider(currentChain); + } + + return (currentChain ?? solana).rpcUrls.default; + }, [rpcProvider, currentChain]); + + const availableWallets = walletFactorys.map((factory) => factory.create()); + const adapters = walletFactorys.map((w) => w.adapter); + + return ( + + + setCurrentChain(chain)} + availableChains={chains || [solana]} + > + {children} + + + + ); +}; diff --git a/packages/solana/src/wallets/built-in.ts b/packages/solana/src/wallets/built-in.ts new file mode 100644 index 000000000..1d1c53c36 --- /dev/null +++ b/packages/solana/src/wallets/built-in.ts @@ -0,0 +1,8 @@ +import { metadata_CoinbaseWallet, metadata_Phantom } from '@ant-design/web3-assets'; +import { CoinbaseWalletAdapter, PhantomWalletAdapter } from '@solana/wallet-adapter-wallets'; + +import { WalletFactory } from './factory'; + +export const CoinbaseWallet = () => + WalletFactory(new CoinbaseWalletAdapter(), metadata_CoinbaseWallet); +export const PhantomWallet = () => WalletFactory(new PhantomWalletAdapter(), metadata_Phantom); diff --git a/packages/solana/src/wallets/factory.ts b/packages/solana/src/wallets/factory.ts new file mode 100644 index 000000000..a3f9f0dc8 --- /dev/null +++ b/packages/solana/src/wallets/factory.ts @@ -0,0 +1,23 @@ +import { WalletReadyState } from '@solana/wallet-adapter-base'; + +import type { WalletFactoryBuilder } from './types'; + +export const WalletFactory: WalletFactoryBuilder = (adapter, metadata) => { + return { + adapter, + create: () => { + return { + ...metadata, + name: adapter.name, + remark: metadata.remark, + adapter: adapter, + hasWalletReady: async () => { + return adapter.readyState === WalletReadyState.Installed; + }, + hasExtensionInstalled: async () => { + return adapter.readyState === WalletReadyState.Installed; + }, + }; + }, + }; +}; diff --git a/packages/solana/src/wallets/types.ts b/packages/solana/src/wallets/types.ts new file mode 100644 index 000000000..c4f01fafa --- /dev/null +++ b/packages/solana/src/wallets/types.ts @@ -0,0 +1,16 @@ +import type { Wallet, WalletMetadata } from '@ant-design/web3-common'; +import type { Adapter } from '@solana/wallet-adapter-base'; + +export type WalletFactoryBuilder = ( + adapter: Adapter, + walletMetadata: WalletMetadata, +) => WalletFactory; + +export interface WalletUseInSolanaAdapter extends Wallet { + adapter: Adapter; +} + +export interface WalletFactory { + adapter: Adapter; + create: () => WalletUseInSolanaAdapter; +} diff --git a/packages/solana/tsconfig.json b/packages/solana/tsconfig.json new file mode 100644 index 000000000..928e5b0ef --- /dev/null +++ b/packages/solana/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.base.json", + "include": ["src", "global.d.ts"] +} diff --git a/packages/wagmi/src/wagmi-provider/config-provider.tsx b/packages/wagmi/src/wagmi-provider/config-provider.tsx index d9d7c995c..84e677630 100644 --- a/packages/wagmi/src/wagmi-provider/config-provider.tsx +++ b/packages/wagmi/src/wagmi-provider/config-provider.tsx @@ -180,6 +180,8 @@ export const AntDesignWeb3ConfigProvider: React.FC { let connector = await (wallet as WalletUseInWagmiAdapter)?.getWagmiConnector?.(); if (!connector && wallet) { diff --git a/packages/web3/package.json b/packages/web3/package.json index 08fa95cf7..9979d8d2b 100755 --- a/packages/web3/package.json +++ b/packages/web3/package.json @@ -51,6 +51,7 @@ }, "devDependencies": { "@ant-design/web3-wagmi": "workspace:*", + "@ant-design/web3-solana": "workspace:*", "@types/react": "^18.2.45", "@types/react-dom": "^18.2.18", "father": "^4.3.8", diff --git a/packages/web3/src/address/__tests__/address-prefix.test.tsx b/packages/web3/src/address/__tests__/address-prefix.test.tsx new file mode 100644 index 000000000..758c82e80 --- /dev/null +++ b/packages/web3/src/address/__tests__/address-prefix.test.tsx @@ -0,0 +1,70 @@ +import { Web3ConfigProvider } from '@ant-design/web3-common'; +import { render } from '@testing-library/react'; +import { describe, expect, it } from 'vitest'; + +import { Address } from '..'; + +describe('Address addressPrefix', () => { + it('could be set to false', () => { + const { baseElement } = render( +
, + ); + expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe( + '21CDf0974d53a6e96eF05d7B324a9803735fFd3B', + ); + }); + + it('could be set to custom prefix', () => { + const { baseElement } = render( +
, + ); + expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe( + '??21CDf0974d53a6e96eF05d7B324a9803735fFd3B', + ); + }); + + it('default prefix is 0x', () => { + const { baseElement } = render( +
, + ); + expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe( + '0x21CDf0974d53a6e96eF05d7B324a9803735fFd3B', + ); + }); + + it('could be set at Web3ConfigProvider', () => { + const { baseElement } = render( + +
+ , + ); + + expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe( + '21CDf0974d53a6e96eF05d7B324a9803735fFd3B', + ); + }); + + it('could be set at Web3ConfigProvider with custom prefix', () => { + const { baseElement } = render( + +
+ , + ); + + expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe( + '??21CDf0974d53a6e96eF05d7B324a9803735fFd3B', + ); + }); + + it('props is first', () => { + const { baseElement } = render( + +
+ , + ); + + expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe( + '21CDf0974d53a6e96eF05d7B324a9803735fFd3B', + ); + }); +}); diff --git a/packages/web3/src/address/__tests__/index.test.tsx b/packages/web3/src/address/__tests__/index.test.tsx index 104f45dfb..9342d9092 100644 --- a/packages/web3/src/address/__tests__/index.test.tsx +++ b/packages/web3/src/address/__tests__/index.test.tsx @@ -85,6 +85,7 @@ describe('Address', () => { ); expect(baseElement.querySelector('.ant-web3-address')?.textContent).toBe('0x21CDf097'); }); + it('display address with copyable', async () => { const { baseElement } = render(
, @@ -100,6 +101,7 @@ describe('Address', () => { expect(readCopyText()).resolves.toBe('0x21CDf0974d53a6e96eF05d7B324a9803735fFd3B'); }); }); + it('does not display ellipsis if ellipsis is set to false', () => { const { baseElement } = render(
, @@ -108,6 +110,7 @@ describe('Address', () => { '0x21CDf0974d53a6e96eF05d7B324a9803735fFd3B', ); }); + it('does not display tooltip if tooltip is set to false', async () => { const { baseElement } = render(
, @@ -117,6 +120,7 @@ describe('Address', () => { expect(baseElement.querySelector('.ant-tooltip-inner')).toBeNull(); }); }); + it('does not apply any formatting if format is set to false', () => { const { baseElement } = render(
, diff --git a/packages/web3/src/address/index.tsx b/packages/web3/src/address/index.tsx index 76a5ffedb..b6f355079 100644 --- a/packages/web3/src/address/index.tsx +++ b/packages/web3/src/address/index.tsx @@ -1,13 +1,14 @@ import type { ReactNode } from 'react'; import React, { isValidElement, useContext, useEffect, useMemo, useRef, useState } from 'react'; import { CheckOutlined, CopyOutlined } from '@ant-design/icons'; -import type { Locale } from '@ant-design/web3-common'; +import { type Locale } from '@ant-design/web3-common'; import type { TooltipProps } from 'antd'; import { ConfigProvider, Space, Tooltip } from 'antd'; import classNames from 'classnames'; +import { useProvider } from '../hooks'; import useIntl from '../hooks/useIntl'; -import { fillWith0x, formatAddress, writeCopyText } from '../utils'; +import { fillWithPrefix, formatAddress, writeCopyText } from '../utils'; import { useStyle } from './style'; export interface AddressProps { @@ -18,6 +19,7 @@ export interface AddressProps { tailClip?: number; }; address?: string; + addressPrefix?: string | false; copyable?: boolean; tooltip?: boolean | TooltipProps['title']; format?: boolean | ((address: string) => ReactNode); @@ -25,8 +27,18 @@ export interface AddressProps { } export const Address: React.FC> = (props) => { - const { ellipsis, address, copyable, tooltip = true, format = false, children, locale } = props; + const { + ellipsis, + addressPrefix: addressPrefixProp, + address, + copyable, + tooltip = true, + format = false, + children, + locale, + } = props; const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); + const { addressPrefix: addressPrefixContext } = useProvider(); const prefixCls = getPrefixCls('web3-address'); const { wrapSSR, hashId } = useStyle(prefixCls); const [copied, setCopied] = useState(false); @@ -63,7 +75,8 @@ export const Address: React.FC> = (props) if (!address) { return null; } - const filledAddress = fillWith0x(address); + + const filledAddress = fillWithPrefix(address, addressPrefixProp, addressPrefixContext); const mergedTooltip = () => { if (isValidElement(tooltip) || typeof tooltip === 'string') { diff --git a/packages/web3/src/browser-link/index.tsx b/packages/web3/src/browser-link/index.tsx index 8d7eedec0..39d51ea90 100644 --- a/packages/web3/src/browser-link/index.tsx +++ b/packages/web3/src/browser-link/index.tsx @@ -1,10 +1,11 @@ import React from 'react'; import { Mainnet } from '@ant-design/web3-assets'; -import { fillAddressWith0x, type BrowserLinkType, type Chain } from '@ant-design/web3-common'; +import { type BrowserLinkType, type Chain } from '@ant-design/web3-common'; import { Space, Tooltip } from 'antd'; import { Address } from '../address'; import useProvider from '../hooks/useProvider'; +import { fillWithPrefix } from '../utils'; export interface BrowserLinkProps { icon?: boolean | React.ReactNode; @@ -12,6 +13,7 @@ export interface BrowserLinkProps { iconOnly?: boolean; ellipsis?: boolean; address: string; + addressPrefix?: string | false; href?: string; chain?: Chain; type?: BrowserLinkType; @@ -30,8 +32,18 @@ export const getBrowserLink = ( }; export const BrowserLink: React.FC = (props) => { - const { icon, ellipsis, address, href, type, chain, name, iconOnly = false } = props; - const { chain: currentChain = Mainnet } = useProvider({ + const { + icon, + ellipsis, + address, + addressPrefix: addressPrefixProp, + href, + type, + chain, + name, + iconOnly = false, + } = props; + const { chain: currentChain = Mainnet, addressPrefix: addressPrefixContext } = useProvider({ chain, }); @@ -50,7 +62,7 @@ export const BrowserLink: React.FC = (props) => { return null; } - const filledAddress = fillAddressWith0x(address); + const filledAddress = fillWithPrefix(address, addressPrefixProp, addressPrefixContext); const browserLink = href ?? getBrowserLink(filledAddress, type, currentChain); const renderContent = (content: React.ReactNode) => ( diff --git a/packages/web3/src/connect-button/connect-button.tsx b/packages/web3/src/connect-button/connect-button.tsx index f9cfe4834..3e5a16482 100644 --- a/packages/web3/src/connect-button/connect-button.tsx +++ b/packages/web3/src/connect-button/connect-button.tsx @@ -1,6 +1,6 @@ import React, { useContext, useMemo, useState } from 'react'; import { CopyOutlined, LoginOutlined, UserOutlined } from '@ant-design/icons'; -import type { Chain } from '@ant-design/web3-common'; +import { type Chain } from '@ant-design/web3-common'; import type { ButtonProps } from 'antd'; import { Avatar, Button, ConfigProvider, Divider, Dropdown, message, Space } from 'antd'; import type { MenuItemType } from 'antd/es/menu/hooks/useItems'; @@ -8,8 +8,9 @@ import classNames from 'classnames'; import { Address } from '../address'; import { CryptoPrice } from '../crypto-price'; +import { useProvider } from '../hooks'; import useIntl from '../hooks/useIntl'; -import { fillWith0x, writeCopyText } from '../utils'; +import { fillWithPrefix, writeCopyText } from '../utils'; import { ChainSelect } from './chain-select'; import type { ChainSelectProps } from './chain-select'; import type { ConnectButtonProps, ConnectButtonTooltipProps } from './interface'; @@ -36,22 +37,30 @@ export const ConnectButton: React.FC = (props) => { balance, className, locale, + addressPrefix: addressPrefixProp, ...restProps } = props; const intl = useIntl('ConnectButton', locale); const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); + const { addressPrefix: addressPrefixContext } = useProvider(); const prefixCls = getPrefixCls('web3-connect-button'); const [profileOpen, setProfileOpen] = useState(false); const { wrapSSR, hashId } = useStyle(prefixCls); const [messageApi, contextHolder] = message.useMessage(); const [showMenu, setShowMenu] = useState(false); + let buttonText: React.ReactNode = intl.getMessage(intl.messages.connect); if (account) { buttonText = account?.name && !balance ? ( account?.name ) : ( -
+
{balance ? : undefined}
); @@ -105,6 +114,7 @@ export const ConnectButton: React.FC = (props) => { }, balance, modalProps: typeof profileModal === 'object' ? profileModal : undefined, + addressPrefix: addressPrefixProp, }; const chainSelect = @@ -204,7 +214,10 @@ export const ConnectButton: React.FC = (props) => { const mergedTooltipCopyable: ConnectButtonTooltipProps['copyable'] = typeof tooltip === 'object' ? tooltip.copyable !== false : !!tooltip; - let tooltipTitle: string = tooltip && account?.address ? fillWith0x(account?.address) : ''; + let tooltipTitle: string = + tooltip && account?.address + ? fillWithPrefix(account?.address, addressPrefixProp, addressPrefixContext) + : ''; if (typeof tooltip === 'object' && typeof tooltip.title === 'string') { tooltipTitle = tooltip.title; } diff --git a/packages/web3/src/connect-button/interface.ts b/packages/web3/src/connect-button/interface.ts index 7e55069d9..639d2c508 100644 --- a/packages/web3/src/connect-button/interface.ts +++ b/packages/web3/src/connect-button/interface.ts @@ -20,6 +20,7 @@ export type ConnectButtonProps = ButtonProps & onMenuItemClick?: (e: NonNullable[number]) => void; tooltip?: boolean | ConnectButtonTooltipProps; profileModal?: boolean | ProfileModalProps['modalProps']; + addressPrefix?: string | false; actionsMenu?: | boolean | { diff --git a/packages/web3/src/connect-button/profile-modal.tsx b/packages/web3/src/connect-button/profile-modal.tsx index 51a2bc6c8..5a0ed2dc6 100644 --- a/packages/web3/src/connect-button/profile-modal.tsx +++ b/packages/web3/src/connect-button/profile-modal.tsx @@ -22,6 +22,7 @@ export interface ProfileModalProps { onClose?: () => void; modalProps?: Omit; balance?: Balance; + addressPrefix?: string | false; } export const ProfileModal: React.FC = ({ @@ -36,6 +37,7 @@ export const ProfileModal: React.FC = ({ address, modalProps, balance, + addressPrefix, }) => { const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const prefixCls = getPrefixCls('web3-connect-button-profile-modal'); @@ -81,7 +83,12 @@ export const ProfileModal: React.FC = ({ {avatar ? : null} {name ?
{name}
: null} {address ? ( -
+
{balance && }
) : null} diff --git a/packages/web3/src/connect-modal/context/index.ts b/packages/web3/src/connect-modal/context/index.ts index 45c4c673c..c7e347959 100644 --- a/packages/web3/src/connect-modal/context/index.ts +++ b/packages/web3/src/connect-modal/context/index.ts @@ -6,6 +6,7 @@ import type { PanelRoute, Wallet } from '../interface'; export type ConnectModalContext = { prefixCls: string; + addressPrefix?: string | false; selectedWallet?: Wallet; updateSelectedWallet: (wallet?: Wallet, triggerConnect?: boolean) => void; panelRoute: PanelRoute; @@ -18,6 +19,7 @@ export type ConnectModalContext = { export const connectModalContext = React.createContext({ prefixCls: 'ant-web3-connect-modal', + addressPrefix: undefined, selectedWallet: undefined, updateSelectedWallet: () => {}, panelRoute: 'init', diff --git a/packages/web3/src/connect-modal/interface.ts b/packages/web3/src/connect-modal/interface.ts index 4340fa966..6cf6be12e 100644 --- a/packages/web3/src/connect-modal/interface.ts +++ b/packages/web3/src/connect-modal/interface.ts @@ -112,6 +112,8 @@ export type ConnectModalProps = ModalProps & { * @descEn Custom localization configuration */ locale?: Locale['ConnectModal']; + + addressPrefix?: string | false; }; export type PanelRoute = 'init' | 'guide' | 'getWallet' | 'wallet' | 'qrCode' | 'downloadQrCode'; diff --git a/packages/web3/src/connector/__tests__/basic.test.tsx b/packages/web3/src/connector/__tests__/basic.test.tsx index 08f753e7c..286b07401 100644 --- a/packages/web3/src/connector/__tests__/basic.test.tsx +++ b/packages/web3/src/connector/__tests__/basic.test.tsx @@ -27,6 +27,7 @@ describe('Connector', () => { fireEvent.click(closeBtn); expect(onCancelCallTest).toBeCalled(); }); + it('render children', () => { const App = () => ( @@ -149,6 +150,7 @@ describe('Connector', () => { }); expect(baseElement.querySelector('.ant-btn')?.textContent).toBe('children'); }); + it('should support controlled loading', async () => { const App = () => { const [account, setAccount] = React.useState(); @@ -184,6 +186,7 @@ describe('Connector', () => { const { baseElement } = render(); expect(baseElement.querySelector('.anticon-loading')).toBeTruthy(); }); + it('should support both of uncontrolled loading', async () => { const App = () => { const [account, setAccount] = React.useState(); @@ -226,6 +229,7 @@ describe('Connector', () => { expect(baseElement.querySelector('.anticon-loading')).toBeTruthy(); }); }); + it('connect throw error', async () => { const CustomButton: React.FC> = (props) => { const { account, onConnectClick, onDisconnectClick, children } = props; diff --git a/packages/web3/src/connector/connector.tsx b/packages/web3/src/connector/connector.tsx index ffee23a4a..7388acb30 100644 --- a/packages/web3/src/connector/connector.tsx +++ b/packages/web3/src/connector/connector.tsx @@ -1,4 +1,4 @@ -import React, { isValidElement } from 'react'; +import React from 'react'; import { ConnectModal } from '@ant-design/web3'; import type { Chain, ConnectorTriggerProps, Wallet } from '@ant-design/web3-common'; import { message } from 'antd'; @@ -25,6 +25,7 @@ export const Connector: React.FC = (props) => { chain, switchChain, balance, + addressPrefix, } = useProvider(props); const [open, setOpen] = React.useState(false); const [loading, setLoading] = React.useState(false); @@ -69,6 +70,7 @@ export const Connector: React.FC = (props) => { balance, availableChains, chain, + addressPrefix, onSwitchChain: async (c: Chain) => { await switchChain?.(c); onChainSwitched?.(c); diff --git a/packages/web3/src/solana/demos/balance.tsx b/packages/web3/src/solana/demos/balance.tsx new file mode 100644 index 000000000..73ce8f082 --- /dev/null +++ b/packages/web3/src/solana/demos/balance.tsx @@ -0,0 +1,14 @@ +import { ConnectButton, Connector } from '@ant-design/web3'; +import { CoinbaseWallet, SolanaWeb3ConfigProvider } from '@ant-design/web3-solana'; + +const App: React.FC = () => { + return ( + + + + + + ); +}; + +export default App; diff --git a/packages/web3/src/solana/demos/basic.tsx b/packages/web3/src/solana/demos/basic.tsx new file mode 100644 index 000000000..332387b0e --- /dev/null +++ b/packages/web3/src/solana/demos/basic.tsx @@ -0,0 +1,14 @@ +import { ConnectButton, Connector } from '@ant-design/web3'; +import { CoinbaseWallet, PhantomWallet, SolanaWeb3ConfigProvider } from '@ant-design/web3-solana'; + +const App: React.FC = () => { + return ( + + + + + + ); +}; + +export default App; diff --git a/packages/web3/src/solana/demos/more-components.tsx b/packages/web3/src/solana/demos/more-components.tsx new file mode 100644 index 000000000..6e4f816c3 --- /dev/null +++ b/packages/web3/src/solana/demos/more-components.tsx @@ -0,0 +1,20 @@ +import { Address, BrowserLink, NFTCard } from '@ant-design/web3'; +import { CoinbaseWallet, SolanaWeb3ConfigProvider } from '@ant-design/web3-solana'; + +const App: React.FC = () => { + return ( + +
+ +
+ +
+
+
+ + +
+ ); +}; + +export default App; diff --git a/packages/web3/src/solana/demos/more-wallets.tsx b/packages/web3/src/solana/demos/more-wallets.tsx new file mode 100644 index 000000000..332387b0e --- /dev/null +++ b/packages/web3/src/solana/demos/more-wallets.tsx @@ -0,0 +1,14 @@ +import { ConnectButton, Connector } from '@ant-design/web3'; +import { CoinbaseWallet, PhantomWallet, SolanaWeb3ConfigProvider } from '@ant-design/web3-solana'; + +const App: React.FC = () => { + return ( + + + + + + ); +}; + +export default App; diff --git a/packages/web3/src/solana/demos/networks.tsx b/packages/web3/src/solana/demos/networks.tsx new file mode 100644 index 000000000..366e0c6ee --- /dev/null +++ b/packages/web3/src/solana/demos/networks.tsx @@ -0,0 +1,27 @@ +import { ConnectButton, Connector } from '@ant-design/web3'; +import { Solana, SolanaDevnet, SolanaTestnet } from '@ant-design/web3-assets/solana'; +import { + CoinbaseWallet, + solana, + solanaDevnet, + solanaTestnet, + SolanaWeb3ConfigProvider, +} from '@ant-design/web3-solana'; + +const App: React.FC = () => { + return ( + + + + + + ); +}; + +export default App; diff --git a/packages/web3/src/solana/index.md b/packages/web3/src/solana/index.md new file mode 100644 index 000000000..9926bf1a8 --- /dev/null +++ b/packages/web3/src/solana/index.md @@ -0,0 +1,36 @@ +--- +nav: Components +group: + title: Adapter + order: 2 +--- + +# Solana + +Ant Design Web3 officially provides `@ant-design/web3-solana` to adapt to Solana. It is an Ant Design Web3 Solana adapter based on [Solana Web3.js](https://solana-labs.github.io/solana-web3.js/). It provides the ability to connect to Solana for the components of `@ant-design/web3`. + +## Basic Usage + + + +## Add more wallets + +To reduce the size of the package you're including, you need to manually configure the `wallets` to import the relevant wallets. You can export the necessary resources from `@ant-design/web3-assets` and `@solana/wallet-adapter-wallets`. If you don't find the resources you need, you can let us know by submitting a [Github issue](https://github.com/ant-design/ant-design-web3/issues). You can also configure it yourself or submit a Pull Request to us for support. + + + +## Support switch chains + +We have built-in support for the Solana mainnet (`mainnet-beta`). To support other networks, you need to configure the `chains` and import the relevant resources. The import process is similar to that for wallets. + + + +## Display Balance + + + +## More components + +You can use more components together. The content related to the chain in the component will be obtained from the adapter. Of course, the properties configured directly on the component have a higher priority. + + diff --git a/packages/web3/src/solana/index.zh-CN.md b/packages/web3/src/solana/index.zh-CN.md new file mode 100644 index 000000000..079adf418 --- /dev/null +++ b/packages/web3/src/solana/index.zh-CN.md @@ -0,0 +1,52 @@ +--- +nav: 组件 +group: + title: 适配器 + order: 2 +--- + +# Solana + +Ant Design Web3 官方提供了 `@ant-design/web3-solana` 来适配 Solana,它是一个基于 [Solana Web3.js](https://solana-labs.github.io/solana-web3.js/) 的 Ant Design Web3 Solana 适配器。它为 `@ant-design/web3` 的组件提供了连接 Solana 的能力。 + +## 基本使用 + + + +## 添加更多钱包 + +为了降低引入包的大小,你需要手动配置 `wallets` 引入相关钱包。你可以从 `@ant-design/web3-assets` 和 `@solana/wallet-adapter-wallets` 中导出相关资源,如果没有你需要的资源,你可以通过提交 [Github issue](https://github.com/ant-design/ant-design-web3/issues) 告诉我们。也自己配置或者给我们提交 PR 支持。 + + + +## 支持切换网络 + +我们内置了 Solana 主网 `mainnet-beta`,其余的网络需要配置 `chains`,并引入相关资源才可支持。引入方式和钱包类似。 + + + +## 显示余额 + + + +## 更多组件 + +你可以配合更多组件使用,组件中涉及到链部分的内容都会从适配器中获取。当然,在组件上直接配置的属性优先级更高。 + + + +## API + +### SolanaWeb3ConfigProvider + +| 属性 | 描述 | 类型 | 默认值 | 版本 | +| --- | --- | --- | --- | --- | +| rpcProvider | 连接节点的 RPC 提供商 | (chain?: [Chain](./types#chain)) => string | - | - | +| connectionConfig | 连接节点的配置 | [ConnectionConfig](https://solana-labs.github.io/solana-web3.js/types/ConnectionConfig.html) | - | - | +| balance | 是否显示余额 | `boolean` | - | - | +| chains | 可用的链 | SolanaChainConfig\[\] | - | \[solana\] | +| chainAssets | 链的图标等信息的配置 | [Chain](./types#chain)\[\] | - | - | +| wallets | 可用的钱包 | WalletFactory\[\] | - | - | +| autoConnect | 是否自动连接 | `boolean` | `false` | - | +| walletProviderProps | WalletProvider 的属性 | [WalletProviderProps](https://github.com/solana-labs/wallet-adapter/blob/master/packages/core/react/src/WalletProvider.tsx#L17) | - | - | +| locale | 多语言文案设置 | [Locale](https://github.com/ant-design/ant-design-web3/blob/main/packages/common/src/locale/zh_CN.ts) | - | - | diff --git a/packages/web3/src/utils/__tests__/format.test.ts b/packages/web3/src/utils/__tests__/format.test.ts index f647236d5..beea86dad 100644 --- a/packages/web3/src/utils/__tests__/format.test.ts +++ b/packages/web3/src/utils/__tests__/format.test.ts @@ -1,6 +1,6 @@ import { describe, expect, it } from 'vitest'; -import { formatBalance } from '../format'; +import { fillWithPrefix, formatBalance } from '../format'; describe('utils/format', () => { it('formatBalance', () => { @@ -11,4 +11,25 @@ describe('utils/format', () => { expect(formatBalance(10000000000000000n, 18)).toBe('0.01'); expect(formatBalance(12345, 5)).toBe('0.12345'); }); + + it('fillWithPrefix', () => { + const address = '21CDf0974d53a6e96eF05d7B324a9803735fFd3B'; + + // normal + expect(fillWithPrefix(address)).toBe(`0x${address}`); + + // pass props + expect(fillWithPrefix(address, '0x')).toBe(`0x${address}`); + expect(fillWithPrefix(address, false)).toBe(address); + + // pass context + expect(fillWithPrefix(address, undefined, '??')).toBe(`??${address}`); + expect(fillWithPrefix(address, undefined, false)).toBe(address); + + // pass both + expect(fillWithPrefix(address, '0x', '??')).toBe(`0x${address}`); + expect(fillWithPrefix(address, '0x', false)).toBe(`0x${address}`); + expect(fillWithPrefix(address, false, '??')).toBe(`${address}`); + expect(fillWithPrefix(address, false, false)).toBe(address); + }); }); diff --git a/packages/web3/src/utils/format.ts b/packages/web3/src/utils/format.ts index 2cdc8ddf7..bc523cf68 100644 --- a/packages/web3/src/utils/format.ts +++ b/packages/web3/src/utils/format.ts @@ -1,6 +1,36 @@ -export const fillWith0x = (address: string = ''): string => { - const filledAddress = address.startsWith('0x') ? address : `0x${address}`; - return filledAddress; +/** + * @param address address + * @param prefixProp addressPrefix from props + * @param prefixContext addressPrefix from context + */ +export const fillWithPrefix = ( + address: string = '', + prefixProp?: string | false, + prefixContext?: string | false, +): string => { + let prefix = undefined; + + // `0x` is the default prefix + if (prefixProp === undefined && prefixContext === undefined) { + prefix = '0x'; + } + + // has prefix be set + else { + // use props first + if (prefixProp !== undefined) { + prefix = prefixProp === false ? '' : prefixProp; + } + + // use context + else if (prefixContext !== undefined) { + prefix = prefixContext === false ? '' : prefixContext; + } + } + + if (!prefix) return address; + + return address.startsWith(prefix) ? address : `${prefix}${address}`; }; export const formatAddress = (address: string = '', groupSize = 4): string => { @@ -22,17 +52,17 @@ export const formatAddress = (address: string = '', groupSize = 4): string => { export const formatBalance = (value: bigint | number, decimals: number, fixed?: number): string => { const bigValue = typeof value === 'bigint' ? value : BigInt(value); const divisor = BigInt(10 ** decimals); - const eth = bigValue / divisor; - const ethFraction = bigValue % divisor; + const displayValue = bigValue / divisor; + const fraction = bigValue % divisor; - if (ethFraction === 0n && fixed === undefined) { - return `${eth}`; + if (fraction === 0n && fixed === undefined) { + return `${displayValue}`; } - let fractionStr = ethFraction.toString().padStart(decimals, '0'); + let fractionStr = fraction.toString().padStart(decimals, '0'); if (fixed === undefined) { - return `${eth}.${fractionStr.replace(/0+$/, '')}`; + return `${displayValue}.${fractionStr.replace(/0+$/, '')}`; } fractionStr = fractionStr.substring(0, fixed).padEnd(fixed, '0'); - return `${eth}.${fractionStr}`; + return `${displayValue}.${fractionStr}`; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9a43c5cf6..0052b99ed 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,9 @@ importers: '@ant-design/web3-icons': specifier: workspace:* version: link:packages/icons + '@ant-design/web3-solana': + specifier: workspace:* + version: link:packages/solana '@ant-design/web3-wagmi': specifier: workspace:* version: link:packages/wagmi @@ -42,6 +45,9 @@ importers: '@ianvs/prettier-plugin-sort-imports': specifier: ^4.1.1 version: 4.1.1(prettier@3.1.1) + '@solana/wallet-adapter-wallets': + specifier: ^0.19.24 + version: 0.19.26(@babel/runtime@7.23.6)(@solana/web3.js@1.89.1)(bs58@4.0.1)(react-dom@18.2.0)(react-native@0.73.2)(react@18.2.0)(tslib@2.6.2) '@tanstack/react-query': specifier: ^5.17.0 version: 5.17.9(react@18.2.0) @@ -235,6 +241,43 @@ importers: specifier: ^5.3.3 version: 5.3.3 + packages/solana: + dependencies: + '@ant-design/web3-assets': + specifier: workspace:* + version: link:../assets + '@ant-design/web3-common': + specifier: workspace:* + version: link:../common + '@metaplex-foundation/js': + specifier: ^0.20.1 + version: 0.20.1(arweave@1.14.4)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/wallet-adapter-react': + specifier: ^0.15.35 + version: 0.15.35(@solana/web3.js@1.89.1)(bs58@4.0.1)(react-native@0.73.2)(react@18.2.0) + '@solana/wallet-adapter-wallets': + specifier: ^0.19.24 + version: 0.19.26(@babel/runtime@7.23.6)(@solana/web3.js@1.89.1)(bs58@4.0.1)(react-dom@18.2.0)(react-native@0.73.2)(react@18.2.0)(tslib@2.6.2) + '@solana/web3.js': + specifier: ^1.89.1 + version: 1.89.1 + debug: + specifier: ^4.3.4 + version: 4.3.4 + devDependencies: + '@solana/wallet-adapter-base': + specifier: ^0.9.23 + version: 0.9.23(@solana/web3.js@1.89.1) + '@types/debug': + specifier: ^4.1.12 + version: 4.1.12 + father: + specifier: ^4.3.8 + version: 4.3.8(@types/node@20.10.5)(webpack@5.89.0) + typescript: + specifier: ^5.3.3 + version: 5.3.3 + packages/wagmi: dependencies: '@ant-design/web3-assets': @@ -302,6 +345,9 @@ importers: specifier: '>=17.0.0' version: 18.2.0(react@18.2.0) devDependencies: + '@ant-design/web3-solana': + specifier: workspace:* + version: link:../solana '@ant-design/web3-wagmi': specifier: workspace:* version: link:../wagmi @@ -397,6 +443,9 @@ packages: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} dev: true + /@apocentre/alias-sampling@0.5.3: + resolution: {integrity: sha512-7UDWIIF9hIeJqfKXkNIzkVandlwLf1FWTSdrb9iXvOP8oF544JRXQjCbiTmCv2c9n44n/FIWtehhBfNuAx2CZA==} + /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} @@ -2429,6 +2478,12 @@ packages: /@emotion/weak-memoize@0.3.1: resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} + /@emurgo/cardano-serialization-lib-browser@11.5.0: + resolution: {integrity: sha512-qchOJ9NYDUz10tzs5r5QhP9hK0p+ZOlRiBwPdTAxqAYLw/8emYBkQQLaS8T1DF6EkeudyrgS00ym5Trw1fo4iA==} + + /@emurgo/cardano-serialization-lib-nodejs@11.5.0: + resolution: {integrity: sha512-IlVABlRgo9XaTR1NunwZpWcxnfEv04ba2l1vkUz4S1W7Jt36F4CtffP+jPeqBZGnAe+fnUwo0XjIJC3ZTNToNQ==} + /@esbuild/aix-ppc64@0.19.10: resolution: {integrity: sha512-Q+mk96KJ+FZ30h9fsJl+67IjNJm3x2eX+GBWGmocAKgzp27cowCOOqSdscX80s0SpdFXZnIv/+1xD1EctFx96Q==} engines: {node: '>=12'} @@ -3075,11 +3130,25 @@ packages: '@ethereumjs/util': 8.1.0 crc-32: 1.2.2 + /@ethereumjs/common@4.1.0(buffer@6.0.3): + resolution: {integrity: sha512-XWdQvUjlQHVwh4uGEPFKHpsic69GOsMXEhlHrggS5ju/+2zAmmlz6B25TkCCymeElC9DUp13tH5Tc25Iuvtlcg==} + dependencies: + '@ethereumjs/util': 9.0.1 + crc: 4.3.2(buffer@6.0.3) + transitivePeerDependencies: + - buffer + - c-kzg + /@ethereumjs/rlp@4.0.1: resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} engines: {node: '>=14'} hasBin: true + /@ethereumjs/rlp@5.0.1: + resolution: {integrity: sha512-Ab/Hfzz+T9Zl+65Nkg+9xAmwKPLicsnQ4NW49pgvJp9ovefuic95cgOS9CbPc9izIEgsqm1UitV0uNveCvud9w==} + engines: {node: '>=18'} + hasBin: true + /@ethereumjs/tx@4.2.0: resolution: {integrity: sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==} engines: {node: '>=14'} @@ -3089,6 +3158,22 @@ packages: '@ethereumjs/util': 8.1.0 ethereum-cryptography: 2.1.2 + /@ethereumjs/tx@5.1.0(buffer@6.0.3): + resolution: {integrity: sha512-VUhw2+4yXArJZRWhPjmZFrN4WUjUo0qUZUszVpW2KzsGlqCFf67kwJcH9Rca5eS0CRHjr2qHJLpvYOjNuaXVdA==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + dependencies: + '@ethereumjs/common': 4.1.0(buffer@6.0.3) + '@ethereumjs/rlp': 5.0.1 + '@ethereumjs/util': 9.0.1 + ethereum-cryptography: 2.1.2 + transitivePeerDependencies: + - buffer + /@ethereumjs/util@8.1.0: resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} engines: {node: '>=14'} @@ -3097,6 +3182,320 @@ packages: ethereum-cryptography: 2.1.2 micro-ftch: 0.3.1 + /@ethereumjs/util@9.0.1: + resolution: {integrity: sha512-NdFFEzCc3H1sYkNnnySwLg6owdQMhjUc2jfuDyx8Xv162WSluCnnSKouKOSG3njGNEyy2I9NmF8zTRDwuqpZWA==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + dependencies: + '@ethereumjs/rlp': 5.0.1 + ethereum-cryptography: 2.1.2 + + /@ethersproject/abi@5.7.0: + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/abstract-provider@5.7.0: + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + dev: false + + /@ethersproject/abstract-signer@5.7.0: + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: false + + /@ethersproject/address@5.7.0: + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/rlp': 5.7.0 + dev: false + + /@ethersproject/base64@5.7.0: + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + dev: false + + /@ethersproject/basex@5.7.0: + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + dev: false + + /@ethersproject/bignumber@5.7.0: + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + dev: false + + /@ethersproject/bytes@5.7.0: + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/constants@5.7.0: + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + dependencies: + '@ethersproject/bignumber': 5.7.0 + dev: false + + /@ethersproject/contracts@5.7.0: + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + dev: false + + /@ethersproject/hash@5.7.0: + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/hdnode@5.7.0: + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/json-wallets@5.7.0: + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: false + + /@ethersproject/keccak256@5.7.0: + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + dev: false + + /@ethersproject/logger@5.7.0: + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + dev: false + + /@ethersproject/networks@5.7.1: + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/pbkdf2@5.7.0: + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + dev: false + + /@ethersproject/properties@5.7.0: + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + dependencies: + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/providers@5.7.2: + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + dependencies: + '@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/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ethersproject/random@5.7.0: + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/rlp@5.7.0: + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/sha2@5.7.0: + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + dev: false + + /@ethersproject/signing-key@5.7.0: + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: false + + /@ethersproject/strings@5.7.0: + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + dev: false + + /@ethersproject/transactions@5.7.0: + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + dependencies: + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + dev: false + + /@ethersproject/wallet@5.7.0: + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 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/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + dev: false + + /@ethersproject/web@5.7.1: + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + dependencies: + '@ethersproject/base64': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@ethersproject/wordlists@5.7.0: + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + dev: false + + /@fivebinaries/coin-selection@2.2.1: + resolution: {integrity: sha512-iYFsYr7RY7TEvTqP9NKR4p/yf3Iybf9abUDR7lRjzanGsrLwVsREvIuyE05iRYFrvqarlk+gWRPsdR1N2hUBrg==} + dependencies: + '@emurgo/cardano-serialization-lib-browser': 11.5.0 + '@emurgo/cardano-serialization-lib-nodejs': 11.5.0 + /@floating-ui/core@0.6.2: resolution: {integrity: sha512-jktYRmZwmau63adUG3GKOAVCofBXkk55S/zQ94XOorAHhwqFIOFAy1rSp2N0Wp6/tGbe9V3u/ExlGZypyY17rg==} dev: true @@ -3203,6 +3602,26 @@ packages: typescript: 5.3.3 dev: true + /@fractalwagmi/popup-connection@1.1.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-hYL+45iYwNbwjvP2DxP3YzVsrAGtj/RV9LOgMpJyCxsfNoyyOoi2+YrnywKkiANingiG2kJ1nKsizbu1Bd4zZw==} + peerDependencies: + react: ^17.0.2 || ^18 + react-dom: ^17.0.2 || ^18 + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + + /@fractalwagmi/solana-wallet-adapter@0.1.1(@solana/web3.js@1.89.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-oTZLEuD+zLKXyhZC5tDRMPKPj8iaxKLxXiCjqRfOo4xmSbS2izGRWLJbKMYYsJysn/OI3UJ3P6CWP8WUWi0dZg==} + dependencies: + '@fractalwagmi/popup-connection': 1.1.1(react-dom@18.2.0)(react@18.2.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + bs58: 5.0.0 + transitivePeerDependencies: + - '@solana/web3.js' + - react + - react-dom + /@hapi/hoek@9.3.0: resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} @@ -3271,6 +3690,66 @@ packages: /@ioredis/commands@1.2.0: resolution: {integrity: sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==} + /@irys/arweave@0.0.2(debug@4.3.4): + resolution: {integrity: sha512-ddE5h4qXbl0xfGlxrtBIwzflaxZUDlDs43TuT0u1OMfyobHul4AA1VEX72Rpzw2bOh4vzoytSqA1jCM7x9YtHg==} + dependencies: + asn1.js: 5.4.1 + async-retry: 1.3.3 + axios: 1.6.7(debug@4.3.4) + base64-js: 1.5.1 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - debug + dev: false + + /@irys/query@0.0.1(debug@4.3.4): + resolution: {integrity: sha512-7TCyR+Qn+F54IQQx5PlERgqNwgIQik8hY55iZl/silTHhCo1MI2pvx5BozqPUVCc8/KqRsc2nZd8Bc29XGUjRQ==} + engines: {node: '>=16.10.0'} + dependencies: + async-retry: 1.3.3 + axios: 1.6.7(debug@4.3.4) + transitivePeerDependencies: + - debug + dev: false + + /@irys/sdk@0.0.2(arweave@1.14.4)(debug@4.3.4): + resolution: {integrity: sha512-un/e/CmTpgT042gDwCN3AtISrR9OYGMY6V+442pFmSWKrwrsDoIXZ8VlLiYKnrtTm+yquGhjfYy0LDqGWq41pA==} + engines: {node: '>=16.10.0'} + hasBin: true + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/wallet': 5.7.0 + '@irys/query': 0.0.1(debug@4.3.4) + '@near-js/crypto': 0.0.3 + '@near-js/keystores-browser': 0.0.3 + '@near-js/providers': 0.0.4 + '@near-js/transactions': 0.1.1 + '@solana/web3.js': 1.89.1 + '@supercharge/promise-pool': 3.1.0 + algosdk: 1.24.1 + aptos: 1.8.5(debug@4.3.4) + arbundles: 0.10.1(arweave@1.14.4)(debug@4.3.4) + async-retry: 1.3.3 + axios: 1.6.7(debug@4.3.4) + base64url: 3.0.1 + bignumber.js: 9.1.2 + bs58: 5.0.0 + commander: 8.3.0 + csv: 5.5.3 + inquirer: 8.2.6 + js-sha256: 0.9.0 + mime-types: 2.1.35 + near-seed-phrase: 0.2.0 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + dev: false + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3390,6 +3869,34 @@ packages: '@types/yargs': 17.0.32 chalk: 4.1.2 + /@jnwng/walletconnect-solana@0.2.0(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-nyRq0xLEj9i2J4UXQ0Mr4KzsooTMbLu0ewHOqdQV7iZE0PfbtKa8poTSF4ZBAQD8hoMHEx+I7zGFCNMI9BTrTA==} + peerDependencies: + '@solana/web3.js': ^1.63.0 + dependencies: + '@solana/web3.js': 1.89.1 + '@walletconnect/qrcode-modal': 1.8.0 + '@walletconnect/sign-client': 2.11.0 + '@walletconnect/utils': 2.11.0 + bs58: 5.0.0 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} engines: {node: '>=6.0.0'} @@ -3421,6 +3928,75 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@keystonehq/bc-ur-registry-sol@0.3.1: + resolution: {integrity: sha512-Okr5hwPxBZxB4EKLK1GSC9vsrh/tFMQ5dvs3EQ9NCOmCn7CXdXIMSeafrpGCHk484Jf5c6X0Wq0yf0VqY2A/8Q==} + dependencies: + '@keystonehq/bc-ur-registry': 0.5.5 + bs58check: 2.1.2 + uuid: 8.3.2 + + /@keystonehq/bc-ur-registry@0.5.5: + resolution: {integrity: sha512-PoclPHf0OhpIKLfLwzymsu+CjkWf5ZKvaVjpkq3HUalcI4KW8wLk0m8qI2kBVv6F0BQ0ERPqW8OfjLTVqIgWLA==} + dependencies: + '@ngraveio/bc-ur': 1.1.6 + bs58check: 2.1.2 + tslib: 2.6.2 + + /@keystonehq/sdk@0.13.1: + resolution: {integrity: sha512-545l83TE5t1cyUZUaNqZOAh15ibWOg9QbK/YeLwnrxt+GOod+ATk3j9SpN6yTSLO8DNl2/x6dKRIFVtTEkZDAg==} + dependencies: + '@ngraveio/bc-ur': 1.1.6 + qrcode.react: 1.0.1(react@16.13.1) + react: 16.13.1 + react-dom: 16.13.1(react@16.13.1) + react-modal: 3.16.1(react-dom@16.13.1)(react@16.13.1) + react-qr-reader: 2.2.1(react-dom@16.13.1)(react@16.13.1) + rxjs: 6.6.7 + typescript: 4.9.5 + + /@keystonehq/sol-keyring@0.3.1: + resolution: {integrity: sha512-RU6I3HQrQ9NpRDP9TwlBIy5DftVcNcyk0NWfhkPy/YanhMcCB0cRPw68iQl1rMnR6n1G2+YrBHMxm6swCW+B4Q==} + dependencies: + '@keystonehq/bc-ur-registry': 0.5.5 + '@keystonehq/bc-ur-registry-sol': 0.3.1 + '@keystonehq/sdk': 0.13.1 + '@solana/web3.js': 1.89.1 + bs58: 5.0.0 + uuid: 8.3.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + /@ledgerhq/devices@6.27.1: + resolution: {integrity: sha512-jX++oy89jtv7Dp2X6gwt3MMkoajel80JFWcdc0HCouwDsV1mVJ3SQdwl/bQU0zd8HI6KebvUP95QTwbQLLK/RQ==} + dependencies: + '@ledgerhq/errors': 6.16.1 + '@ledgerhq/logs': 6.12.0 + rxjs: 6.6.7 + semver: 7.5.4 + + /@ledgerhq/errors@6.16.1: + resolution: {integrity: sha512-4D4wKecGzQpIu7sx03Sg4uE1e8g1oZUndWgw9gw776H8h9ov9c5TxPaldTn2j6orPECAERViLf7LTO4L5pE2Cw==} + + /@ledgerhq/hw-transport-webhid@6.27.1: + resolution: {integrity: sha512-u74rBYlibpbyGblSn74fRs2pMM19gEAkYhfVibq0RE1GNFjxDMFC1n7Sb+93Jqmz8flyfB4UFJsxs8/l1tm2Kw==} + dependencies: + '@ledgerhq/devices': 6.27.1 + '@ledgerhq/errors': 6.16.1 + '@ledgerhq/hw-transport': 6.27.1 + '@ledgerhq/logs': 6.12.0 + + /@ledgerhq/hw-transport@6.27.1: + resolution: {integrity: sha512-hnE4/Fq1YzQI4PA1W0H8tCkI99R3UWDb3pJeZd6/Xs4Qw/q1uiQO+vNLC6KIPPhK0IajUfuI/P2jk0qWcMsuAQ==} + dependencies: + '@ledgerhq/devices': 6.27.1 + '@ledgerhq/errors': 6.16.1 + events: 3.3.0 + + /@ledgerhq/logs@6.12.0: + resolution: {integrity: sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==} + /@lit-labs/ssr-dom-shim@1.1.2: resolution: {integrity: sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==} @@ -3541,6 +4117,15 @@ packages: pump: 3.0.0 webextension-polyfill-ts: 0.25.0 + /@metamask/rpc-errors@5.1.1: + resolution: {integrity: sha512-JjZnDi2y2CfvbohhBl+FOQRzmFlJpybcQlIk37zEX8B96eVSPbH/T8S0p7cSF8IE33IWx6JkD8Ycsd+2TXFxCw==} + engines: {node: '>=16.0.0'} + dependencies: + '@metamask/utils': 5.0.2 + fast-safe-stringify: 2.1.1 + transitivePeerDependencies: + - supports-color + /@metamask/rpc-errors@6.1.0: resolution: {integrity: sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==} engines: {node: '>=16.0.0'} @@ -3660,37 +4245,250 @@ packages: transitivePeerDependencies: - supports-color - /@microsoft/api-extractor-model@7.27.5(@types/node@20.10.5): - resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} + /@metaplex-foundation/beet-solana@0.3.1: + resolution: {integrity: sha512-tgyEl6dvtLln8XX81JyBvWjIiEcjTkUwZbrM5dIobTmoqMuGewSyk9CClno8qsMsFdB5T3jC91Rjeqmu/6xk2g==} dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6(@types/node@20.10.5) + '@metaplex-foundation/beet': 0.7.1 + '@solana/web3.js': 1.89.1 + bs58: 5.0.0 + debug: 4.3.4 transitivePeerDependencies: - - '@types/node' - dev: true + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - /@microsoft/api-extractor@7.36.3(@types/node@20.10.5): - resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} - hasBin: true + /@metaplex-foundation/beet-solana@0.4.0: + resolution: {integrity: sha512-B1L94N3ZGMo53b0uOSoznbuM5GBNJ8LwSeznxBxJ+OThvfHQ4B5oMUqb+0zdLRfkKGS7Q6tpHK9P+QK0j3w2cQ==} dependencies: - '@microsoft/api-extractor-model': 7.27.5(@types/node@20.10.5) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.59.6(@types/node@20.10.5) - '@rushstack/rig-package': 0.4.0 - '@rushstack/ts-command-line': 4.15.1 - colors: 1.2.5 - lodash: 4.17.21 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.0.4 + '@metaplex-foundation/beet': 0.7.1 + '@solana/web3.js': 1.89.1 + bs58: 5.0.0 + debug: 4.3.4 transitivePeerDependencies: - - '@types/node' - dev: true + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false - /@microsoft/tsdoc-config@0.16.2: + /@metaplex-foundation/beet-solana@0.4.1: + resolution: {integrity: sha512-/6o32FNUtwK8tjhotrvU/vorP7umBuRFvBZrC6XCk51aKidBHe5LPVPA5AjGPbV3oftMfRuXPNd9yAGeEqeCDQ==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@solana/web3.js': 1.89.1 + bs58: 5.0.0 + debug: 4.3.4 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/beet@0.4.0: + resolution: {integrity: sha512-2OAKJnLatCc3mBXNL0QmWVQKAWK2C7XDfepgL0p/9+8oSx4bmRAFHFqptl1A/C0U5O3dxGwKfmKluW161OVGcA==} + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@metaplex-foundation/beet@0.6.1: + resolution: {integrity: sha512-OYgnijLFzw0cdUlRKH5POp0unQECPOW9muJ2X3QIVyak5G6I6l/rKo72sICgPLIFKdmsi2jmnkuLY7wp14iXdw==} + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@metaplex-foundation/beet@0.7.1: + resolution: {integrity: sha512-hNCEnS2WyCiYyko82rwuISsBY3KYpe828ubsd2ckeqZr7tl0WVLivGkoyA/qdiaaHEBGdGl71OpfWa2rqL3DiA==} + dependencies: + ansicolors: 0.3.2 + bn.js: 5.2.1 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: false + + /@metaplex-foundation/cusper@0.0.2: + resolution: {integrity: sha512-S9RulC2fFCFOQraz61bij+5YCHhSO9llJegK8c8Y6731fSi6snUSQJdCUqYS8AIgR0TKbQvdvgSyIIdbDFZbBA==} + dev: false + + /@metaplex-foundation/js@0.20.1(arweave@1.14.4)(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-aqiLoEiToXdfI5pS+17/GN/dIO2D31gLoVQvEKDQi9XcnOPVhfJerXDmwgKbhp79OGoYxtlvVw+b2suacoUzGQ==} + dependencies: + '@irys/sdk': 0.0.2(arweave@1.14.4)(debug@4.3.4) + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/mpl-auction-house': 2.5.1(fastestsmallesttextencoderdecoder@1.0.22) + '@metaplex-foundation/mpl-bubblegum': 0.6.2(fastestsmallesttextencoderdecoder@1.0.22) + '@metaplex-foundation/mpl-candy-guard': 0.3.2 + '@metaplex-foundation/mpl-candy-machine': 5.1.0(fastestsmallesttextencoderdecoder@1.0.22) + '@metaplex-foundation/mpl-candy-machine-core': 0.1.2 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(fastestsmallesttextencoderdecoder@1.0.22) + '@noble/ed25519': 1.7.3 + '@noble/hashes': 1.3.3 + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.89.1) + '@solana/spl-token': 0.3.11(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/web3.js': 1.89.1 + bignumber.js: 9.1.2 + bn.js: 5.2.1 + bs58: 5.0.0 + buffer: 6.0.3 + debug: 4.3.4 + eventemitter3: 4.0.7 + lodash.clonedeep: 4.5.0 + lodash.isequal: 4.5.0 + merkletreejs: 0.3.11 + mime: 3.0.0 + node-fetch: 2.7.0 + transitivePeerDependencies: + - arweave + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-auction-house@2.5.1(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-O+IAdYVaoOvgACB8pm+1lF5BNEjl0COkqny2Ho8KQZwka6aC/vHbZ239yRwAMtJhf5992BPFdT4oifjyE0O+Mw==} + dependencies: + '@metaplex-foundation/beet': 0.6.1 + '@metaplex-foundation/beet-solana': 0.3.1 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-bubblegum@0.6.2(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-4tF7/FFSNtpozuIGD7gMKcqK2D49eVXZ144xiowC5H1iBeu009/oj2m8Tj6n4DpYFKWJ2JQhhhk0a2q7x0Begw==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/beet-solana': 0.4.0 + '@metaplex-foundation/cusper': 0.0.2 + '@metaplex-foundation/mpl-token-metadata': 2.13.0(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/spl-account-compression': 0.1.10(@solana/web3.js@1.89.1) + '@solana/spl-token': 0.1.8 + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + js-sha3: 0.8.0 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-candy-guard@0.3.2: + resolution: {integrity: sha512-QWXzPDz+6OR3957LtfW6/rcGvFWS/0AeHJa/BUO2VEVQxN769dupsKGtrsS8o5RzXCeap3wrCtDSNxN3dnWu4Q==} + dependencies: + '@metaplex-foundation/beet': 0.4.0 + '@metaplex-foundation/beet-solana': 0.3.1 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-candy-machine-core@0.1.2: + resolution: {integrity: sha512-jjDkRvMR+iykt7guQ7qVnOHTZedql0lq3xqWDMaenAUCH3Xrf2zKATThhJppIVNX1/YtgBOO3lGqhaFbaI4pCw==} + dependencies: + '@metaplex-foundation/beet': 0.4.0 + '@metaplex-foundation/beet-solana': 0.3.1 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-candy-machine@5.1.0(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-pjHpUpWVOCDxK3l6dXxfmJKNQmbjBqnm5ElOl1mJAygnzO8NIPQvrP89y6xSNyo8qZsJyt4ZMYUyD0TdbtKZXQ==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/beet-solana': 0.4.1 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - utf-8-validate + dev: false + + /@metaplex-foundation/mpl-token-metadata@2.13.0(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-Fl/8I0L9rv4bKTV/RAl5YIbJe9SnQPInKvLz+xR1fEc4/VQkuCn3RPgypfUMEKWmCznzaw4sApDxy6CFS4qmJw==} + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/beet-solana': 0.4.1 + '@metaplex-foundation/cusper': 0.0.2 + '@solana/spl-token': 0.3.11(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + debug: 4.3.4 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - supports-color + - utf-8-validate + dev: false + + /@microsoft/api-extractor-model@7.27.5(@types/node@20.10.5): + resolution: {integrity: sha512-9/tBzYMJitR+o+zkPr1lQh2+e8ClcaTF6eZo7vZGDqRt2O5XmXWPbYJZmxyM3wb5at6lfJNEeGZrQXLjsQ0Nbw==} + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.59.6(@types/node@20.10.5) + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/api-extractor@7.36.3(@types/node@20.10.5): + resolution: {integrity: sha512-u0H6362AQq+r55X8drHx4npgkrCfJnMzRRHfQo8PMNKB8TcBnrTLfXhXWi+xnTM6CzlU/netEN8c4bq581Rnrg==} + hasBin: true + dependencies: + '@microsoft/api-extractor-model': 7.27.5(@types/node@20.10.5) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 3.59.6(@types/node@20.10.5) + '@rushstack/rig-package': 0.4.0 + '@rushstack/ts-command-line': 4.15.1 + colors: 1.2.5 + lodash: 4.17.21 + resolve: 1.22.8 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.0.4 + transitivePeerDependencies: + - '@types/node' + dev: true + + /@microsoft/tsdoc-config@0.16.2: resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} dependencies: '@microsoft/tsdoc': 0.14.2 @@ -3703,6 +4501,10 @@ packages: resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} dev: true + /@mobily/ts-belt@3.13.1: + resolution: {integrity: sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==} + engines: {node: '>= 10.*'} + /@motionone/animation@10.16.3: resolution: {integrity: sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==} dependencies: @@ -3756,6 +4558,141 @@ packages: '@motionone/dom': 10.16.4 tslib: 2.6.2 + /@near-js/crypto@0.0.3: + resolution: {integrity: sha512-3WC2A1a1cH8Cqrx+0iDjp1ASEEhxN/KHEMENYb0KZH6Hp5bXIY7Akt4quC7JlgJS5ESvEiLa40tS5h0zAhBWGw==} + dependencies: + '@near-js/types': 0.0.3 + bn.js: 5.2.1 + borsh: 0.7.0 + tweetnacl: 1.0.3 + dev: false + + /@near-js/crypto@0.0.4: + resolution: {integrity: sha512-2mSIVv6mZway1rQvmkktrXAFoUvy7POjrHNH3LekKZCMCs7qMM/23Hz2+APgxZPqoV2kjarSNOEYJjxO7zQ/rQ==} + dependencies: + '@near-js/types': 0.0.4 + bn.js: 5.2.1 + borsh: 0.7.0 + tweetnacl: 1.0.3 + dev: false + + /@near-js/keystores-browser@0.0.3: + resolution: {integrity: sha512-Ve/JQ1SBxdNk3B49lElJ8Y54AoBY+yOStLvdnUIpe2FBOczzwDCkcnPcMDV0NMwVlHpEnOWICWHbRbAkI5Vs+A==} + dependencies: + '@near-js/crypto': 0.0.3 + '@near-js/keystores': 0.0.3 + dev: false + + /@near-js/keystores@0.0.3: + resolution: {integrity: sha512-mnwLYUt4Td8u1I4QE1FBx2d9hMt3ofiriE93FfOluJ4XiqRqVFakFYiHg6pExg5iEkej/sXugBUFeQ4QizUnew==} + dependencies: + '@near-js/crypto': 0.0.3 + '@near-js/types': 0.0.3 + dev: false + + /@near-js/keystores@0.0.4: + resolution: {integrity: sha512-+vKafmDpQGrz5py1liot2hYSjPGXwihveeN+BL11aJlLqZnWBgYJUWCXG+uyGjGXZORuy2hzkKK6Hi+lbKOfVA==} + dependencies: + '@near-js/crypto': 0.0.4 + '@near-js/types': 0.0.4 + dev: false + + /@near-js/providers@0.0.4: + resolution: {integrity: sha512-g/2pJTYmsIlTW4mGqeRlqDN9pZeN+1E2/wfoMIf3p++boBVxVlaSebtQgawXAf2lkfhb9RqXz5pHqewXIkTBSw==} + dependencies: + '@near-js/transactions': 0.1.0 + '@near-js/types': 0.0.3 + '@near-js/utils': 0.0.3 + bn.js: 5.2.1 + borsh: 0.7.0 + http-errors: 1.8.1 + optionalDependencies: + node-fetch: 2.7.0 + transitivePeerDependencies: + - encoding + dev: false + + /@near-js/signers@0.0.3: + resolution: {integrity: sha512-u1R+DDIua5PY1PDFnpVYqdMgQ7c4dyeZsfqMjE7CtgzdqupgTYCXzJjBubqMlAyAx843PoXmLt6CSSKcMm0WUA==} + dependencies: + '@near-js/crypto': 0.0.3 + '@near-js/keystores': 0.0.3 + js-sha256: 0.9.0 + dev: false + + /@near-js/signers@0.0.4: + resolution: {integrity: sha512-xCglo3U/WIGsz/izPGFMegS5Q3PxOHYB8a1E7RtVhNm5QdqTlQldLCm/BuMg2G/u1l1ZZ0wdvkqRTG9joauf3Q==} + dependencies: + '@near-js/crypto': 0.0.4 + '@near-js/keystores': 0.0.4 + js-sha256: 0.9.0 + dev: false + + /@near-js/transactions@0.1.0: + resolution: {integrity: sha512-OrrDFqhX0rtH+6MV3U3iS+zmzcPQI+L4GJi9na4Uf8FgpaVPF0mtSmVrpUrS5CC3LwWCzcYF833xGYbXOV4Kfg==} + dependencies: + '@near-js/crypto': 0.0.3 + '@near-js/signers': 0.0.3 + '@near-js/types': 0.0.3 + '@near-js/utils': 0.0.3 + bn.js: 5.2.1 + borsh: 0.7.0 + js-sha256: 0.9.0 + dev: false + + /@near-js/transactions@0.1.1: + resolution: {integrity: sha512-Fk83oLLFK7nz4thawpdv9bGyMVQ2i48iUtZEVYhuuuqevl17tSXMlhle9Me1ZbNyguJG/cWPdNybe1UMKpyGxA==} + dependencies: + '@near-js/crypto': 0.0.4 + '@near-js/signers': 0.0.4 + '@near-js/types': 0.0.4 + '@near-js/utils': 0.0.4 + bn.js: 5.2.1 + borsh: 0.7.0 + js-sha256: 0.9.0 + dev: false + + /@near-js/types@0.0.3: + resolution: {integrity: sha512-gC3iGUT+r2JjVsE31YharT+voat79ToMUMLCGozHjp/R/UW1M2z4hdpqTUoeWUBGBJuVc810gNTneHGx0jvzwQ==} + dependencies: + bn.js: 5.2.1 + dev: false + + /@near-js/types@0.0.4: + resolution: {integrity: sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg==} + dependencies: + bn.js: 5.2.1 + dev: false + + /@near-js/utils@0.0.3: + resolution: {integrity: sha512-J72n/EL0VfLRRb4xNUF4rmVrdzMkcmkwJOhBZSTWz3PAZ8LqNeU9ZConPfMvEr6lwdaD33ZuVv70DN6IIjPr1A==} + dependencies: + '@near-js/types': 0.0.3 + bn.js: 5.2.1 + depd: 2.0.0 + mustache: 4.2.0 + dev: false + + /@near-js/utils@0.0.4: + resolution: {integrity: sha512-mPUEPJbTCMicGitjEGvQqOe8AS7O4KkRCxqd0xuE/X6gXF1jz1pYMZn4lNUeUz2C84YnVSGLAM0o9zcN6Y4hiA==} + dependencies: + '@near-js/types': 0.0.4 + bn.js: 5.2.1 + depd: 2.0.0 + mustache: 4.2.0 + dev: false + + /@ngraveio/bc-ur@1.1.6: + resolution: {integrity: sha512-G+2XgjXde2IOcEQeCwR250aS43/Swi7gw0FuETgJy2c3HqF8f88SXDMsIGgJlZ8jXd0GeHR4aX0MfjXf523UZg==} + dependencies: + '@apocentre/alias-sampling': 0.5.3 + assert: 2.1.0 + bignumber.js: 9.1.2 + cbor-sync: 1.0.4 + crc: 3.8.0 + jsbi: 3.2.5 + sha.js: 2.4.11 + /@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1: resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} dependencies: @@ -3772,6 +4709,14 @@ packages: dependencies: '@noble/hashes': 1.3.2 + /@noble/ed25519@1.7.3: + resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + dev: false + + /@noble/hashes@1.1.3: + resolution: {integrity: sha512-CE0FCR57H2acVI5UOzIGSSIYxZ6v/HOhDR0Ro9VLyhnzLwx0o8W1mmgaqlEUx4049qJDlIBRztv5k+MM8vbO3A==} + dev: false + /@noble/hashes@1.3.1: resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} engines: {node: '>= 16'} @@ -3938,6 +4883,40 @@ packages: '@parcel/watcher-win32-ia32': 2.3.0 '@parcel/watcher-win32-x64': 2.3.0 + /@particle-network/analytics@1.0.1: + resolution: {integrity: sha512-ApcSMo1BXQlywO+lvOpG3Y2/SVGNCpJzXO/4e3zHzE/9j+uMehsilDzPwWQwLhrCXZYwVm7mmE71Gs36yobiNw==} + dependencies: + hash.js: 1.1.7 + uuidv4: 6.2.13 + + /@particle-network/auth@1.3.1: + resolution: {integrity: sha512-hu6ie5RjjN4X+6y/vfjyCsSX3pQuS8k8ZoMb61QWwhWsnZXKzpBUVeAEk55aGfxxXY+KfBkSmZosyaZHGoHnfw==} + dependencies: + '@particle-network/analytics': 1.0.1 + '@particle-network/chains': 1.3.10 + '@particle-network/crypto': 1.0.1 + buffer: 6.0.3 + draggabilly: 3.0.0 + + /@particle-network/chains@1.3.10: + resolution: {integrity: sha512-6bsgV6z2Ens10Kn96xDhuaut0eWlYcR5Tb1yclyWt5eiRQeWh3oBB/ZJAx66po0ybnJgCeTVoe6tFy8wjClPVw==} + + /@particle-network/crypto@1.0.1: + resolution: {integrity: sha512-GgvHmHcFiNkCLZdcJOgctSbgvs251yp+EAdUydOE3gSoIxN6KEr/Snu9DebENhd/nFb7FDk5ap0Hg49P7pj1fg==} + dependencies: + crypto-js: 4.2.0 + uuidv4: 6.2.13 + + /@particle-network/solana-wallet@1.3.2(@solana/web3.js@1.89.1)(bs58@4.0.1): + resolution: {integrity: sha512-KviKVP87OtWq813y8IumM3rIQMNkTjHBaQmCUbTWGebz3csFOv54JIoy1r+3J3NnA+mBxBdZeRedZ5g+07v75w==} + peerDependencies: + '@solana/web3.js': ^1.50.1 + bs58: ^4.0.1 + dependencies: + '@particle-network/auth': 1.3.1 + '@solana/web3.js': 1.89.1 + bs58: 4.0.1 + /@pkgjs/parseargs@0.11.0: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -3957,6 +4936,63 @@ packages: tslib: 2.6.2 dev: true + /@project-serum/sol-wallet-adapter@0.2.6(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-cpIb13aWPW8y4KzkZAPDgw+Kb+DXjCC6rZoH74MGm3I/6e/zKyGnfAuW5olb2zxonFqsYgnv7ev8MQnvSgJ3/g==} + engines: {node: '>=10'} + peerDependencies: + '@solana/web3.js': ^1.5.0 + dependencies: + '@solana/web3.js': 1.89.1 + bs58: 4.0.1 + eventemitter3: 4.0.7 + + /@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==} + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/inquire': 1.1.0 + + /@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==} + + /@randlabs/communication-bridge@1.0.1: + resolution: {integrity: sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg==} + requiresBuild: true + dev: false + optional: true + + /@randlabs/myalgo-connect@1.4.2: + resolution: {integrity: sha512-K9hEyUi7G8tqOp7kWIALJLVbGCByhilcy6123WfcorxWwiE1sbQupPyIU5f3YdQK6wMjBsyTWiLW52ZBMp7sXA==} + requiresBuild: true + dependencies: + '@randlabs/communication-bridge': 1.0.1 + dev: false + optional: true + /@rc-component/color-picker@1.5.1(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-onyAFhWKXuG4P162xE+7IgaJkPkwM94XlOYnQuu69XdXWMfxpeFi6tpJBsieIMV7EnyLV5J3lDzdLiFeK0iEBA==} peerDependencies: @@ -4571,6 +5607,13 @@ packages: '@noble/hashes': 1.3.3 '@scure/base': 1.1.5 + /@scure/bip39@1.1.0: + resolution: {integrity: sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==} + dependencies: + '@noble/hashes': 1.1.3 + '@scure/base': 1.1.5 + dev: false + /@scure/bip39@1.2.1: resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} dependencies: @@ -4598,6 +5641,9 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + /@sinclair/typebox@0.31.28: + resolution: {integrity: sha512-/s55Jujywdw/Jpan+vsy6JZs1z2ZTGxTmbZTPiuSL2wz9mfzA2gN1zzaqmvfi4pq+uOt7Du85fkiwv5ymW84aQ==} + /@sinonjs/commons@3.0.0: resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} dependencies: @@ -4615,22 +5661,868 @@ packages: /@socket.io/component-emitter@3.1.0: resolution: {integrity: sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==} - /@stablelib/aead@1.0.1: - resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} - - /@stablelib/binary@1.0.1: - resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + /@solana-mobile/mobile-wallet-adapter-protocol-web3js@2.1.1(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(react-native@0.73.2)(react@18.2.0): + resolution: {integrity: sha512-APP/fbPq4lUwUPWj+3Icja8N3eooaoyJLtB/1dlMTq8QyxftrBnOEygAHQv09Cb1fhD5FIvHnTjPcB9Evm1v7Q==} + peerDependencies: + '@solana/web3.js': ^1.58.0 dependencies: - '@stablelib/int': 1.0.1 - - /@stablelib/bytes@1.0.1: - resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + '@solana-mobile/mobile-wallet-adapter-protocol': 2.1.1(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react-native@0.73.2)(react@18.2.0) + '@solana/web3.js': 1.89.1 + bs58: 5.0.0 + js-base64: 3.7.6 + transitivePeerDependencies: + - '@solana/wallet-adapter-base' + - react + - react-native + dev: false - /@stablelib/chacha20poly1305@1.0.1: - resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + /@solana-mobile/mobile-wallet-adapter-protocol@2.1.1(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react-native@0.73.2)(react@18.2.0): + resolution: {integrity: sha512-o9pjD7UQMW5mwFClqeIFgW+/Pk8p4Wfmvu9qPzV2EQ61vz5FEUb+yZE7+N10zo9L0oAX/nqHaR+kzZ/D4M3aNg==} + peerDependencies: + '@solana/web3.js': ^1.58.0 + react-native: '>0.69' dependencies: - '@stablelib/aead': 1.0.1 - '@stablelib/binary': 1.0.1 + '@solana/wallet-standard': 1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react@18.2.0) + '@solana/wallet-standard-util': 1.1.1 + '@solana/web3.js': 1.89.1 + '@wallet-standard/core': 1.0.3 + js-base64: 3.7.6 + react-native: 0.73.2(@babel/core@7.23.6)(@babel/preset-env@7.23.6)(react@18.2.0) + transitivePeerDependencies: + - '@solana/wallet-adapter-base' + - bs58 + - react + dev: false + + /@solana-mobile/wallet-adapter-mobile@2.1.1(@solana/web3.js@1.89.1)(react-native@0.73.2)(react@18.2.0): + resolution: {integrity: sha512-AIGBUI1jFIZr2T10FlEC94q+cNXk5IvVR6i2cSmX2gftR4SO2CQSY+6lHjHFeTSRccLwlt79aihJJydnSFKXAg==} + peerDependencies: + '@solana/web3.js': ^1.58.0 + dependencies: + '@solana-mobile/mobile-wallet-adapter-protocol-web3js': 2.1.1(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(react-native@0.73.2)(react@18.2.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-features': 1.2.0 + '@solana/web3.js': 1.89.1 + js-base64: 3.7.6 + optionalDependencies: + '@react-native-async-storage/async-storage': 1.21.0(react-native@0.73.2) + transitivePeerDependencies: + - react + - react-native + dev: false + + /@solana/buffer-layout-utils@0.2.0: + resolution: {integrity: sha512-szG4sxgJGktbuZYDg2FfNmkMi0DYQoVjN2h7ta1W1hPrwzarcFLBq9UpX1UjNXsNpT9dn+chgprtWGioUAr4/g==} + engines: {node: '>= 10'} + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.89.1 + bigint-buffer: 1.1.5 + bignumber.js: 9.1.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@solana/buffer-layout@4.0.1: + resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} + engines: {node: '>=5.10'} + dependencies: + buffer: 6.0.3 + + /@solana/codecs-core@2.0.0-experimental.8618508: + resolution: {integrity: sha512-JCz7mKjVKtfZxkuDtwMAUgA7YvJcA2BwpZaA1NOLcted4OMC4Prwa3DUe3f3181ixPYaRyptbF0Ikq2MbDkYEA==} + dev: false + + /@solana/codecs-data-structures@2.0.0-experimental.8618508: + resolution: {integrity: sha512-sLpjL9sqzaDdkloBPV61Rht1tgaKq98BCtIKRuyscIrmVPu3wu0Bavk2n/QekmUzaTsj7K1pVSniM0YqCdnEBw==} + dependencies: + '@solana/codecs-core': 2.0.0-experimental.8618508 + '@solana/codecs-numbers': 2.0.0-experimental.8618508 + dev: false + + /@solana/codecs-numbers@2.0.0-experimental.8618508: + resolution: {integrity: sha512-EXQKfzFr3CkKKNzKSZPOOOzchXsFe90TVONWsSnVkonO9z+nGKALE0/L9uBmIFGgdzhhU9QQVFvxBMclIDJo2Q==} + dependencies: + '@solana/codecs-core': 2.0.0-experimental.8618508 + dev: false + + /@solana/codecs-strings@2.0.0-experimental.8618508(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-b2yhinr1+oe+JDmnnsV0641KQqqDG8AQ16Z/x7GVWO+AWHMpRlHWVXOq8U1yhPMA4VXxl7i+D+C6ql0VGFp0GA==} + peerDependencies: + fastestsmallesttextencoderdecoder: ^1.0.22 + dependencies: + '@solana/codecs-core': 2.0.0-experimental.8618508 + '@solana/codecs-numbers': 2.0.0-experimental.8618508 + fastestsmallesttextencoderdecoder: 1.0.22 + dev: false + + /@solana/options@2.0.0-experimental.8618508: + resolution: {integrity: sha512-fy/nIRAMC3QHvnKi63KEd86Xr/zFBVxNW4nEpVEU2OT0gCEKwHY4Z55YHf7XujhyuM3PNpiBKg/YYw5QlRU4vg==} + dependencies: + '@solana/codecs-core': 2.0.0-experimental.8618508 + '@solana/codecs-numbers': 2.0.0-experimental.8618508 + dev: false + + /@solana/spl-account-compression@0.1.10(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-IQAOJrVOUo6LCgeWW9lHuXo6JDbi4g3/RkQtvY0SyalvSWk9BIkHHe4IkAzaQw8q/BxEVBIjz8e9bNYWIAESNw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.50.1 + dependencies: + '@metaplex-foundation/beet': 0.7.1 + '@metaplex-foundation/beet-solana': 0.4.1 + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + borsh: 0.7.0 + js-sha3: 0.8.0 + typescript-collections: 1.3.3 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + dev: false + + /@solana/spl-token-metadata@0.1.2(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-hJYnAJNkDrtkE2Q41YZhCpeOGU/0JgRFXbtrtOuGGeKc3pkEUHB9DDoxZAxx+XRno13GozUleyBi0qypz4c3bw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.87.6 + dependencies: + '@solana/codecs-core': 2.0.0-experimental.8618508 + '@solana/codecs-data-structures': 2.0.0-experimental.8618508 + '@solana/codecs-numbers': 2.0.0-experimental.8618508 + '@solana/codecs-strings': 2.0.0-experimental.8618508(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/options': 2.0.0-experimental.8618508 + '@solana/spl-type-length-value': 0.1.0 + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - fastestsmallesttextencoderdecoder + dev: false + + /@solana/spl-token@0.1.8: + resolution: {integrity: sha512-LZmYCKcPQDtJgecvWOgT/cnoIQPWjdH+QVyzPcFvyDUiT0DiRjZaam4aqNUyvchLFhzgunv3d9xOoyE34ofdoQ==} + engines: {node: '>= 10'} + dependencies: + '@babel/runtime': 7.23.6 + '@solana/web3.js': 1.89.1 + bn.js: 5.2.1 + buffer: 6.0.3 + buffer-layout: 1.2.2 + dotenv: 10.0.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + dev: false + + /@solana/spl-token@0.3.11(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22): + resolution: {integrity: sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.88.0 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/buffer-layout-utils': 0.2.0 + '@solana/spl-token-metadata': 0.1.2(@solana/web3.js@1.89.1)(fastestsmallesttextencoderdecoder@1.0.22) + '@solana/web3.js': 1.89.1 + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - encoding + - fastestsmallesttextencoderdecoder + - utf-8-validate + dev: false + + /@solana/spl-type-length-value@0.1.0: + resolution: {integrity: sha512-JBMGB0oR4lPttOZ5XiUGyvylwLQjt1CPJa6qQ5oM+MBCndfjz2TKKkw0eATlLLcYmq1jBVsNlJ2cD6ns2GR7lA==} + engines: {node: '>=16'} + dependencies: + buffer: 6.0.3 + dev: false + + /@solana/wallet-adapter-alpha@0.1.10(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-TOUhDyUNSmp8bqeUueN0LPmurTAEmYm3PTrPGSnsq6JFeTzwTv5xZRygtCvULpBzCPZu/7AfIqh/TSoz4P92aw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-avana@0.1.13(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-dvKDzaFo9KgfNh0ohI6qOBTnOU2f6cHKPiDxdtLfXVubdic1mUYzuA2PcrBZQuRc5EBcvHbGCpr3Ds90cGB+xQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-base@0.9.23(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-apqMuYwFp1jFi55NxDfvXUX2x1T0Zh07MxhZ/nCCTGys5raSfYUh82zen2BLv8BSDj/JxZ2P/s7jrQZGrX8uAw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-standard-features': 1.2.0 + '@solana/web3.js': 1.89.1 + '@wallet-standard/base': 1.0.1 + '@wallet-standard/features': 1.0.3 + eventemitter3: 4.0.7 + + /@solana/wallet-adapter-bitkeep@0.3.20(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-v6Jd13CZOPNIAX0nFlopAJ3HDvC+MhiB4sde3C8sSnNbjVi9h1WLHBmaUfgqU6mAyhDjWUZjKt4zYlMhLdp/bg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-bitpie@0.5.18(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-gEflEwAyUbfmU4NEmsoDYt1JNFyoBQGm99BBvrvXdJsDdExvT6PwHNi5YlQKp1A4EAqjqaEj+nQzr6ygUpmCBQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-clover@0.4.19(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-48PoaPte/SRYeU25bvOSmSEqoKCcyOBH9CXebsDcXkrgf+g46KRlAlsY605q1ebzr+iaFEONtTdxW8LthvJtbA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-coin98@0.5.20(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-gnDFNsFq4IeB6jtQj6fZOUthuuQpvtomCkwkwsOWARNhl8nhnsfbuNs3r4XaT4Q79my07ogNQUBPGKY/8CqjiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + bs58: 4.0.1 + + /@solana/wallet-adapter-coinbase@0.1.18(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-63dFQCAaUgcJBA4XxIZLMzyluMPTZKzz1D9yT5lb60WgcIcsQjL7HKIqUCA4j5kT5BkbJIqaNAxhwcq7OlE+4A==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-coinhub@0.3.18(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-yeJo+cHVlUBlH16Q+knnFDJrH9wzEB3zvSq57PXfqvlWSjySm4PkkK7srRoAwfNOxL/eArSJWfBwRprsymttJQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-fractal@0.1.8(@solana/web3.js@1.89.1)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-lV/rXOMQSR7sBIEDx8g0jwvXP/fT2Vw/47CSj9BaVYC5LGphhuoYbcI4ko1y0Zv+dJu8JVRTeKbnaiRBjht5DA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@fractalwagmi/solana-wallet-adapter': 0.1.1(@solana/web3.js@1.89.1)(react-dom@18.2.0)(react@18.2.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - react + - react-dom + + /@solana/wallet-adapter-huobi@0.1.15(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-VKwlK0fE7v97NEWwP86iBY/xgnB3fQJv2/RYaw8ODAcfJqVQZAV6EhDR8fo6++jdS1KkcWc2GcHdBMrqPli3yQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-hyperpay@0.1.14(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-K0qMVpPHbeIVAvhwnn+2GR8jjBe/a5EP514TL/10SQQ8vTLd7ggNWZdTRCjUkHRlsbTOK7yYWAOHu3gx7429rw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-keystone@0.1.12(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-5B5/3LdsZs6CaUoe9GGuInknFJad1wQgbG0dJPKIYISGT73ijq1/IK7ejs4mWRclDh+9KzQjaY3fU9XSgvzIQQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@keystonehq/sol-keyring': 0.3.1 + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + /@solana/wallet-adapter-krystal@0.1.12(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-umQV9cbLZcqJFkcjpdOgPvTeDvUjcivRSzWgbx27drmeQ9bi4w9bYH5XkFmbj9iD98q+fjrYQUOK772IHZqrkQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-ledger@0.9.25(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-59yD3aveLwlzXqk4zBCaPLobeqAhmtMxPizfUBOjzwRKyepi1Nnnt9AC9Af3JrweU2x4qySRxAaZfU/iNqJ3rQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@ledgerhq/devices': 6.27.1 + '@ledgerhq/hw-transport': 6.27.1 + '@ledgerhq/hw-transport-webhid': 6.27.1 + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + buffer: 6.0.3 + + /@solana/wallet-adapter-mathwallet@0.9.18(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-sleBX+wB8Wahu2lLBCWihkFtnl64DMJgla/kgsf75PCNmNA93+WLA4gYOK+fFKeBkU12a/Hp5oZKEQsQGFPSOA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-neko@0.2.12(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-ei1QoQZhiYMuH/qm3bnXlueT0jQmH4tZfQvEwudFB8+a0fLtSA8lZU+CYI1jd1YLDjkUEIiXV6R/u32nlCuYDA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-nightly@0.1.16(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-JaPzT8R4HHUqGn/QdElx9iRW98h0NaANBt0j3CZZYWlqsdG0f8fFfy2xofILA+qnDL6NaRI9AzQ4NcQGuVZsVQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-nufi@0.1.17(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-ggTZKvYPJS3m/9hsMaGSH0F8kqumPqP0WdY7WNihWR6O4Pr401kDBdgXPXNSGorIahdPrRBzp5UrahnrlodvTQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-onto@0.1.7(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-WS4LY0Z0J+NcyEkjdjkD11uKURkRQ/RHMYSFE59U+MuBHggEpXJFZuJzUE9SZbG1ltlLTh13hS5ZuiEz7F+faA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-particle@0.1.12(@solana/web3.js@1.89.1)(bs58@4.0.1): + resolution: {integrity: sha512-6tD5pbyuyCRDswDVD5LCakVQ/vIwjO2lXlVvJFDLdhGa6MinbjTHigLmE58nkTgKATRScyS8FuCCzGmYcXGbow==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@particle-network/solana-wallet': 1.3.2(@solana/web3.js@1.89.1)(bs58@4.0.1) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - bs58 + + /@solana/wallet-adapter-phantom@0.9.24(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-D24AxRHmRJ4AYoRvijbiuUb9LmC4xLGKLMSJS2ly+zGxVmaPASPM/ThaY/DlYTDL31QvkYtl8RzSR4yIU1gpLg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-react@0.15.35(@solana/web3.js@1.89.1)(bs58@4.0.1)(react-native@0.73.2)(react@18.2.0): + resolution: {integrity: sha512-i4hc/gNLTYNLMEt2LS+4lrrc0QAwa5SU2PtYMnZ2A3rsoKF5m1bv1h6cjLj2KBry4/zRGEBoqkiMOC5zHkLnRQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + react: '*' + dependencies: + '@solana-mobile/wallet-adapter-mobile': 2.1.1(@solana/web3.js@1.89.1)(react-native@0.73.2)(react@18.2.0) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-wallet-adapter-react': 1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@4.0.1)(react@18.2.0) + '@solana/web3.js': 1.89.1 + react: 18.2.0 + transitivePeerDependencies: + - bs58 + - react-native + dev: false + + /@solana/wallet-adapter-safepal@0.5.18(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-E/EIO5j+f0FS9Yj5o5JLJ/qHh3Se/9jP2KdHKhooWTlXWbQDzrxMjV88qIKKl5sgWEndqRYDuDbAdW+2dhw6hw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-saifu@0.1.15(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-4nrziKQ+4QInh+COsICpNNUlUt456EJ60SZLxvG/z1AOGpatuzT0gN1+RdMcwHGUtiPBPCkEneUVhFZhhbMJlg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-salmon@0.1.14(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-CMXdbhaj3prloCJwvxO7e1wfAyRd58QiPB8pjvB4GBbznyoSnHbFXmpxZrKX1Dk6FoJOGBgjB71xnreGcc6oMw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + salmon-adapter-sdk: 1.1.1(@solana/web3.js@1.89.1) + + /@solana/wallet-adapter-sky@0.1.15(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-1vlk1/jnlOC/WfDDgDoUk3XtEhB3hq1fKtUb+xj0pVuSOg2Db+8ka9vPPYlVaKHoGvjm30iGGfr3ZrCxVfG6OQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-solflare@0.6.28(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-iiUQtuXp8p4OdruDawsm1dRRnzUCcsu+lKo8OezESskHtbmZw2Ifej0P99AbJbBAcBw7q4GPI6987Vh05Si5rw==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-chains': 1.1.0 + '@solana/web3.js': 1.89.1 + '@solflare-wallet/metamask-sdk': 1.0.3(@solana/web3.js@1.89.1) + '@solflare-wallet/sdk': 1.4.2(@solana/web3.js@1.89.1) + '@wallet-standard/wallet': 1.0.1 + + /@solana/wallet-adapter-solong@0.9.18(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-n40eemFUbJlOP+FKvn8rgq+YAOW51lEsn7uVz5ZjmiaW6MnRQniId9KkGYPPOUjytFyM+6/4x6IXI+QJknlSqA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-spot@0.1.15(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-daU2iBTSJp1RGfQrB2uV06+2WHfeyW0uhjoJ3zTkz24kXqv5/ycoPHr8Gi2jkDSGMFkewnjWF8g0KMEzq2VYug==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-tokenary@0.1.12(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-iIsOzzEHfRfDUiwYy2BAVGeMl+xBUu92qYK1yAKeKxQPF5McJrnjS3FXwT/onBU5WMdxI6dWm0HKZUiDwefN6A==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-tokenpocket@0.4.19(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-zKXTN+tuKIr/stSxUeG9XPBks9iqeliBWS9JF8eq+8u/Qb/bIDbNSQmd8Z5u1x2lf0puiStc9/iUu/+MLaOSVg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-torus@0.11.28(@babel/runtime@7.23.6)(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-bu1oJQ+AoIZICxz8J1lVcdL+iBBrdbynnEs5N6dxwoM/cMGLbX7PGYqaH0J1dEXisA+1H5AzGAnW4UU05VBmLA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + '@toruslabs/solana-embed': 0.3.4(@babel/runtime@7.23.6) + assert: 2.1.0 + crypto-browserify: 3.12.0 + process: 0.11.10 + stream-browserify: 3.0.0 + transitivePeerDependencies: + - '@babel/runtime' + - '@sentry/types' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@solana/wallet-adapter-trezor@0.1.0(@solana/web3.js@1.89.1)(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-iJe57srLXad86PVBNZaNfV+6KnYM5CJ/cmumxWVbagb9QnpizrsTK+T/WnQZOQZVpbKIOVf5oIzyKbX3g05kiA==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + '@trezor/connect-web': 9.1.10(buffer@6.0.3)(react-native@0.73.2)(tslib@2.6.2) + buffer: 6.0.3 + transitivePeerDependencies: + - bufferutil + - c-kzg + - encoding + - expo-localization + - react-native + - react-native-config + - supports-color + - tslib + - utf-8-validate + + /@solana/wallet-adapter-trust@0.1.13(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-lkmPfNdyRgx+z0K7i2cDa3a6SOKXpi3FiaYSo8Zozoxkp+Ga/NXVWxlXtMca4GAc/MnJMVp7yF/31kyFIee+3A==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-unsafe-burner@0.1.7(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-SuBVqQxA1NNUwP4Lo70rLPaM8aWkV1EFAlxkRoRLtwyw/gM8bxTO6+9EVyKCv+ix3yw1rCGIF3B0idXx0i37eQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@noble/curves': 1.2.0 + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-features': 1.2.0 + '@solana/wallet-standard-util': 1.1.1 + '@solana/web3.js': 1.89.1 + + /@solana/wallet-adapter-walletconnect@0.1.16(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-jNaQwSho8hT7gF1ifePE8TJc1FULx8jCF16KX3fZPtzXDxKrj0R4VUpHMGcw4MlDknrnZNLOJAVvyiawAkPCRQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@jnwng/walletconnect-solana': 0.2.0(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@upstash/redis' + - '@vercel/kv' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@solana/wallet-adapter-wallets@0.19.26(@babel/runtime@7.23.6)(@solana/web3.js@1.89.1)(bs58@4.0.1)(react-dom@18.2.0)(react-native@0.73.2)(react@18.2.0)(tslib@2.6.2): + resolution: {integrity: sha512-sOHQNX5YArh2dOHtosSUEfEc/xSzXDZN3h1CCgetJW4Dd3Lpj4RqzCmjVb3oslAH+IBZ5L9o5NKkvjN5R68R7g==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-alpha': 0.1.10(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-avana': 0.1.13(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-bitkeep': 0.3.20(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-bitpie': 0.5.18(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-clover': 0.4.19(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-coin98': 0.5.20(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-coinbase': 0.1.18(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-coinhub': 0.3.18(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-fractal': 0.1.8(@solana/web3.js@1.89.1)(react-dom@18.2.0)(react@18.2.0) + '@solana/wallet-adapter-huobi': 0.1.15(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-hyperpay': 0.1.14(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-keystone': 0.1.12(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-krystal': 0.1.12(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-ledger': 0.9.25(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-mathwallet': 0.9.18(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-neko': 0.2.12(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-nightly': 0.1.16(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-nufi': 0.1.17(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-onto': 0.1.7(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-particle': 0.1.12(@solana/web3.js@1.89.1)(bs58@4.0.1) + '@solana/wallet-adapter-phantom': 0.9.24(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-safepal': 0.5.18(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-saifu': 0.1.15(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-salmon': 0.1.14(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-sky': 0.1.15(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-solflare': 0.6.28(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-solong': 0.9.18(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-spot': 0.1.15(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-tokenary': 0.1.12(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-tokenpocket': 0.4.19(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-torus': 0.11.28(@babel/runtime@7.23.6)(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-trezor': 0.1.0(@solana/web3.js@1.89.1)(react-native@0.73.2)(tslib@2.6.2) + '@solana/wallet-adapter-trust': 0.1.13(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-unsafe-burner': 0.1.7(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-walletconnect': 0.1.16(@solana/web3.js@1.89.1) + '@solana/wallet-adapter-xdefi': 0.1.7(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + transitivePeerDependencies: + - '@azure/app-configuration' + - '@azure/cosmos' + - '@azure/data-tables' + - '@azure/identity' + - '@azure/keyvault-secrets' + - '@azure/storage-blob' + - '@babel/runtime' + - '@capacitor/preferences' + - '@netlify/blobs' + - '@planetscale/database' + - '@react-native-async-storage/async-storage' + - '@sentry/types' + - '@upstash/redis' + - '@vercel/kv' + - bs58 + - bufferutil + - c-kzg + - encoding + - expo-localization + - react + - react-dom + - react-native + - react-native-config + - supports-color + - tslib + - utf-8-validate + + /@solana/wallet-adapter-xdefi@0.1.7(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-d0icfBOQyaY8kpsdU/wQwaBIahZZPzkXkXfBjpMGwjixD8oeZUFfsg8LC7T1rOIUObeczlocaR/lwtEqWpnaeg==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.77.3 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + + /@solana/wallet-standard-chains@1.1.0: + resolution: {integrity: sha512-IRJHf94UZM8AaRRmY18d34xCJiVPJej1XVwXiTjihHnmwD0cxdQbc/CKjrawyqFyQAKJx7raE5g9mnJsAdspTg==} + engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.0.1 + + /@solana/wallet-standard-core@1.1.1: + resolution: {integrity: sha512-DoQ5Ryly4GAZtxRUmW2rIWrgNvTYVCWrFCFFjZI5s4zu2QNsP7sHZUax3kc1GbmFLXNL1FWRZlPOXRs6e0ZEng==} + engines: {node: '>=16'} + dependencies: + '@solana/wallet-standard-chains': 1.1.0 + '@solana/wallet-standard-features': 1.2.0 + '@solana/wallet-standard-util': 1.1.1 + dev: false + + /@solana/wallet-standard-features@1.2.0: + resolution: {integrity: sha512-tUd9srDLkRpe1BYg7we+c4UhRQkq+XQWswsr/L1xfGmoRDF47BPSXf4zE7ZU2GRBGvxtGt7lwJVAufQyQYhxTQ==} + engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.0.1 + '@wallet-standard/features': 1.0.3 + + /@solana/wallet-standard-util@1.1.1: + resolution: {integrity: sha512-dPObl4ntmfOc0VAGGyyFvrqhL8UkHXmVsgbj0K9RcznKV4KB3MgjGwzo8CTSX5El5lkb0rDeEzFqvToJXRz3dw==} + engines: {node: '>=16'} + dependencies: + '@noble/curves': 1.2.0 + '@solana/wallet-standard-chains': 1.1.0 + '@solana/wallet-standard-features': 1.2.0 + + /@solana/wallet-standard-wallet-adapter-base@1.1.2(@solana/web3.js@1.89.1)(bs58@4.0.1): + resolution: {integrity: sha512-DqhzYbgh3disHMgcz6Du7fmpG29BYVapNEEiL+JoVMa+bU9d4P1wfwXUNyJyRpGGNXtwhyZjIk2umWbe5ZBNaQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.58.0 + bs58: ^4.0.1 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-chains': 1.1.0 + '@solana/wallet-standard-features': 1.2.0 + '@solana/wallet-standard-util': 1.1.1 + '@solana/web3.js': 1.89.1 + '@wallet-standard/app': 1.0.1 + '@wallet-standard/base': 1.0.1 + '@wallet-standard/features': 1.0.3 + '@wallet-standard/wallet': 1.0.1 + bs58: 4.0.1 + dev: false + + /@solana/wallet-standard-wallet-adapter-base@1.1.2(@solana/web3.js@1.89.1)(bs58@5.0.0): + resolution: {integrity: sha512-DqhzYbgh3disHMgcz6Du7fmpG29BYVapNEEiL+JoVMa+bU9d4P1wfwXUNyJyRpGGNXtwhyZjIk2umWbe5ZBNaQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/web3.js': ^1.58.0 + bs58: ^4.0.1 + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-chains': 1.1.0 + '@solana/wallet-standard-features': 1.2.0 + '@solana/wallet-standard-util': 1.1.1 + '@solana/web3.js': 1.89.1 + '@wallet-standard/app': 1.0.1 + '@wallet-standard/base': 1.0.1 + '@wallet-standard/features': 1.0.3 + '@wallet-standard/wallet': 1.0.1 + bs58: 5.0.0 + dev: false + + /@solana/wallet-standard-wallet-adapter-react@1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@4.0.1)(react@18.2.0): + resolution: {integrity: sha512-bN6W4QkzenyjUoUz3sC5PAed+z29icGtPh9VSmLl1ZrRO7NbFB49a8uwUUVXNxhL/ZbMsyVKhb9bNj47/p8uhQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/wallet-adapter-base': '*' + react: '*' + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.89.1)(bs58@4.0.1) + '@wallet-standard/app': 1.0.1 + '@wallet-standard/base': 1.0.1 + react: 18.2.0 + transitivePeerDependencies: + - '@solana/web3.js' + - bs58 + dev: false + + /@solana/wallet-standard-wallet-adapter-react@1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react@18.2.0): + resolution: {integrity: sha512-bN6W4QkzenyjUoUz3sC5PAed+z29icGtPh9VSmLl1ZrRO7NbFB49a8uwUUVXNxhL/ZbMsyVKhb9bNj47/p8uhQ==} + engines: {node: '>=16'} + peerDependencies: + '@solana/wallet-adapter-base': '*' + react: '*' + dependencies: + '@solana/wallet-adapter-base': 0.9.23(@solana/web3.js@1.89.1) + '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.89.1)(bs58@5.0.0) + '@wallet-standard/app': 1.0.1 + '@wallet-standard/base': 1.0.1 + react: 18.2.0 + transitivePeerDependencies: + - '@solana/web3.js' + - bs58 + dev: false + + /@solana/wallet-standard-wallet-adapter@1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react@18.2.0): + resolution: {integrity: sha512-lCwoA+vhPfmvjcmJOhSRV94wouVWTfJv1Z7eeULAe+GodCeKA/0T9/uBYgXHUxQjLHd7o8LpLYIkfm+xjA5sMA==} + engines: {node: '>=16'} + dependencies: + '@solana/wallet-standard-wallet-adapter-base': 1.1.2(@solana/web3.js@1.89.1)(bs58@5.0.0) + '@solana/wallet-standard-wallet-adapter-react': 1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react@18.2.0) + transitivePeerDependencies: + - '@solana/wallet-adapter-base' + - '@solana/web3.js' + - bs58 + - react + dev: false + + /@solana/wallet-standard@1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react@18.2.0): + resolution: {integrity: sha512-o7wk+zr5/QgyE393cGRC04K1hacR4EkBu3MB925ddaLvCVaXjwr2asgdviGzN9PEm3FiEJp3sMmMKYHFnwOITQ==} + engines: {node: '>=16'} + dependencies: + '@solana/wallet-standard-core': 1.1.1 + '@solana/wallet-standard-wallet-adapter': 1.1.2(@solana/wallet-adapter-base@0.9.23)(@solana/web3.js@1.89.1)(bs58@5.0.0)(react@18.2.0) + transitivePeerDependencies: + - '@solana/wallet-adapter-base' + - '@solana/web3.js' + - bs58 + - react + dev: false + + /@solana/web3.js@1.89.1: + resolution: {integrity: sha512-t9TTLtPQxtQB3SAf/5E8xPXfVDsC6WGOsgKY02l2cbe0HLymT7ynE8Hu48Lk5qynHCquj6nhISfEHcjMkYpu/A==} + dependencies: + '@babel/runtime': 7.23.6 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.3 + '@solana/buffer-layout': 4.0.1 + agentkeepalive: 4.5.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.0 + node-fetch: 2.7.0 + rpc-websockets: 7.9.0 + superstruct: 0.14.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + /@solflare-wallet/metamask-sdk@1.0.3(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-os5Px5PTMYKGS5tzOoyjDxtOtj0jZKnbI1Uwt8+Jsw1HHIA+Ib2UACCGNhQ/un2f8sIbTfLD1WuucNMOy8KZpQ==} + peerDependencies: + '@solana/web3.js': '*' + dependencies: + '@solana/wallet-standard-features': 1.2.0 + '@solana/web3.js': 1.89.1 + '@wallet-standard/base': 1.0.1 + bs58: 5.0.0 + eventemitter3: 5.0.1 + uuid: 9.0.1 + + /@solflare-wallet/sdk@1.4.2(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-jrseNWipwl9xXZgrzwZF3hhL0eIVxuEtoZOSLmuPuef7FgHjstuTtNJAeT4icA7pzdDV4hZvu54pI2r2f7SmrQ==} + peerDependencies: + '@solana/web3.js': '*' + dependencies: + '@solana/web3.js': 1.89.1 + bs58: 5.0.0 + eventemitter3: 5.0.1 + uuid: 9.0.1 + + /@stablelib/aead@1.0.1: + resolution: {integrity: sha512-q39ik6sxGHewqtO0nP4BuSe3db5G1fEJE8ukvngS2gLkBXyy6E7pLubhbYgnkDFv6V8cWaxcE4Xn0t6LWcJkyg==} + + /@stablelib/binary@1.0.1: + resolution: {integrity: sha512-ClJWvmL6UBM/wjkvv/7m5VP3GMr9t0osr4yVgLZsLCOz4hGN9gIAFEqnJ0TsSMAN+n840nf2cHZnA5/KFqHC7Q==} + dependencies: + '@stablelib/int': 1.0.1 + + /@stablelib/bytes@1.0.1: + resolution: {integrity: sha512-Kre4Y4kdwuqL8BR2E9hV/R5sOrUj6NanZaZis0V6lX5yzqC3hBuVSDXUIBqQv/sCpmuWRiHLwqiT1pqqjuBXoQ==} + + /@stablelib/chacha20poly1305@1.0.1: + resolution: {integrity: sha512-MmViqnqHd1ymwjOQfghRKw2R/jMIGT3wySN7cthjXCBdO+qErNPUBnRzqNpnvIwg7JBCg3LdeCZZO4de/yEhVA==} + 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 @@ -4731,6 +6623,11 @@ packages: - supports-color dev: true + /@supercharge/promise-pool@3.1.0: + resolution: {integrity: sha512-gB3NukbIcYzRtPoE6dx9svQYPodxvnfQlaaQd8N/z87E6WaMfRE7o5HwB+LZ+KeM0nsNAq1n4TmBtfz1VCUR+Q==} + engines: {node: '>=8'} + dev: false + /@svgr/babel-plugin-add-jsx-attribute@6.5.1(@babel/core@7.23.6): resolution: {integrity: sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==} engines: {node: '>=10'} @@ -5061,75 +6958,461 @@ packages: dev: true optional: true - /@swc/core-win32-x64-msvc@1.3.72: - resolution: {integrity: sha512-FXMnIUtLl0yEmGkw+xbUg/uUPExvUxUlLSHbX7CnbSuOIHqMHzvEd9skIueLAst4bvmJ8kT1hDyAIWQcTIAJYQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true + /@swc/core-win32-x64-msvc@1.3.72: + resolution: {integrity: sha512-FXMnIUtLl0yEmGkw+xbUg/uUPExvUxUlLSHbX7CnbSuOIHqMHzvEd9skIueLAst4bvmJ8kT1hDyAIWQcTIAJYQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@swc/core@1.3.72: + resolution: {integrity: sha512-+AKjwLH3/STfPrd7CHzB9+NG1FVT0UKJMUChuWq9sQ8b9xlV8vUeRgZXgh/EHYvNQgl/OUTQKtL6xU2yOLuEuA==} + engines: {node: '>=10'} + requiresBuild: true + peerDependencies: + '@swc/helpers': ^0.5.0 + peerDependenciesMeta: + '@swc/helpers': + optional: true + optionalDependencies: + '@swc/core-darwin-arm64': 1.3.72 + '@swc/core-darwin-x64': 1.3.72 + '@swc/core-linux-arm-gnueabihf': 1.3.72 + '@swc/core-linux-arm64-gnu': 1.3.72 + '@swc/core-linux-arm64-musl': 1.3.72 + '@swc/core-linux-x64-gnu': 1.3.72 + '@swc/core-linux-x64-musl': 1.3.72 + '@swc/core-win32-arm64-msvc': 1.3.72 + '@swc/core-win32-ia32-msvc': 1.3.72 + '@swc/core-win32-x64-msvc': 1.3.72 + dev: true + + /@tanstack/query-core@5.17.9: + resolution: {integrity: sha512-8xcvpWIPaRMDNLMvG9ugcUJMgFK316ZsqkPPbsI+TMZsb10N9jk0B6XgPk4/kgWC2ziHyWR7n7wUhxmD0pChQw==} + + /@tanstack/react-query@5.17.9(react@18.2.0): + resolution: {integrity: sha512-M5E9gwUq1Stby/pdlYjBlL24euIVuGbWKIFCbtnQxSdXI4PgzjTSdXdV3QE6fc+itF+TUvX/JPTKIwq8yuBXcg==} + peerDependencies: + react: ^18.0.0 + dependencies: + '@tanstack/query-core': 5.17.9 + react: 18.2.0 + + /@testing-library/dom@9.3.3: + resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} + engines: {node: '>=14'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/runtime': 7.23.6 + '@types/aria-query': 5.0.4 + aria-query: 5.1.3 + chalk: 4.1.2 + dom-accessibility-api: 0.5.16 + lz-string: 1.5.0 + pretty-format: 27.5.1 + dev: true + + /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} + engines: {node: '>=14'} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + '@babel/runtime': 7.23.6 + '@testing-library/dom': 9.3.3 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@toruslabs/base-controllers@2.9.0(@babel/runtime@7.23.6): + resolution: {integrity: sha512-rKc+bR4QB/wdbH0CxLZC5e2PUZcIgkr9yY7TMd3oIffDklaYBnsuC5ES2/rgK1aRUDRWz+qWbTwLqsY6PlT37Q==} + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + '@ethereumjs/util': 8.1.0 + '@toruslabs/broadcast-channel': 6.3.1 + '@toruslabs/http-helpers': 3.4.0(@babel/runtime@7.23.6) + '@toruslabs/openlogin-jrpc': 4.7.2(@babel/runtime@7.23.6) + async-mutex: 0.4.1 + bignumber.js: 9.1.2 + bowser: 2.11.0 + eth-rpc-errors: 4.0.3 + json-rpc-random-id: 1.0.1 + lodash: 4.17.21 + loglevel: 1.9.1 + transitivePeerDependencies: + - '@sentry/types' + - bufferutil + - supports-color + - utf-8-validate + + /@toruslabs/broadcast-channel@6.3.1: + resolution: {integrity: sha512-BEtJQ+9bMfFoGuCsp5NmxyY+C980Ho+3BZIKSiYwRtl5qymJ+jMX5lsoCppoQblcb34dP6FwEjeFw80Y9QC/rw==} + dependencies: + '@babel/runtime': 7.23.6 + '@toruslabs/eccrypto': 2.2.1 + '@toruslabs/metadata-helpers': 3.2.0(@babel/runtime@7.23.6) + bowser: 2.11.0 + loglevel: 1.9.1 + oblivious-set: 1.1.1 + socket.io-client: 4.7.3(bufferutil@4.0.8)(utf-8-validate@6.0.3) + unload: 2.4.1 + transitivePeerDependencies: + - '@sentry/types' + - bufferutil + - supports-color + - utf-8-validate + + /@toruslabs/eccrypto@2.2.1: + resolution: {integrity: sha512-7sviL0wLYsfA5ogEAOIdb0tu/QAOFXfHc9B8ONYtF04x4Mg3Nr89LL35FhjaEm055q8Ru7cUQhEFSiqJqm9GCw==} + dependencies: + elliptic: 6.5.4 + + /@toruslabs/http-helpers@3.4.0(@babel/runtime@7.23.6): + resolution: {integrity: sha512-CoeJSL32mpp0gmYjxv48odu6pfjHk/rbJHDwCtYPcMHAl+qUQ/DTpVOOn9U0fGkD+fYZrQmZbRkXFgLhiT0ajQ==} + engines: {node: '>=14.17.0', npm: '>=6.x'} + peerDependencies: + '@babel/runtime': ^7.x + '@sentry/types': ^7.x + peerDependenciesMeta: + '@sentry/types': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + lodash.merge: 4.6.2 + loglevel: 1.9.1 + + /@toruslabs/metadata-helpers@3.2.0(@babel/runtime@7.23.6): + resolution: {integrity: sha512-2bCc6PNKd9y+aWfZQ1FXd47QmfyT4NmmqPGfsqk+sQS2o+MlxIyLuh9uh7deMgXo4b4qBDX+RQGbIKM1zVk56w==} + engines: {node: '>=14.17.0', npm: '>=6.x'} + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + '@toruslabs/eccrypto': 2.2.1 + '@toruslabs/http-helpers': 3.4.0(@babel/runtime@7.23.6) + elliptic: 6.5.4 + ethereum-cryptography: 2.1.2 + json-stable-stringify: 1.1.1 + transitivePeerDependencies: + - '@sentry/types' + + /@toruslabs/openlogin-jrpc@3.2.0(@babel/runtime@7.23.6): + resolution: {integrity: sha512-G+K0EHyVUaAEyeD4xGsnAZRpn/ner8lQ2HC2+pGKg6oGmzKI2wGMDcw2KMH6+HKlfBGVJ5/VR9AQfC/tZlLDmQ==} + deprecated: Not supported. Pls upgrade + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + '@toruslabs/openlogin-utils': 3.0.0(@babel/runtime@7.23.6) + end-of-stream: 1.4.4 + eth-rpc-errors: 4.0.3 + events: 3.3.0 + fast-safe-stringify: 2.1.1 + once: 1.4.0 + pump: 3.0.0 + readable-stream: 3.6.2 + + /@toruslabs/openlogin-jrpc@4.7.2(@babel/runtime@7.23.6): + resolution: {integrity: sha512-9Eb0cPc0lPuS6v2YkQlgzfbRnZ6fLez9Ike5wznoHSFA2/JVu1onwuI56EV1HwswdDrOWPPQEyzI1j9NriZ0ew==} + engines: {node: '>=16.18.1', npm: '>=8.x'} + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + '@metamask/rpc-errors': 5.1.1 + '@toruslabs/openlogin-utils': 4.7.0(@babel/runtime@7.23.6) + end-of-stream: 1.4.4 + events: 3.3.0 + fast-safe-stringify: 2.1.1 + once: 1.4.0 + pump: 3.0.0 + readable-stream: 4.5.2 + transitivePeerDependencies: + - supports-color + + /@toruslabs/openlogin-utils@3.0.0(@babel/runtime@7.23.6): + resolution: {integrity: sha512-T5t29/AIFqXc84x4OoAkZWjd0uoP2Lk6iaFndnIIMzCPu+BwwV0spX/jd/3YYNjZ8Po8D+faEnwAhiqemYeK2w==} + deprecated: Not supported. Pls upgrade + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + base64url: 3.0.1 + keccak: 3.0.4 + randombytes: 2.1.0 + + /@toruslabs/openlogin-utils@4.7.0(@babel/runtime@7.23.6): + resolution: {integrity: sha512-w6XkHs4WKuufsf/zzteBzs4EJuOknrUmJ+iv5FZ8HzIpMQeL/984CP8HYaFSEYkbGCP4ydAnhY4Uh0QAhpDbPg==} + engines: {node: '>=16.18.1', npm: '>=8.x'} + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + base64url: 3.0.1 + + /@toruslabs/solana-embed@0.3.4(@babel/runtime@7.23.6): + resolution: {integrity: sha512-yj+aBJoBAneap7Jlu9/OOp7irWNuC5CqAhyhVcmb0IjWrCUFnioLdL0U7UfGaqVm/5O0leJh7/Z5Ll+3toWJBg==} + engines: {node: '>=14.17.0', npm: '>=6.x'} + peerDependencies: + '@babel/runtime': 7.x + dependencies: + '@babel/runtime': 7.23.6 + '@solana/web3.js': 1.89.1 + '@toruslabs/base-controllers': 2.9.0(@babel/runtime@7.23.6) + '@toruslabs/http-helpers': 3.4.0(@babel/runtime@7.23.6) + '@toruslabs/openlogin-jrpc': 3.2.0(@babel/runtime@7.23.6) + eth-rpc-errors: 4.0.3 + fast-deep-equal: 3.1.3 + is-stream: 2.0.1 + lodash-es: 4.17.21 + loglevel: 1.9.1 + pump: 3.0.0 + transitivePeerDependencies: + - '@sentry/types' + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@trezor/analytics@1.0.12(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-LyG3K6kuOwa1h1c/TTGjf0uCiyCwa6//jEt2oUThwTU7zTtN+0n7BwSwqoY/a4ykBdf4TVyCn+BMWqRWRY7kRg==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@trezor/env-utils': 1.0.11(react-native@0.73.2)(tslib@2.6.2) + '@trezor/utils': 9.0.17(tslib@2.6.2) + tslib: 2.6.2 + transitivePeerDependencies: + - expo-localization + - react-native + - react-native-config + + /@trezor/blockchain-link-types@1.0.11: + resolution: {integrity: sha512-jAy0GObvtpMEUfZYOjBKYPIRa5PbxUz+mR8RXkrbAFVNQZPiN8C7cn0WVXsYJ3BQSM3l9z50KzgikVqqzk0Jbg==} + + /@trezor/blockchain-link-utils@1.0.12(tslib@2.6.2): + resolution: {integrity: sha512-q2SSR4XTYKU7LV2zY9WgUWPHZpYCGRowSI3mi23ym+BC4Hbh4gDvSCnUzDK+Xqp9tIhIojonba5h5mnFXYLf/g==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@mobily/ts-belt': 3.13.1 + '@solana/web3.js': 1.89.1 + '@trezor/utils': 9.0.18(tslib@2.6.2) + bignumber.js: 9.1.2 + tslib: 2.6.2 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + /@trezor/blockchain-link@2.1.22(tslib@2.6.2): + resolution: {integrity: sha512-GbV0Toev9GgT4ViujgE7Mxo9h9/UEy56bDe0IdfWoAL9uBgbduK9R0FUvH3kat/5g+3/n6BYk2v0YFUFYDKGtg==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@solana/buffer-layout': 4.0.1 + '@solana/web3.js': 1.89.1 + '@trezor/blockchain-link-types': 1.0.11 + '@trezor/blockchain-link-utils': 1.0.12(tslib@2.6.2) + '@trezor/utils': 9.0.18(tslib@2.6.2) + '@trezor/utxo-lib': 2.0.4(tslib@2.6.2) + '@types/web': 0.0.119 + bignumber.js: 9.1.2 + events: 3.3.0 + ripple-lib: 1.10.1 + socks-proxy-agent: 6.1.1 + tslib: 2.6.2 + ws: 8.16.0 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate + + /@trezor/connect-analytics@1.0.11(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-DwHTpR4Qj7wW73PTt/GjERq4i48M0yn5ORweDWC3h7m98WUzLLL0o9kaAQ9hgm7kAVmZ5Cwnsf/D/itllpklHw==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@trezor/analytics': 1.0.12(react-native@0.73.2)(tslib@2.6.2) + tslib: 2.6.2 + transitivePeerDependencies: + - expo-localization + - react-native + - react-native-config + + /@trezor/connect-common@0.0.26(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-fqfBATSi+/q/Ew0DMkEmchw5JdOuTFIT5swIop5J67InTUnlcVNO408hN5IWb1c6XwJEfvxxE9S1wWlm45vlMw==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@trezor/env-utils': 1.0.11(react-native@0.73.2)(tslib@2.6.2) + '@trezor/utils': 9.0.18(tslib@2.6.2) + tslib: 2.6.2 + transitivePeerDependencies: + - expo-localization + - react-native + - react-native-config + + /@trezor/connect-web@9.1.10(buffer@6.0.3)(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-l1J3znLXwLq30itDhbmvwl9c/SdFYlsgsjR8BlVdt4vBbjP4yE2pPe5d5192+lbxjax7BScBeJVStRr+4/zMpw==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@trezor/connect': 9.1.10(buffer@6.0.3)(react-native@0.73.2)(tslib@2.6.2) + '@trezor/utils': 9.0.18(tslib@2.6.2) + events: 3.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - buffer + - bufferutil + - c-kzg + - encoding + - expo-localization + - react-native + - react-native-config + - supports-color + - utf-8-validate + + /@trezor/connect@9.1.10(buffer@6.0.3)(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-STIF9rk9CNjKkvZd9+ynuNWplTF+08HnAI1jtPkewHzLn34aUlNSyJx3BRs3zU6g5fO8RnJFeM2osniOD1M/7g==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@ethereumjs/common': 4.1.0(buffer@6.0.3) + '@ethereumjs/tx': 5.1.0(buffer@6.0.3) + '@fivebinaries/coin-selection': 2.2.1 + '@trezor/blockchain-link': 2.1.22(tslib@2.6.2) + '@trezor/blockchain-link-types': 1.0.11 + '@trezor/connect-analytics': 1.0.11(react-native@0.73.2)(tslib@2.6.2) + '@trezor/connect-common': 0.0.26(react-native@0.73.2)(tslib@2.6.2) + '@trezor/protobuf': 1.0.6(tslib@2.6.2) + '@trezor/protocol': 1.0.5(tslib@2.6.2) + '@trezor/schema-utils': 1.0.0 + '@trezor/transport': 1.1.21(tslib@2.6.2) + '@trezor/utils': 9.0.18(tslib@2.6.2) + '@trezor/utxo-lib': 2.0.4(tslib@2.6.2) + bignumber.js: 9.1.2 + blakejs: 1.2.1 + bs58: 5.0.0 + bs58check: 3.0.1 + cross-fetch: 4.0.0 + events: 3.3.0 + tslib: 2.6.2 + transitivePeerDependencies: + - buffer + - bufferutil + - c-kzg + - encoding + - expo-localization + - react-native + - react-native-config + - supports-color + - utf-8-validate - /@swc/core@1.3.72: - resolution: {integrity: sha512-+AKjwLH3/STfPrd7CHzB9+NG1FVT0UKJMUChuWq9sQ8b9xlV8vUeRgZXgh/EHYvNQgl/OUTQKtL6xU2yOLuEuA==} - engines: {node: '>=10'} - requiresBuild: true + /@trezor/env-utils@1.0.11(react-native@0.73.2)(tslib@2.6.2): + resolution: {integrity: sha512-V0IM4znD+kSlvI7tfN1nowJF5eXsYhBfHG83cNPVjKSo1NdnlRrxjAh5C+wGJcfG9qkKgavdb2pxAeiw/CQCog==} peerDependencies: - '@swc/helpers': ^0.5.0 + expo-localization: ^14.1.1 + react-native: 0.71.8 + react-native-config: ^1.5.0 + tslib: ^2.6.2 peerDependenciesMeta: - '@swc/helpers': + expo-localization: optional: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.72 - '@swc/core-darwin-x64': 1.3.72 - '@swc/core-linux-arm-gnueabihf': 1.3.72 - '@swc/core-linux-arm64-gnu': 1.3.72 - '@swc/core-linux-arm64-musl': 1.3.72 - '@swc/core-linux-x64-gnu': 1.3.72 - '@swc/core-linux-x64-musl': 1.3.72 - '@swc/core-win32-arm64-msvc': 1.3.72 - '@swc/core-win32-ia32-msvc': 1.3.72 - '@swc/core-win32-x64-msvc': 1.3.72 - dev: true + react-native: + optional: true + react-native-config: + optional: true + dependencies: + react-native: 0.73.2(@babel/core@7.23.6)(@babel/preset-env@7.23.6)(react@18.2.0) + tslib: 2.6.2 + ua-parser-js: 1.0.37 - /@tanstack/query-core@5.17.9: - resolution: {integrity: sha512-8xcvpWIPaRMDNLMvG9ugcUJMgFK316ZsqkPPbsI+TMZsb10N9jk0B6XgPk4/kgWC2ziHyWR7n7wUhxmD0pChQw==} + /@trezor/protobuf@1.0.6(tslib@2.6.2): + resolution: {integrity: sha512-w1NuArzEqC3og0X3uBLArhraW1vN1YKkpLmb6CvLbkCGcks0aC3pRcixYmcG0/BQ2D0AzWEld8kxm2g70Te/Dg==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@trezor/schema-utils': 1.0.0 + long: 4.0.0 + protobufjs: 7.2.5 + tslib: 2.6.2 - /@tanstack/react-query@5.17.9(react@18.2.0): - resolution: {integrity: sha512-M5E9gwUq1Stby/pdlYjBlL24euIVuGbWKIFCbtnQxSdXI4PgzjTSdXdV3QE6fc+itF+TUvX/JPTKIwq8yuBXcg==} + /@trezor/protocol@1.0.5(tslib@2.6.2): + resolution: {integrity: sha512-xRqn6k4Rn9pvDlGu7aBuoDL4fG+BN1dj+nBV2ULt03+evKmrcC0ya6bZ74cWqoaGtWrNSo6opONr1VF7tN2fKg==} peerDependencies: - react: ^18.0.0 + tslib: ^2.6.2 dependencies: - '@tanstack/query-core': 5.17.9 - react: 18.2.0 + tslib: 2.6.2 - /@testing-library/dom@9.3.3: - resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} - engines: {node: '>=14'} + /@trezor/schema-utils@1.0.0: + resolution: {integrity: sha512-cSIAFxFAjcE+yKBUls4cUFjxN87wqPhClxWHPaXVPhesXH/Wgg+xd7vtu+lE7yz1ZlW9aweriKwXXq8OjMbF+g==} dependencies: - '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.6 - '@types/aria-query': 5.0.4 - aria-query: 5.1.3 - chalk: 4.1.2 - dom-accessibility-api: 0.5.16 - lz-string: 1.5.0 - pretty-format: 27.5.1 - dev: true + '@sinclair/typebox': 0.31.28 + ts-mixer: 6.0.3 - /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} - engines: {node: '>=14'} + /@trezor/transport@1.1.21(tslib@2.6.2): + resolution: {integrity: sha512-rsD+Q1IRr9fe1Wvu+8nlkmawA38X+GAcjaHRef6J+iyg+S2Gv4e2vlIJ/d3+MalFnBp1sNK/JrrGBnJP1lqjBQ==} peerDependencies: - react: ^18.0.0 - react-dom: ^18.0.0 + tslib: ^2.6.2 dependencies: - '@babel/runtime': 7.23.6 - '@testing-library/dom': 9.3.3 - '@types/react-dom': 18.2.18 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true + '@trezor/protobuf': 1.0.6(tslib@2.6.2) + '@trezor/protocol': 1.0.5(tslib@2.6.2) + '@trezor/utils': 9.0.18(tslib@2.6.2) + cross-fetch: 4.0.0 + json-stable-stringify: 1.1.1 + long: 4.0.0 + protobufjs: 7.2.5 + tslib: 2.6.2 + usb: 2.11.0 + transitivePeerDependencies: + - encoding + + /@trezor/utils@9.0.17(tslib@2.6.2): + resolution: {integrity: sha512-6AM6WVIa8Q3XI2rM+Uq928uaTd4/XmFJm1h2mXyl9GMjSwelb/2xrre5qi01T8S24wyHUIQvuhzd+G96MzVUfQ==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + tslib: 2.6.2 + + /@trezor/utils@9.0.18(tslib@2.6.2): + resolution: {integrity: sha512-/fHSqGmExpNK9Z0E7jsPEyYahVs3fupOtxiif1PI/a/lzjL0Ja26nfr2q0tP2rSGi9IWPLHgmSCZvG4Xgo8auw==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + tslib: 2.6.2 + + /@trezor/utxo-lib@2.0.4(tslib@2.6.2): + resolution: {integrity: sha512-1JvliJgSoe+eDhXqOOqnq/m76Z1Izvj07EM+Q4n5MTwhb932GANGjARw9PsCwRMOj2TYUQK+M4ImTTHkyt8fPQ==} + peerDependencies: + tslib: ^2.6.2 + dependencies: + '@trezor/utils': 9.0.18(tslib@2.6.2) + bchaddrjs: 0.5.2 + bech32: 2.0.0 + bip66: 1.1.5 + bitcoin-ops: 1.4.1 + blake-hash: 2.0.0 + blakejs: 1.2.1 + bn.js: 5.2.1 + bs58: 5.0.0 + bs58check: 3.0.1 + create-hash: 1.2.0 + create-hmac: 1.1.7 + int64-buffer: 1.0.1 + pushdata-bitcoin: 1.0.1 + tiny-secp256k1: 1.1.6 + tslib: 2.6.2 + typeforce: 1.18.0 + varuint-bitcoin: 1.1.2 + wif: 4.0.0 /@trysound/sax@0.2.0: resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} @@ -5179,6 +7462,11 @@ packages: '@types/filesystem': 0.0.35 '@types/har-format': 1.2.15 + /@types/connect@3.4.38: + resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} + dependencies: + '@types/node': 20.10.5 + /@types/debug@4.1.12: resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} dependencies: @@ -5300,7 +7588,6 @@ packages: /@types/lodash@4.14.202: resolution: {integrity: sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==} - dev: true /@types/mdast@3.0.15: resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} @@ -5315,9 +7602,12 @@ packages: /@types/ms@0.7.34: resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} + /@types/node@11.11.6: + resolution: {integrity: sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==} + dev: false + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - dev: true /@types/node@17.0.45: resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==} @@ -5409,6 +7699,20 @@ packages: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} dev: true + /@types/uuid@8.3.4: + resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} + + /@types/w3c-web-usb@1.0.10: + resolution: {integrity: sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ==} + + /@types/web@0.0.119: + resolution: {integrity: sha512-CQVOcEWrxr0MXbQbR3rrw6GHo2mcr8WlhLHQkOKDhhySTjz15/35jk0Zm2FbHRyCvSEjr/J7A2iDD5GRrGxE2A==} + + /@types/ws@7.4.7: + resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} + dependencies: + '@types/node': 20.10.5 + /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} @@ -6237,6 +8541,48 @@ packages: - utf-8-validate - zod + /@wallet-standard/app@1.0.1: + resolution: {integrity: sha512-LnLYq2Vy2guTZ8GQKKSXQK3+FRGPil75XEdkZqE6fiLixJhZJoJa5hT7lXxwe0ykVTt9LEThdTbOpT7KadS26Q==} + engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.0.1 + dev: false + + /@wallet-standard/base@1.0.1: + resolution: {integrity: sha512-1To3ekMfzhYxe0Yhkpri+Fedq0SYcfrOfJi3vbLjMwF2qiKPjTGLwZkf2C9ftdQmxES+hmxhBzTwF4KgcOwf8w==} + engines: {node: '>=16'} + + /@wallet-standard/core@1.0.3: + resolution: {integrity: sha512-Jb33IIjC1wM1HoKkYD7xQ6d6PZ8EmMZvyc8R7dFgX66n/xkvksVTW04g9yLvQXrLFbcIjHrCxW6TXMhvpsAAzg==} + engines: {node: '>=16'} + dependencies: + '@wallet-standard/app': 1.0.1 + '@wallet-standard/base': 1.0.1 + '@wallet-standard/features': 1.0.3 + '@wallet-standard/wallet': 1.0.1 + dev: false + + /@wallet-standard/features@1.0.3: + resolution: {integrity: sha512-m8475I6W5LTatTZuUz5JJNK42wFRgkJTB0I9tkruMwfqBF2UN2eomkYNVf9RbrsROelCRzSFmugqjKZBFaubsA==} + engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.0.1 + + /@wallet-standard/wallet@1.0.1: + resolution: {integrity: sha512-qkhJeuQU2afQTZ02yMZE5SFc91Fo3hyFjFkpQglHudENNyiSG0oUKcIjky8X32xVSaumgTZSQUAzpXnCTWHzKQ==} + engines: {node: '>=16'} + dependencies: + '@wallet-standard/base': 1.0.1 + + /@walletconnect/browser-utils@1.8.0: + resolution: {integrity: sha512-Wcqqx+wjxIo9fv6eBUFHPsW1y/bGWWRboni5dfD8PtOmrihrEpOCmvRJe4rfl7xgJW8Ea9UqKEaq0bIRLHlK4A==} + dependencies: + '@walletconnect/safe-json': 1.0.0 + '@walletconnect/types': 1.8.0 + '@walletconnect/window-getters': 1.0.0 + '@walletconnect/window-metadata': 1.0.0 + detect-browser: 5.2.0 + /@walletconnect/core@2.11.0: resolution: {integrity: sha512-2Tjp5BCevI7dbmqo/OrCjX4tqgMqwJNQLlQAlphqPfvwlF9+tIu6pGcVbSN3U9zyXzWIZCeleqEaWUeSeET4Ew==} dependencies: @@ -6398,6 +8744,10 @@ packages: pino: 7.11.0 tslib: 1.14.1 + /@walletconnect/mobile-registry@1.4.0: + resolution: {integrity: sha512-ZtKRio4uCZ1JUF7LIdecmZt7FOLnX72RPSY7aUVu7mj7CSfxDwUn6gBuK6WGtH+NZCldBqDl5DenI5fFSvkKYw==} + deprecated: 'Deprecated in favor of dynamic registry available from: https://github.com/walletconnect/walletconnect-registry' + /@walletconnect/modal-core@2.6.2(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-cv8ibvdOJQv2B+nyxP9IIFdxvQznMz8OOr/oR/AaUZym4hjXNL/l1a2UlSQBXrVjo3xxbouMxLb3kBsHoYP2CA==} dependencies: @@ -6426,6 +8776,17 @@ packages: - '@types/react' - react + /@walletconnect/qrcode-modal@1.8.0: + resolution: {integrity: sha512-BueaFefaAi8mawE45eUtztg3ZFbsAH4DDXh1UNwdUlsvFMjqcYzLUG0xZvDd6z2eOpbgDg2N3bl6gF0KONj1dg==} + deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' + dependencies: + '@walletconnect/browser-utils': 1.8.0 + '@walletconnect/mobile-registry': 1.4.0 + '@walletconnect/types': 1.8.0 + copy-to-clipboard: 3.3.3 + preact: 10.4.1 + qrcode: 1.4.4 + /@walletconnect/relay-api@1.0.9: resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} dependencies: @@ -6442,6 +8803,9 @@ packages: tslib: 1.14.1 uint8arrays: 3.1.1 + /@walletconnect/safe-json@1.0.0: + resolution: {integrity: sha512-QJzp/S/86sUAgWY6eh5MKYmSfZaRpIlmCJdi5uG4DJlKkZrHEF7ye7gA+VtbVzvTtpM/gRwO2plQuiooIeXjfg==} + /@walletconnect/safe-json@1.0.2: resolution: {integrity: sha512-Ogb7I27kZ3LPC3ibn8ldyUr5544t3/STow9+lzz7Sfo808YD7SBWk7SAsdBFlYgP2zDRy2hS3sKRcuSRM0OTmA==} dependencies: @@ -6482,6 +8846,10 @@ packages: dependencies: tslib: 1.14.1 + /@walletconnect/types@1.8.0: + resolution: {integrity: sha512-Cn+3I0V0vT9ghMuzh1KzZvCkiAxTq+1TR2eSqw5E5AVWfmCtECFkVZBP6uUJZ8YjwLqXheI+rnjqPy7sVM4Fyg==} + deprecated: 'WalletConnect''s v1 SDKs are now deprecated. Please upgrade to a v2 SDK. For details see: https://docs.walletconnect.com/' + /@walletconnect/types@2.11.0: resolution: {integrity: sha512-AB5b1lrEbCGHxqS2vqfCkIoODieH+ZAUp9rA1O2ftrhnqDJiJK983Df87JhYhECsQUBHHfALphA8ydER0q+9sw==} dependencies: @@ -6568,11 +8936,19 @@ packages: - '@vercel/kv' - supports-color + /@walletconnect/window-getters@1.0.0: + resolution: {integrity: sha512-xB0SQsLaleIYIkSsl43vm8EwETpBzJ2gnzk7e0wMF3ktqiTGS6TFHxcprMl5R44KKh4tCcHCJwolMCaDSwtAaA==} + /@walletconnect/window-getters@1.0.1: resolution: {integrity: sha512-vHp+HqzGxORPAN8gY03qnbTMnhqIwjeRJNOMOAzePRg4xVEEE2WvYsI9G2NMjOknA8hnuYbU3/hwLcKbjhc8+Q==} dependencies: tslib: 1.14.1 + /@walletconnect/window-metadata@1.0.0: + resolution: {integrity: sha512-9eFvmJxIKCC3YWOL97SgRkKhlyGXkrHwamfechmqszbypFspaSk+t2jQXAEU7YClHF6Qjw5eYOmy1//zFi9/GA==} + dependencies: + '@walletconnect/window-getters': 1.0.1 + /@walletconnect/window-metadata@1.0.1: resolution: {integrity: sha512-9koTqyGrM2cqFRW517BPY/iEtUDx2r1+Pwwu5m7sJ7ka79wi3EyqhqcICk/yDmv6jAS1rjKgTKXlEhanYjijcA==} dependencies: @@ -6693,6 +9069,13 @@ packages: resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} dev: true + /JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + /abitype@0.10.0(typescript@5.3.3): resolution: {integrity: sha512-QvMHEUzgI9nPj9TWtUGnS2scas80/qaL5PBxGdwWhhvzqXfOph+IEiiiWrzuisu3U3JgDQVruW9oLbJoQ3oZ3A==} peerDependencies: @@ -6758,6 +9141,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + /aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + dev: false + /aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} dev: true @@ -6769,6 +9156,14 @@ packages: es6-promisify: 5.0.0 dev: true + /agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + dependencies: + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + /agent-base@7.1.0: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} @@ -6785,6 +9180,12 @@ packages: humanize-ms: 1.2.1 dev: true + /agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + dependencies: + humanize-ms: 1.2.1 + /ajv-keywords@3.5.2(ajv@6.12.6): resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==} peerDependencies: @@ -6811,6 +9212,29 @@ packages: uri-js: 4.4.1 dev: true + /algo-msgpack-with-bigint@2.1.1: + resolution: {integrity: sha512-F1tGh056XczEaEAqu7s+hlZUDWwOBT70Eq0lfMpBP2YguSQVyxRbprLq5rELXKQOyOaixTWYhMeMQMzP0U5FoQ==} + engines: {node: '>= 10'} + dev: false + + /algosdk@1.24.1: + resolution: {integrity: sha512-9moZxdqeJ6GdE4N6fA/GlUP4LrbLZMYcYkt141J4Ss68OfEgH9qW0wBuZ3ZOKEx/xjc5bg7mLP2Gjg7nwrkmww==} + engines: {node: '>=14.0.0'} + dependencies: + algo-msgpack-with-bigint: 2.1.1 + buffer: 6.0.3 + cross-fetch: 3.1.8 + hi-base32: 0.5.1 + js-sha256: 0.9.0 + js-sha3: 0.8.0 + js-sha512: 0.8.0 + json-bigint: 1.0.0 + tweetnacl: 1.0.3 + vlq: 2.0.4 + transitivePeerDependencies: + - encoding + dev: false + /animated-scroll-to@2.3.0: resolution: {integrity: sha512-PT/5MSKCWQaK2kuOl2HT2KJMuJEvUS4/TgMhWy82c2EmF74/CIkvPBPKOvd8nMYP6Higo7xCn49/iSW9BccMoQ==} dev: true @@ -6839,7 +9263,6 @@ packages: engines: {node: '>=8'} dependencies: type-fest: 0.21.3 - dev: true /ansi-escapes@6.2.0: resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==} @@ -6900,6 +9323,10 @@ packages: engines: {node: '>=12'} dev: true + /ansicolors@0.3.2: + resolution: {integrity: sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==} + dev: false + /antd-style@3.6.1(@types/react@18.2.45)(antd@5.13.2)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-KpKXiAIV3CAe6TfSh/m6ET2vGuhAof7qfqeaouh5WZ0JDl5jDXXSFPeEfqvZuHAckTl+A0NzArvIHKgKt/NZ9g==} peerDependencies: @@ -6996,9 +9423,58 @@ packages: resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} dev: true + /aptos@1.8.5(debug@4.3.4): + resolution: {integrity: sha512-iQxliWesNHjGQ5YYXCyss9eg4+bDGQWqAZa73vprqGQ9tungK0cRjUI2fmnp63Ed6UG6rurHrL+b0ckbZAOZZQ==} + engines: {node: '>=11.0.0'} + dependencies: + '@noble/hashes': 1.1.3 + '@scure/bip39': 1.1.0 + axios: 0.27.2(debug@4.3.4) + form-data: 4.0.0 + tweetnacl: 1.0.3 + transitivePeerDependencies: + - debug + dev: false + + /arbundles@0.10.1(arweave@1.14.4)(debug@4.3.4): + resolution: {integrity: sha512-QYFepxessLCirvRkQK9iQmjxjHz+s50lMNGRwZwpyPWLohuf6ISyj1gkFXJHlMT+rNSrsHxb532glHnKbjwu3A==} + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@irys/arweave': 0.0.2(debug@4.3.4) + '@noble/ed25519': 1.7.3 + base64url: 3.0.1 + bs58: 4.0.1 + keccak: 3.0.4 + secp256k1: 5.0.0 + optionalDependencies: + '@randlabs/myalgo-connect': 1.4.2 + algosdk: 1.24.1 + arweave-stream-tx: 1.2.2(arweave@1.14.4) + multistream: 4.1.0 + tmp-promise: 3.0.3 + transitivePeerDependencies: + - arweave + - bufferutil + - debug + - encoding + - utf-8-validate + dev: false + /arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + /arconnect@0.4.2: + resolution: {integrity: sha512-Jkpd4QL3TVqnd3U683gzXmZUVqBUy17DdJDuL/3D9rkysLgX6ymJ2e+sR+xyZF5Rh42CBqDXWNMmCjBXeP7Gbw==} + dependencies: + arweave: 1.14.4 + dev: false + optional: true + /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} dev: true @@ -7110,6 +9586,28 @@ packages: engines: {node: '>=0.10.0'} dev: true + /arweave-stream-tx@1.2.2(arweave@1.14.4): + resolution: {integrity: sha512-bNt9rj0hbAEzoUZEF2s6WJbIz8nasZlZpxIw03Xm8fzb9gRiiZlZGW3lxQLjfc9Z0VRUWDzwtqoYeEoB/JDToQ==} + requiresBuild: true + peerDependencies: + arweave: ^1.10.0 + dependencies: + arweave: 1.14.4 + exponential-backoff: 3.1.1 + dev: false + optional: true + + /arweave@1.14.4: + resolution: {integrity: sha512-tmqU9fug8XAmFETYwgUhLaD3WKav5DaM4p1vgJpEj/Px2ORPPMikwnSySlFymmL2qgRh2ZBcZsg11+RXPPGLsA==} + engines: {node: '>=16.15.0'} + dependencies: + arconnect: 0.4.2 + asn1.js: 5.4.1 + base64-js: 1.5.1 + bignumber.js: 9.1.2 + dev: false + optional: true + /asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -7120,7 +9618,6 @@ packages: inherits: 2.0.4 minimalistic-assert: 1.0.1 safer-buffer: 2.1.2 - dev: true /assert@1.5.1: resolution: {integrity: sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==} @@ -7129,6 +9626,15 @@ packages: util: 0.10.4 dev: true + /assert@2.1.0: + resolution: {integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==} + dependencies: + call-bind: 1.0.5 + is-nan: 1.3.2 + object-is: 1.1.5 + object.assign: 4.1.5 + util: 0.12.5 + /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} dev: true @@ -7161,6 +9667,17 @@ packages: dependencies: tslib: 2.6.2 + /async-mutex@0.4.1: + resolution: {integrity: sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==} + dependencies: + tslib: 2.6.2 + + /async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + dependencies: + retry: 0.13.1 + dev: false + /async-validator@4.2.5: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} @@ -7172,7 +9689,6 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: true /atob@2.1.2: resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} @@ -7214,6 +9730,25 @@ packages: - supports-color dev: true + /axios@0.27.2(debug@4.3.4): + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.4) + form-data: 4.0.0 + transitivePeerDependencies: + - debug + dev: false + + /axios@1.6.7(debug@4.3.4): + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} + dependencies: + follow-redirects: 1.15.5(debug@4.3.4) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + /babel-core@7.0.0-bridge.0(@babel/core@7.23.6): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: @@ -7400,9 +9935,37 @@ packages: resolution: {integrity: sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==} dev: true + /base-x@3.0.9: + resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + dependencies: + safe-buffer: 5.2.1 + + /base-x@4.0.0: + resolution: {integrity: sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==} + /base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + /base64url@3.0.1: + resolution: {integrity: sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==} + engines: {node: '>=6.0.0'} + + /bchaddrjs@0.5.2: + resolution: {integrity: sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ==} + engines: {node: '>=8.0.0'} + dependencies: + bs58check: 2.1.2 + buffer: 6.0.3 + cashaddrjs: 0.4.4 + stream-browserify: 3.0.0 + + /bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + dev: false + + /bech32@2.0.0: + resolution: {integrity: sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==} + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -7410,15 +9973,28 @@ packages: is-windows: 1.0.2 dev: true + /big-integer@1.6.36: + resolution: {integrity: sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==} + engines: {node: '>=0.6'} + /big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} - dev: true /big.js@5.2.2: resolution: {integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==} dev: true + /bigint-buffer@1.1.5: + resolution: {integrity: sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==} + engines: {node: '>= 10.0.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + + /bignumber.js@9.1.2: + resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} + /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} @@ -7428,6 +10004,35 @@ packages: engines: {node: '>=0.8'} dev: true + /bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + dependencies: + file-uri-to-path: 1.0.0 + + /bip39-light@1.0.7: + resolution: {integrity: sha512-WDTmLRQUsiioBdTs9BmSEmkJza+8xfJmptsNJjxnoq3EydSa/ZBXT6rm66KoT3PJIRYMnhSKNR7S9YL1l7R40Q==} + dependencies: + create-hash: 1.2.0 + pbkdf2: 3.1.2 + dev: false + + /bip39@3.0.2: + resolution: {integrity: sha512-J4E1r2N0tUylTKt07ibXvhpT2c5pyAFgvuA5q1H9uDy6dEGpjV8jmymh3MTYJDLCNbIVClSB9FbND49I6N24MQ==} + dependencies: + '@types/node': 11.11.6 + create-hash: 1.2.0 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + dev: false + + /bip66@1.1.5: + resolution: {integrity: sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==} + dependencies: + safe-buffer: 5.2.1 + + /bitcoin-ops@1.4.1: + resolution: {integrity: sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==} + /bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} dependencies: @@ -7442,10 +10047,26 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 + /blake-hash@2.0.0: + resolution: {integrity: sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==} + engines: {node: '>= 10'} + requiresBuild: true + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.7.1 + readable-stream: 3.6.2 + + /blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + /bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} dev: true + /bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + dev: false + /bn.js@4.12.0: resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} @@ -7456,6 +10077,13 @@ packages: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: true + /borsh@0.7.0: + resolution: {integrity: sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==} + dependencies: + bn.js: 5.2.1 + bs58: 4.0.1 + text-encoding-utf-8: 1.0.2 + /bowser@2.11.0: resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} @@ -7515,7 +10143,6 @@ packages: evp_bytestokey: 1.0.3 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true /browserify-cipher@1.0.1: resolution: {integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==} @@ -7523,7 +10150,6 @@ packages: browserify-aes: 1.2.0 browserify-des: 1.0.2 evp_bytestokey: 1.0.3 - dev: true /browserify-des@1.0.2: resolution: {integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==} @@ -7532,14 +10158,12 @@ packages: des.js: 1.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true /browserify-rsa@4.1.0: resolution: {integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==} dependencies: bn.js: 5.2.1 randombytes: 2.1.0 - dev: true /browserify-sign@4.2.2: resolution: {integrity: sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==} @@ -7554,7 +10178,6 @@ packages: parse-asn1: 5.1.6 readable-stream: 3.6.2 safe-buffer: 5.2.1 - dev: true /browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} @@ -7572,6 +10195,29 @@ packages: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) + /bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + dependencies: + base-x: 3.0.9 + + /bs58@5.0.0: + resolution: {integrity: sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==} + dependencies: + base-x: 4.0.0 + + /bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + /bs58check@3.0.1: + resolution: {integrity: sha512-hjuuJvoWEybo7Hn/0xOrczQKKEKD63WguEjlhLExYs2wUBcebDC1jDNK17eEAD2lYfw82d5ASC1d7K3SWszjaQ==} + dependencies: + '@noble/hashes': 1.3.3 + bs58: 5.0.0 + /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} dependencies: @@ -7579,18 +10225,15 @@ packages: /buffer-alloc-unsafe@1.1.0: resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - dev: true /buffer-alloc@1.2.0: resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} dependencies: buffer-alloc-unsafe: 1.1.0 buffer-fill: 1.0.0 - dev: true /buffer-fill@1.0.0: resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} - dev: true /buffer-from@0.1.2: resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} @@ -7599,9 +10242,17 @@ packages: /buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + /buffer-layout@1.2.2: + resolution: {integrity: sha512-kWSuLN694+KTk8SrYvCqwP2WcgQjoRCiF5b4QDvkkz8EmgD+aWAIceGFKMIAdmF/pH+vpgNV3d3kAKorcdAmWA==} + engines: {node: '>=4.5'} + dev: false + + /buffer-reverse@1.0.1: + resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} + dev: false + /buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true /buffer@4.9.2: resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} @@ -7769,6 +10420,14 @@ packages: engines: {node: '>=0.10.0'} dev: true + /cashaddrjs@0.4.4: + resolution: {integrity: sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==} + dependencies: + big-integer: 1.6.36 + + /cbor-sync@1.0.4: + resolution: {integrity: sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA==} + /ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: true @@ -7824,7 +10483,6 @@ packages: /chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} - dev: true /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -7895,7 +10553,6 @@ packages: dependencies: inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true /citty@0.1.5: resolution: {integrity: sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==} @@ -7968,6 +10625,11 @@ packages: resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==} dev: true + /cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + dev: false + /click-to-react-component@1.1.0(@types/react@18.2.45)(react-dom@18.1.0)(react@18.1.0): resolution: {integrity: sha512-/DjZemufS1BkxyRgZL3r7HXVVOFRWVQi5Xd4EBnjxZMwrHEh0OlUVA2N9CjXkZ0x8zMf8dL1cKnnx+xUWUg4VA==} peerDependencies: @@ -7990,6 +10652,13 @@ packages: execa: 5.1.1 is-wsl: 2.2.0 + /cliui@5.0.0: + resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} + dependencies: + string-width: 3.1.0 + strip-ansi: 5.2.0 + wrap-ansi: 5.1.0 + /cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} dependencies: @@ -8127,7 +10796,6 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 - dev: true /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -8152,7 +10820,6 @@ packages: /commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} - dev: true /commander@9.5.0: resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} @@ -8334,12 +11001,27 @@ packages: engines: {node: '>=0.8'} hasBin: true + /crc@3.8.0: + resolution: {integrity: sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==} + dependencies: + buffer: 5.7.1 + + /crc@4.3.2(buffer@6.0.3): + resolution: {integrity: sha512-uGDHf4KLLh2zsHa8D8hIQ1H/HtFQhyHrc0uhHBcoKGol/Xnb+MPYfUMw7cvON6ze/GUESTudKayDcJC5HnJv1A==} + engines: {node: '>=12'} + peerDependencies: + buffer: '>=6.0.3' + peerDependenciesMeta: + buffer: + optional: true + dependencies: + buffer: 6.0.3 + /create-ecdh@4.0.4: resolution: {integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==} dependencies: bn.js: 4.12.0 elliptic: 6.5.4 - dev: true /create-error-class@3.0.2: resolution: {integrity: sha512-gYTKKexFO3kh200H1Nit76sRwRtOY32vQd3jpAQKpLtZqyNsSQNfI4N7o3eP2wUjV35pTWKRYqFUDBvUha/Pkw==} @@ -8356,7 +11038,6 @@ packages: md5.js: 1.3.5 ripemd160: 2.0.2 sha.js: 2.4.11 - dev: true /create-hmac@1.1.7: resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} @@ -8367,7 +11048,6 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: true /cross-env@7.0.3: resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} @@ -8421,7 +11101,9 @@ packages: public-encrypt: 4.0.3 randombytes: 2.1.0 randomfill: 1.0.4 - dev: true + + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} /crypto-random-string@1.0.0: resolution: {integrity: sha512-GsVpkFPlycH7/fRR7Dhcmnoii54gV1nz7y4CWyeFS14N+JVBBhY+r8amRHE4BwSYal7BPTDp8isvAlCxyFt3Hg==} @@ -8577,15 +11259,12 @@ packages: /csv-generate@3.4.3: resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - dev: true /csv-parse@4.16.3: resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - dev: true /csv-stringify@5.6.5: resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - dev: true /csv@5.5.3: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} @@ -8595,7 +11274,6 @@ packages: csv-parse: 4.16.3 csv-stringify: 5.6.5 stream-transform: 2.1.3 - dev: true /current-script-polyfill@1.0.0: resolution: {integrity: sha512-qv8s+G47V6Hq+g2kRE5th+ASzzrL7b6l+tap1DHKK25ZQJv3yIFhH96XaQ7NGL+zRW3t/RDbweJf/dJDe5Z5KA==} @@ -8704,7 +11382,6 @@ packages: /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} - dev: true /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -8815,15 +11492,17 @@ packages: define-data-property: 1.1.1 has-property-descriptors: 1.0.1 object-keys: 1.1.1 - dev: true /defu@6.1.3: resolution: {integrity: sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==} + /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'} - dev: true /denodeify@1.2.1: resolution: {integrity: sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==} @@ -8832,6 +11511,11 @@ packages: resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} engines: {node: '>=0.10'} + /depd@1.1.2: + resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==} + engines: {node: '>= 0.6'} + dev: false + /depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -8854,7 +11538,6 @@ packages: dependencies: inherits: 2.0.4 minimalistic-assert: 1.0.1 - dev: true /destr@2.0.2: resolution: {integrity: sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==} @@ -8863,6 +11546,9 @@ packages: resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + /detect-browser@5.2.0: + resolution: {integrity: sha512-tr7XntDAu50BVENgQfajMLzacmSe34D+qZc4zjnniz0ZVuw/TZcLcyxHQjYpJTM36sGEkZZlYLnIM1hH7alTMA==} + /detect-browser@5.3.0: resolution: {integrity: sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==} @@ -8906,7 +11592,6 @@ packages: bn.js: 4.12.0 miller-rabin: 4.0.1 randombytes: 2.1.0 - dev: true /dijkstrajs@1.0.3: resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} @@ -9029,6 +11714,17 @@ packages: is-obj: 1.0.1 dev: true + /dotenv@10.0.0: + resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} + engines: {node: '>=10'} + dev: false + + /draggabilly@3.0.0: + resolution: {integrity: sha512-aEs+B6prbMZQMxc9lgTpCBfyCUhRur/VFucHhIOvlvvdARTj7TcDmX/cdOUtqbjJJUh7+agyJXR5Z6IFe1MxwQ==} + dependencies: + get-size: 3.0.0 + unidragger: 3.0.1 + /dumi-afx-deps@1.0.0-alpha.20: resolution: {integrity: sha512-PRSJlHuJkyHDET7Hukykx/hLULkgUBX5q2CutMG5EDI3eJLzJlX634wNll10m3at1uomcDAVudL7Dgh5UOJ7IQ==} dev: true @@ -9206,6 +11902,9 @@ packages: resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} dev: true + /emoji-regex@7.0.3: + resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -9442,13 +12141,11 @@ packages: /es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - dev: true /es6-promisify@5.0.0: resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==} dependencies: es6-promise: 4.2.8 - dev: true /esbuild@0.17.19: resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} @@ -9898,6 +12595,12 @@ packages: dependencies: fast-safe-stringify: 2.1.1 + /ethereum-bloom-filters@1.0.10: + resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + dependencies: + js-sha3: 0.8.0 + dev: false + /ethereum-cryptography@2.1.2: resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} dependencies: @@ -9922,6 +12625,17 @@ packages: - utf-8-validate dev: true + /ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + dev: false + + /ev-emitter@2.1.2: + resolution: {integrity: sha512-jQ5Ql18hdCQ4qS+RCrbLfz1n+Pags27q5TwMKvZyhp5hh2UULUYZUy1keqj6k6SYsdqIYjnmz7xyyEY0V67B8Q==} + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -9933,6 +12647,9 @@ packages: resolution: {integrity: sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==} dev: true + /eventemitter3@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + /eventemitter3@5.0.1: resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} @@ -9945,7 +12662,6 @@ packages: dependencies: md5.js: 1.3.5 safe-buffer: 5.2.1 - dev: true /execa@0.7.0: resolution: {integrity: sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==} @@ -10019,6 +12735,9 @@ packages: strip-final-newline: 3.0.0 dev: true + /exenv@1.2.2: + resolution: {integrity: sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==} + /expand-tilde@1.2.2: resolution: {integrity: sha512-rtmc+cjLZqnu9dSYosX9EWmSJhTwpACgJQTfj4hgg2JjOD/6SIQalZrt4a3aQeh++oNxkazcaxrhPUj6+g5G/Q==} engines: {node: '>=0.10.0'} @@ -10026,6 +12745,12 @@ packages: os-homedir: 1.0.2 dev: true + /exponential-backoff@3.1.1: + resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} + requiresBuild: true + dev: false + optional: true + /extend-shallow@2.0.1: resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==} engines: {node: '>=0.10.0'} @@ -10054,14 +12779,16 @@ packages: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - dev: true + + /eyes@0.1.8: + resolution: {integrity: sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==} + engines: {node: '> 0.1.90'} /fast-deep-equal@2.0.1: resolution: {integrity: sha512-bCK/2Z4zLidyB4ReuIsvALH6w31YfAQDmXMqMx6FyfHqvBxtjC0eRumeSu4Bs3XtXwpyIywtSTrVT99BxY1f9w==} /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true /fast-glob@3.2.12: resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} @@ -10100,6 +12827,9 @@ packages: /fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + /fast-stable-stringify@1.0.0: + resolution: {integrity: sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==} + /fast-xml-parser@4.3.3: resolution: {integrity: sha512-coV/D1MhrShMvU6D0I+VAK3umz6hUaxxhL0yp/9RjfiYUfAv14rDhGQL+PLForhMdr0wq3PiV07WtkkNjJjNHg==} hasBin: true @@ -10111,6 +12841,10 @@ packages: engines: {node: '>= 4.9.1'} dev: true + /fastestsmallesttextencoderdecoder@1.0.22: + resolution: {integrity: sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==} + dev: false + /fastq@1.16.0: resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==} dependencies: @@ -10179,6 +12913,13 @@ packages: escape-string-regexp: 1.0.5 dev: true + /figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + dependencies: + escape-string-regexp: 1.0.5 + dev: false + /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -10214,6 +12955,9 @@ packages: ramda: 0.29.0 dev: true + /file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + /filesize@3.6.1: resolution: {integrity: sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==} engines: {node: '>= 0.4.0'} @@ -10331,6 +13075,18 @@ packages: readable-stream: 2.3.8 dev: true + /follow-redirects@1.15.5(debug@4.3.4): + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dependencies: + debug: 4.3.4 + dev: false + /follow-redirects@1.5.10: resolution: {integrity: sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==} engines: {node: '>=4.0'} @@ -10406,7 +13162,6 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 - dev: true /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} @@ -10568,6 +13323,9 @@ packages: /get-port-please@3.1.1: resolution: {integrity: sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==} + /get-size@3.0.0: + resolution: {integrity: sha512-Y8aiXLq4leR7807UY0yuKEwif5s3kbVp1nTv+i4jBeoUzByTLKkLWu/HorS6/pB+7gsB0o7OTogC8AoOOeT0Hw==} + /get-stream@3.0.0: resolution: {integrity: sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==} engines: {node: '>=4'} @@ -10884,7 +13642,6 @@ packages: inherits: 2.0.4 readable-stream: 3.6.2 safe-buffer: 5.2.1 - dev: true /hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} @@ -11081,6 +13838,10 @@ packages: /hey-listen@1.0.8: resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} + /hi-base32@0.5.1: + resolution: {integrity: sha512-EmBBpvdYh/4XxsnUybsPag6VikPYnN30td+vQk+GI3qpahVEG9+gTkG0aXVxTjBqQ5T6ijbWIu77O+C5WFWsnA==} + dev: false + /history@5.3.0: resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} dependencies: @@ -11256,6 +14017,17 @@ packages: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} dev: true + /http-errors@1.8.1: + resolution: {integrity: sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==} + engines: {node: '>= 0.6'} + dependencies: + depd: 1.1.2 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 1.5.0 + toidentifier: 1.0.1 + dev: false + /http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -11304,6 +14076,15 @@ packages: - supports-color dev: true + /https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + /https-proxy-agent@7.0.2: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} @@ -11341,7 +14122,6 @@ packages: resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} dependencies: ms: 2.1.3 - dev: true /humps@2.0.1: resolution: {integrity: sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==} @@ -11368,7 +14148,6 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 - dev: true /iconv-lite@0.6.3: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} @@ -11513,6 +14292,31 @@ packages: through: 2.3.8 dev: true + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: false + + /int64-buffer@1.0.1: + resolution: {integrity: sha512-+3azY4pXrjAupJHU1V9uGERWlhoqNswJNji6aD/02xac7oxol508AsMC5lxKhEqyZeDFy3enq5OGWXF4u75hiw==} + engines: {node: '>= 4.5.0'} + /internal-slot@1.0.6: resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} engines: {node: '>= 0.4'} @@ -11560,6 +14364,9 @@ packages: /ip@1.1.8: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + /iron-webcrypto@1.0.0: resolution: {integrity: sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==} @@ -11768,6 +14575,11 @@ packages: dependencies: is-extglob: 2.1.1 + /is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + dev: false + /is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} dev: true @@ -11796,6 +14608,13 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true + /is-nan@1.3.2: + resolution: {integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + /is-negative-zero@2.0.2: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} @@ -11986,7 +14805,6 @@ packages: /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -12017,6 +14835,13 @@ packages: unfetch: 5.0.0 dev: true + /isomorphic-ws@4.0.1(ws@7.5.9): + resolution: {integrity: sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==} + peerDependencies: + ws: '*' + dependencies: + ws: 7.5.9 + /isows@1.0.3(ws@8.13.0): resolution: {integrity: sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==} peerDependencies: @@ -12098,6 +14923,27 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true + /jayson@4.1.0: + resolution: {integrity: sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@types/connect': 3.4.38 + '@types/node': 12.20.55 + '@types/ws': 7.4.7 + JSONStream: 1.3.5 + 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.9) + json-stringify-safe: 5.0.1 + uuid: 8.3.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + /jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -12226,6 +15072,22 @@ packages: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 + /js-base64@3.7.6: + resolution: {integrity: sha512-NPrWuHFxFUknr1KqJRDgUQPexQF0uIJWjeT+2KjEePhitQxQEx5EJBG1lVn5/hc8aLycTpXrDOgPQ6Zq+EDiTA==} + dev: false + + /js-sha256@0.9.0: + resolution: {integrity: sha512-sga3MHh9sgQN2+pJ9VYZ+1LPwXOxuBJBA5nrR5/ofPfuiJBE2hnjsaN8se8JznOmGLN2p49Pe5U/ttafcs/apA==} + dev: false + + /js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + dev: false + + /js-sha512@0.8.0: + resolution: {integrity: sha512-PWsmefG6Jkodqt+ePTvBZCSMFgN7Clckjd0O7su3I0+BW2QWUTJNzjktHsztGLhncP2h8mcF9V9Y2Ha59pAViQ==} + dev: false + /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -12243,6 +15105,9 @@ packages: argparse: 2.0.1 dev: true + /jsbi@3.2.5: + resolution: {integrity: sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==} + /jsc-android@250231.0.0: resolution: {integrity: sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==} @@ -12306,7 +15171,7 @@ packages: whatwg-encoding: 3.1.1 whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 - ws: 8.15.1 + ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil @@ -12329,6 +15194,12 @@ packages: hasBin: true dev: true + /json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + dependencies: + bignumber.js: 9.1.2 + dev: false + /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} dev: true @@ -12369,6 +15240,18 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true + /json-stable-stringify@1.1.1: + resolution: {integrity: sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + isarray: 2.0.5 + jsonify: 0.0.1 + object-keys: 1.1.1 + + /json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + /json2mq@0.2.0: resolution: {integrity: sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==} dependencies: @@ -12406,6 +15289,19 @@ packages: graceful-fs: 4.2.11 dev: true + /jsonify@0.0.1: + resolution: {integrity: sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==} + + /jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + /jsonschema@1.2.2: + resolution: {integrity: sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==} + + /jsqr@1.4.0: + resolution: {integrity: sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==} + /jsx-ast-utils@3.3.5: resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} engines: {node: '>=4.0'} @@ -12778,6 +15674,9 @@ packages: /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + + /lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} dev: false /lodash.debounce@4.0.8: @@ -12802,7 +15701,6 @@ packages: /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} @@ -12817,7 +15715,6 @@ packages: /lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true /log-symbols@2.2.0: resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==} @@ -12852,6 +15749,16 @@ packages: dayjs: 1.11.10 yargs: 15.4.1 + /loglevel@1.9.1: + resolution: {integrity: sha512-hP3I3kCrDIMuRwAwHltphhDM1r8i55H33GgqjXbrisuJhF4kRhW1dNuxsRklp4bXl8DSdLaNLuiL4A/LWRfxvg==} + engines: {node: '>= 0.6.0'} + + /long@4.0.0: + resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==} + + /long@5.2.3: + resolution: {integrity: sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==} + /longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} dev: true @@ -13005,7 +15912,6 @@ packages: hash-base: 3.1.0 inherits: 2.0.4 safe-buffer: 5.2.1 - dev: true /mdast-util-definitions@5.1.2: resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} @@ -13282,6 +16188,17 @@ packages: engines: {node: '>= 8'} dev: true + /merkletreejs@0.3.11: + resolution: {integrity: sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==} + engines: {node: '>= 7.6.0'} + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 4.2.0 + treeify: 1.1.0 + web3-utils: 1.10.3 + dev: false + /metro-babel-transformer@0.80.4: resolution: {integrity: sha512-QP1kjYLap4O3w9tA4bYO8iyuNpR65If5Z97Ku37O4CwQPAwQaTmg67g4OdABS4BVK10fsxdExKp+fC37XirPow==} engines: {node: '>=18'} @@ -13763,7 +16680,6 @@ packages: dependencies: bn.js: 4.12.0 brorand: 1.1.0 - dev: true /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -13900,7 +16816,6 @@ packages: /mixme@0.5.10: resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} engines: {node: '>= 8.0.0'} - dev: true /mkdirp@0.5.6: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} @@ -13965,10 +16880,31 @@ packages: object-assign: 4.1.1 dev: true + /multistream@4.1.0: + resolution: {integrity: sha512-J1XDiAmmNpRCBfIWJv+n0ymC4ABcf/Pl+5YvC5B/D2f/2+8PtHvCNxMPKiQcZyi922Hq69J2YOpb1pTywfifyw==} + requiresBuild: true + dependencies: + once: 1.4.0 + readable-stream: 3.6.2 + dev: false + optional: true + + /mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + dev: false + /mute-stream@0.0.7: resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==} dev: true + /mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + dev: false + + /nan@2.18.0: + resolution: {integrity: sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==} + /nanoid@2.1.11: resolution: {integrity: sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==} dev: true @@ -13990,6 +16926,23 @@ packages: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} dev: true + /near-hd-key@1.2.1: + resolution: {integrity: sha512-SIrthcL5Wc0sps+2e1xGj3zceEa68TgNZDLuCx0daxmfTP7sFTB3/mtE2pYhlFsCxWoMn+JfID5E1NlzvvbRJg==} + dependencies: + bip39: 3.0.2 + create-hmac: 1.1.7 + tweetnacl: 1.0.3 + dev: false + + /near-seed-phrase@0.2.0: + resolution: {integrity: sha512-NpmrnejpY1AdlRpDZ0schJQJtfBaoUheRfiYtQpcq9TkwPgqKZCRULV5L3hHmLc0ep7KRtikbPQ9R2ztN/3cyQ==} + dependencies: + bip39-light: 1.0.7 + bs58: 4.0.1 + near-hd-key: 1.2.1 + tweetnacl: 1.0.3 + dev: false + /needle@3.3.1: resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} @@ -14025,6 +16978,9 @@ packages: /node-addon-api@2.0.2: resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + /node-addon-api@3.2.1: + resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} + /node-addon-api@5.1.0: resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} @@ -14204,6 +17160,14 @@ packages: /nullthrows@1.1.1: resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} + /number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + dev: false + /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} dev: true @@ -14233,7 +17197,6 @@ packages: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 - dev: true /object-keys@0.4.0: resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} @@ -14242,7 +17205,6 @@ packages: /object-keys@1.1.1: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - dev: true /object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} @@ -14252,7 +17214,6 @@ packages: define-properties: 1.2.1 has-symbols: 1.0.3 object-keys: 1.1.1 - dev: true /object.entries@1.1.7: resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} @@ -14309,6 +17270,9 @@ packages: es-abstract: 1.22.3 dev: true + /oblivious-set@1.1.1: + resolution: {integrity: sha512-Oh+8fK09mgGmAshFdH6hSVco6KZmd1tTwNFWj35OvzdmJTMZtAkbn05zar2iG3v6sDs1JLEtOiBGNb6BHwkb2w==} + /obuf@1.1.2: resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} dev: true @@ -14460,7 +17424,6 @@ packages: /os-tmpdir@1.0.2: resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} engines: {node: '>=0.10.0'} - dev: true /osenv@0.1.5: resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} @@ -14612,7 +17575,6 @@ packages: evp_bytestokey: 1.0.3 pbkdf2: 3.1.2 safe-buffer: 5.2.1 - dev: true /parse-entities@4.0.1: resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==} @@ -14769,7 +17731,6 @@ packages: ripemd160: 2.0.2 safe-buffer: 5.2.1 sha.js: 2.4.11 - dev: true /peberminta@0.9.0: resolution: {integrity: sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==} @@ -14868,6 +17829,10 @@ packages: engines: {node: '>=4'} dev: true + /pngjs@3.4.0: + resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} + engines: {node: '>=4.0.0'} + /pngjs@5.0.0: resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} engines: {node: '>=10.13.0'} @@ -15351,6 +18316,9 @@ packages: /preact@10.19.3: resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} + /preact@10.4.1: + resolution: {integrity: sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q==} + /preferred-pm@3.1.2: resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} @@ -15503,7 +18471,6 @@ packages: /process@0.11.10: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - dev: true /promise-inflight@1.0.1(bluebird@3.7.2): resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} @@ -15547,6 +18514,24 @@ packages: resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} dev: true + /protobufjs@7.2.5: + resolution: {integrity: sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==} + engines: {node: '>=12.0.0'} + requiresBuild: true + 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': 20.10.5 + long: 5.2.3 + /protoduck@4.0.0: resolution: {integrity: sha512-9sxuz0YTU/68O98xuDn8NBxTVH9EuMhrBTxZdiBL0/qxRmWhB/5a8MagAebDa+98vluAZTs8kMZibCdezbRCeQ==} dependencies: @@ -15556,6 +18541,10 @@ packages: /proxy-compare@2.5.1: resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + /prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} requiresBuild: true @@ -15579,7 +18568,6 @@ packages: parse-asn1: 5.1.6 randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: true /pump@1.0.3: resolution: {integrity: sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==} @@ -15618,6 +18606,11 @@ packages: engines: {node: '>=6'} dev: true + /pushdata-bitcoin@1.0.1: + resolution: {integrity: sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==} + dependencies: + bitcoin-ops: 1.4.1 + /q@1.5.1: resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==} engines: {node: '>=0.6.0', teleport: '>=0.2.0'} @@ -15628,6 +18621,9 @@ packages: dependencies: qrcode-generator: 1.4.4 + /qr.js@0.0.0: + resolution: {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==} + /qrcode-generator@1.4.4: resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==} @@ -15635,6 +18631,16 @@ packages: resolution: {integrity: sha512-jy/kkD0iIMDjTucB+5T6KBsnirlhegDH47vHgrj5MejchSQmi/EAMM0xMFeePgV9CJkkAapNakpVUWYgHvtdKg==} hasBin: true + /qrcode.react@1.0.1(react@16.13.1): + resolution: {integrity: sha512-8d3Tackk8IRLXTo67Y+c1rpaiXjoz/Dd2HpcMdW//62/x8J1Nbho14Kh8x974t9prsLHN6XqVgcnRiBGFptQmg==} + peerDependencies: + react: ^15.5.3 || ^16.0.0 || ^17.0.0 + dependencies: + loose-envify: 1.4.0 + prop-types: 15.8.1 + qr.js: 0.0.0 + react: 16.13.1 + /qrcode.react@3.1.0(react@18.2.0): resolution: {integrity: sha512-oyF+Urr3oAMUG/OiOuONL3HXM+53wvuH3mtIWQrYmsXoAq0DkvZp2RYUWFSMFtbdOpuS++9v+WAkzNVkMlNW6Q==} peerDependencies: @@ -15642,6 +18648,19 @@ packages: dependencies: react: 18.2.0 + /qrcode@1.4.4: + resolution: {integrity: sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==} + engines: {node: '>=4'} + hasBin: true + dependencies: + buffer: 5.7.1 + buffer-alloc: 1.2.0 + buffer-from: 1.1.2 + dijkstrajs: 1.0.3 + isarray: 2.0.5 + pngjs: 3.4.0 + yargs: 13.3.2 + /qrcode@1.5.3: resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} engines: {node: '>=10.13.0'} @@ -15730,14 +18749,12 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: true /randomfill@1.0.4: resolution: {integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==} dependencies: randombytes: 2.1.0 safe-buffer: 5.2.1 - dev: true /range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} @@ -16277,6 +19294,17 @@ packages: - bufferutil - utf-8-validate + /react-dom@16.13.1(react@16.13.1): + resolution: {integrity: sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==} + peerDependencies: + react: ^16.13.1 + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + react: 16.13.1 + scheduler: 0.19.1 + /react-dom@18.1.0(react@18.1.0): resolution: {integrity: sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w==} peerDependencies: @@ -16395,10 +19423,27 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + /react-lifecycles-compat@3.0.4: + resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} + /react-merge-refs@1.1.0: resolution: {integrity: sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ==} dev: true + /react-modal@3.16.1(react-dom@16.13.1)(react@16.13.1): + resolution: {integrity: sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==} + engines: {node: '>=8'} + peerDependencies: + react: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 + react-dom: ^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 + dependencies: + exenv: 1.2.2 + prop-types: 15.8.1 + react: 16.13.1 + react-dom: 16.13.1(react@16.13.1) + react-lifecycles-compat: 3.0.4 + warning: 4.0.3 + /react-native-webview@11.26.1(react-native@0.73.2)(react@18.2.0): resolution: {integrity: sha512-hC7BkxOpf+z0UKhxFSFTPAM4shQzYmZHoELa6/8a/MspcjEP7ukYKpuSUTLDywQditT8yI9idfcKvfZDKQExGw==} peerDependencies: @@ -16463,6 +19508,18 @@ packages: - supports-color - utf-8-validate + /react-qr-reader@2.2.1(react-dom@16.13.1)(react@16.13.1): + resolution: {integrity: sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA==} + peerDependencies: + react: ~16 + react-dom: ~16 + dependencies: + jsqr: 1.4.0 + prop-types: 15.8.1 + react: 16.13.1 + react-dom: 16.13.1(react@16.13.1) + webrtc-adapter: 7.7.1 + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -16518,6 +19575,14 @@ packages: react: 18.2.0 react-is: 18.2.0 + /react@16.13.1: + resolution: {integrity: sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + prop-types: 15.8.1 + /react@18.1.0: resolution: {integrity: sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ==} engines: {node: '>=0.10.0'} @@ -16618,6 +19683,16 @@ packages: string_decoder: 1.3.0 util-deprecate: 1.0.2 + /readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -16962,6 +20037,11 @@ packages: resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==} dev: true + /retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + dev: false + /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -17003,7 +20083,61 @@ packages: dependencies: hash-base: 3.1.0 inherits: 2.0.4 - dev: true + + /ripple-address-codec@4.3.1: + resolution: {integrity: sha512-Qa3+9wKVvpL/xYtT6+wANsn0A1QcC5CT6IMZbRJZ/1lGt7gmwIfsrCuz1X0+LCEO7zgb+3UT1I1dc0k/5dwKQQ==} + engines: {node: '>= 10'} + dependencies: + base-x: 3.0.9 + create-hash: 1.2.0 + + /ripple-binary-codec@1.11.0: + resolution: {integrity: sha512-g7+gs3T+NfoeW6vIq5dcN0CkIT4t/zwRzFxz8X2RzfbrWRnewPUKqQbmBgs05tXLX5NuWPaneiaAVpFpYBcdfw==} + engines: {node: '>= 10'} + dependencies: + assert: 2.1.0 + big-integer: 1.6.52 + buffer: 6.0.3 + create-hash: 1.2.0 + decimal.js: 10.4.3 + ripple-address-codec: 4.3.1 + + /ripple-keypairs@1.3.1: + resolution: {integrity: sha512-dmPlraWKJciFJxHcoubDahGnoIalG5e/BtV6HNDUs7wLXmtnLMHt6w4ed9R8MTL2zNrVPiIdI/HCtMMo0Tm7JQ==} + engines: {node: '>= 10'} + dependencies: + bn.js: 5.2.1 + brorand: 1.1.0 + elliptic: 6.5.4 + hash.js: 1.1.7 + ripple-address-codec: 4.3.1 + + /ripple-lib-transactionparser@0.8.2: + resolution: {integrity: sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g==} + dependencies: + bignumber.js: 9.1.2 + lodash: 4.17.21 + + /ripple-lib@1.10.1: + resolution: {integrity: sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA==} + engines: {node: '>=10.13.0', yarn: ^1.15.2} + deprecated: 'ripple-lib is deprecated. Please migrate to xrpl.js using this migration guide: https://xrpl.org/xrpljs2-migration-guide.html' + dependencies: + '@types/lodash': 4.14.202 + '@types/ws': 7.4.7 + bignumber.js: 9.1.2 + https-proxy-agent: 5.0.1 + jsonschema: 1.2.2 + lodash: 4.17.21 + ripple-address-codec: 4.3.1 + ripple-binary-codec: 1.11.0 + ripple-keypairs: 1.3.1 + ripple-lib-transactionparser: 0.8.2 + ws: 7.5.9 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate /rollup-plugin-visualizer@5.12.0: resolution: {integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==} @@ -17065,10 +20199,27 @@ packages: fsevents: 2.3.3 dev: true + /rpc-websockets@7.9.0: + resolution: {integrity: sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==} + dependencies: + '@babel/runtime': 7.23.6 + eventemitter3: 4.0.7 + uuid: 8.3.2 + ws: 8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + optionalDependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true + /rtcpeerconnection-shim@1.2.15: + resolution: {integrity: sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==} + engines: {node: '>=6.0.0', npm: '>=3.10.0'} + dependencies: + sdp: 2.12.0 + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -17079,7 +20230,6 @@ packages: /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} - dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -17098,7 +20248,12 @@ packages: engines: {npm: '>=2.0.0'} dependencies: tslib: 1.14.1 - dev: true + + /rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + dependencies: + tslib: 2.6.2 + dev: false /sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} @@ -17143,7 +20298,15 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: true + + /salmon-adapter-sdk@1.1.1(@solana/web3.js@1.89.1): + resolution: {integrity: sha512-28ysSzmDjx2AbotxSggqdclh9MCwlPJUldKkCph48oS5Xtwu0QOg8T9ZRHS2Mben4Y8sTq6VvxXznKssCYFBJA==} + peerDependencies: + '@solana/web3.js': ^1.44.3 + dependencies: + '@project-serum/sol-wallet-adapter': 0.2.6(@solana/web3.js@1.89.1) + '@solana/web3.js': 1.89.1 + eventemitter3: 4.0.7 /sass@1.69.5: resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} @@ -17170,6 +20333,12 @@ packages: xmlchars: 2.2.0 dev: true + /scheduler@0.19.1: + resolution: {integrity: sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==} + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + /scheduler@0.22.0: resolution: {integrity: sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ==} dependencies: @@ -17200,6 +20369,13 @@ packages: dependencies: compute-scroll-into-view: 3.1.0 + /scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + dev: false + + /sdp@2.12.0: + resolution: {integrity: sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==} + /secp256k1@5.0.0: resolution: {integrity: sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==} engines: {node: '>=14.0.0'} @@ -17446,6 +20622,10 @@ packages: engines: {node: '>= 0.10.15', npm: '>= 1.3.5'} dev: true + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + /smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} @@ -17495,6 +20675,16 @@ packages: socks: 1.1.10 dev: true + /socks-proxy-agent@6.1.1: + resolution: {integrity: sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==} + engines: {node: '>= 10'} + dependencies: + agent-base: 6.0.2 + debug: 4.3.4 + socks: 2.7.1 + transitivePeerDependencies: + - supports-color + /socks@1.1.10: resolution: {integrity: sha512-ArX4vGPULWjKDKgUnW8YzfI2uXW7kzgkJuB0GnFBA/PfT3exrrOk+7Wk2oeb894Qf20u1PWv9LEgrO0Z82qAzA==} engines: {node: '>= 0.10.0', npm: '>= 1.3.5'} @@ -17504,6 +20694,13 @@ packages: smart-buffer: 1.1.15 dev: true + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 + /sonic-boom@2.8.0: resolution: {integrity: sha512-kuonw1YOYYNOve5iHdSahXPOK49GqwA+LZhI6Wz/l0rP57iKyXXIHaRagOBHAPmGwJC6od2Z9zgvZ5loSgMlVg==} dependencies: @@ -17690,6 +20887,12 @@ packages: readable-stream: 2.3.8 dev: true + /stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + /stream-each@1.2.3: resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==} dependencies: @@ -17714,7 +20917,6 @@ packages: resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} dependencies: mixme: 0.5.10 - dev: true /strict-uri-encode@2.0.0: resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==} @@ -17736,6 +20938,14 @@ packages: strip-ansi: 4.0.0 dev: true + /string-width@3.1.0: + resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==} + engines: {node: '>=6'} + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + /string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} @@ -17872,6 +21082,13 @@ packages: engines: {node: '>=12'} dev: true + /strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + dependencies: + is-hex-prefixed: 1.0.0 + dev: false + /strip-indent@3.0.0: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} @@ -18100,6 +21317,9 @@ packages: /sudo-prompt@9.2.1: resolution: {integrity: sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==} + /superstruct@0.14.2: + resolution: {integrity: sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==} + /superstruct@1.0.3: resolution: {integrity: sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==} engines: {node: '>=14.0.0'} @@ -18315,6 +21535,9 @@ packages: minimatch: 3.1.2 dev: true + /text-encoding-utf-8@1.0.2: + resolution: {integrity: sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==} + /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true @@ -18351,7 +21574,6 @@ packages: /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - dev: true /timed-out@4.0.1: resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} @@ -18365,6 +21587,17 @@ packages: setimmediate: 1.0.5 dev: true + /tiny-secp256k1@1.1.6: + resolution: {integrity: sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==} + engines: {node: '>=6.0.0'} + requiresBuild: true + dependencies: + bindings: 1.5.0 + bn.js: 4.12.0 + create-hmac: 1.1.7 + elliptic: 6.5.4 + nan: 2.18.0 + /tinybench@2.5.1: resolution: {integrity: sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==} dev: true @@ -18384,12 +21617,28 @@ packages: engines: {node: '>=12'} dev: true + /tmp-promise@3.0.3: + resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==} + requiresBuild: true + dependencies: + tmp: 0.2.1 + dev: false + optional: true + /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} dependencies: os-tmpdir: 1.0.2 - dev: true + + /tmp@0.2.1: + resolution: {integrity: sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==} + engines: {node: '>=8.17.0'} + requiresBuild: true + dependencies: + rimraf: 3.0.2 + dev: false + optional: true /tmpl@1.0.5: resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} @@ -18447,6 +21696,11 @@ packages: resolution: {integrity: sha512-kdf4JKs8lbARxWdp7RKdNzoJBhGUcIalSYibuGyHJbmk40pOysQ0+QPvlkCOICOivDWU2IJo2rkrxyTK2AH4fw==} dev: true + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: false + /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} dev: true @@ -18465,6 +21719,9 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true + /ts-mixer@6.0.3: + resolution: {integrity: sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==} + /ts-toolbelt@9.6.0: resolution: {integrity: sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w==} dev: true @@ -18526,6 +21783,10 @@ packages: yargs: 17.7.2 dev: true + /tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + dev: false + /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -18555,7 +21816,6 @@ packages: /type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - dev: true /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} @@ -18623,12 +21883,19 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true + /typeforce@1.18.0: + resolution: {integrity: sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==} + /types-ramda@0.29.6: resolution: {integrity: sha512-VJoOk1uYNh9ZguGd3eZvqkdhD4hTGtnjRBUx5Zc0U9ftmnCgiWcSj/lsahzKunbiwRje1MxxNkEy1UdcXRCpYw==} dependencies: ts-toolbelt: 9.6.0 dev: true + /typescript-collections@1.3.3: + resolution: {integrity: sha512-7sI4e/bZijOzyURng88oOFZCISQPTHozfE2sUu5AviFYk5QV7fYGb6YiDl+vKjF/pICA354JImBImL9XJWUvdQ==} + dev: false + /typescript-transform-paths@3.4.6(typescript@5.0.4): resolution: {integrity: sha512-qdgpCk9oRHkIBhznxaHAapCFapJt5e4FbFik7Y4qdqtp6VyC3smAIPoDEIkjZ2eiF7x5+QxUPYNwJAtw0thsTw==} peerDependencies: @@ -18638,6 +21905,11 @@ packages: typescript: 5.0.4 dev: true + /typescript@4.9.5: + resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} + engines: {node: '>=4.2.0'} + hasBin: true + /typescript@5.0.4: resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} engines: {node: '>=12.20'} @@ -18649,6 +21921,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + /ua-parser-js@1.0.37: + resolution: {integrity: sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==} + /ufo@1.3.2: resolution: {integrity: sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==} @@ -18757,6 +22032,11 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + /unidragger@3.0.1: + resolution: {integrity: sha512-RngbGSwBFmqGBWjkaH+yB677uzR95blSQyxq6hYbrQCejH3Mx1nm8DVOuh3M9k2fQyTstWUG5qlgCnNqV/9jVw==} + dependencies: + ev-emitter: 2.1.2 + /unified@10.1.2: resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} dependencies: @@ -18847,6 +22127,9 @@ packages: engines: {node: '>= 10.0.0'} dev: true + /unload@2.4.1: + resolution: {integrity: sha512-IViSAm8Z3sRBYA+9wc0fLQmU9Nrxb16rcDmIiR6Y9LJSZzI7QY5QsDhqPpKOjAn0O9/kfK1TfNEMMAGPTIraPw==} + /unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} @@ -18993,6 +22276,15 @@ packages: qs: 6.11.2 dev: true + /usb@2.11.0: + resolution: {integrity: sha512-u5+NZ6DtoW8TIBtuSArQGAZZ/K15i3lYvZBAYmcgI+RcDS9G50/KPrUd3CrU8M92ahyCvg5e0gc8BDvr5Hwejg==} + engines: {node: '>=12.22.0 <13.0 || >=14.17.0'} + requiresBuild: true + dependencies: + '@types/w3c-web-usb': 1.0.10 + node-addon-api: 7.0.0 + node-gyp-build: 4.7.1 + /use-isomorphic-layout-effect@1.1.2(@types/react@18.2.45)(react@18.1.0): resolution: {integrity: sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==} peerDependencies: @@ -19021,6 +22313,13 @@ packages: dependencies: react: 18.2.0 + /utf-8-validate@5.0.10: + resolution: {integrity: sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ==} + engines: {node: '>=6.14.2'} + requiresBuild: true + dependencies: + node-gyp-build: 4.7.1 + /utf-8-validate@6.0.3: resolution: {integrity: sha512-uIuGf9TWQ/y+0Lp+KGZCMuJWc3N9BHA+l/UmHd/oUHwJJDeysyTRxNQVkbzsIWfGFbRe3OcgML/i0mvVRPOyDA==} engines: {node: '>=6.14.2'} @@ -19028,6 +22327,10 @@ packages: dependencies: node-gyp-build: 4.7.1 + /utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + dev: false + /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -19073,6 +22376,16 @@ packages: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} hasBin: true + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + + /uuidv4@6.2.13: + resolution: {integrity: sha512-AXyzMjazYB3ovL3q051VLH06Ixj//Knx7QnUSi1T//Ie3io6CpsPu9nVMOx5MoLWh6xV0B9J0hIaxungxXUbPQ==} + dependencies: + '@types/uuid': 8.3.4 + uuid: 8.3.2 + /uvu@0.5.6: resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} engines: {node: '>=8'} @@ -19136,6 +22449,11 @@ packages: react: 18.2.0 use-sync-external-store: 1.2.0(react@18.2.0) + /varuint-bitcoin@1.1.2: + resolution: {integrity: sha512-4EVb+w4rx+YfVM32HQX42AbbT7/1f5zwAYhIujKXKk8NQK+JfRVl3pqT3hjNn/L+RstigmGGKVwHA/P0wgITZw==} + dependencies: + safe-buffer: 5.2.1 + /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -19375,6 +22693,10 @@ packages: /vlq@1.0.1: resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==} + /vlq@2.0.4: + resolution: {integrity: sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==} + dev: false + /vm-browserify@1.1.2: resolution: {integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==} dev: true @@ -19438,6 +22760,11 @@ packages: dependencies: makeerror: 1.0.12 + /warning@4.0.3: + resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} + dependencies: + loose-envify: 1.4.0 + /watchpack@2.4.0: resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} engines: {node: '>=10.13.0'} @@ -19466,6 +22793,20 @@ packages: engines: {node: '>= 8'} dev: true + /web3-utils@1.10.3: + resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} + engines: {node: '>=8.0.0'} + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: false + /webextension-polyfill-ts@0.25.0: resolution: {integrity: sha512-ikQhwwHYkpBu00pFaUzIKY26I6L87DeRI+Q6jBT1daZUNuu8dSrg5U9l/ZbqdaQ1M/TTSPKeAa3kolP5liuedw==} deprecated: This project has moved to @types/webextension-polyfill @@ -19531,6 +22872,13 @@ packages: - uglify-js dev: true + /webrtc-adapter@7.7.1: + resolution: {integrity: sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==} + engines: {node: '>=6.0.0', npm: '>=3.10.0'} + dependencies: + rtcpeerconnection-shim: 1.2.15 + sdp: 2.12.0 + /whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} @@ -19648,6 +22996,19 @@ packages: string-width: 2.1.1 dev: true + /wif@4.0.0: + resolution: {integrity: sha512-kADznC+4AFJNXpT8rLhbsfI7EmAcorc5nWvAdKUchGmwXEBD3n55q0/GZ3DBmc6auAvuTSsr/utiKizuXdNYOQ==} + dependencies: + bs58check: 3.0.1 + + /wrap-ansi@5.1.0: + resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} + engines: {node: '>=6'} + dependencies: + ansi-styles: 3.2.1 + string-width: 3.1.0 + strip-ansi: 5.2.0 + /wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -19721,6 +23082,19 @@ packages: dependencies: async-limiter: 1.0.1 + /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 + dev: false + /ws@7.5.9: resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} engines: {node: '>=8.3.0'} @@ -19760,7 +23134,7 @@ packages: utf-8-validate: optional: true - /ws@8.15.1: + /ws@8.15.1(bufferutil@4.0.8)(utf-8-validate@5.0.10): resolution: {integrity: sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==} engines: {node: '>=10.0.0'} peerDependencies: @@ -19771,7 +23145,21 @@ packages: optional: true utf-8-validate: optional: true - dev: true + dependencies: + bufferutil: 4.0.8 + utf-8-validate: 5.0.10 + + /ws@8.16.0: + resolution: {integrity: sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==} + 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.5.0: resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} @@ -19857,6 +23245,12 @@ packages: resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} engines: {node: '>= 14'} + /yargs-parser@13.1.2: + resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} @@ -19873,6 +23267,20 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + /yargs@13.3.2: + resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} + dependencies: + cliui: 5.0.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 13.1.2 + /yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} diff --git a/tsconfig.base.json b/tsconfig.base.json index e13618fb1..cce03adf5 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -3,7 +3,7 @@ "baseUrl": "./", "target": "esnext", "module": "ESNext", - "moduleResolution": "node", + "moduleResolution": "Node", "jsx": "react-jsx", "esModuleInterop": true, "experimentalDecorators": true, @@ -21,7 +21,7 @@ "@ant-design/web3-icons": ["./packages/icons/src/index.ts"], "@ant-design/web3-assets": ["./packages/assets/src/index.ts"], "@ant-design/web3-wagmi": ["./packages/wagmi/src/index.ts"], - "@ant-design/web3-ethereum": ["./packages/ethereum/src/index.ts"] + "@ant-design/web3-solana": ["./packages/solana/src/index.ts"] } } } diff --git a/vitest.config.mts b/vitest.config.mts index f8475749c..59dcf9a09 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -21,14 +21,18 @@ export default defineConfig({ alias: isDist? { '@ant-design/web3': resolve('./packages/web3/dist/esm/index'), '@ant-design/web3-icons': resolve('./packages/icons/dist/esm/index'), + '@ant-design/web3-assets/solana': resolve('./packages/assets/dist/esm/solana/index'), '@ant-design/web3-assets': resolve('./packages/assets/dist/esm/index'), '@ant-design/web3-wagmi': resolve('./packages/wagmi/dist/esm/index'), + '@ant-design/web3-solana': resolve('./packages/solana/dist/esm/index'), '@ant-design/web3-common': resolve('./packages/common/dist/esm/index'), } : { '@ant-design/web3': resolve('./packages/web3/src/index'), '@ant-design/web3-icons': resolve('./packages/icons/src/index'), + '@ant-design/web3-assets/solana': resolve('./packages/assets/src/solana/index'), '@ant-design/web3-assets': resolve('./packages/assets/src/index'), '@ant-design/web3-wagmi': resolve('./packages/wagmi/src/index'), + '@ant-design/web3-solana': resolve('./packages/solana/src/index'), '@ant-design/web3-common': resolve('./packages/common/src/index'), }, },