diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..ad0cda0 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,11 @@ +/** @type {import('eslint').ESLint.ConfigData} */ +module.exports = { + root: true, + extends: ["prettier"], + rules: { + "no-unexpected-multiline": "warn", + "react/display-name": "off", + semi: 0, + "react/no-unescaped-entities": 0, + }, +}; diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..1380c2e --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +node_modules +.next \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..14172fe --- /dev/null +++ b/.prettierrc @@ -0,0 +1,19 @@ +{ + "arrowParens": "always", + "endOfLine": "lf", + "importOrderSortSpecifiers": true, + "printWidth": 90, + "semi": false, + "singleQuote": true, + "trailingComma": "es5", + "importOrderSeparation": true, + "importOrder": [ + "^[components]", + "^[constants]", + "^[hooks]", + "^[styles]", + "^[types]", + "^@(.*)$", + "^[./]" + ] +} diff --git a/README.md b/README.md index 713ec5f..e3bbdf1 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,17 @@ # Tokenbound SDK -This repo houses the tokenbound SDK, a front end library for interacting with [ERC-6551 accounts](https://eips.ethereum.org/EIPS/eip-6551). +This repo houses the Tokenbound SDK, a front-end library for interacting with [ERC-6551 accounts](https://eips.ethereum.org/EIPS/eip-6551). ### Packages -- **[@tokenbound/sdk](https://github.com/tokenbound/sdk/tree/main/packages/sdk)** - SDK client for projects using viem -- **[@tokenbound/sdk-ethers](https://github.com/tokenbound/sdk/tree/main/packages/sdk-ethers)** - SDK client for projects using ethers +- **[@tokenbound/sdk](https://github.com/tokenbound/sdk/tree/main/packages/sdk)** - SDK client for all projects, signing enabled via either Ethers Signer or viem WalletClient. - **[@tokenbound/react](https://github.com/tokenbound/sdk/tree/main/packages/react)** - Low-level react hooks for interacting with token bound accounts ### Examples - **[examples/vite-wagmi](https://github.com/tokenbound/sdk/tree/main/examples/vite-wagmi)** - An example app using the tokenbound SDK in a vite project with wagmi +- **[examples/vite-wagmi](https://github.com/tokenbound/sdk/tree/main/examples/vite-wagmi-ethers)** - An example app using the tokenbound SDK in a vite project with ethers v5 +- **[examples/vite-wagmi](https://github.com/tokenbound/sdk/tree/main/examples/vite-wagmi-ethers6)** - An example app using the tokenbound SDK in a vite project with ethers v6 ### Development diff --git a/examples/vite-wagmi-ethers/.env.example b/examples/vite-wagmi-ethers/.env.example new file mode 100644 index 0000000..7e3b967 --- /dev/null +++ b/examples/vite-wagmi-ethers/.env.example @@ -0,0 +1 @@ +VITE_ALCHEMY_API_KEY= \ No newline at end of file diff --git a/examples/vite-wagmi-ethers/.gitignore b/examples/vite-wagmi-ethers/.gitignore new file mode 100644 index 0000000..26cc8bf --- /dev/null +++ b/examples/vite-wagmi-ethers/.gitignore @@ -0,0 +1,47 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies + +/node_modules +/.pnp +.pnp.js + +# testing + +/coverage + +# vite + +dist +dist-ssr + +# production + +/build + +# misc + +.DS_Store +\*.pem +*.local + +# debug + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files + +.env +.env\*.local + +# vercel + +.vercel + +# typescript + +\*.tsbuildinfo +next-env.d.ts diff --git a/examples/vite-wagmi-ethers/.npmrc b/examples/vite-wagmi-ethers/.npmrc new file mode 100644 index 0000000..8db3575 --- /dev/null +++ b/examples/vite-wagmi-ethers/.npmrc @@ -0,0 +1 @@ +strict-peer-dependencies = false \ No newline at end of file diff --git a/examples/vite-wagmi-ethers/README.md b/examples/vite-wagmi-ethers/README.md new file mode 100644 index 0000000..9c5c2ca --- /dev/null +++ b/examples/vite-wagmi-ethers/README.md @@ -0,0 +1,16 @@ +This is a [wagmi](https://wagmi.sh) + [ConnectKit](https://docs.family.co/connectkit) + [Vite](https://vitejs.dev/) project bootstrapped with [`create-wagmi`](https://github.com/wagmi-dev/wagmi/tree/main/packages/create-wagmi) + +# Getting Started + +Run `npm run dev` in your terminal, and then open [localhost:5173](http://localhost:5173) in your browser. + +Once the webpage has loaded, changes made to files inside the `src/` directory (e.g. `src/App.tsx`) will automatically update the webpage. + +# Learn more + +To learn more about [Vite](https://vitejs.dev/), [ConnectKit](https://docs.family.co/connectkit) or [wagmi](https://wagmi.sh), check out the following resources: + +- [wagmi Documentation](https://wagmi.sh) – learn about wagmi Hooks and API. +- [wagmi Examples](https://wagmi.sh/examples/connect-wallet) – a suite of simple examples using wagmi. +- [ConnectKit Documentation](https://docs.family.co/connectkit) – learn more about ConnectKit (configuration, theming, advanced usage, etc). +- [Vite Documentation](https://vitejs.dev/) – learn about Vite features and API. diff --git a/examples/vite-wagmi-ethers/index.html b/examples/vite-wagmi-ethers/index.html new file mode 100644 index 0000000..c2e18f0 --- /dev/null +++ b/examples/vite-wagmi-ethers/index.html @@ -0,0 +1,13 @@ + + + + + + Tokenbound Demo - Ethers 5 Signer + + + +
+ + + diff --git a/examples/vite-wagmi-ethers/package.json b/examples/vite-wagmi-ethers/package.json new file mode 100644 index 0000000..283bb31 --- /dev/null +++ b/examples/vite-wagmi-ethers/package.json @@ -0,0 +1,30 @@ +{ + "name": "vite-wagmi-ethers", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "clean": "rm -rf node_modules" + }, + "dependencies": { + "@tokenbound/sdk": "workspace:^", + "buffer": "^6.0.3", + "connectkit": "1.4.0", + "ethers": "^5.7.2", + "process": "^0.11.10", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "util": "^0.12.5", + "viem": "^1.0.7", + "wagmi": "^1.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.12", + "@types/react-dom": "^18.2.5", + "@vitejs/plugin-react": "^4.0.1", + "typescript": "^5.1.3", + "vite": "^4.3.9" + } +} diff --git a/examples/vite-wagmi-ethers/polyfills.ts b/examples/vite-wagmi-ethers/polyfills.ts new file mode 100644 index 0000000..57e078c --- /dev/null +++ b/examples/vite-wagmi-ethers/polyfills.ts @@ -0,0 +1,6 @@ +import { Buffer } from 'buffer' +import process from 'process' + +window.global = window +window.process = process +window.Buffer = Buffer diff --git a/examples/vite-wagmi-ethers/src/App.tsx b/examples/vite-wagmi-ethers/src/App.tsx new file mode 100644 index 0000000..d8e7c8b --- /dev/null +++ b/examples/vite-wagmi-ethers/src/App.tsx @@ -0,0 +1,88 @@ +import { ConnectKitButton } from 'connectkit' +import { useAccount } from 'wagmi' +import { TokenboundClient } from '@tokenbound/sdk' + +import { Account } from './components' + +import { useCallback, useEffect } from 'react' +import { useEthersSigner } from './hooks' + +export function App() { + const { isConnected, address } = useAccount() + const signer = useEthersSigner({ chainId: 5 }) + // or useSigner() from legacy wagmi versions: const { data: signer } = useSigner() + + const tokenboundClient = new TokenboundClient({ signer, chainId: 5 }) + + useEffect(() => { + async function testTokenboundClass() { + const account = await tokenboundClient.getAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '9', + }) + + const preparedExecuteCall = await tokenboundClient.prepareExecuteCall({ + account: account, + to: account, + value: 0n, + data: '', + }) + + const preparedAccount = await tokenboundClient.prepareCreateAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '1', + }) + + console.log('getAccount', account) + console.log('prepareExecuteCall', preparedExecuteCall) + console.log('preparedAccount', preparedAccount) + + // if (signer) { + // signer?.sendTransaction(preparedAccount) + // signer?.sendTransaction(preparedExecuteCall) + // } + } + + testTokenboundClass() + }, [tokenboundClient]) + + const createAccount = useCallback(async () => { + if (!tokenboundClient || !address) return + const createAccount = await tokenboundClient.createAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '1', + }) + }, [tokenboundClient]) + + const executeCall = useCallback(async () => { + if (!tokenboundClient || !address) return + const executedCall = await tokenboundClient.executeCall({ + account: address, + to: address, + value: 0n, + data: '0x', + }) + }, [tokenboundClient]) + + return ( + <> +

Ethers 5 Signer + ConnectKit + Vite

+ + {isConnected && } + {address && ( +
+ + +
+ )} + + ) +} diff --git a/examples/vite-wagmi-ethers/src/components/Account.tsx b/examples/vite-wagmi-ethers/src/components/Account.tsx new file mode 100644 index 0000000..071b5fe --- /dev/null +++ b/examples/vite-wagmi-ethers/src/components/Account.tsx @@ -0,0 +1,13 @@ +import { useAccount, useEnsName } from 'wagmi' + +export function Account() { + const { address } = useAccount() + const { data: ensName } = useEnsName({ address }) + + return ( +
+ {ensName ?? address} + {ensName ? ` (${address})` : null} +
+ ) +} diff --git a/examples/vite-wagmi-ethers/src/components/index.ts b/examples/vite-wagmi-ethers/src/components/index.ts new file mode 100644 index 0000000..1f9f004 --- /dev/null +++ b/examples/vite-wagmi-ethers/src/components/index.ts @@ -0,0 +1 @@ +export { Account } from './Account' diff --git a/examples/vite-wagmi-ethers/src/hooks/index.ts b/examples/vite-wagmi-ethers/src/hooks/index.ts new file mode 100644 index 0000000..258979b --- /dev/null +++ b/examples/vite-wagmi-ethers/src/hooks/index.ts @@ -0,0 +1 @@ +export * from './useEthersSigner' \ No newline at end of file diff --git a/examples/vite-wagmi-ethers/src/hooks/useEthersSigner.ts b/examples/vite-wagmi-ethers/src/hooks/useEthersSigner.ts new file mode 100644 index 0000000..81c0f98 --- /dev/null +++ b/examples/vite-wagmi-ethers/src/hooks/useEthersSigner.ts @@ -0,0 +1,27 @@ +import * as React from 'react' +import { type WalletClient, useWalletClient } from 'wagmi' +import { providers } from 'ethers' + +// Ethers.js Adapters for Wagmi Wallet Client +// https://wagmi.sh/react/ethers-adapters + +export function walletClientToSigner(walletClient: WalletClient) { + const { account, chain, transport } = walletClient + const network = { + chainId: chain.id, + name: chain.name, + ensAddress: chain.contracts?.ensRegistry?.address, + } + const provider = new providers.Web3Provider(transport, network) + const signer = provider.getSigner(account.address) + return signer +} + +/** Hook to convert a viem Wallet Client to an ethers.js Signer. */ +export function useEthersSigner({ chainId }: { chainId?: number } = {}) { + const { data: walletClient } = useWalletClient({ chainId }) + return React.useMemo( + () => (walletClient ? walletClientToSigner(walletClient) : undefined), + [walletClient], + ) +} diff --git a/examples/vite-wagmi-ethers/src/main.tsx b/examples/vite-wagmi-ethers/src/main.tsx new file mode 100644 index 0000000..1239b19 --- /dev/null +++ b/examples/vite-wagmi-ethers/src/main.tsx @@ -0,0 +1,35 @@ +// import { ConnectKitProvider } from 'connectkit' +// import * as React from 'react' +// import * as ReactDOM from 'react-dom/client' +// import { WagmiConfig } from 'wagmi' + +// import { App } from './App' +// import { wagmiClient } from './wagmi' + +// ReactDOM.createRoot(document.getElementById('root')!).render( +// +// +// +// +// +// +// +// ) + +import { ConnectKitProvider } from 'connectkit' +import * as React from 'react' +import * as ReactDOM from 'react-dom/client' +import { WagmiConfig } from 'wagmi' + +import { App } from './App' +import { wagmiConfig } from './wagmi' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + + + + + +) diff --git a/packages/sdk-ethers/src/vite-env.d.ts b/examples/vite-wagmi-ethers/src/vite-env.d.ts similarity index 100% rename from packages/sdk-ethers/src/vite-env.d.ts rename to examples/vite-wagmi-ethers/src/vite-env.d.ts diff --git a/examples/vite-wagmi-ethers/src/wagmi.ts b/examples/vite-wagmi-ethers/src/wagmi.ts new file mode 100644 index 0000000..c77e489 --- /dev/null +++ b/examples/vite-wagmi-ethers/src/wagmi.ts @@ -0,0 +1,28 @@ +// import { getDefaultClient } from "connectkit"; +// import { createClient } from "wagmi"; +// import { goerli } from "wagmi"; + +// export const wagmiClient = createClient( +// getDefaultClient({ +// autoConnect: true, +// appName: "My wagmi + ConnectKit App", +// chains: [goerli], +// }) +// ) + +import { getDefaultConfig } from "connectkit"; +import { createConfig } from "wagmi"; +import { goerli } from 'wagmi/chains' + +const chains = [goerli] + +export const wagmiConfig = createConfig( + getDefaultConfig({ + walletConnectProjectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID!, + // alchemyId: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY, + chains, + appName: 'Vite Tokenbound SDK Example', + appDescription: 'Tokenbound SDK Example', + appUrl: 'https://tokenbound.org', + }) +) \ No newline at end of file diff --git a/examples/vite-wagmi-ethers/tsconfig.json b/examples/vite-wagmi-ethers/tsconfig.json new file mode 100644 index 0000000..792e511 --- /dev/null +++ b/examples/vite-wagmi-ethers/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": true, + "esModuleInterop": false, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react-jsx", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "moduleResolution": "Node", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ESNext", + "useDefineForClassFields": true + }, + "include": ["./src"] +} diff --git a/examples/vite-wagmi-ethers/vite.config.ts b/examples/vite-wagmi-ethers/vite.config.ts new file mode 100644 index 0000000..70fd0ed --- /dev/null +++ b/examples/vite-wagmi-ethers/vite.config.ts @@ -0,0 +1,24 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + target: "es2020", + }, + optimizeDeps: { + esbuildOptions: { + target: "es2020", + }, + }, + define: { + global: "globalThis", + }, + resolve: { + alias: { + process: "process/browser", + util: "util", + }, + }, + plugins: [react()], +}); diff --git a/examples/vite-wagmi-ethers6/.env.example b/examples/vite-wagmi-ethers6/.env.example new file mode 100644 index 0000000..7e3b967 --- /dev/null +++ b/examples/vite-wagmi-ethers6/.env.example @@ -0,0 +1 @@ +VITE_ALCHEMY_API_KEY= \ No newline at end of file diff --git a/examples/vite-wagmi-ethers6/.gitignore b/examples/vite-wagmi-ethers6/.gitignore new file mode 100644 index 0000000..26cc8bf --- /dev/null +++ b/examples/vite-wagmi-ethers6/.gitignore @@ -0,0 +1,47 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies + +/node_modules +/.pnp +.pnp.js + +# testing + +/coverage + +# vite + +dist +dist-ssr + +# production + +/build + +# misc + +.DS_Store +\*.pem +*.local + +# debug + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# local env files + +.env +.env\*.local + +# vercel + +.vercel + +# typescript + +\*.tsbuildinfo +next-env.d.ts diff --git a/examples/vite-wagmi-ethers6/.npmrc b/examples/vite-wagmi-ethers6/.npmrc new file mode 100644 index 0000000..8db3575 --- /dev/null +++ b/examples/vite-wagmi-ethers6/.npmrc @@ -0,0 +1 @@ +strict-peer-dependencies = false \ No newline at end of file diff --git a/examples/vite-wagmi-ethers6/README.md b/examples/vite-wagmi-ethers6/README.md new file mode 100644 index 0000000..9c5c2ca --- /dev/null +++ b/examples/vite-wagmi-ethers6/README.md @@ -0,0 +1,16 @@ +This is a [wagmi](https://wagmi.sh) + [ConnectKit](https://docs.family.co/connectkit) + [Vite](https://vitejs.dev/) project bootstrapped with [`create-wagmi`](https://github.com/wagmi-dev/wagmi/tree/main/packages/create-wagmi) + +# Getting Started + +Run `npm run dev` in your terminal, and then open [localhost:5173](http://localhost:5173) in your browser. + +Once the webpage has loaded, changes made to files inside the `src/` directory (e.g. `src/App.tsx`) will automatically update the webpage. + +# Learn more + +To learn more about [Vite](https://vitejs.dev/), [ConnectKit](https://docs.family.co/connectkit) or [wagmi](https://wagmi.sh), check out the following resources: + +- [wagmi Documentation](https://wagmi.sh) – learn about wagmi Hooks and API. +- [wagmi Examples](https://wagmi.sh/examples/connect-wallet) – a suite of simple examples using wagmi. +- [ConnectKit Documentation](https://docs.family.co/connectkit) – learn more about ConnectKit (configuration, theming, advanced usage, etc). +- [Vite Documentation](https://vitejs.dev/) – learn about Vite features and API. diff --git a/examples/vite-wagmi-ethers6/index.html b/examples/vite-wagmi-ethers6/index.html new file mode 100644 index 0000000..1ee3c9d --- /dev/null +++ b/examples/vite-wagmi-ethers6/index.html @@ -0,0 +1,13 @@ + + + + + + Tokenbound Demo - Ethers 6 Signer + + + +
+ + + diff --git a/examples/vite-wagmi-ethers6/package.json b/examples/vite-wagmi-ethers6/package.json new file mode 100644 index 0000000..37e765a --- /dev/null +++ b/examples/vite-wagmi-ethers6/package.json @@ -0,0 +1,30 @@ +{ + "name": "vite-wagmi-ethers6", + "version": "0.0.0", + "private": true, + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "clean": "rm -rf node_modules" + }, + "dependencies": { + "@tokenbound/sdk": "workspace:^", + "buffer": "^6.0.3", + "connectkit": "1.4.0", + "ethers": "^6.6.0", + "process": "^0.11.10", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "util": "^0.12.5", + "viem": "^1.0.7", + "wagmi": "^1.2.0" + }, + "devDependencies": { + "@types/react": "^18.2.12", + "@types/react-dom": "^18.2.5", + "@vitejs/plugin-react": "^4.0.1", + "typescript": "^5.1.3", + "vite": "^4.3.9" + } +} diff --git a/examples/vite-wagmi-ethers6/polyfills.ts b/examples/vite-wagmi-ethers6/polyfills.ts new file mode 100644 index 0000000..57e078c --- /dev/null +++ b/examples/vite-wagmi-ethers6/polyfills.ts @@ -0,0 +1,6 @@ +import { Buffer } from 'buffer' +import process from 'process' + +window.global = window +window.process = process +window.Buffer = Buffer diff --git a/examples/vite-wagmi-ethers6/src/App.tsx b/examples/vite-wagmi-ethers6/src/App.tsx new file mode 100644 index 0000000..a3874a8 --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/App.tsx @@ -0,0 +1,102 @@ +import { ConnectKitButton } from 'connectkit' +import { useAccount } from 'wagmi' +import { TokenboundClient } from '@tokenbound/sdk' + +import { Account } from './components' + +import { useCallback, useEffect } from 'react' +import { useEthersSigner } from './hooks' + +// import { WindowProvider } from 'wagmi' +// import { BrowserProvider, JsonRpcSigner } from 'ethers' + +// declare global { +// interface Window { +// ethereum?: WindowProvider +// } +// } + +export function App() { + const { isConnected, address } = useAccount() + + // const provider = window.ethereum ? new BrowserProvider(window.ethereum) : null + // const signer = provider && address ? new JsonRpcSigner(provider, address) : null + + const signer = useEthersSigner({ chainId: 5 }) + // or useSigner() from legacy wagmi versions: const { data: signer } = useSigner() + + console.log('SIGNER', signer) + const tokenboundClient = new TokenboundClient({ signer, chainId: 5 }) + + useEffect(() => { + async function testTokenboundClass() { + const account = await tokenboundClient.getAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '9', + }) + + const preparedExecuteCall = await tokenboundClient.prepareExecuteCall({ + account: account, + to: account, + value: 0n, + data: '', + }) + + const preparedAccount = await tokenboundClient.prepareCreateAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '1', + }) + + console.log('getAccount', account) + console.log('prepareExecuteCall', preparedExecuteCall) + console.log('preparedAccount', preparedAccount) + + // if (signer) { + // signer?.sendTransaction(preparedAccount) + // signer?.sendTransaction(preparedExecuteCall) + // } + } + + testTokenboundClass() + }, [tokenboundClient]) + + const createAccount = useCallback(async () => { + if (!tokenboundClient || !address) return + const createAccount = await tokenboundClient.createAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '1', + }) + }, [tokenboundClient]) + + const executeCall = useCallback(async () => { + if (!tokenboundClient || !address) return + const executedCall = await tokenboundClient.executeCall({ + account: address, + to: address, + value: 0n, + data: '0x', + }) + }, [tokenboundClient]) + + return ( + <> +

Ethers 6 Signer + ConnectKit + Vite

+ + {isConnected && } + {address && ( +
+ + +
+ )} + + ) +} diff --git a/examples/vite-wagmi-ethers6/src/components/Account.tsx b/examples/vite-wagmi-ethers6/src/components/Account.tsx new file mode 100644 index 0000000..071b5fe --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/components/Account.tsx @@ -0,0 +1,13 @@ +import { useAccount, useEnsName } from 'wagmi' + +export function Account() { + const { address } = useAccount() + const { data: ensName } = useEnsName({ address }) + + return ( +
+ {ensName ?? address} + {ensName ? ` (${address})` : null} +
+ ) +} diff --git a/examples/vite-wagmi-ethers6/src/components/index.ts b/examples/vite-wagmi-ethers6/src/components/index.ts new file mode 100644 index 0000000..1f9f004 --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/components/index.ts @@ -0,0 +1 @@ +export { Account } from './Account' diff --git a/examples/vite-wagmi-ethers6/src/hooks/index.ts b/examples/vite-wagmi-ethers6/src/hooks/index.ts new file mode 100644 index 0000000..258979b --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/hooks/index.ts @@ -0,0 +1 @@ +export * from './useEthersSigner' \ No newline at end of file diff --git a/examples/vite-wagmi-ethers6/src/hooks/useEthersSigner.ts b/examples/vite-wagmi-ethers6/src/hooks/useEthersSigner.ts new file mode 100644 index 0000000..bbe8915 --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/hooks/useEthersSigner.ts @@ -0,0 +1,27 @@ +import * as React from 'react' +import { type WalletClient, useWalletClient } from 'wagmi' +import { BrowserProvider, JsonRpcSigner } from 'ethers' + +// Ethers.js Adapters for Wagmi Wallet Client +// https://wagmi.sh/react/ethers-adapters + +export function walletClientToSigner(walletClient: WalletClient) { + const { account, chain, transport } = walletClient + const network = { + chainId: chain.id, + name: chain.name, + ensAddress: chain.contracts?.ensRegistry?.address, + } + const provider = new BrowserProvider(transport, network) + const signer = new JsonRpcSigner(provider, account.address) + return signer +} + +/** Hook to convert a viem Wallet Client to an ethers.js Signer. */ +export function useEthersSigner({ chainId }: { chainId?: number } = {}) { + const { data: walletClient } = useWalletClient({ chainId }) + return React.useMemo( + () => (walletClient ? walletClientToSigner(walletClient) : undefined), + [walletClient], + ) +} \ No newline at end of file diff --git a/examples/vite-wagmi-ethers6/src/main.tsx b/examples/vite-wagmi-ethers6/src/main.tsx new file mode 100644 index 0000000..397368a --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/main.tsx @@ -0,0 +1,17 @@ +import { ConnectKitProvider } from 'connectkit' +import * as React from 'react' +import * as ReactDOM from 'react-dom/client' +import { WagmiConfig } from 'wagmi' + +import { App } from './App' +import { wagmiConfig } from './wagmi' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + + + + + +) diff --git a/examples/vite-wagmi-ethers6/src/vite-env.d.ts b/examples/vite-wagmi-ethers6/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/vite-wagmi-ethers6/src/wagmi.ts b/examples/vite-wagmi-ethers6/src/wagmi.ts new file mode 100644 index 0000000..b3f6ef3 --- /dev/null +++ b/examples/vite-wagmi-ethers6/src/wagmi.ts @@ -0,0 +1,16 @@ +import { getDefaultConfig } from "connectkit"; +import { createConfig } from "wagmi"; +import { goerli } from 'wagmi/chains' + +const chains = [goerli] + +export const wagmiConfig = createConfig( + getDefaultConfig({ + walletConnectProjectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID!, + // alchemyId: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY, + chains, + appName: 'Vite Tokenbound SDK Example', + appDescription: 'Tokenbound SDK Example', + appUrl: 'https://tokenbound.org', + }) +) \ No newline at end of file diff --git a/examples/vite-wagmi-ethers6/tsconfig.json b/examples/vite-wagmi-ethers6/tsconfig.json new file mode 100644 index 0000000..792e511 --- /dev/null +++ b/examples/vite-wagmi-ethers6/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "allowJs": false, + "allowSyntheticDefaultImports": true, + "esModuleInterop": false, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "jsx": "react-jsx", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "moduleResolution": "Node", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "strict": true, + "target": "ESNext", + "useDefineForClassFields": true + }, + "include": ["./src"] +} diff --git a/examples/vite-wagmi-ethers6/vite.config.ts b/examples/vite-wagmi-ethers6/vite.config.ts new file mode 100644 index 0000000..70fd0ed --- /dev/null +++ b/examples/vite-wagmi-ethers6/vite.config.ts @@ -0,0 +1,24 @@ +import react from "@vitejs/plugin-react"; +import { defineConfig } from "vite"; + +// https://vitejs.dev/config/ +export default defineConfig({ + build: { + target: "es2020", + }, + optimizeDeps: { + esbuildOptions: { + target: "es2020", + }, + }, + define: { + global: "globalThis", + }, + resolve: { + alias: { + process: "process/browser", + util: "util", + }, + }, + plugins: [react()], +}); diff --git a/examples/vite-wagmi/README.md b/examples/vite-wagmi/README.md index 9c5c2ca..6d8db97 100644 --- a/examples/vite-wagmi/README.md +++ b/examples/vite-wagmi/README.md @@ -10,6 +10,7 @@ Once the webpage has loaded, changes made to files inside the `src/` directory ( To learn more about [Vite](https://vitejs.dev/), [ConnectKit](https://docs.family.co/connectkit) or [wagmi](https://wagmi.sh), check out the following resources: +- [viem Documentation](https://viem.sh) – learn about viem Hooks and API. - [wagmi Documentation](https://wagmi.sh) – learn about wagmi Hooks and API. - [wagmi Examples](https://wagmi.sh/examples/connect-wallet) – a suite of simple examples using wagmi. - [ConnectKit Documentation](https://docs.family.co/connectkit) – learn more about ConnectKit (configuration, theming, advanced usage, etc). diff --git a/examples/vite-wagmi/index.html b/examples/vite-wagmi/index.html index 651c332..bb59c9e 100644 --- a/examples/vite-wagmi/index.html +++ b/examples/vite-wagmi/index.html @@ -3,7 +3,7 @@ - wagmi + Tokenbound Demo - viem walletClient diff --git a/examples/vite-wagmi/package.json b/examples/vite-wagmi/package.json index 310b492..1a47968 100644 --- a/examples/vite-wagmi/package.json +++ b/examples/vite-wagmi/package.json @@ -5,26 +5,26 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "clean": "rm -rf node_modules" }, "dependencies": { "@tokenbound/sdk": "workspace:^", - "@tokenbound/sdk-ethers": "workspace:^", "buffer": "^6.0.3", - "connectkit": "^1.2.2", + "connectkit": "^1.4.0", "ethers": "^5.7.2", "process": "^0.11.10", "react": "^18.2.0", "react-dom": "^18.2.0", - "util": "^0.12.4", - "viem": "^0.3.1", - "wagmi": "~0.12.0" + "util": "^0.12.5", + "viem": "^1.0.7", + "wagmi": "^1.2.0" }, "devDependencies": { - "@types/react": "^18.0.9", - "@types/react-dom": "^18.0.3", + "@types/react": "^18.2.12", + "@types/react-dom": "^18.2.5", "@vitejs/plugin-react": "^2.1.0", - "typescript": "^4.9.4", + "typescript": "^5.1.3", "vite": "^3.1.8" } } diff --git a/examples/vite-wagmi/src/App.tsx b/examples/vite-wagmi/src/App.tsx index 262c093..f496975 100644 --- a/examples/vite-wagmi/src/App.tsx +++ b/examples/vite-wagmi/src/App.tsx @@ -1,70 +1,103 @@ -import { ConnectKitButton } from "connectkit"; -import { useAccount, useProvider, useSigner } from "wagmi"; +import { ConnectKitButton } from 'connectkit' +import { useAccount } from 'wagmi' -import { Account } from "./components"; +import { Account } from './components' -import { createPublicClient, http } from "viem"; -import { goerli } from "viem/chains"; -import { getAccount, prepareExecuteCall } from "@tokenbound/sdk"; -import { - erc6551AccountImplementationAddress, - getAccount as getAccountEthers, - prepareExecuteCall as prepareExecuteCallEthers, -} from "@tokenbound/sdk-ethers"; +import { createWalletClient, http, custom, WalletClient } from 'viem' +import { goerli } from 'viem/chains' +import { TokenboundClient } from '@tokenbound/sdk' -import { useEffect } from "react"; +import { useCallback, useEffect } from 'react' +import { WindowProvider } from 'wagmi' -const client = createPublicClient({ - chain: goerli, - transport: http(), -}); +declare global { + interface Window { + ethereum?: WindowProvider + } +} export function App() { - const { isConnected } = useAccount(); - - const provider = useProvider(); - const { data: signer, isError, isLoading } = useSigner(); + const { isConnected, address } = useAccount() - useEffect(() => { - async function testViemSdk() { - const account = await getAccount( - "0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb", - "9", - client - ); + const walletClient: WalletClient = createWalletClient({ + chain: goerli, + account: address, + transport: window.ethereum ? custom(window.ethereum) : http(), + }) - console.log(account); - - const encoded = await prepareExecuteCall(account, account, 0n, ""); - console.log(encoded); - } - - testViemSdk(); - }, []); + const tokenboundClient = new TokenboundClient({ walletClient, chainId: 5 }) useEffect(() => { - async function testEthersSdk() { - const account = await getAccountEthers( - "0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb", - "9", - provider - ); - - console.log(account); - - const encoded = await prepareExecuteCallEthers(account, account, 0, "0x"); - - console.log(encoded); + async function testTokenboundClass() { + if (!tokenboundClient) return + + const tokenboundAccount = tokenboundClient.getAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '9', + }) + + const preparedExecuteCall = await tokenboundClient.prepareExecuteCall({ + account: tokenboundAccount, + to: tokenboundAccount, + value: 0n, + data: '', + }) + + const preparedCreateAccount = await tokenboundClient.prepareCreateAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '1', + }) + + console.log('getAccount', tokenboundAccount) + console.log('preparedExecuteCall', preparedExecuteCall) + console.log('preparedAccount', preparedCreateAccount) + + // if (address) { + // walletClient?.sendTransaction(preparedCreateAccount) + // walletClient?.sendTransaction(preparedExecuteCall) + // } } - testEthersSdk(); - }, []); + testTokenboundClass() + }, []) + + const createAccount = useCallback(async () => { + if (!tokenboundClient || !address) return + const createAccount = await tokenboundClient.createAccount({ + tokenContract: '0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb', + tokenId: '1', + }) + }, [tokenboundClient]) + + const executeCall = useCallback(async () => { + if (!tokenboundClient || !address) return + const executedCall = await tokenboundClient.executeCall({ + account: address, + to: address, + value: 0n, + data: '0x', + }) + }, [tokenboundClient]) return ( <> -

wagmi + ConnectKit + Vite

+

viem walletClient + ConnectKit + Vite

{isConnected && } + {address && ( +
+ + +
+ )} - ); + ) } diff --git a/examples/vite-wagmi/src/main.tsx b/examples/vite-wagmi/src/main.tsx index af3966c..8490d26 100644 --- a/examples/vite-wagmi/src/main.tsx +++ b/examples/vite-wagmi/src/main.tsx @@ -1,17 +1,17 @@ -import { ConnectKitProvider } from 'connectkit' -import * as React from 'react' -import * as ReactDOM from 'react-dom/client' -import { WagmiConfig } from 'wagmi' +import { ConnectKitProvider } from "connectkit"; +import * as React from "react"; +import * as ReactDOM from "react-dom/client"; +import { WagmiConfig } from "wagmi"; -import { App } from './App' -import { client } from './wagmi' +import { App } from "./App"; +import { wagmiConfig } from "./wagmi"; -ReactDOM.createRoot(document.getElementById('root')!).render( +ReactDOM.createRoot(document.getElementById("root")!).render( - + - , -) + +); diff --git a/examples/vite-wagmi/src/wagmi.ts b/examples/vite-wagmi/src/wagmi.ts index e00ea47..8196c33 100644 --- a/examples/vite-wagmi/src/wagmi.ts +++ b/examples/vite-wagmi/src/wagmi.ts @@ -1,11 +1,28 @@ -import { getDefaultClient } from "connectkit"; -import { createClient } from "wagmi"; -import { goerli } from "wagmi"; +import { + // getDefaultClient, + getDefaultConfig } from "connectkit"; +// import { createClient, goerli } from "wagmi"; +import { createConfig } from "wagmi"; +import { goerli, mainnet } from 'wagmi/chains' -export const client = createClient( - getDefaultClient({ - autoConnect: true, - appName: "My wagmi + ConnectKit App", - chains: [goerli], +// const chains = [mainnet, goerli] +const chains = [goerli] + +export const wagmiConfig = createConfig( + getDefaultConfig({ + walletConnectProjectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID!, + // alchemyId: process.env.NEXT_PUBLIC_ALCHEMY_API_KEY, + chains, + appName: 'Vite Tokenbound SDK Example', + appDescription: 'Tokenbound SDK Example', + appUrl: 'https://tokenbound.org', }) -); +) + +// export const client = createConfig( +// getDefaultConfig({ +// autoConnect: true, +// appName: "My wagmi + ConnectKit App", +// chains: [goerli], +// }) +// ); diff --git a/package.json b/package.json index d4e78bc..179a10c 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,11 @@ "author": "", "license": "ISC", "devDependencies": { - "@changesets/cli": "^2.26.1" + "@changesets/cli": "^2.26.1", + "eslint": "^8.36.0", + "eslint-config-prettier": "^8.8.0", + "eslint-plugin-unused-imports": "^2.0.0", + "prettier": "^2.8.8", + "@ianvs/prettier-plugin-sort-imports": "^3.7.2" } } diff --git a/packages/react/package.json b/packages/react/package.json index ebbaaec..6be6ccf 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -30,7 +30,7 @@ "@wagmi/core": "^0.10.9", "abitype": "^0.7.1", "ethers": "^5.7.2", - "typescript": "^4.9.3", + "typescript": "^4.9.4", "vite": "^4.2.0", "vite-plugin-dts": "^2.2.0", "wagmi": "~0.12.0" diff --git a/packages/sdk-ethers/.gitignore b/packages/sdk-ethers/.gitignore deleted file mode 100644 index 4f30ea0..0000000 --- a/packages/sdk-ethers/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? - -coverage/** diff --git a/packages/sdk-ethers/CHANGELOG.md b/packages/sdk-ethers/CHANGELOG.md deleted file mode 100644 index d814e2b..0000000 --- a/packages/sdk-ethers/CHANGELOG.md +++ /dev/null @@ -1,31 +0,0 @@ -# @tokenbound/sdk-ethers - -## 0.2.0 - -### Minor Changes - -- Added initialization call to createAccount - -## 0.1.1 - -### Patch Changes - -- Fixed build issues - -## 0.1.0 - -### Minor Changes - -- Updated to beta contract addresses - -## 0.0.2 - -### Patch Changes - -- Fixed bug preventing accounts from being initialized - -## 0.0.1 - -### Patch Changes - -- Initial changeset config diff --git a/packages/sdk-ethers/README.md b/packages/sdk-ethers/README.md deleted file mode 100644 index e8e409d..0000000 --- a/packages/sdk-ethers/README.md +++ /dev/null @@ -1,42 +0,0 @@ -# @tokenbound/sdk-ethers - -An SDK for interacting with [ERC-6551 accounts](https://eips.ethereum.org/EIPS/eip-6551) using ethers. - -# Installation - -```bash -$ npm install @tokenbound/sdk -``` - -# Usage - -### Get account address - -```javascript -import { getAccount } from "@tokenbound/sdk-ethers"; -const accountAddress = await getAccount( - "0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb", // ERC-721 token contract - "9", // ERC-721 tokenId - provider // ethers provider -); -``` - -### Encode call to account - -```javascript -import { prepareExecuteCall } from "@tokenbound/sdk-ethers"; - -const to = "0xe7134a029cd2fd55f678d6809e64d0b6a0caddcb"; // any address -const value = 0; // amount of ETH to send -const data = "0x"; // calldata - -const transactionData = await prepareExecuteCall( - accountAddress, - to, - value, - data -); - -// Execute encoded call -const { hash } = await signer.sendTransaction(transactionData); -``` diff --git a/packages/sdk-ethers/abis/ERC6551Registry.json b/packages/sdk-ethers/abis/ERC6551Registry.json deleted file mode 100644 index d2adc27..0000000 --- a/packages/sdk-ethers/abis/ERC6551Registry.json +++ /dev/null @@ -1,133 +0,0 @@ -[ - { - "inputs": [], - "name": "InitializationFailed", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "tokenContract", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "salt", - "type": "uint256" - } - ], - "name": "AccountCreated", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "tokenContract", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - } - ], - "name": "account", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "implementation", - "type": "address" - }, - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "tokenContract", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "salt", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "initData", - "type": "bytes" - } - ], - "name": "createAccount", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/packages/sdk-ethers/abis/IERC6551Account.json b/packages/sdk-ethers/abis/IERC6551Account.json deleted file mode 100644 index 99406dc..0000000 --- a/packages/sdk-ethers/abis/IERC6551Account.json +++ /dev/null @@ -1,109 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "TransactionExecuted", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "executeCall", - "outputs": [ - { - "internalType": "bytes", - "name": "", - "type": "bytes" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "nonce", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "token", - "outputs": [ - { - "internalType": "uint256", - "name": "chainId", - "type": "uint256" - }, - { - "internalType": "address", - "name": "tokenContract", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] diff --git a/packages/sdk-ethers/package.json b/packages/sdk-ethers/package.json deleted file mode 100644 index e7bcb69..0000000 --- a/packages/sdk-ethers/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "name": "@tokenbound/sdk-ethers", - "version": "0.2.0", - "type": "module", - "files": [ - "dist" - ], - "types": "./dist/index.d.ts", - "main": "./dist/tokenbound-sdk.umd.cjs", - "module": "./dist/tokenbound-sdk.js", - "exports": { - ".": { - "import": "./dist/tokenbound-sdk.js", - "require": "./dist/tokenbound-sdk.umd.cjs" - } - }, - "scripts": { - "dev": "vite", - "build": "tsc && vite build", - "preview": "vite preview", - "test": "vitest", - "coverage": "vitest run --coverage" - }, - "peerDependencies": { - "ethers": ">=5.7.2" - }, - "devDependencies": { - "@vitest/coverage-c8": "^0.31.3", - "ethers": ">=5.7.2", - "typescript": "^4.9.3", - "vite": "^4.2.0", - "vite-plugin-dts": "^2.2.0", - "vitest": "^0.31.3" - } -} diff --git a/packages/sdk-ethers/src/index.ts b/packages/sdk-ethers/src/index.ts deleted file mode 100644 index 08fded5..0000000 --- a/packages/sdk-ethers/src/index.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { Contract, Signer, utils, providers, BigNumberish, BigNumber } from "ethers"; -import erc6551RegistryAbi from "../abis/ERC6551Registry.json"; -import erc6551AccountAbi from "../abis/IERC6551Account.json"; - -export { erc6551AccountAbi, erc6551RegistryAbi }; - -export const erc6551RegistryAddress = - "0x02101dfB77FDE026414827Fdc604ddAF224F0921" as const; - -export const erc6551AccountImplementationAddress = - "0x2d25602551487c3f3354dd80d76d54383a243358" as const; - -export async function getAccount( - tokenContract: string, - tokenId: string, - provider: providers.BaseProvider -) { - const registry = new Contract( - erc6551RegistryAddress, - erc6551RegistryAbi, - provider - ); - - const { chainId } = await provider.getNetwork(); - - return registry.callStatic.account( - erc6551AccountImplementationAddress, - chainId, - tokenContract, - tokenId, - 0 - ); -} - -export function computeAccount( - tokenContract: string, - tokenId: string, - chainId: number, -): string { - const code = getCreationCode( - erc6551AccountImplementationAddress, - chainId, - tokenContract, - tokenId, - "0" - ); - const codeHash = utils.keccak256(code); - const saltHex = utils.hexZeroPad(BigNumber.from("0").toHexString(), 32); - return utils.getCreate2Address( - erc6551RegistryAddress, - saltHex, - codeHash, - ); -} - -export function getCreationCode( - implementation_: string, - chainId_: number, - tokenContract_: string, - tokenId_: string, - salt_: string, -): Uint8Array { - const types = ["uint256", "uint256", "address", "uint256"]; - const values = [salt_, chainId_, tokenContract_, tokenId_]; - const creationCode = utils.concat([ - "0x3d60ad80600a3d3981f3363d3d373d3d3d363d73", - utils.hexlify(implementation_), - "0x5af43d82803e903d91602b57fd5bf3", - utils.defaultAbiCoder.encode(types, values) - ]); - - return creationCode; -} - -export async function createAccount( - tokenContract: string, - tokenId: string, - signer: Signer -) { - const registry = new Contract( - erc6551RegistryAddress, - erc6551RegistryAbi, - signer - ); - - if (!signer.provider) throw Error("Signer has no provider"); - - const { chainId } = await signer.provider.getNetwork(); - - const initData = new utils.Interface([ - "function initialize()", - ]).encodeFunctionData("initialize"); - - return registry.createAccount( - erc6551AccountImplementationAddress, - chainId, - tokenContract, - tokenId, - 0, - initData - ); -} - -export async function prepareExecuteCall( - account: string, - to: string, - value: BigNumberish, - data: string -) { - const accountInterface = new utils.Interface(erc6551AccountAbi); - return { - to: account, - value, - data: accountInterface.encodeFunctionData("executeCall", [to, value, data]), - }; -} - -export async function executeCall( - account: string, - to: string, - value: bigint, - data: string, - signer: Signer -) { - const accountContract = new Contract(account, erc6551AccountAbi, signer); - - return accountContract.executeCall([to, value, data]); -} diff --git a/packages/sdk-ethers/test/index.test.ts b/packages/sdk-ethers/test/index.test.ts deleted file mode 100644 index b6af259..0000000 --- a/packages/sdk-ethers/test/index.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { test, expect } from "vitest"; -import { computeAccount } from "../src/index"; - -test(".computeAccount", async () => { - const result = computeAccount("0x7a77F2cFB02546F217d39157471d5B5914DD7644", "1", 5); - expect(result).toEqual("0x5194b1c04Ed6464b3225324d6794f7d2698D8d1c"); -}); diff --git a/packages/sdk-ethers/tsconfig.json b/packages/sdk-ethers/tsconfig.json deleted file mode 100644 index eac16d1..0000000 --- a/packages/sdk-ethers/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "compilerOptions": { - "target": "ESNext", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ESNext", "DOM"], - "moduleResolution": "Node", - "strict": true, - "resolveJsonModule": true, - "isolatedModules": true, - "esModuleInterop": true, - "noEmit": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "skipLibCheck": true - }, - "include": ["src"] -} diff --git a/packages/sdk-ethers/vite.config.ts b/packages/sdk-ethers/vite.config.ts deleted file mode 100644 index 62df167..0000000 --- a/packages/sdk-ethers/vite.config.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { resolve } from "path"; -import { defineConfig } from "vite"; -import dts from "vite-plugin-dts"; - -// https://vitejs.dev/config/ -export default defineConfig({ - build: { - lib: { - // Could also be a dictionary or array of multiple entry points - entry: resolve(__dirname, "src/index.ts"), - name: "tokenbound-sdk", - // the proper extensions will be added - fileName: "tokenbound-sdk", - }, - rollupOptions: { - // make sure to externalize deps that shouldn't be bundled - // into your library - external: ["ethers"], - // output: { - // // Provide global variables to use in the UMD build - // // for externalized deps - // globals: { - // vue: "Vue", - // }, - // }, - }, - }, - plugins: [dts()], -}); diff --git a/packages/sdk/CHANGELOG.md b/packages/sdk/CHANGELOG.md index f7dc61b..cbe76d6 100644 --- a/packages/sdk/CHANGELOG.md +++ b/packages/sdk/CHANGELOG.md @@ -1,5 +1,11 @@ # @tokenbound/sdk +## 0.3.0 + +### Minor Changes + +- Combined viem and ethers packages into a single package + ## 0.2.0 ### Minor Changes diff --git a/packages/sdk/abis/index.ts b/packages/sdk/abis/index.ts new file mode 100644 index 0000000..081c087 --- /dev/null +++ b/packages/sdk/abis/index.ts @@ -0,0 +1,4 @@ +import erc6551RegistryAbi from "./ERC6551Registry.json" +import erc6551AccountAbi from "./IERC6551Account.json" + +export { erc6551RegistryAbi, erc6551AccountAbi } \ No newline at end of file diff --git a/packages/sdk/package.json b/packages/sdk/package.json index 40189ac..5285175 100644 --- a/packages/sdk/package.json +++ b/packages/sdk/package.json @@ -1,11 +1,11 @@ { "name": "@tokenbound/sdk", - "version": "0.2.0", + "version": "0.3.0", "type": "module", "files": [ "dist" ], - "types": "./dist/index.d.ts", + "types": "./dist/src/index.d.ts", "main": "./dist/tokenbound-sdk.umd.cjs", "module": "./dist/tokenbound-sdk.js", "exports": { @@ -17,15 +17,20 @@ "scripts": { "dev": "vite", "build": "tsc && vite build", - "preview": "vite preview" + "preview": "vite preview", + "test": "vitest", + "coverage": "vitest run --coverage", + "clean": "rm -rf node_modules/" }, - "peerDependencies": { - "viem": "^0.3.1" + "dependencies": { + "viem": "^1.0.7" }, "devDependencies": { - "typescript": "^4.9.3", - "viem": "^0.3.1", + "@vitest/coverage-c8": "^0.31.3", + "viem": "^1.0.7", + "typescript": "^5.0.4", "vite": "^4.2.0", - "vite-plugin-dts": "^2.2.0" + "vite-plugin-dts": "^2.2.0", + "vitest": "^0.31.3" } } diff --git a/packages/sdk/src/TokenboundClient.ts b/packages/sdk/src/TokenboundClient.ts new file mode 100644 index 0000000..b195289 --- /dev/null +++ b/packages/sdk/src/TokenboundClient.ts @@ -0,0 +1,215 @@ +import { WalletClient } from "viem" +import { erc6551AccountAbi, erc6551RegistryAbi } from '../abis' +import { + getAccount, + computeAccount, + createAccount, + getCreationCode, + prepareExecuteCall, + executeCall, + prepareCreateAccount +} from './functions' +import { AbstractEthersSigner } from "./types" + +export type TokenboundClientOptions = { + chainId: number + signer?: any + walletClient?: WalletClient +} + +export type GetAccountParams = { + tokenContract: string + tokenId: string +} + +export type PrepareCreateAccountParams = { + tokenContract: `0x${string}` + tokenId: string +} + +export type CreateAccountParams = { + tokenContract: string + tokenId: string +} + +export type PrepareExecuteCallParams = { + account: string + to: string + value: bigint + data: string +} + +export type ExecuteCallParams = { + account: string + to: string + value: bigint + data: string +} + +export type ComputeAccountParams = { + tokenContract: `0x${string}` + tokenId: string + chainId: number +} + +export type GetCreationCodeParams = { + implementation_: `0x${string}` + chainId_: number + tokenContract_: string + tokenId_: string + salt_: string +} + +class TokenboundClient { + private chainId: number + public isInitialized: boolean = false + private signer?: AbstractEthersSigner + private walletClient?: WalletClient + + constructor(options: TokenboundClientOptions) { + + if(!options.chainId) { + throw new Error("chainId is required.") + } + + if (options.signer && options.walletClient) { + throw new Error("Only one of `signer` or `walletClient` should be provided.") + } + + this.chainId = options.chainId + + if (options.signer) { + this.signer = options.signer + } else if (options.walletClient) { + this.walletClient = options.walletClient + } + + this.isInitialized = true + + } + + +/** + * Returns the tokenbound account address for a given token contract and token ID. + * @param params.tokenContract The address of the token contract. + * @param params.tokenId The token ID. + * @returns The tokenbound account address. + */ + public getAccount(params: GetAccountParams): `0x${string}` { + const { tokenContract, tokenId } = params; + + try { + // Here we call computeAccount rather than getAccount to avoid + // making an async contract call via publicClient + return computeAccount(tokenContract, tokenId, this.chainId) + } catch (error) { + throw error + } + } + +/** + * Returns the prepared transaction to create a tokenbound account for a given token contract and token ID. + * @param params.tokenContract The address of the token contract. + * @param params.tokenId The token ID. + * @returns The prepared transaction to create a tokenbound account. Can be sent via `sendTransaction` on an Ethers signer or viem WalletClient. + */ + public async prepareCreateAccount(params: PrepareCreateAccountParams): Promise<{ + to: `0x${string}` + value: bigint + data: `0x${string}` + }> { + const { tokenContract, tokenId } = params + + return prepareCreateAccount(tokenContract, tokenId, this.chainId) + } + +/** + * Returns the transaction hash of the transaction that created the tokenbound account for a given token contract and token ID. + * @param params.tokenContract The address of the token contract. + * @param params.tokenId The token ID. + * @returns a Promise that resolves to the transaction hash of the transaction that created the tokenbound account. + */ + public async createAccount(params: CreateAccountParams): Promise<`0x${string}`> { + const { tokenContract, tokenId } = params + + try { + if(this.signer) { // Ethers + console.log('--> Ethers version of createAccount', this.signer) + const prepareCreateAccount = await this.prepareCreateAccount({tokenContract: tokenContract as `0x${string}`, tokenId: tokenId}) + return await this.signer.sendTransaction(prepareCreateAccount) + + } + else if(this.walletClient) { + return createAccount(tokenContract, tokenId, this.walletClient) + } + else { + throw new Error("No wallet client or signer available.") + } + } catch (error) { + throw error + } + + } + +/** + * Returns prepared transaction to execute a call on a tokenbound account + * @param params.account The tokenbound account address + * @param params.to The recipient address + * @param params.value The value to send, in wei + * @param params.data The data to send + * @returns a Promise with prepared transaction to execute a call on a tokenbound account. Can be sent via `sendTransaction` on an Ethers signer or viem WalletClient. + */ + public async prepareExecuteCall(params: PrepareExecuteCallParams): Promise<{ + to: `0x${string}` + value: bigint + data: `0x${string}` + }> { + const { account, to, value, data } = params + return prepareExecuteCall(account, to, value, data) + } + +/** + * Returns a hash of the transaction that executed a call on a tokenbound account + * @param params.account The tokenbound account address + * @param params.to The recipient address + * @param params.value The value to send, in wei + * @param params.data The data to send + * @returns a Promise with prepared transaction to execute a call on a tokenbound account. Can be sent via `sendTransaction` on an Ethers signer or viem WalletClient. + */ + public async executeCall(params: ExecuteCallParams): Promise<`0x${string}`> { + const { account, to, value, data } = params + try { + if(this.signer) { // Ethers + console.log('--> Ethers version of executeCall') + return await this.signer.sendTransaction({ + to: to, + value: value, + data: data + }) + + } + else if(this.walletClient) { + console.log('walletClient in executeCall', this.walletClient, account) + return executeCall(account, to, value, data, this.walletClient) + } + else { + throw new Error("No wallet client or signer available.") + } + } catch (error) { + throw error + } + } + +} + +export { + TokenboundClient, + erc6551AccountAbi, + erc6551RegistryAbi, + getAccount, + createAccount, + getCreationCode, + computeAccount, + prepareExecuteCall, + executeCall +} \ No newline at end of file diff --git a/packages/sdk/src/constants/index.ts b/packages/sdk/src/constants/index.ts new file mode 100644 index 0000000..11269f6 --- /dev/null +++ b/packages/sdk/src/constants/index.ts @@ -0,0 +1 @@ +export * from './tokenboundAddresses' \ No newline at end of file diff --git a/packages/sdk/src/constants/tokenboundAddresses.ts b/packages/sdk/src/constants/tokenboundAddresses.ts new file mode 100644 index 0000000..073b11f --- /dev/null +++ b/packages/sdk/src/constants/tokenboundAddresses.ts @@ -0,0 +1,5 @@ +export const erc6551RegistryAddress = + "0x02101dfB77FDE026414827Fdc604ddAF224F0921" as const; + +export const erc6551AccountImplementationAddress = + "0x2d25602551487c3f3354dd80d76d54383a243358" as const; \ No newline at end of file diff --git a/packages/sdk/src/functions/index.ts b/packages/sdk/src/functions/index.ts new file mode 100644 index 0000000..c4b9e36 --- /dev/null +++ b/packages/sdk/src/functions/index.ts @@ -0,0 +1 @@ +export * from './viem' \ No newline at end of file diff --git a/packages/sdk/src/functions/viem.ts b/packages/sdk/src/functions/viem.ts new file mode 100644 index 0000000..35fc436 --- /dev/null +++ b/packages/sdk/src/functions/viem.ts @@ -0,0 +1,247 @@ +import { + getContract, + getContractAddress, + concat, + PublicClient, + WalletClient, + encodeFunctionData, + encodeAbiParameters, + pad +} from "viem" + +import { erc6551AccountAbi, erc6551RegistryAbi } from '../../abis' +import { erc6551AccountImplementationAddress, erc6551RegistryAddress } from "../constants" +import { addressToUint8Array } from "../utils" + +export { erc6551AccountAbi, erc6551RegistryAbi } + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export async function getAccount( + tokenContract: string, + tokenId: string, + client: PublicClient +): Promise<`0x${string}`> { + + const registry = getContract({ + address: erc6551RegistryAddress, + abi: erc6551RegistryAbi, + publicClient: client as PublicClient, + }) + + const chainId = await client.getChainId() + + const account = await registry.read.account([ + erc6551AccountImplementationAddress, + chainId, + tokenContract, + tokenId, + 0, + ]) + + return account as `0x${string}` +} + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export async function prepareCreateAccount( + tokenContract: string, + tokenId: string, + chainId: number +): Promise<{ + to: `0x${string}` + value: bigint + data: `0x${string}` +}> { + + const initData = encodeFunctionData({ + abi: [ + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + ], + functionName: "initialize", + }) + + return { + to: erc6551RegistryAddress as `0x${string}`, + value: BigInt(0), + data: encodeFunctionData({ + abi: erc6551RegistryAbi, + functionName: "createAccount", + args: [ + erc6551AccountImplementationAddress, + chainId, + tokenContract, + tokenId, + 0, + initData, + ], + }), + } + +} + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export async function createAccount( + tokenContract: string, + tokenId: string, + client: WalletClient, +): Promise<`0x${string}`> { + const registry = getContract({ + address: erc6551RegistryAddress, + abi: erc6551RegistryAbi, + walletClient: client, + }) + + const chainId = await client.getChainId() + + const initData = encodeFunctionData({ + abi: [ + { + inputs: [], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + ], + functionName: "initialize", + }) + + return registry.write.createAccount([ + erc6551AccountImplementationAddress, + chainId, + tokenContract, + tokenId, + 0, + initData, + ]) +} + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export async function prepareExecuteCall( + account: string, + to: string, + value: bigint, + data: string +): Promise<{ + to: `0x${string}` + value: bigint + data: `0x${string}` +}> { + return { + to: account as `0x${string}`, + value, + data: encodeFunctionData({ + abi: erc6551AccountAbi, + functionName: "executeCall", + args: [ + to as `0x${string}`, + value, + data as `0x${string}` + ], + }), + } +} + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export async function executeCall( + account: string, + to: string, + value: bigint, + data: string, + client: WalletClient +) { + const registry = getContract({ + address: account as `0x${string}`, + abi: erc6551AccountAbi, + walletClient: client, + }) + + return registry.write.executeCall([ + to as `0x${string}`, + value, + data as `0x${string}`, + ]) +} + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export function computeAccount( + tokenContract: string, + tokenId: string, + chainId: number, +): `0x${string}` { + + const code = getCreationCode( + erc6551AccountImplementationAddress, + chainId, + tokenContract, + tokenId, + "0" + ) + + const bigIntZero = BigInt("0").toString(16) as `0x${string}` + const saltHex = pad(bigIntZero, { size: 32 }) + + return getContractAddress({ + bytecode: code, + from: erc6551RegistryAddress, + opcode: 'CREATE2', + salt: saltHex, + }) + +} + +/** + * @deprecated Direct consumption of this function is deprecated. Consume via TokenboundClient instead. + * @internal + */ +export function getCreationCode( + implementation_: `0x${string}`, + chainId_: number, + tokenContract_: string, + tokenId_: string, + salt_: string, +): Uint8Array { + const types = [ + { type: 'uint256'}, + { type: 'uint256'}, + { type: 'address'}, + { type: 'uint256'} + ] + const values: (string | bigint)[] = [salt_, BigInt(chainId_), tokenContract_, tokenId_] + const encodedABI = encodeAbiParameters(types, values) + const hexImplementation = implementation_ as `0x${string}` + + const hexCreationCode = concat([ + "0x3d60ad80600a3d3981f3363d3d373d3d3d363d73", + hexImplementation, + "0x5af43d82803e903d91602b57fd5bf3", + encodedABI + ]); + + const creationCode = addressToUint8Array(hexCreationCode) + + return creationCode +} \ No newline at end of file diff --git a/packages/sdk/src/index.ts b/packages/sdk/src/index.ts index 89f5ec4..bffe5b3 100644 --- a/packages/sdk/src/index.ts +++ b/packages/sdk/src/index.ts @@ -1,114 +1,46 @@ -import { - getContract, - PublicClient, - WalletClient, - encodeFunctionData, -} from "viem"; - -import erc6551RegistryAbi from "../abis/ERC6551Registry.json"; -import erc6551AccountAbi from "../abis/IERC6551Account.json"; - -export { erc6551AccountAbi, erc6551RegistryAbi }; - -export const erc6551RegistryAddress = - "0x02101dfB77FDE026414827Fdc604ddAF224F0921" as const; - -export const erc6551AccountImplementationAddress = - "0x2d25602551487c3f3354dd80d76d54383a243358" as const; - -export async function getAccount( - tokenContract: string, - tokenId: string, - client: PublicClient -): Promise<`0x${string}`> { - const registry = getContract({ - address: erc6551RegistryAddress, - abi: erc6551RegistryAbi, - publicClient: client, - }); - - const chainId = await client.getChainId(); - - const account = await registry.read.account([ - erc6551AccountImplementationAddress, - chainId, - tokenContract, - tokenId, - 0, - ]); - - return account as `0x${string}`; -} - -export async function createAccount( - tokenContract: string, - tokenId: string, - client: WalletClient -) { - const registry = getContract({ - address: erc6551RegistryAddress, - abi: erc6551RegistryAbi, - walletClient: client, - }); - - const chainId = await client.getChainId(); +import { erc6551AccountAbi, erc6551RegistryAbi } from '../abis' +import { + getAccount, + computeAccount, + createAccount, + getCreationCode, + prepareExecuteCall, + executeCall, + prepareCreateAccount, +} from './functions' - const initData = encodeFunctionData({ - abi: [ - { - inputs: [], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - ], - functionName: "initialize", - }); - - return registry.write.createAccount([ - erc6551AccountImplementationAddress, - chainId, - tokenContract, - tokenId, - 0, - initData, - ]); -} - -export async function prepareExecuteCall( - account: string, - to: string, - value: bigint, - data: string -) { - return { - to: account as `0x${string}`, - value, - data: encodeFunctionData({ - abi: erc6551AccountAbi, - functionName: "executeCall", - args: [to as `0x${string}`, value, data as `0x${string}`], - }), - }; +import { + TokenboundClient, + TokenboundClientOptions, + GetAccountParams, + PrepareCreateAccountParams, + CreateAccountParams, + PrepareExecuteCallParams, + ExecuteCallParams, + ComputeAccountParams, + GetCreationCodeParams +} from './TokenboundClient' + +export { + TokenboundClient, + erc6551AccountAbi, + erc6551RegistryAbi, + getAccount, + computeAccount, + prepareCreateAccount, + createAccount, + getCreationCode, + prepareExecuteCall, + executeCall, } -export async function executeCall( - account: string, - to: string, - value: bigint, - data: string, - client: WalletClient -) { - const registry = getContract({ - address: account as `0x${string}`, - abi: erc6551AccountAbi, - walletClient: client, - }); - - return registry.write.executeCall([ - to as `0x${string}`, - value, - data as `0x${string}`, - ]); -} +export type { + TokenboundClientOptions, + GetAccountParams, + PrepareCreateAccountParams, + CreateAccountParams, + PrepareExecuteCallParams, + ExecuteCallParams, + ComputeAccountParams, + GetCreationCodeParams +} \ No newline at end of file diff --git a/packages/sdk/src/test/ethers.test.ts b/packages/sdk/src/test/ethers.test.ts new file mode 100644 index 0000000..7de66bc --- /dev/null +++ b/packages/sdk/src/test/ethers.test.ts @@ -0,0 +1,3 @@ +import { test } from "vitest"; + +test.todo('ethers') diff --git a/packages/sdk/src/test/testConfig.ts b/packages/sdk/src/test/testConfig.ts new file mode 100644 index 0000000..a270455 --- /dev/null +++ b/packages/sdk/src/test/testConfig.ts @@ -0,0 +1,11 @@ +export const TEST_CONFIG = { + TOKEN_CONTRACT: `0x7a77F2cFB02546F217d39157471d5B5914DD7644` as `0x${string}`, + TOKEN_ID: "1", + CHAIN_ID: 5, + + TB_ACCOUNT: `0x5194b1c04Ed6464b3225324d6794f7d2698D8d1c` as `0x${string}`, + RECIPIENT_ADDRESS: `0x02101dfb77fde026414827fdc604ddaf224f0921` as `0x${string}`, + + EXAMPLE_AMOUNT: 0n, + EXAMPLE_DATA: "" +} diff --git a/packages/sdk/src/test/tokenboundClient.test.ts b/packages/sdk/src/test/tokenboundClient.test.ts new file mode 100644 index 0000000..ea1b0c4 --- /dev/null +++ b/packages/sdk/src/test/tokenboundClient.test.ts @@ -0,0 +1,51 @@ +import { test, expect } from "vitest" +import { + isHex, + isAddress +} from "viem" + +import { TokenboundClient } from '../TokenboundClient' +import { TEST_CONFIG } from "./testConfig" + + +const tokenboundClient = new TokenboundClient({ + // signer, + chainId: TEST_CONFIG.CHAIN_ID + }) + +test("tokenboundClient.getAccount", async () => { + const result = await tokenboundClient.getAccount({tokenContract: TEST_CONFIG.TOKEN_CONTRACT, tokenId: TEST_CONFIG.TOKEN_ID}) + expect(result).toEqual(TEST_CONFIG.TB_ACCOUNT) +}) + +test.todo("tokenboundClient.getCreationCode") + +test("tokenboundClient.prepareExecuteCall", async () => { + + const preparedCall = await tokenboundClient.prepareExecuteCall({ + account: TEST_CONFIG.TB_ACCOUNT, + to: TEST_CONFIG.RECIPIENT_ADDRESS, + value: TEST_CONFIG.EXAMPLE_AMOUNT, + data: TEST_CONFIG.EXAMPLE_DATA + }) + + expect(isAddress(preparedCall.to)).toEqual(true) + expect(typeof preparedCall.value).toEqual('bigint') + expect(isHex(preparedCall.data)).toEqual(true) +}) + +test.todo("tokenboundClient.executeCall") + +test("tokenboundClient.prepareCreateAccount", async () => { + + const preparedAccount = await tokenboundClient.prepareCreateAccount({ + tokenContract: TEST_CONFIG.TOKEN_CONTRACT, + tokenId: TEST_CONFIG.TOKEN_ID, + } + ) + + expect(isAddress(preparedAccount.to)).toEqual(true) + expect(typeof preparedAccount.value).toEqual('bigint') + expect(isHex(preparedAccount.data)).toEqual(true) +}) +test.todo(".createAccount") \ No newline at end of file diff --git a/packages/sdk/src/test/viem.test.ts b/packages/sdk/src/test/viem.test.ts new file mode 100644 index 0000000..6362825 --- /dev/null +++ b/packages/sdk/src/test/viem.test.ts @@ -0,0 +1,65 @@ +import { test, expect } from "vitest" +import { goerli } from 'viem/chains' +import { + isHex, + createPublicClient, + http, + isAddress +} from "viem" + +import { + computeAccount, + getAccount, + prepareCreateAccount, + prepareExecuteCall, + +} from "../index"; + +import { TEST_CONFIG } from "./testConfig" + +test(".getAccount", async () => { + const publicClient = createPublicClient({ + chain: goerli, + transport: http() + }) + + const result = await getAccount(TEST_CONFIG.TOKEN_CONTRACT, TEST_CONFIG.TOKEN_ID, publicClient) + expect(result).toEqual(TEST_CONFIG.TB_ACCOUNT) +}) + +test(".computeAccount", async () => { + const result = computeAccount(TEST_CONFIG.TOKEN_CONTRACT, TEST_CONFIG.TOKEN_ID, TEST_CONFIG.CHAIN_ID) + expect(result).toEqual(TEST_CONFIG.TB_ACCOUNT) +}) + +test.todo(".getCreationCode") + +test(".prepareExecuteCall", async () => { + + const preparedCall = await prepareExecuteCall( + TEST_CONFIG.TB_ACCOUNT, + TEST_CONFIG.RECIPIENT_ADDRESS, + TEST_CONFIG.EXAMPLE_AMOUNT, + TEST_CONFIG.EXAMPLE_DATA + ) + + expect(isAddress(preparedCall.to)).toEqual(true) + expect(typeof preparedCall.value).toEqual('bigint') + expect(isHex(preparedCall.data)).toEqual(true) +}) + +test.todo(".executeCall") + +test(".prepareCreateAccount", async () => { + + const preparedAccount = await prepareCreateAccount( + TEST_CONFIG.TOKEN_CONTRACT, + TEST_CONFIG.TOKEN_ID, + TEST_CONFIG.CHAIN_ID + ) + + expect(isAddress(preparedAccount.to)).toEqual(true) + expect(typeof preparedAccount.value).toEqual('bigint') + expect(isHex(preparedAccount.data)).toEqual(true) +}) +test.todo(".createAccount") \ No newline at end of file diff --git a/packages/sdk/src/types/abstractBigNumber.ts b/packages/sdk/src/types/abstractBigNumber.ts new file mode 100644 index 0000000..cd9145d --- /dev/null +++ b/packages/sdk/src/types/abstractBigNumber.ts @@ -0,0 +1,27 @@ + +// To determine whether the var is an Ethers BigNumber without first importing the Ethers package, +// we check for the existence of the _isBigNumber property on the object +// This AbstractBigNumber type assures that there is at least some degree of type safety on the Ethers implementation of the TokenboundClient. + +// export type AbstractBigNumber = { +// readonly _isBigNumber: boolean; +// } & any + +// export type AbstractBigNumber = { +// readonly _isBigNumber: boolean +// readonly _hex: string +// [key: string]: unknown +// } + +export type AbstractBigNumber = { + readonly _isBigNumber: boolean + readonly _hex: string +} & any +// export type AbstractBigNumber = { +// readonly _isBigNumber: boolean +// readonly _hex: string +// } & { [key: string]: any } + +// export type AbstractBigNumber = { +// readonly _isBigNumber: boolean; +// } & Record \ No newline at end of file diff --git a/packages/sdk/src/types/abstractEthersSigner.ts b/packages/sdk/src/types/abstractEthersSigner.ts new file mode 100644 index 0000000..e999134 --- /dev/null +++ b/packages/sdk/src/types/abstractEthersSigner.ts @@ -0,0 +1,9 @@ + +// To determine whether the signer is an Ethers signer without first importing the Ethers package, +// we check for the existence of the _isSigner property on the signer object. +// This AbstractEthersSigner type assures that there is at least some degree of type safety on the Ethers implementation of the TokenboundClient. + + +export type AbstractEthersSigner = { + readonly _isSigner: boolean +} & Record diff --git a/packages/sdk/src/types/index.ts b/packages/sdk/src/types/index.ts new file mode 100644 index 0000000..eae9ee1 --- /dev/null +++ b/packages/sdk/src/types/index.ts @@ -0,0 +1,2 @@ +export * from './abstractEthersSigner' +export * from './abstractBigNumber' \ No newline at end of file diff --git a/packages/sdk/src/utils/addressToUint8Array.ts b/packages/sdk/src/utils/addressToUint8Array.ts new file mode 100644 index 0000000..5fbbacd --- /dev/null +++ b/packages/sdk/src/utils/addressToUint8Array.ts @@ -0,0 +1,14 @@ +export function addressToUint8Array(address: `0x${string}`): Uint8Array { + + // Remove the '0x' prefix + const cleanAddress = address.slice(2); + + // Convert hexadecimal string to Uint8Array + const array = new Uint8Array(cleanAddress.length / 2); + + for (let i = 0; i < cleanAddress.length; i += 2) { + array[i / 2] = parseInt(cleanAddress.substr(i, 2), 16) + } + + return array +} \ No newline at end of file diff --git a/packages/sdk/src/utils/chainIdToChain.ts b/packages/sdk/src/utils/chainIdToChain.ts new file mode 100644 index 0000000..c9e22ac --- /dev/null +++ b/packages/sdk/src/utils/chainIdToChain.ts @@ -0,0 +1,17 @@ +import * as allChains from "viem/chains" +import { Chain } from "viem" + +/** + * Gets the chain object for the given chain id. + * @param chainId - Chain id of the target EVM chain. + * @returns Viem's chain object. + */ +export function chainIdToChain(chainId: number): Chain { + for (const chain of Object.values(allChains)) { + if (chain.id === chainId) { + return chain; + } + } + + throw new Error(`Chain with id ${chainId} not found`); +} \ No newline at end of file diff --git a/packages/sdk/src/utils/index.ts b/packages/sdk/src/utils/index.ts new file mode 100644 index 0000000..1295b1e --- /dev/null +++ b/packages/sdk/src/utils/index.ts @@ -0,0 +1,3 @@ +export * from './addressToUint8Array' +export * from './isAbstractBigNumber' +export * from './chainIdToChain' \ No newline at end of file diff --git a/packages/sdk/src/utils/isAbstractBigNumber.ts b/packages/sdk/src/utils/isAbstractBigNumber.ts new file mode 100644 index 0000000..a879f06 --- /dev/null +++ b/packages/sdk/src/utils/isAbstractBigNumber.ts @@ -0,0 +1,5 @@ +import { AbstractBigNumber } from "../types"; + +export function isAbstractBigNumber(value: any): value is AbstractBigNumber { + return value && value._isBigNumber === true; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c3ddea..7559f64 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,9 @@ lockfileVersion: '6.0' +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + importers: .: @@ -7,21 +11,33 @@ importers: '@changesets/cli': specifier: ^2.26.1 version: 2.26.1 + '@ianvs/prettier-plugin-sort-imports': + specifier: ^3.7.2 + version: 3.7.2(prettier@2.8.8) + eslint: + specifier: ^8.36.0 + version: 8.36.0 + eslint-config-prettier: + specifier: ^8.8.0 + version: 8.8.0(eslint@8.36.0) + eslint-plugin-unused-imports: + specifier: ^2.0.0 + version: 2.0.0(eslint@8.36.0) + prettier: + specifier: ^2.8.8 + version: 2.8.8 examples/vite-wagmi: dependencies: '@tokenbound/sdk': specifier: workspace:^ version: link:../../packages/sdk - '@tokenbound/sdk-ethers': - specifier: workspace:^ - version: link:../../packages/sdk-ethers buffer: specifier: ^6.0.3 version: 6.0.3 connectkit: - specifier: ^1.2.2 - version: 1.2.2(ethers@5.7.2)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(wagmi@0.12.0) + specifier: ^1.4.0 + version: 1.4.0(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.0.7)(wagmi@1.2.0) ethers: specifier: ^5.7.2 version: 5.7.2 @@ -35,31 +51,129 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) util: - specifier: ^0.12.4 - version: 0.12.4 + specifier: ^0.12.5 + version: 0.12.5 viem: - specifier: ^0.3.1 - version: 0.3.1(typescript@4.9.4) + specifier: ^1.0.7 + version: 1.0.7(typescript@5.1.3) wagmi: - specifier: ~0.12.0 - version: 0.12.0(@babel/core@7.21.4)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.4) + specifier: ^1.2.0 + version: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7) devDependencies: '@types/react': - specifier: ^18.0.9 - version: 18.0.35 + specifier: ^18.2.12 + version: 18.2.12 '@types/react-dom': - specifier: ^18.0.3 - version: 18.0.11 + specifier: ^18.2.5 + version: 18.2.5 '@vitejs/plugin-react': specifier: ^2.1.0 version: 2.1.0(vite@3.1.8) typescript: - specifier: ^4.9.4 - version: 4.9.4 + specifier: ^5.1.3 + version: 5.1.3 vite: specifier: ^3.1.8 version: 3.1.8 + examples/vite-wagmi-ethers: + dependencies: + '@tokenbound/sdk': + specifier: workspace:^ + version: link:../../packages/sdk + buffer: + specifier: ^6.0.3 + version: 6.0.3 + connectkit: + specifier: 1.4.0 + version: 1.4.0(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.0.7)(wagmi@1.2.0) + ethers: + specifier: ^5.7.2 + version: 5.7.2 + process: + specifier: ^0.11.10 + version: 0.11.10 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + util: + specifier: ^0.12.5 + version: 0.12.5 + viem: + specifier: ^1.0.7 + version: 1.0.7(typescript@5.1.3) + wagmi: + specifier: ^1.2.0 + version: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7) + devDependencies: + '@types/react': + specifier: ^18.2.12 + version: 18.2.12 + '@types/react-dom': + specifier: ^18.2.5 + version: 18.2.5 + '@vitejs/plugin-react': + specifier: ^4.0.1 + version: 4.0.1(vite@4.3.9) + typescript: + specifier: ^5.1.3 + version: 5.1.3 + vite: + specifier: ^4.3.9 + version: 4.3.9(@types/node@18.15.11) + + examples/vite-wagmi-ethers6: + dependencies: + '@tokenbound/sdk': + specifier: workspace:^ + version: link:../../packages/sdk + buffer: + specifier: ^6.0.3 + version: 6.0.3 + connectkit: + specifier: 1.4.0 + version: 1.4.0(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.0.7)(wagmi@1.2.0) + ethers: + specifier: ^6.6.0 + version: 6.6.0 + process: + specifier: ^0.11.10 + version: 0.11.10 + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + util: + specifier: ^0.12.5 + version: 0.12.5 + viem: + specifier: ^1.0.7 + version: 1.0.7(typescript@5.1.3) + wagmi: + specifier: ^1.2.0 + version: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7) + devDependencies: + '@types/react': + specifier: ^18.2.12 + version: 18.2.12 + '@types/react-dom': + specifier: ^18.2.5 + version: 18.2.5 + '@vitejs/plugin-react': + specifier: ^4.0.1 + version: 4.0.1(vite@4.3.9) + typescript: + specifier: ^5.1.3 + version: 5.1.3 + vite: + specifier: ^4.3.9 + version: 4.3.9(@types/node@18.15.11) + packages/react: devDependencies: '@types/node': @@ -70,7 +184,7 @@ importers: version: 0.1.15(@wagmi/core@0.10.9)(typescript@4.9.4)(wagmi@0.12.0) '@wagmi/core': specifier: ^0.10.9 - version: 0.10.9(@babel/core@7.21.4)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) + version: 0.10.9(@babel/core@7.22.5)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) abitype: specifier: ^0.7.1 version: 0.7.1(typescript@4.9.4)(zod@3.21.4) @@ -78,7 +192,7 @@ importers: specifier: ^5.7.2 version: 5.7.2 typescript: - specifier: ^4.9.3 + specifier: ^4.9.4 version: 4.9.4 vite: specifier: ^4.2.0 @@ -88,34 +202,20 @@ importers: version: 2.2.0(@types/node@18.15.11)(vite@4.2.0) wagmi: specifier: ~0.12.0 - version: 0.12.0(@babel/core@7.21.4)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.4) + version: 0.12.0(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) packages/sdk: - devDependencies: - typescript: - specifier: ^4.9.3 - version: 4.9.3 + dependencies: viem: - specifier: ^0.3.1 - version: 0.3.1(typescript@4.9.3) - vite: - specifier: ^4.2.0 - version: 4.2.0(@types/node@18.15.11) - vite-plugin-dts: - specifier: ^2.2.0 - version: 2.2.0(@types/node@18.15.11)(vite@4.2.0) - - packages/sdk-ethers: + specifier: ^1.0.7 + version: 1.0.7(typescript@5.1.3) devDependencies: '@vitest/coverage-c8': specifier: ^0.31.3 version: 0.31.3(vitest@0.31.3) - ethers: - specifier: '>=5.7.2' - version: 5.7.2 typescript: - specifier: ^4.9.3 - version: 4.9.4 + specifier: ^5.0.4 + version: 5.1.3 vite: specifier: ^4.2.0 version: 4.2.0(@types/node@18.15.11) @@ -130,6 +230,11 @@ packages: /@adraffy/ens-normalize@1.9.0: resolution: {integrity: sha512-iowxq3U30sghZotgl4s/oJRci6WPBfNO5YYgk2cIOMCHr3LeGPcsZjCEr+33Q4N+oV3OABDAtA+pyvWjbvBifQ==} + dev: false + + /@adraffy/ens-normalize@1.9.2: + resolution: {integrity: sha512-0h+FrQDqe2Wn+IIGFkTCd4aAwTJ+7834Ek1COohCyV26AXhwQ7WQaz+4F/nLOeVl/3BtWHOHLPsq46V8YB46Eg==} + dev: false /@ampproject/remapping@2.2.1: resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} @@ -137,16 +242,30 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 + dev: true /@babel/code-frame@7.21.4: resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==} engines: {node: '>=6.9.0'} dependencies: '@babel/highlight': 7.18.6 + dev: true + + /@babel/code-frame@7.22.5: + resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.22.5 /@babel/compat-data@7.21.4: resolution: {integrity: sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/compat-data@7.22.5: + resolution: {integrity: sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==} + engines: {node: '>=6.9.0'} + dev: true /@babel/core@7.21.4: resolution: {integrity: sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==} @@ -160,30 +279,64 @@ packages: '@babel/helpers': 7.21.0 '@babel/parser': 7.21.4 '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/traverse': 7.21.4 + '@babel/types': 7.22.5 convert-source-map: 1.9.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/core@7.22.5: + resolution: {integrity: sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==} + engines: {node: '>=6.9.0'} + dependencies: + '@ampproject/remapping': 2.2.1 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-module-transforms': 7.22.5 + '@babel/helpers': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5(supports-color@5.5.0) + '@babel/types': 7.22.5 + convert-source-map: 1.9.0 + debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/generator@7.21.4: resolution: {integrity: sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.18 + jsesc: 2.5.2 + dev: true + + /@babel/generator@7.22.5: + resolution: {integrity: sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.18 jsesc: 2.5.2 - /@babel/helper-annotate-as-pure@7.18.6: - resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} + /@babel/helper-annotate-as-pure@7.22.5: + resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@babel/helper-compilation-targets@7.21.4(@babel/core@7.21.4): resolution: {integrity: sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==} @@ -197,103 +350,187 @@ packages: browserslist: 4.21.5 lru-cache: 5.1.1 semver: 6.3.0 + dev: true + + /@babel/helper-compilation-targets@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-validator-option': 7.22.5 + browserslist: 4.21.5 + lru-cache: 5.1.1 + semver: 6.3.0 + dev: true - /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.21.4): + /@babel/helper-define-polyfill-provider@0.3.3(@babel/core@7.22.5): resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} peerDependencies: '@babel/core': ^7.4.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-compilation-targets': 7.21.4(@babel/core@7.21.4) - '@babel/helper-plugin-utils': 7.20.2 - debug: 4.3.4(supports-color@8.1.1) + '@babel/core': 7.22.5 + '@babel/helper-compilation-targets': 7.22.5(@babel/core@7.22.5) + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4(supports-color@5.5.0) lodash.debounce: 4.0.8 resolve: 1.22.2 semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true - /@babel/helper-environment-visitor@7.18.9: - resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} + /@babel/helper-environment-visitor@7.22.5: + resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} engines: {node: '>=6.9.0'} /@babel/helper-function-name@7.21.0: resolution: {integrity: sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-function-name@7.22.5: + resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/types': 7.22.5 /@babel/helper-hoist-variables@7.18.6: resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 - /@babel/helper-module-imports@7.21.4: - resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==} + /@babel/helper-module-imports@7.22.5: + resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 /@babel/helper-module-transforms@7.21.2: resolution: {integrity: sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 '@babel/helper-simple-access': 7.20.2 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/helper-validator-identifier': 7.19.1 - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5(supports-color@5.5.0) + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color + dev: true - /@babel/helper-plugin-utils@7.20.2: - resolution: {integrity: sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==} + /@babel/helper-module-transforms@7.22.5: + resolution: {integrity: sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==} engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-simple-access': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5(supports-color@5.5.0) + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-plugin-utils@7.22.5: + resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} + engines: {node: '>=6.9.0'} + dev: true /@babel/helper-simple-access@7.20.2: resolution: {integrity: sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 + dev: true + + /@babel/helper-simple-access@7.22.5: + resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.22.5 + dev: true - /@babel/helper-split-export-declaration@7.18.6: - resolution: {integrity: sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==} + /@babel/helper-split-export-declaration@7.22.5: + resolution: {integrity: sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 - /@babel/helper-string-parser@7.19.4: - resolution: {integrity: sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==} + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-identifier@7.19.1: - resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==} + /@babel/helper-validator-identifier@7.22.5: + resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} engines: {node: '>=6.9.0'} /@babel/helper-validator-option@7.21.0: resolution: {integrity: sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==} engines: {node: '>=6.9.0'} + dev: true + + /@babel/helper-validator-option@7.22.5: + resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} + engines: {node: '>=6.9.0'} + dev: true /@babel/helpers@7.21.0: resolution: {integrity: sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.20.7 - '@babel/traverse': 7.21.4(supports-color@5.5.0) - '@babel/types': 7.21.4 + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5(supports-color@5.5.0) + '@babel/types': 7.22.5 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helpers@7.22.5: + resolution: {integrity: sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/template': 7.22.5 + '@babel/traverse': 7.22.5(supports-color@5.5.0) + '@babel/types': 7.22.5 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight@7.18.6: resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-validator-identifier': 7.22.5 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/highlight@7.22.5: + resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.5 chalk: 2.4.2 js-tokens: 4.0.0 @@ -302,77 +539,86 @@ packages: engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.21.4 + '@babel/types': 7.22.5 + dev: true - /@babel/plugin-syntax-jsx@7.21.4(@babel/core@7.21.4): - resolution: {integrity: sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==} + /@babel/parser@7.22.5: + resolution: {integrity: sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.22.5 + + /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.18.6(@babel/core@7.21.4): - resolution: {integrity: sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==} + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) + '@babel/core': 7.22.5 + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) dev: true - /@babel/plugin-transform-react-jsx-self@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-f/Eq+79JEu+KUANFks9UZCcvydOOGMgF7jBrcwjHa5jTZD8JivnhCJYvmlhR/WTXBWonDExPoW0eO/CR4QJirA==} + /@babel/plugin-transform-react-jsx-self@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.19.6(@babel/core@7.21.4): - resolution: {integrity: sha512-RpAi004QyMNisst/pvSanoRdJ4q+jMCWyk9zdw/CyLB9j8RXEahodR6l2GyttDRyEVWZtbN+TpLiHJ3t34LbsQ==} + /@babel/plugin-transform-react-jsx-source@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 + '@babel/core': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.21.0(@babel/core@7.21.4): - resolution: {integrity: sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==} + /@babel/plugin-transform-react-jsx@7.22.5(@babel/core@7.22.5): + resolution: {integrity: sha512-rog5gZaVbUip5iWDMTYbVM15XQq+RkUKhET/IHR6oizR+JEoN6CAfTTuHcK4vwUyzca30qqHqEpzBOnaRMWYMA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - '@babel/plugin-syntax-jsx': 7.21.4(@babel/core@7.21.4) - '@babel/types': 7.21.4 + '@babel/core': 7.22.5 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/types': 7.22.5 dev: true - /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.21.4): + /@babel/plugin-transform-runtime@7.21.4(@babel/core@7.22.5): resolution: {integrity: sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-module-imports': 7.21.4 - '@babel/helper-plugin-utils': 7.20.2 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.21.4) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.21.4) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.21.4) + '@babel/core': 7.22.5 + '@babel/helper-module-imports': 7.22.5 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@7.22.5) + babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@7.22.5) + babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@7.22.5) semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true /@babel/runtime@7.21.0: resolution: {integrity: sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==} @@ -384,33 +630,60 @@ packages: resolution: {integrity: sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + dev: true + + /@babel/template@7.22.5: + resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 - /@babel/traverse@7.21.4(supports-color@5.5.0): + /@babel/traverse@7.21.4: resolution: {integrity: sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.21.4 - '@babel/generator': 7.21.4 - '@babel/helper-environment-visitor': 7.18.9 + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 '@babel/helper-function-name': 7.21.0 '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.21.4 - '@babel/types': 7.21.4 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 + debug: 4.3.4(supports-color@5.5.0) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/traverse@7.22.5(supports-color@5.5.0): + resolution: {integrity: sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.22.5 + '@babel/generator': 7.22.5 + '@babel/helper-environment-visitor': 7.22.5 + '@babel/helper-function-name': 7.22.5 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.5 + '@babel/parser': 7.22.5 + '@babel/types': 7.22.5 debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.21.4: - resolution: {integrity: sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==} + /@babel/types@7.22.5: + resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.19.4 - '@babel/helper-validator-identifier': 7.19.1 + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.5 to-fast-properties: 2.0.0 /@bcoe/v8-coverage@0.2.3: @@ -430,7 +703,7 @@ packages: fs-extra: 7.0.1 lodash.startcase: 4.4.0 outdent: 0.5.0 - prettier: 2.8.7 + prettier: 2.8.8 resolve-from: 5.0.0 semver: 5.7.1 dev: true @@ -598,10 +871,10 @@ packages: '@changesets/types': 5.2.1 fs-extra: 7.0.1 human-id: 1.0.2 - prettier: 2.8.7 + prettier: 2.8.8 dev: true - /@coinbase/wallet-sdk@3.6.5(@babel/core@7.21.4): + /@coinbase/wallet-sdk@3.6.5(@babel/core@7.22.5): resolution: {integrity: sha512-8F91dvvC/+CTpaNTr+FgpLMa2YxjpXpE9pdnGewMoYi41ISbiXZado5VjYo9QSZlS+myzfKvDGpTzLFFUXPfDg==} engines: {node: '>= 10.0.0'} dependencies: @@ -611,7 +884,7 @@ packages: bn.js: 5.2.1 buffer: 6.0.3 clsx: 1.2.1 - eth-block-tracker: 4.4.3(@babel/core@7.21.4) + eth-block-tracker: 4.4.3(@babel/core@7.22.5) eth-json-rpc-filters: 5.1.0 eth-rpc-errors: 4.0.2 json-rpc-engine: 6.1.0 @@ -621,13 +894,41 @@ packages: rxjs: 6.6.7 sha.js: 2.4.11 stream-browserify: 3.0.0 - util: 0.12.4 + util: 0.12.5 transitivePeerDependencies: - '@babel/core' - bufferutil - encoding - supports-color - utf-8-validate + dev: true + + /@coinbase/wallet-sdk@3.6.6: + resolution: {integrity: sha512-vX+epj/Ttjo7XRwlr3TFUUfW5GTRMvORpERPwiu7z2jl3DSVL4rXLmHt5y6LDPlUVreas2gumdcFbu0fLRG9Jg==} + engines: {node: '>= 10.0.0'} + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + '@solana/web3.js': 1.75.0 + bind-decorator: 1.0.11 + bn.js: 5.2.1 + buffer: 6.0.3 + clsx: 1.2.1 + eth-block-tracker: 6.1.0 + eth-json-rpc-filters: 5.1.0 + eth-rpc-errors: 4.0.2 + json-rpc-engine: 6.1.0 + keccak: 3.0.3 + preact: 10.13.2 + qs: 6.11.1 + rxjs: 6.6.7 + sha.js: 2.4.11 + stream-browserify: 3.0.0 + util: 0.12.5 + transitivePeerDependencies: + - bufferutil + - encoding + - supports-color + - utf-8-validate /@cspotcode/source-map-support@0.8.1: resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -685,15 +986,6 @@ packages: dev: true optional: true - /@esbuild/android-arm@0.15.18: - resolution: {integrity: sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: true - optional: true - /@esbuild/android-arm@0.17.16: resolution: {integrity: sha512-baLqRpLe4JnKrUXLJChoTN0iXZH7El/mu58GE3WIA6/H834k0XWvLRmGLG8y8arTRS9hJJibPnF0tiGhmWeZgw==} engines: {node: '>=12'} @@ -784,15 +1076,6 @@ packages: dev: true optional: true - /@esbuild/linux-loong64@0.15.18: - resolution: {integrity: sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /@esbuild/linux-loong64@0.17.16: resolution: {integrity: sha512-TIZTRojVBBzdgChY3UOG7BlPhqJz08AL7jdgeeu+kiObWMFzGnQD7BgBBkWRwOtKR1i2TNlO7YK6m4zxVjjPRQ==} engines: {node: '>=12'} @@ -901,6 +1184,43 @@ packages: dev: true optional: true + /@eslint-community/eslint-utils@4.4.0(eslint@8.36.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.36.0 + eslint-visitor-keys: 3.4.1 + dev: true + + /@eslint-community/regexpp@4.5.1: + resolution: {integrity: sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + dev: true + + /@eslint/eslintrc@2.0.3: + resolution: {integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4(supports-color@5.5.0) + espree: 9.5.2 + globals: 13.20.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@eslint/js@8.36.0: + resolution: {integrity: sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + /@ethersproject/abi@5.7.0: resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} dependencies: @@ -1186,6 +1506,48 @@ packages: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 + /@humanwhocodes/config-array@0.11.10: + resolution: {integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4(supports-color@5.5.0) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + dev: true + + /@humanwhocodes/object-schema@1.2.1: + resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==} + dev: true + + /@ianvs/prettier-plugin-sort-imports@3.7.2(prettier@2.8.8): + resolution: {integrity: sha512-bVckKToJM8XV2wTOG1VpeXrSmfAG49esVrikbxeFbY51RJdNke9AdMANJtGuACB59uo+pGlz0wBdWFrRzWyO1A==} + peerDependencies: + '@vue/compiler-sfc': '>=3.0.0' + prettier: 2.x + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + dependencies: + '@babel/core': 7.21.4 + '@babel/generator': 7.21.4 + '@babel/parser': 7.21.4 + '@babel/traverse': 7.21.4 + '@babel/types': 7.22.5 + javascript-natural-sort: 0.7.1 + lodash.clone: 4.5.0 + lodash.isequal: 4.5.0 + prettier: 2.8.8 + transitivePeerDependencies: + - supports-color + dev: true + /@istanbuljs/schema@0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} @@ -1257,13 +1619,11 @@ packages: /@lit-labs/ssr-dom-shim@1.1.0: resolution: {integrity: sha512-92uQ5ARf7UXYrzaFcAX3T2rTvaS9Z1//ukV+DqjACM4c8s0ZBQd7ayJU5Dh2AFLD/Ayuyz4uMmxQec8q3U4Ong==} - dev: true /@lit/reactive-element@1.6.1: resolution: {integrity: sha512-va15kYZr7KZNNPZdxONGQzpUr+4sxVu7V/VG7a8mRfPPXUyhEYj5RzXCQmGrlP3tAh0L3HHm5AjBMFYRqlM9SA==} dependencies: '@lit-labs/ssr-dom-shim': 1.1.0 - dev: true /@manypkg/find-root@1.1.0: resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -1288,6 +1648,17 @@ packages: /@metamask/safe-event-emitter@2.0.0: resolution: {integrity: sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q==} + /@metamask/utils@3.6.0: + resolution: {integrity: sha512-9cIRrfkWvHblSiNDVXsjivqa9Ak0RYo/1H6tqTqTbAx+oBK2Sva0lWDHxGchOqA7bySGUJKAWSNJvH6gdHZ0gQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@types/debug': 4.1.8 + debug: 4.3.4(supports-color@5.5.0) + semver: 7.3.8 + superstruct: 1.0.3 + transitivePeerDependencies: + - supports-color + /@microsoft/api-extractor-model@7.26.4(@types/node@18.15.11): resolution: {integrity: sha512-PDCgCzXDo+SLY5bsfl4bS7hxaeEtnXj7XtuzEE+BtALp7B5mK/NrS2kHWU69pohgsRmEALycQdaQPXoyT2i5MQ==} dependencies: @@ -1350,8 +1721,8 @@ packages: tslib: 2.5.0 dev: false - /@motionone/dom@10.15.5: - resolution: {integrity: sha512-Xc5avlgyh3xukU9tydh9+8mB8+2zAq+WlLsC3eEIp7Ax7DnXgY7Bj/iv0a4X2R9z9ZFZiaXK3BO0xMYHKbAAdA==} + /@motionone/dom@10.16.2: + resolution: {integrity: sha512-bnuHdNbge1FutZXv+k7xub9oPWcF0hsu8y1HTH/qg6av58YI0VufZ3ngfC7p2xhMJMnoh0LXFma2EGTgPeCkeg==} dependencies: '@motionone/animation': 10.15.1 '@motionone/generators': 10.15.1 @@ -1359,7 +1730,6 @@ packages: '@motionone/utils': 10.15.1 hey-listen: 1.0.8 tslib: 2.5.0 - dev: true /@motionone/easing@10.15.1: resolution: {integrity: sha512-6hIHBSV+ZVehf9dcKZLT7p5PEKHGhDwky2k8RKkmOvUoYP3S+dXsKupyZpqx5apjd9f+php4vXk4LuS+ADsrWw==} @@ -1377,10 +1747,16 @@ packages: /@motionone/svelte@10.15.5: resolution: {integrity: sha512-Xyxtgp7BlVnSBwcoFmXGHUVnpNktzeXsEifu2NJJWc7VGuxutDsBZxNdz80qvpLIC5MeBa1wh7GGegZzTm1msg==} dependencies: - '@motionone/dom': 10.15.5 + '@motionone/dom': 10.16.2 tslib: 2.5.0 dev: true + /@motionone/svelte@10.16.2: + resolution: {integrity: sha512-38xsroKrfK+aHYhuQlE6eFcGy0EwrB43Q7RGjF73j/kRUTcLNu/LAaKiLLsN5lyqVzCgTBVt4TMT/ShWbTbc5Q==} + dependencies: + '@motionone/dom': 10.16.2 + tslib: 2.5.0 + /@motionone/types@10.15.1: resolution: {integrity: sha512-iIUd/EgUsRZGrvW0jqdst8st7zKTzS9EsKkP+6c6n4MPZoQHwiHuVtTQLD6Kp0bsBLhNzKIBlHXponn/SDT4hA==} @@ -1394,23 +1770,29 @@ packages: /@motionone/vue@10.15.5: resolution: {integrity: sha512-cUENrLYAolUacHvCgU+8wF9OgSlVutfWbHMLERI/bElCJ+e2YVQvG/CpGhIM5fYOOJzuvg2T2wHmLLmvJoavEw==} dependencies: - '@motionone/dom': 10.15.5 + '@motionone/dom': 10.16.2 tslib: 2.5.0 dev: true - /@noble/curves@0.8.3: - resolution: {integrity: sha512-OqaOf4RWDaCRuBKJLDURrgVxjLmneGsiCXGuzYB5y95YithZMA6w4uk34DHSm0rKMrrYiaeZj48/81EvaAScLQ==} + /@motionone/vue@10.16.2: + resolution: {integrity: sha512-7/dEK/nWQXOkJ70bqb2KyNfSWbNvWqKKq1C8juj+0Mg/AorgD8O5wE3naddK0G+aXuNMqRuc4jlsYHHWHtIzVw==} dependencies: - '@noble/hashes': 1.3.0 + '@motionone/dom': 10.16.2 + tslib: 2.5.0 - /@noble/curves@0.9.0: - resolution: {integrity: sha512-OAdtHMXBp7Chl2lcTn/i7vnFX/q+hhTwDnek5NfYfZsY4LyaUuHCcoq2JlLY3BTFTLT+ZhYZalhF6ejlV7KnJQ==} + /@noble/curves@1.0.0: + resolution: {integrity: sha512-2upgEu0iLiDVDZkNLeFV2+ht0BAVgQnEmCk6JsOch9Rp8xfkMCbvbAZlA2pBHQc73dbl+vFOXfqkf4uemdn0bw==} dependencies: '@noble/hashes': 1.3.0 + dev: false /@noble/ed25519@1.7.3: resolution: {integrity: sha512-iR8GBkDt0Q3GyaVcIu7mSsVIqnFbkbRzGLWlvhwunacoLwt4J3swfKhfaM6rN6WY+TBGoYT1GtT1mIh2/jGbRQ==} + /@noble/hashes@1.1.2: + resolution: {integrity: sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==} + dev: false + /@noble/hashes@1.3.0: resolution: {integrity: sha512-ilHEACi9DwqJB0pw7kv+Apvh50jiiSyR/cQ3y4W7lOR5mhvn/50FLUfsnfJz0BDZtl/RR16kXvptiv6q1msYZg==} @@ -1528,19 +1910,22 @@ packages: /@scure/base@1.1.1: resolution: {integrity: sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==} + dev: false - /@scure/bip32@1.2.0: - resolution: {integrity: sha512-O+vT/hBVk+ag2i6j2CDemwd1E1MtGt+7O1KzrPNsaNvSsiEK55MyPIxJIMI2PS8Ijj464B2VbQlpRoQXxw1uHg==} + /@scure/bip32@1.3.0: + resolution: {integrity: sha512-bcKpo1oj54hGholplGLpqPHRbIsnbixFtc06nwuNM5/dwSXOq/AAYoIBRsBmnZJSdfeNW5rnff7NTAz3ZCqR9Q==} dependencies: - '@noble/curves': 0.8.3 + '@noble/curves': 1.0.0 '@noble/hashes': 1.3.0 '@scure/base': 1.1.1 + dev: false /@scure/bip39@1.2.0: resolution: {integrity: sha512-SX/uKq52cuxm4YFXWFaVByaSHJh2w3BnokVSeUJVCv6K7WulT9u2BuNRBhuFl8vAuYnzx9bEu9WgpcNYTrYieg==} dependencies: '@noble/hashes': 1.3.0 '@scure/base': 1.1.1 + dev: false /@solana/buffer-layout@4.0.1: resolution: {integrity: sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==} @@ -1751,7 +2136,12 @@ packages: /@types/connect@3.4.35: resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.15.13 + + /@types/debug@4.1.8: + resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==} + dependencies: + '@types/ms': 0.7.31 /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} @@ -1771,11 +2161,18 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/ms@0.7.31: + resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} + /@types/node@12.20.55: resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} /@types/node@18.15.11: resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==} + dev: true + + /@types/node@18.15.13: + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} /@types/normalize-package-data@2.4.1: resolution: {integrity: sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==} @@ -1785,14 +2182,14 @@ packages: resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} dev: true - /@types/react-dom@18.0.11: - resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} + /@types/react-dom@18.2.5: + resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==} dependencies: - '@types/react': 18.0.35 + '@types/react': 18.2.12 dev: true - /@types/react@18.0.35: - resolution: {integrity: sha512-6Laome31HpetaIUGFWl1VQ3mdSImwxtFZ39rh059a1MNnKGqBpC88J6NJ8n/Is3Qx7CefDGLgf/KhN/sYCf7ag==} + /@types/react@18.2.12: + resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==} dependencies: '@types/prop-types': 15.7.5 '@types/scheduler': 0.16.3 @@ -1809,12 +2206,11 @@ packages: /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} - dev: true /@types/ws@7.4.7: resolution: {integrity: sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==} dependencies: - '@types/node': 18.15.11 + '@types/node': 18.15.13 /@vitejs/plugin-react@2.1.0(vite@3.1.8): resolution: {integrity: sha512-am6rPyyU3LzUYne3Gd9oj9c4Rzbq5hQnuGXSMT6Gujq45Il/+bunwq3lrB7wghLkiF45ygMwft37vgJ/NE8IAA==} @@ -1822,11 +2218,11 @@ packages: peerDependencies: vite: ^3.0.0 dependencies: - '@babel/core': 7.21.4 - '@babel/plugin-transform-react-jsx': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-development': 7.18.6(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-self': 7.21.0(@babel/core@7.21.4) - '@babel/plugin-transform-react-jsx-source': 7.19.6(@babel/core@7.21.4) + '@babel/core': 7.22.5 + '@babel/plugin-transform-react-jsx': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.5) magic-string: 0.26.7 react-refresh: 0.14.0 vite: 3.1.8 @@ -1834,6 +2230,21 @@ packages: - supports-color dev: true + /@vitejs/plugin-react@4.0.1(vite@4.3.9): + resolution: {integrity: sha512-g25lL98essfeSj43HJ0o4DMp0325XK0ITkxpgChzJU/CyemgyChtlxfnRbjfwxDGCTRxTiXtQAsdebQXKMRSOA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.2.0 + dependencies: + '@babel/core': 7.22.5 + '@babel/plugin-transform-react-jsx-self': 7.22.5(@babel/core@7.22.5) + '@babel/plugin-transform-react-jsx-source': 7.22.5(@babel/core@7.22.5) + react-refresh: 0.14.0 + vite: 4.3.9(@types/node@18.15.11) + transitivePeerDependencies: + - supports-color + dev: true + /@vitest/coverage-c8@0.31.3(vitest@0.31.3): resolution: {integrity: sha512-i6z+aFyrv4HLwPw35SGQ4OcSlqfUcxIsarrp3JghrosSE/1prQcE0iOqO9EXEjNz+AVfR4Cvta/6m/Rrof46bQ==} peerDependencies: @@ -1895,20 +2306,10 @@ packages: optional: true dependencies: typescript: 4.9.4 - - /@wagmi/chains@0.2.16(typescript@4.9.3): - resolution: {integrity: sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ==} - peerDependencies: - typescript: '>=4.9.4' - peerDependenciesMeta: - typescript: - optional: true - dependencies: - typescript: 4.9.3 dev: true - /@wagmi/chains@0.2.16(typescript@4.9.4): - resolution: {integrity: sha512-rkWaI2PxCnbD8G07ZZff5QXftnSkYL0h5f4DkHCG3fGYYr/ZDvmCL4bMae7j7A9sAif1csPPBmbCzHp3R5ogCQ==} + /@wagmi/chains@0.2.17(typescript@4.9.4): + resolution: {integrity: sha512-Boh60XnwsI6dOZ5ACo2aHig7JNpNoU9M5KrMgwzNKonce9LKs/H3/GmCJNP5L9JNfnLih6u76OWN/aJWURlB2w==} peerDependencies: typescript: '>=4.9.4' peerDependenciesMeta: @@ -1916,18 +2317,18 @@ packages: optional: true dependencies: typescript: 4.9.4 - dev: false + dev: true - /@wagmi/chains@0.2.17(typescript@4.9.4): - resolution: {integrity: sha512-Boh60XnwsI6dOZ5ACo2aHig7JNpNoU9M5KrMgwzNKonce9LKs/H3/GmCJNP5L9JNfnLih6u76OWN/aJWURlB2w==} + /@wagmi/chains@1.1.0(typescript@5.1.3): + resolution: {integrity: sha512-pWZlxBk0Ql8E7DV8DwqlbBpOyUdaG9UDlQPBxJNALuEK1I0tbQ3AVvSDnlsEIt06UPmPo5o27gzs3hwPQ/A+UA==} peerDependencies: - typescript: '>=4.9.4' + typescript: '>=5.0.4' peerDependenciesMeta: typescript: optional: true dependencies: - typescript: 4.9.4 - dev: true + typescript: 5.1.3 + dev: false /@wagmi/cli@0.1.15(@wagmi/core@0.10.9)(typescript@4.9.4)(wagmi@0.12.0): resolution: {integrity: sha512-fZkYfGJEqFydS753dkEXR6D6ag1ErLz8V2ZLPjpMC3/+0D7euwZKdVoQAeyALkQuJyXUbAgG9VeHLy1r5TZZOA==} @@ -1946,7 +2347,7 @@ packages: optional: true dependencies: '@wagmi/chains': 0.2.17(typescript@4.9.4) - '@wagmi/core': 0.10.9(@babel/core@7.21.4)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) + '@wagmi/core': 0.10.9(@babel/core@7.22.5)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) abitype: 0.3.0(typescript@4.9.4)(zod@3.21.4) abort-controller: 3.0.0 bundle-require: 3.1.2(esbuild@0.15.13) @@ -1966,17 +2367,17 @@ packages: ora: 6.3.0 pathe: 1.1.0 picocolors: 1.0.0 - prettier: 2.8.7 + prettier: 2.8.8 typescript: 4.9.4 viem: 0.1.26(typescript@4.9.4)(zod@3.21.4) - wagmi: 0.12.0(@babel/core@7.21.4)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.4) + wagmi: 0.12.0(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) zod: 3.21.4 transitivePeerDependencies: - bufferutil - utf-8-validate dev: true - /@wagmi/connectors@0.3.12(@babel/core@7.21.4)(@types/node@18.15.11)(@wagmi/core@0.10.9)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): + /@wagmi/connectors@0.3.12(@babel/core@7.22.5)(@types/node@18.15.11)(@wagmi/core@0.10.9)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): resolution: {integrity: sha512-Ui8wyAMI3V8pnDlmTVSug7S53sTSNkgFuGrxFoKxQrTQJIC+AvD7CbeiYKcbFxrIrv9c/sTK5ySL4IBe+KjFUQ==} peerDependencies: '@wagmi/core': '>=0.9.x' @@ -1988,11 +2389,11 @@ packages: typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.5(@babel/core@7.21.4) + '@coinbase/wallet-sdk': 3.6.5(@babel/core@7.22.5) '@ledgerhq/connect-kit-loader': 1.0.2 '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.10.1 - '@wagmi/core': 0.10.9(@babel/core@7.21.4)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) + '@wagmi/core': 0.10.9(@babel/core@7.22.5)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) '@walletconnect/ethereum-provider': 2.6.2(@types/node@18.15.11)(@web3modal/standalone@2.3.0)(typescript@4.9.4) '@walletconnect/legacy-provider': 2.0.0 '@web3modal/standalone': 2.3.0(react@18.2.0) @@ -2016,7 +2417,7 @@ packages: - zod dev: true - /@wagmi/connectors@0.3.2(@babel/core@7.21.4)(@wagmi/core@0.10.0)(ethers@5.7.2)(typescript@4.9.4): + /@wagmi/connectors@0.3.2(@wagmi/core@0.10.0)(ethers@5.7.2)(typescript@4.9.4): resolution: {integrity: sha512-VZ/lmzR/+Zw4xbQvgXscXvifoNJZbMB4E4rQMUvrlCtHMdK3kxb9BC2KMiPTgfsZmEldz72CMmPbrM8C8X1JCA==} peerDependencies: '@wagmi/core': '>=0.9.x' @@ -2028,21 +2429,20 @@ packages: typescript: optional: true dependencies: - '@coinbase/wallet-sdk': 3.6.5(@babel/core@7.21.4) + '@coinbase/wallet-sdk': 3.6.6 '@ledgerhq/connect-kit-loader': 1.0.2 '@safe-global/safe-apps-provider': 0.15.2 '@safe-global/safe-apps-sdk': 7.10.1 - '@wagmi/core': 0.10.0(@babel/core@7.21.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) - '@walletconnect/ethereum-provider': 2.7.0 + '@wagmi/core': 0.10.0(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) + '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.4.6) '@walletconnect/legacy-provider': 2.0.0 abitype: 0.3.0(typescript@4.9.4)(zod@3.21.4) ethers: 5.7.2 eventemitter3: 4.0.7 typescript: 4.9.4 transitivePeerDependencies: - - '@babel/core' - '@react-native-async-storage/async-storage' - - '@web3modal/standalone' + - '@walletconnect/modal' - bufferutil - debug - encoding @@ -2050,8 +2450,45 @@ packages: - supports-color - utf-8-validate - zod + dev: true - /@wagmi/core@0.10.0(@babel/core@7.21.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): + /@wagmi/connectors@2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7): + resolution: {integrity: sha512-pI1ed2V8dC8Gro0YbXrJedFj5U9HHD/zUe9MMUaV3ews2LY6qziSXZp9Dw6TKyiSJ5ANbRlZcl40AmSPozkZmw==} + peerDependencies: + '@wagmi/chains': '>=1.0.0' + typescript: '>=5.0.4' + viem: '>=0.3.35' + peerDependenciesMeta: + '@wagmi/chains': + optional: true + typescript: + optional: true + dependencies: + '@coinbase/wallet-sdk': 3.6.6 + '@ledgerhq/connect-kit-loader': 1.0.2 + '@safe-global/safe-apps-provider': 0.15.2 + '@safe-global/safe-apps-sdk': 7.10.1 + '@wagmi/chains': 1.1.0(typescript@5.1.3) + '@walletconnect/ethereum-provider': 2.8.0(@walletconnect/modal@2.4.6) + '@walletconnect/legacy-provider': 2.0.0 + '@walletconnect/modal': 2.4.6(react@18.2.0) + abitype: 0.8.7(typescript@5.1.3) + eventemitter3: 4.0.7 + typescript: 5.1.3 + viem: 1.0.7(typescript@5.1.3) + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - lokijs + - react + - supports-color + - utf-8-validate + - zod + dev: false + + /@wagmi/core@0.10.0(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): resolution: {integrity: sha512-biDjKhN9H/hEsbdWfIXovV90nHdwnO3urUTlZVX8fsntg8d9TFQFxhjRCgspHfXcznfRGbUHVslPyQoup1wvrg==} peerDependencies: ethers: '>=5.5.1 <6' @@ -2061,16 +2498,15 @@ packages: optional: true dependencies: '@wagmi/chains': 0.2.10(typescript@4.9.4) - '@wagmi/connectors': 0.3.2(@babel/core@7.21.4)(@wagmi/core@0.10.0)(ethers@5.7.2)(typescript@4.9.4) + '@wagmi/connectors': 0.3.2(@wagmi/core@0.10.0)(ethers@5.7.2)(typescript@4.9.4) abitype: 0.3.0(typescript@4.9.4)(zod@3.21.4) ethers: 5.7.2 eventemitter3: 4.0.7 typescript: 4.9.4 zustand: 4.3.7(react@18.2.0) transitivePeerDependencies: - - '@babel/core' - '@react-native-async-storage/async-storage' - - '@web3modal/standalone' + - '@walletconnect/modal' - bufferutil - debug - encoding @@ -2080,8 +2516,9 @@ packages: - supports-color - utf-8-validate - zod + dev: true - /@wagmi/core@0.10.9(@babel/core@7.21.4)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): + /@wagmi/core@0.10.9(@babel/core@7.22.5)(@types/node@18.15.11)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): resolution: {integrity: sha512-/t7gcF6BvWiIBYdZ6RFiq/5cdMj+ljCTFlMgOEojl1BCe0OsbhrTKzbgTrJ6ol82vJI5uwcOAqEPD5ObN09oVg==} peerDependencies: ethers: '>=5.5.1 <6' @@ -2091,7 +2528,7 @@ packages: optional: true dependencies: '@wagmi/chains': 0.2.17(typescript@4.9.4) - '@wagmi/connectors': 0.3.12(@babel/core@7.21.4)(@types/node@18.15.11)(@wagmi/core@0.10.9)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) + '@wagmi/connectors': 0.3.12(@babel/core@7.22.5)(@types/node@18.15.11)(@wagmi/core@0.10.9)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) abitype: 0.3.0(typescript@4.9.4)(zod@3.21.4) ethers: 5.7.2 eventemitter3: 4.0.7 @@ -2114,12 +2551,41 @@ packages: - zod dev: true + /@wagmi/core@1.2.0(react@18.2.0)(typescript@5.1.3)(viem@1.0.7): + resolution: {integrity: sha512-7onf13u0atdXOnoitB+pivnIUPJman7Y8GITKkxwmcwJ3lpE1U/grYE7xHcKN7av7KEu0DozvKPhN7nJ/7OErw==} + peerDependencies: + typescript: '>=5.0.4' + viem: '>=0.3.35' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@wagmi/chains': 1.1.0(typescript@5.1.3) + '@wagmi/connectors': 2.2.0(@wagmi/chains@1.1.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7) + abitype: 0.8.7(typescript@5.1.3) + eventemitter3: 4.0.7 + typescript: 5.1.3 + viem: 1.0.7(typescript@5.1.3) + zustand: 4.3.7(react@18.2.0) + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react + - supports-color + - utf-8-validate + - zod + dev: false + /@walletconnect/core@2.6.2(@types/node@18.15.11)(typescript@4.9.4): resolution: {integrity: sha512-uTla1Dyhr9ye1SbyubyxpUlW7r4oVf47EgIMEntbmMK6+xFpeiF7w5hNebIwp9g/dW81QQklwp3c0slwkTahdg==} dependencies: '@walletconnect/heartbeat': 1.2.0(@types/node@18.15.11)(typescript@4.9.4) - '@walletconnect/jsonrpc-provider': 1.0.12 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.11 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 @@ -2144,12 +2610,13 @@ packages: - utf-8-validate dev: true - /@walletconnect/core@2.7.0: - resolution: {integrity: sha512-xUeFPpElybgn1a+lknqtHleei4VyuV/4qWgB1nP8qQUAO6a5pNsioODrnB2VAPdUHJYBdx2dCt2maRk6g53IPQ==} + /@walletconnect/core@2.8.0: + resolution: {integrity: sha512-pl7x4sq1nuU0ixA9wF2ecjDecUzIauKr7ZwC29rs9qTcmDpxgJbbOdZwaSl+dJlf1bHC87adVLf5KAkwwo9PzQ==} dependencies: '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-provider': 1.0.12 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/jsonrpc-ws-connection': 1.0.11 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 @@ -2157,8 +2624,8 @@ packages: '@walletconnect/relay-auth': 1.0.4 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.0 - '@walletconnect/utils': 2.7.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 lodash.isequal: 4.5.0 uint8arrays: 3.1.1 @@ -2221,22 +2688,23 @@ packages: - utf-8-validate dev: true - /@walletconnect/ethereum-provider@2.7.0: - resolution: {integrity: sha512-6TwQ05zi6DP1TP1XNgSvLbmCmLf/sz7kLTfMaVk45YYHNgYTTBlXqkyjUpQZI9lpq+uXLBbHn/jx2OGhOPUP0Q==} + /@walletconnect/ethereum-provider@2.8.0(@walletconnect/modal@2.4.6): + resolution: {integrity: sha512-nVVJtZUpoeurFjoEPYlrUHkT3YleCpEC9YAMKJyEIB3MZZInttcGxGyi0vwFQ+trCfuX8RrdKUPQ952NvxvCvw==} peerDependencies: - '@web3modal/standalone': '>=2' + '@walletconnect/modal': '>=2' peerDependenciesMeta: - '@web3modal/standalone': + '@walletconnect/modal': optional: true dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 - '@walletconnect/jsonrpc-provider': 1.0.12 - '@walletconnect/jsonrpc-types': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.7 - '@walletconnect/sign-client': 2.7.0 - '@walletconnect/types': 2.7.0 - '@walletconnect/universal-provider': 2.7.0 - '@walletconnect/utils': 2.7.0 + '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/modal': 2.4.6(react@18.2.0) + '@walletconnect/sign-client': 2.8.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/universal-provider': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -2278,7 +2746,18 @@ packages: /@walletconnect/jsonrpc-http-connection@1.0.6: resolution: {integrity: sha512-/3zSqDi7JDN06E4qm0NmVYMitngXfh21UWwy8zeJcBeJc+Jcs094EbLsIxtziIIKTCCbT88lWuTjl1ZujxN7cw==} dependencies: - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + cross-fetch: 3.1.5 + tslib: 1.14.1 + transitivePeerDependencies: + - encoding + dev: true + + /@walletconnect/jsonrpc-http-connection@1.0.7: + resolution: {integrity: sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 cross-fetch: 3.1.5 tslib: 1.14.1 @@ -2288,7 +2767,15 @@ packages: /@walletconnect/jsonrpc-provider@1.0.12: resolution: {integrity: sha512-6uI2y5281gloZSzICOjk+CVC7CVu0MhtMt2Yzpj05lPb0pzm/bK2oZ2ibxwLerPrqpNt/5bIFVRmoOgPw1mHAQ==} dependencies: - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 + '@walletconnect/safe-json': 1.0.2 + tslib: 1.14.1 + dev: true + + /@walletconnect/jsonrpc-provider@1.0.13: + resolution: {integrity: sha512-K73EpThqHnSR26gOyNEL+acEex3P7VWZe6KE12ZwKzAt2H4e5gldZHbjsu2QR9cLeJ8AXuO7kEMOIcRv1QEc7g==} + dependencies: + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 tslib: 1.14.1 @@ -2297,18 +2784,33 @@ packages: dependencies: keyvaluestorage-interface: 1.0.0 tslib: 1.14.1 + dev: true + + /@walletconnect/jsonrpc-types@1.0.3: + resolution: {integrity: sha512-iIQ8hboBl3o5ufmJ8cuduGad0CQm3ZlsHtujv9Eu16xq89q+BG7Nh5VLxxUgmtpnrePgFkTwXirCTkwJH1v+Yw==} + dependencies: + keyvaluestorage-interface: 1.0.0 + tslib: 1.14.1 /@walletconnect/jsonrpc-utils@1.0.7: resolution: {integrity: sha512-zJziApzUF/Il4VcwabnaU+0yo1QI4eUkYX99zmCVTHJvZOf2l0zjADf/OpKqWyeNFC3Io56Z/8uJHVtcNVvyFA==} dependencies: '@walletconnect/environment': 1.0.1 - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 + tslib: 1.14.1 + dev: true + + /@walletconnect/jsonrpc-utils@1.0.8: + resolution: {integrity: sha512-vdeb03bD8VzJUL6ZtzRYsFMq1eZQcM3EAzT0a3st59dyLfJ0wq+tKMpmGH7HlB7waD858UWgfIcudbPFsbzVdw==} + dependencies: + '@walletconnect/environment': 1.0.1 + '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 /@walletconnect/jsonrpc-ws-connection@1.0.11: resolution: {integrity: sha512-TiFJ6saasKXD+PwGkm5ZGSw0837nc6EeFmurSPgIT/NofnOV4Tv7CVJqGQN0rQYoJUSYu21cwHNYaFkzNpUN+w==} dependencies: - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/safe-json': 1.0.2 events: 3.3.0 tslib: 1.14.1 @@ -2336,7 +2838,7 @@ packages: dependencies: '@walletconnect/crypto': 1.0.3 '@walletconnect/encoding': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/legacy-types': 2.0.0 '@walletconnect/legacy-utils': 2.0.0 '@walletconnect/safe-json': 1.0.2 @@ -2352,13 +2854,13 @@ packages: '@walletconnect/legacy-utils': 2.0.0 copy-to-clipboard: 3.3.3 preact: 10.13.2 - qrcode: 1.5.1 + qrcode: 1.5.3 /@walletconnect/legacy-provider@2.0.0: resolution: {integrity: sha512-A8xPebMI1A+50HbWwTpFCbwP7G+1NGKdTKyg8BUUg3h3Y9JucpC1W6w/x0v1Xw7qFEqQnz74LoIN/A3ytH9xrQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 - '@walletconnect/jsonrpc-provider': 1.0.12 + '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 '@walletconnect/legacy-client': 2.0.0 '@walletconnect/legacy-modal': 2.0.0 '@walletconnect/legacy-types': 2.0.0 @@ -2369,13 +2871,13 @@ packages: /@walletconnect/legacy-types@2.0.0: resolution: {integrity: sha512-sOVrA7HUdbI1OwKyPOQU0/DdvTSVFlsXWpAk2K2WvP2erTkBWPMTJq6cv2BmKdoJ3p6gLApT7sd+jHi3OF71uw==} dependencies: - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 /@walletconnect/legacy-utils@2.0.0: resolution: {integrity: sha512-CPWxSVVXw0kgNCxvU126g4GiV3mzXmC8IPJ15twE46aJ1FX+RHEIfAzFMFz2F2+fEhBxL63A7dwNQKDXorRPcQ==} dependencies: '@walletconnect/encoding': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/legacy-types': 2.0.0 '@walletconnect/safe-json': 1.0.2 '@walletconnect/window-getters': 1.0.1 @@ -2389,6 +2891,14 @@ packages: pino: 7.11.0 tslib: 1.14.1 + /@walletconnect/modal@2.4.6(react@18.2.0): + resolution: {integrity: sha512-ZPNsLKc0tv6ny+wj1rQ62yykUzWUW6sQDlvEnTHRkUzDP2WIOzvhpWJIf3xpWRCgnEDBUL7cc3Jih1mqcGtVoQ==} + dependencies: + '@web3modal/core': 2.4.6(react@18.2.0) + '@web3modal/ui': 2.4.6(react@18.2.0) + transitivePeerDependencies: + - react + /@walletconnect/randombytes@1.0.3: resolution: {integrity: sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==} dependencies: @@ -2400,7 +2910,7 @@ packages: /@walletconnect/relay-api@1.0.9: resolution: {integrity: sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==} dependencies: - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 tslib: 1.14.1 /@walletconnect/relay-auth@1.0.4: @@ -2424,7 +2934,7 @@ packages: '@walletconnect/core': 2.6.2(@types/node@18.15.11)(typescript@4.9.4) '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 '@walletconnect/types': 2.6.2(@types/node@18.15.11)(typescript@4.9.4) @@ -2442,17 +2952,17 @@ packages: - utf-8-validate dev: true - /@walletconnect/sign-client@2.7.0: - resolution: {integrity: sha512-K99xa6GSFS04U+140yrIEi/VJJJ0Q1ov4jCaiqa9euILDKxlBsM7m5GR+9sq6oYyj18SluJY4CJTdeOXUJlarA==} + /@walletconnect/sign-client@2.8.0: + resolution: {integrity: sha512-+l9qwvVeUGk0fBQsgx6yb6hdGYt8uQ3a9jR9GgsJvm8FjFh1oUzTKqFnG7XdhCBnzFnbSoLr41Xe8PbN8qoUSw==} dependencies: - '@walletconnect/core': 2.7.0 + '@walletconnect/core': 2.8.0 '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.0 - '@walletconnect/utils': 2.7.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 events: 3.3.0 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -2470,7 +2980,7 @@ packages: dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.0(@types/node@18.15.11)(typescript@4.9.4) - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 events: 3.3.0 @@ -2483,12 +2993,12 @@ packages: - typescript dev: true - /@walletconnect/types@2.7.0: - resolution: {integrity: sha512-aMUDUtO79WSBtC/bDetE6aFwdgwJr0tJ8nC8gnAl5ELsrjygEKCn6M8Q+v6nP9svG9yf5Rds4cImxCT6BWwTyw==} + /@walletconnect/types@2.8.0: + resolution: {integrity: sha512-FMeGK3lGXFDwcs5duoN74xL1aLrkgYqnavWE0DnFPt2i1QmSUITU9c8f88EDh8uPXANd2WIYOItm0DVCNxLGGA==} dependencies: '@walletconnect/events': 1.0.1 '@walletconnect/heartbeat': 1.2.1 - '@walletconnect/jsonrpc-types': 1.0.2 + '@walletconnect/jsonrpc-types': 1.0.3 '@walletconnect/keyvaluestorage': 1.0.2 '@walletconnect/logger': 2.0.1 events: 3.3.0 @@ -2499,10 +3009,10 @@ packages: /@walletconnect/universal-provider@2.6.2(@types/node@18.15.11)(typescript@4.9.4): resolution: {integrity: sha512-CT7xFYGhGYYdo1rMCGnCuAueUYSVirqs6Tk9/ZoK/wf3vBNefTBxStW0Twgr+Fr5mgeOh4k4NWjPJIwfGTc/Fg==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 - '@walletconnect/jsonrpc-provider': 1.0.12 - '@walletconnect/jsonrpc-types': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 '@walletconnect/sign-client': 2.6.2(@types/node@18.15.11)(typescript@4.9.4) '@walletconnect/types': 2.6.2(@types/node@18.15.11)(typescript@4.9.4) @@ -2523,17 +3033,17 @@ packages: - utf-8-validate dev: true - /@walletconnect/universal-provider@2.7.0: - resolution: {integrity: sha512-aAIudO3ZlKD16X36VnXChpxBB6/JLK1SCJBfidk7E0GE2S4xr1xW5jXGSGS4Z+wIkNZXK0n7ULSK3PZ7mPBdog==} + /@walletconnect/universal-provider@2.8.0: + resolution: {integrity: sha512-BMsGiINI3rT7DRyDJM7miuWG6vDVE0PV6zMcCXIMDYYPay7zFvJxv2VHEx9an4MutrvQR76NTRyG//i1K84VOQ==} dependencies: - '@walletconnect/jsonrpc-http-connection': 1.0.6 - '@walletconnect/jsonrpc-provider': 1.0.12 - '@walletconnect/jsonrpc-types': 1.0.2 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-http-connection': 1.0.7 + '@walletconnect/jsonrpc-provider': 1.0.13 + '@walletconnect/jsonrpc-types': 1.0.3 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/logger': 2.0.1 - '@walletconnect/sign-client': 2.7.0 - '@walletconnect/types': 2.7.0 - '@walletconnect/utils': 2.7.0 + '@walletconnect/sign-client': 2.8.0 + '@walletconnect/types': 2.8.0 + '@walletconnect/utils': 2.8.0 eip1193-provider: 1.0.1 events: 3.3.0 transitivePeerDependencies: @@ -2552,7 +3062,7 @@ packages: '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.7 + '@walletconnect/jsonrpc-utils': 1.0.8 '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 @@ -2571,23 +3081,22 @@ packages: - typescript dev: true - /@walletconnect/utils@2.7.0: - resolution: {integrity: sha512-k32jrQeyJsNZPdmtmg85Y3QgaS5YfzYSPrAxRC2uUD1ts7rrI6P5GG2iXNs3AvWKOuCgsp/PqU8s7AC7CRUscw==} + /@walletconnect/utils@2.8.0: + resolution: {integrity: sha512-Q8OwMtUevIn1+64LXyTMLlhH58k3UOAjU5b3smYZ7CEEmwEGpOTfTDAWrB3v+ZDIhjyqP94+8fuvKIbcVLKLWA==} dependencies: '@stablelib/chacha20poly1305': 1.0.1 '@stablelib/hkdf': 1.0.1 '@stablelib/random': 1.0.2 '@stablelib/sha256': 1.0.1 '@stablelib/x25519': 1.0.3 - '@walletconnect/jsonrpc-utils': 1.0.7 '@walletconnect/relay-api': 1.0.9 '@walletconnect/safe-json': 1.0.2 '@walletconnect/time': 1.0.2 - '@walletconnect/types': 2.7.0 + '@walletconnect/types': 2.8.0 '@walletconnect/window-getters': 1.0.1 '@walletconnect/window-metadata': 1.0.1 detect-browser: 5.3.0 - query-string: 7.1.1 + query-string: 7.1.3 uint8arrays: 3.1.1 transitivePeerDependencies: - '@react-native-async-storage/async-storage' @@ -2613,6 +3122,14 @@ packages: - react dev: true + /@web3modal/core@2.4.6(react@18.2.0): + resolution: {integrity: sha512-QD9cp3+Ne8hSqDpJ8OrdtEszuOglSd8JOfuvQcSvKeJnnfVOMGwCK3l3N98sCreyRhxrtRtOD0G2nHMemlzmpw==} + dependencies: + buffer: 6.0.3 + valtio: 1.10.5(react@18.2.0) + transitivePeerDependencies: + - react + /@web3modal/standalone@2.3.0(react@18.2.0): resolution: {integrity: sha512-O2vfsT83r2UlEYCFEKcIRQLt7XmsAUapazb1rjYr6PWN1hU4FVksWiUwG9UGNoU8lznvaiFiCUNmjje1+4NHgQ==} dependencies: @@ -2631,7 +3148,17 @@ packages: qrcode: 1.5.1 transitivePeerDependencies: - react - dev: true + dev: true + + /@web3modal/ui@2.4.6(react@18.2.0): + resolution: {integrity: sha512-kJ4DVM10OdU1d6brSeLSc4+LGlvps4tMF17EzUlJUM80i3rESmBcWkITU1YnpeLf+dzilyWEkHzzKB8vMGeZ1w==} + dependencies: + '@web3modal/core': 2.4.6(react@18.2.0) + lit: 2.7.5 + motion: 10.16.2 + qrcode: 1.5.3 + transitivePeerDependencies: + - react /JSONStream@1.3.5: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} @@ -2652,6 +3179,7 @@ packages: dependencies: typescript: 4.9.4 zod: 3.21.4 + dev: true /abitype@0.7.1(typescript@4.9.4)(zod@3.21.4): resolution: {integrity: sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==} @@ -2664,6 +3192,19 @@ packages: dependencies: typescript: 4.9.4 zod: 3.21.4 + dev: true + + /abitype@0.8.7(typescript@5.1.3): + resolution: {integrity: sha512-wQ7hV8Yg/yKmGyFpqrNZufCxbszDe5es4AZGYPBitocfSqXtjrTG9JMWFcc4N30ukl2ve48aBTwt7NJxVQdU3w==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.19.1 + peerDependenciesMeta: + zod: + optional: true + dependencies: + typescript: 5.1.3 + dev: false /abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -2672,6 +3213,14 @@ packages: event-target-shim: 5.0.1 dev: true + /acorn-jsx@5.3.2(acorn@8.8.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.8.2 + dev: true + /acorn-walk@8.2.0: resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} engines: {node: '>=0.4.0'} @@ -2689,11 +3238,15 @@ packages: /aes-js@3.1.2: resolution: {integrity: sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==} + /aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + dev: false + /agentkeepalive@4.3.0: resolution: {integrity: sha512-7Epl1Blf4Sy37j4v9f9FjICCh4+KAQOyXgHEwlyBiAQLbhKdq/i2QQU3amQalS/wPhdPzDXPL5DMR5bkn+YeWg==} engines: {node: '>= 8.0.0'} dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) depd: 2.0.0 humanize-ms: 1.2.1 transitivePeerDependencies: @@ -2817,46 +3370,49 @@ packages: transitivePeerDependencies: - debug - /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.21.4): + /babel-plugin-polyfill-corejs2@0.3.3(@babel/core@7.22.5): resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/compat-data': 7.21.4 - '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/compat-data': 7.22.5 + '@babel/core': 7.22.5 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.5) semver: 6.3.0 transitivePeerDependencies: - supports-color + dev: true - /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.21.4): + /babel-plugin-polyfill-corejs3@0.6.0(@babel/core@7.22.5): resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/core': 7.22.5 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.5) core-js-compat: 3.30.1 transitivePeerDependencies: - supports-color + dev: true - /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.21.4): + /babel-plugin-polyfill-regenerator@0.4.1(@babel/core@7.22.5): resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.21.4 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.21.4) + '@babel/core': 7.22.5 + '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@7.22.5) transitivePeerDependencies: - supports-color + dev: true /babel-plugin-styled-components@2.1.1(styled-components@5.3.9): resolution: {integrity: sha512-c8lJlszObVQPguHkI+akXv8+Jgb9Ccujx0EetL7oIvwU100LxO6XAGe45qry37wUL40a5U9f23SYrivro2XKhA==} peerDependencies: styled-components: '>= 2' dependencies: - '@babel/helper-annotate-as-pure': 7.18.6 - '@babel/helper-module-imports': 7.21.4 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.5 babel-plugin-syntax-jsx: 6.18.0 lodash: 4.17.21 picomatch: 2.3.1 @@ -2976,6 +3532,7 @@ packages: electron-to-chromium: 1.4.363 node-releases: 2.0.10 update-browserslist-db: 1.0.10(browserslist@4.21.5) + dev: true /bs58@4.0.1: resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} @@ -3035,6 +3592,11 @@ packages: function-bind: 1.1.1 get-intrinsic: 1.2.0 + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + dev: true + /camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: @@ -3066,6 +3628,7 @@ packages: /caniuse-lite@1.0.30001478: resolution: {integrity: sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==} + dev: true /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -3253,27 +3816,27 @@ packages: well-known-symbols: 2.0.0 dev: true - /connectkit@1.2.2(ethers@5.7.2)(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(wagmi@0.12.0): - resolution: {integrity: sha512-iI8UE18oE0qVVzHWMLTyV+aee8F9HBLN6COxZogE3O3yOASeH55oREKOeKy0pQ/HkIirQii3jGL3K0JQeWcngA==} + /connectkit@1.4.0(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0)(viem@1.0.7)(wagmi@1.2.0): + resolution: {integrity: sha512-gRfcb/7BDX4uKc3qghjVlV5rd3jfkivqSsUG5vywZYy4nSHE4q4NeHsgJTTC8WnNTWxfOz02oP8J2dCaeCHLNw==} engines: {node: '>=12.4'} peerDependencies: - ethers: '>=5.5.0 <6' react: 17.x || 18.x react-dom: 17.x || 18.x - wagmi: 0.12.x + viem: ~0.3.19 + wagmi: ^1.0.0 dependencies: buffer: 6.0.3 detect-browser: 5.3.0 - ethers: 5.7.2 framer-motion: 6.5.1(react-dom@18.2.0)(react@18.2.0) - qrcode: 1.5.1 + qrcode: 1.5.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) react-transition-state: 1.1.5(react-dom@18.2.0)(react@18.2.0) react-use-measure: 2.1.1(react-dom@18.2.0)(react@18.2.0) resize-observer-polyfill: 1.5.1 styled-components: 5.3.9(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0) - wagmi: 0.12.0(@babel/core@7.21.4)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.4) + viem: 1.0.7(typescript@5.1.3) + wagmi: 1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7) transitivePeerDependencies: - react-is dev: false @@ -3288,6 +3851,7 @@ packages: /convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + dev: true /copy-to-clipboard@3.3.3: resolution: {integrity: sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==} @@ -3298,6 +3862,7 @@ packages: resolution: {integrity: sha512-d690npR7MC6P0gq4npTl5n2VQeNAmUrJ90n+MHiKS7W2+xno4o3F5GDEuylSdi6EJ3VssibSGXOa1r3YXD3Mhw==} dependencies: browserslist: 4.21.5 + dev: true /create-require@1.1.1: resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} @@ -3405,6 +3970,7 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 + dev: true /decamelize-keys@1.1.1: resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} @@ -3438,6 +4004,10 @@ packages: type-detect: 4.0.8 dev: true + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + dev: true + /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} dependencies: @@ -3495,6 +4065,13 @@ packages: path-type: 4.0.0 dev: true + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + dev: true + /dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: @@ -3531,6 +4108,7 @@ packages: /electron-to-chromium@1.4.363: resolution: {integrity: sha512-ReX5qgmSU7ybhzMuMdlJAdYnRhT90UB3k9M05O5nF5WH3wR5wgdJjXw0uDeFyKNhmglmQiOxkAbzrP0hMKM59g==} + dev: true /elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} @@ -3648,15 +4226,6 @@ packages: dev: true optional: true - /esbuild-android-64@0.15.18: - resolution: {integrity: sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-android-arm64@0.15.13: resolution: {integrity: sha512-TKzyymLD6PiVeyYa4c5wdPw87BeAiTXNtK6amWUcXZxkV51gOk5u5qzmDaYSwiWeecSNHamFsaFjLoi32QR5/w==} engines: {node: '>=12'} @@ -3666,15 +4235,6 @@ packages: dev: true optional: true - /esbuild-android-arm64@0.15.18: - resolution: {integrity: sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-64@0.15.13: resolution: {integrity: sha512-WAx7c2DaOS6CrRcoYCgXgkXDliLnFv3pQLV6GeW1YcGEZq2Gnl8s9Pg7ahValZkpOa0iE/ojRVQ87sbUhF1Cbg==} engines: {node: '>=12'} @@ -3684,15 +4244,6 @@ packages: dev: true optional: true - /esbuild-darwin-64@0.15.18: - resolution: {integrity: sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-darwin-arm64@0.15.13: resolution: {integrity: sha512-U6jFsPfSSxC3V1CLiQqwvDuj3GGrtQNB3P3nNC3+q99EKf94UGpsG9l4CQ83zBs1NHrk1rtCSYT0+KfK5LsD8A==} engines: {node: '>=12'} @@ -3702,15 +4253,6 @@ packages: dev: true optional: true - /esbuild-darwin-arm64@0.15.18: - resolution: {integrity: sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-64@0.15.13: resolution: {integrity: sha512-whItJgDiOXaDG/idy75qqevIpZjnReZkMGCgQaBWZuKHoElDJC1rh7MpoUgupMcdfOd+PgdEwNQW9DAE6i8wyA==} engines: {node: '>=12'} @@ -3720,15 +4262,6 @@ packages: dev: true optional: true - /esbuild-freebsd-64@0.15.18: - resolution: {integrity: sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-freebsd-arm64@0.15.13: resolution: {integrity: sha512-6pCSWt8mLUbPtygv7cufV0sZLeylaMwS5Fznj6Rsx9G2AJJsAjQ9ifA+0rQEIg7DwJmi9it+WjzNTEAzzdoM3Q==} engines: {node: '>=12'} @@ -3738,15 +4271,6 @@ packages: dev: true optional: true - /esbuild-freebsd-arm64@0.15.18: - resolution: {integrity: sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-32@0.15.13: resolution: {integrity: sha512-VbZdWOEdrJiYApm2kkxoTOgsoCO1krBZ3quHdYk3g3ivWaMwNIVPIfEE0f0XQQ0u5pJtBsnk2/7OPiCFIPOe/w==} engines: {node: '>=12'} @@ -3756,15 +4280,6 @@ packages: dev: true optional: true - /esbuild-linux-32@0.15.18: - resolution: {integrity: sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-64@0.15.13: resolution: {integrity: sha512-rXmnArVNio6yANSqDQlIO4WiP+Cv7+9EuAHNnag7rByAqFVuRusLbGi2697A5dFPNXoO//IiogVwi3AdcfPC6A==} engines: {node: '>=12'} @@ -3774,15 +4289,6 @@ packages: dev: true optional: true - /esbuild-linux-64@0.15.18: - resolution: {integrity: sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm64@0.15.13: resolution: {integrity: sha512-alEMGU4Z+d17U7KQQw2IV8tQycO6T+rOrgW8OS22Ua25x6kHxoG6Ngry6Aq6uranC+pNWNMB6aHFPh7aTQdORQ==} engines: {node: '>=12'} @@ -3792,15 +4298,6 @@ packages: dev: true optional: true - /esbuild-linux-arm64@0.15.18: - resolution: {integrity: sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-arm@0.15.13: resolution: {integrity: sha512-Ac6LpfmJO8WhCMQmO253xX2IU2B3wPDbl4IvR0hnqcPrdfCaUa2j/lLMGTjmQ4W5JsJIdHEdW12dG8lFS0MbxQ==} engines: {node: '>=12'} @@ -3810,15 +4307,6 @@ packages: dev: true optional: true - /esbuild-linux-arm@0.15.18: - resolution: {integrity: sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-mips64le@0.15.13: resolution: {integrity: sha512-47PgmyYEu+yN5rD/MbwS6DxP2FSGPo4Uxg5LwIdxTiyGC2XKwHhHyW7YYEDlSuXLQXEdTO7mYe8zQ74czP7W8A==} engines: {node: '>=12'} @@ -3828,15 +4316,6 @@ packages: dev: true optional: true - /esbuild-linux-mips64le@0.15.18: - resolution: {integrity: sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-ppc64le@0.15.13: resolution: {integrity: sha512-z6n28h2+PC1Ayle9DjKoBRcx/4cxHoOa2e689e2aDJSaKug3jXcQw7mM+GLg+9ydYoNzj8QxNL8ihOv/OnezhA==} engines: {node: '>=12'} @@ -3846,15 +4325,6 @@ packages: dev: true optional: true - /esbuild-linux-ppc64le@0.15.18: - resolution: {integrity: sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-riscv64@0.15.13: resolution: {integrity: sha512-+Lu4zuuXuQhgLUGyZloWCqTslcCAjMZH1k3Xc9MSEJEpEFdpsSU0sRDXAnk18FKOfEjhu4YMGaykx9xjtpA6ow==} engines: {node: '>=12'} @@ -3864,15 +4334,6 @@ packages: dev: true optional: true - /esbuild-linux-riscv64@0.15.18: - resolution: {integrity: sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-linux-s390x@0.15.13: resolution: {integrity: sha512-BMeXRljruf7J0TMxD5CIXS65y7puiZkAh+s4XFV9qy16SxOuMhxhVIXYLnbdfLrsYGFzx7U9mcdpFWkkvy/Uag==} engines: {node: '>=12'} @@ -3882,15 +4343,6 @@ packages: dev: true optional: true - /esbuild-linux-s390x@0.15.18: - resolution: {integrity: sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: true - optional: true - /esbuild-netbsd-64@0.15.13: resolution: {integrity: sha512-EHj9QZOTel581JPj7UO3xYbltFTYnHy+SIqJVq6yd3KkCrsHRbapiPb0Lx3EOOtybBEE9EyqbmfW1NlSDsSzvQ==} engines: {node: '>=12'} @@ -3900,15 +4352,6 @@ packages: dev: true optional: true - /esbuild-netbsd-64@0.15.18: - resolution: {integrity: sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-openbsd-64@0.15.13: resolution: {integrity: sha512-nkuDlIjF/sfUhfx8SKq0+U+Fgx5K9JcPq1mUodnxI0x4kBdCv46rOGWbuJ6eof2n3wdoCLccOoJAbg9ba/bT2w==} engines: {node: '>=12'} @@ -3918,15 +4361,6 @@ packages: dev: true optional: true - /esbuild-openbsd-64@0.15.18: - resolution: {integrity: sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: true - optional: true - /esbuild-sunos-64@0.15.13: resolution: {integrity: sha512-jVeu2GfxZQ++6lRdY43CS0Tm/r4WuQQ0Pdsrxbw+aOrHQPHV0+LNOLnvbN28M7BSUGnJnHkHm2HozGgNGyeIRw==} engines: {node: '>=12'} @@ -3936,15 +4370,6 @@ packages: dev: true optional: true - /esbuild-sunos-64@0.15.18: - resolution: {integrity: sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-32@0.15.13: resolution: {integrity: sha512-XoF2iBf0wnqo16SDq+aDGi/+QbaLFpkiRarPVssMh9KYbFNCqPLlGAWwDvxEVz+ywX6Si37J2AKm+AXq1kC0JA==} engines: {node: '>=12'} @@ -3954,15 +4379,6 @@ packages: dev: true optional: true - /esbuild-windows-32@0.15.18: - resolution: {integrity: sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-64@0.15.13: resolution: {integrity: sha512-Et6htEfGycjDrtqb2ng6nT+baesZPYQIW+HUEHK4D1ncggNrDNk3yoboYQ5KtiVrw/JaDMNttz8rrPubV/fvPQ==} engines: {node: '>=12'} @@ -3972,15 +4388,6 @@ packages: dev: true optional: true - /esbuild-windows-64@0.15.18: - resolution: {integrity: sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild-windows-arm64@0.15.13: resolution: {integrity: sha512-3bv7tqntThQC9SWLRouMDmZnlOukBhOCTlkzNqzGCmrkCJI7io5LLjwJBOVY6kOUlIvdxbooNZwjtBvj+7uuVg==} engines: {node: '>=12'} @@ -3990,15 +4397,6 @@ packages: dev: true optional: true - /esbuild-windows-arm64@0.15.18: - resolution: {integrity: sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: true - optional: true - /esbuild@0.15.13: resolution: {integrity: sha512-Cu3SC84oyzzhrK/YyN4iEVy2jZu5t2fz66HEOShHURcjSkOSAVL8C/gfUT+lDJxkVHpg8GZ10DD0rMHRPqMFaQ==} engines: {node: '>=12'} @@ -4029,36 +4427,6 @@ packages: esbuild-windows-arm64: 0.15.13 dev: true - /esbuild@0.15.18: - resolution: {integrity: sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.15.18 - '@esbuild/linux-loong64': 0.15.18 - esbuild-android-64: 0.15.18 - esbuild-android-arm64: 0.15.18 - esbuild-darwin-64: 0.15.18 - esbuild-darwin-arm64: 0.15.18 - esbuild-freebsd-64: 0.15.18 - esbuild-freebsd-arm64: 0.15.18 - esbuild-linux-32: 0.15.18 - esbuild-linux-64: 0.15.18 - esbuild-linux-arm: 0.15.18 - esbuild-linux-arm64: 0.15.18 - esbuild-linux-mips64le: 0.15.18 - esbuild-linux-ppc64le: 0.15.18 - esbuild-linux-riscv64: 0.15.18 - esbuild-linux-s390x: 0.15.18 - esbuild-netbsd-64: 0.15.18 - esbuild-openbsd-64: 0.15.18 - esbuild-sunos-64: 0.15.18 - esbuild-windows-32: 0.15.18 - esbuild-windows-64: 0.15.18 - esbuild-windows-arm64: 0.15.18 - dev: true - /esbuild@0.17.16: resolution: {integrity: sha512-aeSuUKr9aFVY9Dc8ETVELGgkj4urg5isYx8pLf4wlGgB0vTFjxJQdHnNH6Shmx4vYYrOTLCHtRI5i1XZ9l2Zcg==} engines: {node: '>=12'} @@ -4092,6 +4460,7 @@ packages: /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: true /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} @@ -4102,12 +4471,130 @@ packages: engines: {node: '>=10'} dev: true + /eslint-config-prettier@8.8.0(eslint@8.36.0): + resolution: {integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.36.0 + dev: true + + /eslint-plugin-unused-imports@2.0.0(eslint@8.36.0): + resolution: {integrity: sha512-3APeS/tQlTrFa167ThtP0Zm0vctjr4M44HMpeg1P4bK6wItarumq0Ma82xorMKdFsWpphQBlRPzw/pxiVELX1A==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/eslint-plugin': ^5.0.0 + eslint: ^8.0.0 + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + dependencies: + eslint: 8.36.0 + eslint-rule-composer: 0.3.0 + dev: true + + /eslint-rule-composer@0.3.0: + resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} + engines: {node: '>=4.0.0'} + dev: true + + /eslint-scope@7.2.0: + resolution: {integrity: sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + dev: true + + /eslint-visitor-keys@3.4.1: + resolution: {integrity: sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dev: true + + /eslint@8.36.0: + resolution: {integrity: sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.36.0) + '@eslint-community/regexpp': 4.5.1 + '@eslint/eslintrc': 2.0.3 + '@eslint/js': 8.36.0 + '@humanwhocodes/config-array': 0.11.10 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4(supports-color@5.5.0) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.0 + eslint-visitor-keys: 3.4.1 + espree: 9.5.2 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.20.0 + grapheme-splitter: 1.0.4 + ignore: 5.2.4 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-sdsl: 4.4.1 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + dev: true + + /espree@9.5.2: + resolution: {integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.8.2 + acorn-jsx: 5.3.2(acorn@8.8.2) + eslint-visitor-keys: 3.4.1 + dev: true + /esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true dev: true + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + dev: true + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + dev: true + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + dev: true + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true @@ -4117,17 +4604,29 @@ packages: engines: {node: '>=0.10.0'} dev: true - /eth-block-tracker@4.4.3(@babel/core@7.21.4): + /eth-block-tracker@4.4.3(@babel/core@7.22.5): resolution: {integrity: sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==} dependencies: - '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.21.4) + '@babel/plugin-transform-runtime': 7.21.4(@babel/core@7.22.5) '@babel/runtime': 7.21.0 eth-query: 2.1.2 json-rpc-random-id: 1.0.1 pify: 3.0.0 - safe-event-emitter: 1.0.1 + safe-event-emitter: 1.0.1 + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + + /eth-block-tracker@6.1.0: + resolution: {integrity: sha512-K9SY8+/xMBi4M5HHTDdxnpEqEEGjbNpzHFqvxyjMZej8InV/B+CkFRKM6W+uvrFJ7m8Zd1E0qUkseU3vdIDFYQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@metamask/safe-event-emitter': 2.0.0 + '@metamask/utils': 3.6.0 + json-rpc-random-id: 1.0.1 + pify: 3.0.0 transitivePeerDependencies: - - '@babel/core' - supports-color /eth-json-rpc-filters@5.1.0: @@ -4188,6 +4687,22 @@ packages: - bufferutil - utf-8-validate + /ethers@6.6.0: + resolution: {integrity: sha512-7D2U+n8eZYmh592VZqap9vBu50jN7YUDHqAmwBYTMntmUKC9RVgcqcFbd+3DTCOQ1jMyK6QHv1usbcfgiGaHOA==} + engines: {node: '>=14.0.0'} + dependencies: + '@adraffy/ens-normalize': 1.9.2 + '@noble/hashes': 1.1.2 + '@noble/secp256k1': 1.7.1 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + /event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -4270,6 +4785,10 @@ packages: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} dev: true + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + dev: true + /fast-redact@3.1.2: resolution: {integrity: sha512-+0em+Iya9fKGfEQGcd62Yv6onjBmmhV1uh86XVfOU8VwAe6kaFdQCWI9s0/Nnugx5Vd9tdbZ7e6gE2tR9dzXdw==} engines: {node: '>=6'} @@ -4294,6 +4813,13 @@ packages: web-streams-polyfill: 3.2.1 dev: true + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.0.4 + dev: true + /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -4338,11 +4864,23 @@ packages: pkg-dir: 4.2.0 dev: true + /flat-cache@3.0.4: + resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + dev: true + /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true dev: true + /flatted@3.2.7: + resolution: {integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==} + dev: true + /follow-redirects@1.15.2: resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} engines: {node: '>=4.0'} @@ -4455,6 +4993,7 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} @@ -4491,6 +5030,13 @@ packages: is-glob: 4.0.3 dev: true + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + dev: true + /glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} dependencies: @@ -4506,6 +5052,13 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + /globals@13.20.0: + resolution: {integrity: sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + dev: true + /globalthis@1.0.3: resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} engines: {node: '>= 0.4'} @@ -4565,6 +5118,7 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} @@ -4676,11 +5230,24 @@ packages: engines: {node: '>= 4'} dev: true + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + dev: true + /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} engines: {node: '>=8'} dev: true + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + dev: true + /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -4760,6 +5327,7 @@ packages: resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==} dependencies: has: 1.0.3 + dev: true /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} @@ -4812,6 +5380,11 @@ packages: engines: {node: '>=0.12.0'} dev: true + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: true + /is-plain-obj@1.1.0: resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} engines: {node: '>=0.10.0'} @@ -4941,6 +5514,10 @@ packages: istanbul-lib-report: 3.0.0 dev: true + /javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + dev: true + /jayson@3.7.0: resolution: {integrity: sha512-tfy39KJMrrXJ+mFcMpxwBvFDetS8LAID93+rycFglIQM4kl3uNR3W4lBLE/FFhsoUCEox5Dt2adVpDm/XtebbQ==} engines: {node: '>=8'} @@ -4967,6 +5544,10 @@ packages: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} dev: true + /js-sdsl@4.4.1: + resolution: {integrity: sha512-6Gsx8R0RucyePbWqPssR8DyfuXmLBooYN5cZFZKjHGnQuaf7pEzhtpceagJxVu4LqhYY5EYA7nko3FmeHZ1KbA==} + dev: true + /js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -5016,6 +5597,10 @@ packages: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} dev: true + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + dev: true + /json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -5023,6 +5608,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} @@ -5072,6 +5658,14 @@ packages: resolution: {integrity: sha512-ymToLHqL02udwVdbkowNpzjFd6UzozMtshPQKVi5k1EjKRqKqBrOnE9QbLEb0/pV76SAiIT13hdL8R6suc+f3g==} dev: true + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + dev: true + /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} dev: true @@ -5082,13 +5676,11 @@ packages: '@lit-labs/ssr-dom-shim': 1.1.0 '@lit/reactive-element': 1.6.1 lit-html: 2.7.2 - dev: true /lit-html@2.7.2: resolution: {integrity: sha512-ZJCfKlA2XELu5tn7XuzOziGFGvf1SeQm+ngLWoJ8bXtSkRrrR3ms6SWy+gsdxeYwySLij5xAhdd2C3EX0ftxdQ==} dependencies: '@types/trusted-types': 2.0.3 - dev: true /lit@2.7.2: resolution: {integrity: sha512-9QnZmG5mIKPRja96cpndMclLSi0Qrz2BXD6EbqNqCKMMjOWVm/BwAeXufFk2jqFsNmY07HOzU8X+8aTSVt3yrA==} @@ -5098,6 +5690,13 @@ packages: lit-html: 2.7.2 dev: true + /lit@2.7.5: + resolution: {integrity: sha512-i/cH7Ye6nBDUASMnfwcictBnsTN91+aBjXoTHF2xARghXScKxpD4F4WYI+VLXg9lqbMinDfvoI7VnZXjyHgdfQ==} + dependencies: + '@lit/reactive-element': 1.6.1 + lit-element: 3.3.1 + lit-html: 2.7.2 + /load-tsconfig@0.2.5: resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5138,8 +5737,13 @@ packages: p-locate: 6.0.0 dev: true + /lodash.clone@4.5.0: + resolution: {integrity: sha512-GhrVeweiTD6uTmmn5hV/lzgCQhccwReIVRLHp7LT4SopOjqEZ5BbX8b5WWEtAKasjmy8hR7ZPwsYlxRCku5odg==} + dev: true + /lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: true /lodash.get@4.4.2: resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} @@ -5148,6 +5752,10 @@ packages: /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + dev: true + /lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} dev: true @@ -5200,13 +5808,13 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} dependencies: yallist: 4.0.0 - dev: true /magic-string@0.26.7: resolution: {integrity: sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==} @@ -5393,13 +6001,23 @@ packages: resolution: {integrity: sha512-ejP6KioN4pigTGxL93APzOnvtLklParL59UQB2T3HWXQBxFcIp5/7YXFmkgiA6pNKKzjvnLhnonRBN5iSFMnNw==} dependencies: '@motionone/animation': 10.15.1 - '@motionone/dom': 10.15.5 + '@motionone/dom': 10.16.2 '@motionone/svelte': 10.15.5 '@motionone/types': 10.15.1 '@motionone/utils': 10.15.1 '@motionone/vue': 10.15.5 dev: true + /motion@10.16.2: + resolution: {integrity: sha512-p+PurYqfUdcJZvtnmAqu5fJgV2kR0uLFQuBKtLeFVTrYEVllI99tiOTSefVNYuip9ELTEkepIIDftNdze76NAQ==} + dependencies: + '@motionone/animation': 10.15.1 + '@motionone/dom': 10.16.2 + '@motionone/svelte': 10.16.2 + '@motionone/types': 10.15.1 + '@motionone/utils': 10.15.1 + '@motionone/vue': 10.16.2 + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -5421,6 +6039,10 @@ packages: hasBin: true dev: true + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + dev: true + /no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: @@ -5473,6 +6095,7 @@ packages: /node-releases@2.0.10: resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==} + dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -5542,6 +6165,18 @@ packages: mimic-fn: 4.0.0 dev: true + /optionator@0.9.1: + resolution: {integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==} + engines: {node: '>= 0.8.0'} + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.3 + dev: true + /ora@6.3.0: resolution: {integrity: sha512-1/D8uRFY0ay2kgBpmAwmSA404w4OoPVhHMqRqtjvrcK/dnzcEZxMJ+V4DUbyICu8IIVRclHcOf5wlD1tMY4GUQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -5629,11 +6264,18 @@ packages: tslib: 2.5.0 dev: true + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + dev: true + /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.21.4 + '@babel/code-frame': 7.22.5 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -5683,6 +6325,7 @@ packages: /path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + dev: true /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -5699,6 +6342,7 @@ packages: /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + dev: true /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -5783,6 +6427,15 @@ packages: source-map-js: 1.0.2 dev: true + /postcss@8.4.24: + resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: true + /preact@10.13.2: resolution: {integrity: sha512-q44QFLhOhty2Bd0Y46fnYW0gD/cbVM9dUVtNTDKPcdXSMA7jfY+Jpd6rk3GB0lcQss0z5s/6CmVP0Z/hV+g6pw==} @@ -5796,8 +6449,13 @@ packages: which-pm: 2.0.0 dev: true - /prettier@2.8.7: - resolution: {integrity: sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==} + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true dev: true @@ -5823,6 +6481,9 @@ packages: resolution: {integrity: sha512-f1us0OsVAJ3tdIMXGQx2lmseYS4YXe4W+sKF5g5ww/jV+5ogMadPt+sIZ+88Ga9kvMJsrRNWzCrKPpr6pMWYbA==} dev: true + /proxy-compare@2.5.1: + resolution: {integrity: sha512-oyfc0Tx87Cpwva5ZXezSp5V9vht1c7dZBhvuV/y3ctkgMVUmiAGDVeeB0dKhGSyT0v1ZTEQYpe/RXlBVBNuCLA==} + /pseudomap@1.0.2: resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==} dev: true @@ -5841,6 +6502,17 @@ packages: encode-utf8: 1.0.3 pngjs: 5.0.0 yargs: 15.4.1 + dev: true + + /qrcode@1.5.3: + resolution: {integrity: sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==} + engines: {node: '>=10.13.0'} + hasBin: true + dependencies: + dijkstrajs: 1.0.2 + encode-utf8: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 /qs@6.11.1: resolution: {integrity: sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==} @@ -5865,6 +6537,16 @@ packages: filter-obj: 1.1.0 split-on-first: 1.1.0 strict-uri-encode: 2.0.0 + dev: true + + /query-string@7.1.3: + resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==} + engines: {node: '>=6'} + dependencies: + decode-uri-component: 0.2.2 + filter-obj: 1.1.0 + split-on-first: 1.1.0 + strict-uri-encode: 2.0.0 /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -6015,6 +6697,11 @@ packages: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} dev: false + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + dev: true + /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -6034,6 +6721,7 @@ packages: is-core-module: 2.12.0 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + dev: true /restore-cursor@4.0.0: resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} @@ -6071,6 +6759,14 @@ packages: fsevents: 2.3.2 dev: true + /rollup@3.25.1: + resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /rpc-websockets@7.5.1: resolution: {integrity: sha512-kGFkeTsmd37pHPMaHIgN1LVKXMi0JD782v4Ds9ZKtLlwdTKjn+CxM9A9/gLT2LaOuEcEFGL98h1QWQtlOIdW0w==} dependencies: @@ -6102,6 +6798,7 @@ packages: deprecated: Renamed to @metamask/safe-event-emitter dependencies: events: 3.3.0 + dev: true /safe-json-utils@1.1.1: resolution: {integrity: sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==} @@ -6138,6 +6835,7 @@ packages: /semver@6.3.0: resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} hasBin: true + dev: true /semver@7.3.8: resolution: {integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==} @@ -6145,7 +6843,6 @@ packages: hasBin: true dependencies: lru-cache: 6.0.0 - dev: true /sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} @@ -6443,8 +7140,8 @@ packages: react-dom: '>= 16.8.0' react-is: '>= 16.8.0' dependencies: - '@babel/helper-module-imports': 7.21.4 - '@babel/traverse': 7.21.4(supports-color@5.5.0) + '@babel/helper-module-imports': 7.22.5 + '@babel/traverse': 7.22.5(supports-color@5.5.0) '@emotion/is-prop-valid': 1.2.0 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 @@ -6461,6 +7158,10 @@ packages: /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'} + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -6479,10 +7180,12 @@ packages: engines: {node: '>=10'} dependencies: has-flag: 4.0.0 + dev: true /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + dev: true /term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} @@ -6501,6 +7204,10 @@ packages: /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 + /thread-stream@0.15.2: resolution: {integrity: sha512-UkEhKIg2pD+fjkHQKyJO3yoIvAP3N6RlNFt2dUhcS1FGvCD1cQa1M/PGknCLFIyZdtJOWQjejp7bdNqmN7zwdA==} dependencies: @@ -6598,6 +7305,10 @@ packages: /tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + /tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + dev: false + /tslib@2.5.0: resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} @@ -6615,6 +7326,13 @@ packages: yargs: 17.7.1 dev: true + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + dev: true + /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} @@ -6625,6 +7343,11 @@ packages: engines: {node: '>=10'} dev: true + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + dev: true + /type-fest@0.6.0: resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} engines: {node: '>=8'} @@ -6654,15 +7377,15 @@ packages: hasBin: true dev: true - /typescript@4.9.3: - resolution: {integrity: sha512-CIfGzTelbKNEnLpLdGFgdyKhG23CKdKgQPOBc+OUNrkJ2vr+KSzsSV5kq5iWhEQbok+quxgGzrAtGWCyU7tHnA==} + /typescript@4.9.4: + resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} engines: {node: '>=4.2.0'} hasBin: true dev: true - /typescript@4.9.4: - resolution: {integrity: sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==} - engines: {node: '>=4.2.0'} + /typescript@5.1.3: + resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} + engines: {node: '>=14.17'} hasBin: true /ufo@1.1.2: @@ -6702,6 +7425,7 @@ packages: browserslist: 4.21.5 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /upper-case-first@2.0.2: resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} @@ -6738,14 +7462,13 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - /util@0.12.4: - resolution: {integrity: sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==} + /util@0.12.5: + resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 is-typed-array: 1.1.10 - safe-buffer: 5.2.1 which-typed-array: 1.1.9 /uuid@8.3.2: @@ -6791,6 +7514,19 @@ packages: use-sync-external-store: 1.2.0(react@18.2.0) dev: true + /valtio@1.10.5(react@18.2.0): + resolution: {integrity: sha512-jTp0k63VXf4r5hPoaC6a6LCG4POkVSh629WLi1+d5PlajLsbynTMd7qAgEiOSPxzoX5iNvbN7iZ/k/g29wrNiQ==} + engines: {node: '>=12.20.0'} + peerDependencies: + react: '>=16.8' + peerDependenciesMeta: + react: + optional: true + dependencies: + proxy-compare: 2.5.1 + react: 18.2.0 + use-sync-external-store: 1.2.0(react@18.2.0) + /viem@0.1.26(typescript@4.9.4)(zod@3.21.4): resolution: {integrity: sha512-6oSGhDtgb64hjhBxOu5TPy9WT5rMww2iFuDASIOAB6kHJQ2NIVJabrnA/BQoBXbv3SJyyX/622enh5YX8MYTYg==} dependencies: @@ -6808,40 +7544,23 @@ packages: - zod dev: true - /viem@0.3.1(typescript@4.9.3): - resolution: {integrity: sha512-snWgwW3ZZzZts0fI4cqweOTzNV6vKTxTpktGxkOz4np31w6b7YUjczHU6SZ5JmWhNPWAw3PTckzj7e1V6DuPJA==} - dependencies: - '@adraffy/ens-normalize': 1.9.0 - '@noble/curves': 0.9.0 - '@noble/hashes': 1.3.0 - '@scure/bip32': 1.2.0 - '@scure/bip39': 1.2.0 - '@wagmi/chains': 0.2.16(typescript@4.9.3) - abitype: 0.7.1(typescript@4.9.4)(zod@3.21.4) - isomorphic-ws: 5.0.0(ws@8.12.0) - ws: 8.12.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - typescript - - utf-8-validate - - zod - dev: true - - /viem@0.3.1(typescript@4.9.4): - resolution: {integrity: sha512-snWgwW3ZZzZts0fI4cqweOTzNV6vKTxTpktGxkOz4np31w6b7YUjczHU6SZ5JmWhNPWAw3PTckzj7e1V6DuPJA==} + /viem@1.0.7(typescript@5.1.3): + resolution: {integrity: sha512-P/T2Zn8+V74kxO2e2NdhNR/MBtldovssigvc36+7g3DgTeETKnSS1fMQdBl0jE+Atlal+M6cuJ2HcFY7U45o0Q==} + peerDependencies: + typescript: '>=5.0.4' dependencies: '@adraffy/ens-normalize': 1.9.0 - '@noble/curves': 0.9.0 + '@noble/curves': 1.0.0 '@noble/hashes': 1.3.0 - '@scure/bip32': 1.2.0 + '@scure/bip32': 1.3.0 '@scure/bip39': 1.2.0 - '@wagmi/chains': 0.2.16(typescript@4.9.4) - abitype: 0.7.1(typescript@4.9.4)(zod@3.21.4) + '@wagmi/chains': 1.1.0(typescript@5.1.3) + abitype: 0.8.7(typescript@5.1.3) isomorphic-ws: 5.0.0(ws@8.12.0) + typescript: 5.1.3 ws: 8.12.0(bufferutil@4.0.7)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - - typescript - utf-8-validate - zod dev: false @@ -6852,11 +7571,11 @@ packages: hasBin: true dependencies: cac: 6.7.14 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) mlly: 1.3.0 pathe: 1.1.0 picocolors: 1.0.0 - vite: 4.2.0(@types/node@18.15.11) + vite: 4.3.9(@types/node@18.15.11) transitivePeerDependencies: - '@types/node' - less @@ -6877,7 +7596,7 @@ packages: '@microsoft/api-extractor': 7.34.4(@types/node@18.15.11) '@rollup/pluginutils': 5.0.2 '@rushstack/node-core-library': 3.55.2(@types/node@18.15.11) - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) fast-glob: 3.2.12 fs-extra: 10.1.0 kolorist: 1.7.0 @@ -6909,8 +7628,8 @@ packages: terser: optional: true dependencies: - esbuild: 0.15.18 - postcss: 8.4.21 + esbuild: 0.15.13 + postcss: 8.4.24 resolve: 1.22.2 rollup: 2.78.1 optionalDependencies: @@ -6951,6 +7670,39 @@ packages: fsevents: 2.3.2 dev: true + /vite@4.3.9(@types/node@18.15.11): + resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 18.15.11 + esbuild: 0.17.16 + postcss: 8.4.24 + rollup: 3.25.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + /vitest@0.31.3: resolution: {integrity: sha512-LMXIKXfI7tDClf6HIR5GjCSHZQdlmfCWWPaJwWcLF+M11V766Tzefb8LD9mLcHmX/zR0xtlfcokpg3JxEDLfeA==} engines: {node: '>=v14.18.0'} @@ -6995,7 +7747,7 @@ packages: cac: 6.7.14 chai: 4.3.7 concordance: 5.0.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.4(supports-color@5.5.0) local-pkg: 0.4.3 magic-string: 0.30.0 pathe: 1.1.0 @@ -7016,7 +7768,7 @@ packages: - terser dev: true - /wagmi@0.12.0(@babel/core@7.21.4)(ethers@5.7.2)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.4): + /wagmi@0.12.0(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4): resolution: {integrity: sha512-NUm1Z/SH+GbCVbLhQe8xPEztz3Rq0F1oxMiDrLuOMZbbydtcm2OI7QsqMDQYqL/1rXTCbniTwzlRe7sV3CeNLQ==} peerDependencies: ethers: '>=5.5.1 <6' @@ -7029,16 +7781,48 @@ packages: '@tanstack/query-sync-storage-persister': 4.29.1 '@tanstack/react-query': 4.29.1(react-dom@18.2.0)(react@18.2.0) '@tanstack/react-query-persist-client': 4.29.1(@tanstack/react-query@4.29.1) - '@wagmi/core': 0.10.0(@babel/core@7.21.4)(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) + '@wagmi/core': 0.10.0(ethers@5.7.2)(react@18.2.0)(typescript@4.9.4) abitype: 0.3.0(typescript@4.9.4)(zod@3.21.4) ethers: 5.7.2 react: 18.2.0 typescript: 4.9.4 use-sync-external-store: 1.2.0(react@18.2.0) transitivePeerDependencies: - - '@babel/core' - '@react-native-async-storage/async-storage' - - '@web3modal/standalone' + - '@walletconnect/modal' + - bufferutil + - debug + - encoding + - immer + - lokijs + - react-dom + - react-native + - supports-color + - utf-8-validate + - zod + dev: true + + /wagmi@1.2.0(react-dom@18.2.0)(react@18.2.0)(typescript@5.1.3)(viem@1.0.7): + resolution: {integrity: sha512-VSSBEVDMZAWIcWTlewC1XypHsWa1FdkdYXWdgu5pqTCqnW6JKWGsR5TbQY3poCIQoC7B2okisElZT2oVSYbA5Q==} + peerDependencies: + react: '>=17.0.0' + typescript: '>=5.0.4' + viem: '>=0.3.35' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@tanstack/query-sync-storage-persister': 4.29.1 + '@tanstack/react-query': 4.29.1(react-dom@18.2.0)(react@18.2.0) + '@tanstack/react-query-persist-client': 4.29.1(@tanstack/react-query@4.29.1) + '@wagmi/core': 1.2.0(react@18.2.0)(typescript@5.1.3)(viem@1.0.7) + abitype: 0.8.7(typescript@5.1.3) + react: 18.2.0 + typescript: 5.1.3 + use-sync-external-store: 1.2.0(react@18.2.0) + viem: 1.0.7(typescript@5.1.3) + transitivePeerDependencies: + - '@react-native-async-storage/async-storage' - bufferutil - debug - encoding @@ -7049,6 +7833,7 @@ packages: - supports-color - utf-8-validate - zod + dev: false /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -7131,6 +7916,11 @@ packages: stackback: 0.0.2 dev: true + /word-wrap@1.2.3: + resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==} + engines: {node: '>=0.10.0'} + dev: true + /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} dev: true @@ -7194,6 +7984,19 @@ packages: bufferutil: 4.0.7 utf-8-validate: 5.0.10 + /ws@8.5.0: + resolution: {integrity: sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==} + 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 + dev: false + /xtend@4.0.2: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} @@ -7212,10 +8015,10 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true /yargs-parser@18.1.3: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} @@ -7320,6 +8123,7 @@ packages: /zod@3.21.4: resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==} + dev: true /zustand@4.3.7(react@18.2.0): resolution: {integrity: sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==}