diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 87d9f5b..8c98711 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,8 +1,8 @@ -name: '🤖 CI' +name: "🤖 CI" on: push: branches: - - '**' + - "**" jobs: build: @@ -16,7 +16,7 @@ jobs: uses: actions/setup-node@v3 with: node-version: 18 - cache: 'pnpm' + cache: "pnpm" - name: 📦 Install dependencies run: pnpm install --frozen-lockfile diff --git a/.prettierrc b/.prettierrc index 0c550e0..87c30a1 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,20 +1,17 @@ { - "tabWidth": 4, - "useTabs": true, - "semi": false, - "singleQuote": true, - "trailingComma": "none", - "printWidth": 80, - "arrowParens": "avoid", - "endOfLine": "auto", - "plugins": ["@trivago/prettier-plugin-sort-imports"], - "importOrder": [ - "", - "@/.*", - "(?=./styles.module.scss)" - ], - "importOrderSeparation": true, - "importOrderSortSpecifiers": true, - "importOrderGroupNamespaceSpecifiers": true, - "importOrderCaseInsensitive": true + "tabWidth": 4, + "semi": false, + "singleQuote": false, + "printWidth": 80, + "endOfLine": "auto", + "plugins": ["@trivago/prettier-plugin-sort-imports"], + "importOrder": [ + "", + "@/.*", + "(?=./styles.module.scss)" + ], + "importOrderSeparation": true, + "importOrderSortSpecifiers": true, + "importOrderGroupNamespaceSpecifiers": true, + "importOrderCaseInsensitive": true } diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 024225c..2157532 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,6 +1,6 @@ { - "recommendations": [ - "orta.vscode-twoslash-queries", - "esbenp.prettier-vscode" - ] + "recommendations": [ + "orta.vscode-twoslash-queries", + "esbenp.prettier-vscode" + ] } diff --git a/.vscode/mev.code-snippets b/.vscode/mev.code-snippets index 4407e06..1208914 100644 --- a/.vscode/mev.code-snippets +++ b/.vscode/mev.code-snippets @@ -1,42 +1,42 @@ { - "Collector": { - "scope": "javascript,typescript", - "prefix": "Collector", - "body": [ - "import { EventEmitter } from 'node:events'", - "import { Collector } from '@/core/collector'", - "", - "const key = '$1' as const", - "", - "export class $1Collector extends Collector {", - "\tconstructor($3) {", - "\t\tsuper(key)", - "\t}", - "", - "\tgetCollectionStream = async (stream: EventEmitter) => {", - "\t\t$4this.emit(stream, {$5})", - "\t}", - "}", - "", - "export type $1Collection = Parameters<$1Collector['emit']>[1]" - ], - "description": "Create a new Collector." - }, - "Executor": { - "scope": "javascript,typescript", - "prefix": "Executor", - "body": [ - "import { Executor } from '@/core/executor'", - "import { logger } from '@/lib/logger'", - "", - "export class $1Executor<", - "\tTExecution extends {$2} = {$2}", - "> extends Executor {", - "\texecute = async ({ message }: TExecution) => {", - "\t\tlogger.info(message)", - "\t}", - "}" - ], - "description": "Create a new Executor." - } + "Collector": { + "scope": "javascript,typescript", + "prefix": "Collector", + "body": [ + "import { EventEmitter } from 'node:events'", + "import { Collector } from '@/core/collector'", + "", + "const key = '$1' as const", + "", + "export class $1Collector extends Collector {", + "\tconstructor($3) {", + "\t\tsuper(key)", + "\t}", + "", + "\tgetCollectionStream = async (stream: EventEmitter) => {", + "\t\t$4this.emit(stream, {$5})", + "\t}", + "}", + "", + "export type $1Collection = Parameters<$1Collector['emit']>[1]" + ], + "description": "Create a new Collector." + }, + "Executor": { + "scope": "javascript,typescript", + "prefix": "Executor", + "body": [ + "import { Executor } from '@/core/executor'", + "import { logger } from '@/lib/logger'", + "", + "export class $1Executor<", + "\tTExecution extends {$2} = {$2}", + "> extends Executor {", + "\texecute = async ({ message }: TExecution) => {", + "\t\tlogger.info(message)", + "\t}", + "}" + ], + "description": "Create a new Executor." + } } diff --git a/.vscode/settings.json b/.vscode/settings.json index f2fe85f..5dd2e3e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,23 +1,23 @@ { - "editor.formatOnSave": true, - "typescript.enablePromptUseWorkspaceTsdk": true, - "typescript.preferences.importModuleSpecifier": "shortest", - "editor.codeActionsOnSave": { - "source.fixAll": "always", - "source.organizeImports": "always" - }, - "typescript.tsdk": "node_modules/typescript/lib", - "editor.defaultFormatter": "esbenp.prettier-vscode", - "[javascript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[javascriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescript]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - }, - "[typescriptreact]": { - "editor.defaultFormatter": "esbenp.prettier-vscode" - } + "editor.formatOnSave": true, + "typescript.enablePromptUseWorkspaceTsdk": true, + "typescript.preferences.importModuleSpecifier": "shortest", + "editor.codeActionsOnSave": { + "source.fixAll": "always", + "source.organizeImports": "always" + }, + "typescript.tsdk": "node_modules/typescript/lib", + "editor.defaultFormatter": "esbenp.prettier-vscode", + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + } } diff --git a/package.json b/package.json index 246a946..c3f6c15 100644 --- a/package.json +++ b/package.json @@ -1,54 +1,57 @@ { - "name": "@nftchance/mev", - "author": "nftchance", - "license": "BUSL-1.1", - "version": "0.0.0", - "description": "The controlling property of an aggressive long-tail mev bot.", - "type": "module", - "main": "dist/index.js", - "module": "dist/index.js", - "types": "dist/index.d.ts", - "bin": { - "mev": "dist/cli/cli.js" - }, - "files": ["src", "dist"], - "publishConfig": { - "access": "public" - }, - "scripts": { - "build": "tsup", - "lint": "tsc --noEmit", - "premev": "pnpm build", - "mev": "node dist/cli/cli.js", - "prereferences": "pnpm build", - "references": "node dist/lib/references.js", - "preinstall": "npx only-allow pnpm" - }, - "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^4.2.0", - "@types/cli-progress": "^3.11.3", - "@types/fs-extra": "^11.0.2", - "@types/js-yaml": "^4.0.7", - "@types/node": "^20.8.4", - "abi-to-sol": "^0.8.0", - "execa": "^8.0.1", - "prettier": "^3.0.3", - "typescript": "^5.2.2" - }, - "dependencies": { - "@flashbots/ethers-provider-bundle": "^0.6.2", - "@opensea/stream-js": "^0.1.2", - "axios": "^1.5.1", - "bundle-require": "^4.0.2", - "commander": "^11.0.0", - "dedent": "^1.5.1", - "dotenv": "^16.3.1", - "ethers": "^5.7.2", - "find-up": "^6.3.0", - "fs-extra": "^11.1.1", - "opensea-js": "^6.1.11", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "tsup": "^7.2.0" - } + "name": "@nftchance/mev", + "author": "nftchance", + "license": "BUSL-1.1", + "version": "0.0.0", + "description": "The controlling property of an aggressive long-tail mev bot.", + "type": "module", + "main": "dist/index.js", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "bin": { + "mev": "dist/cli/cli.js" + }, + "files": [ + "src", + "dist" + ], + "publishConfig": { + "access": "public" + }, + "scripts": { + "build": "tsup", + "lint": "tsc --noEmit", + "premev": "pnpm build", + "mev": "node dist/cli/cli.js", + "prereferences": "pnpm build", + "references": "node dist/lib/references.js", + "preinstall": "npx only-allow pnpm" + }, + "devDependencies": { + "@trivago/prettier-plugin-sort-imports": "^4.2.0", + "@types/cli-progress": "^3.11.3", + "@types/fs-extra": "^11.0.2", + "@types/js-yaml": "^4.0.7", + "@types/node": "^20.8.4", + "abi-to-sol": "^0.8.0", + "execa": "^8.0.1", + "prettier": "^3.0.3", + "typescript": "^5.2.2" + }, + "dependencies": { + "@flashbots/ethers-provider-bundle": "^0.6.2", + "@opensea/stream-js": "^0.1.2", + "axios": "^1.5.1", + "bundle-require": "^4.0.2", + "commander": "^11.0.0", + "dedent": "^1.5.1", + "dotenv": "^16.3.1", + "ethers": "^5.7.2", + "find-up": "^6.3.0", + "fs-extra": "^11.1.1", + "opensea-js": "^6.1.11", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "tsup": "^7.2.0" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7ddf5b..05d05b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,2986 +1,4131 @@ -lockfileVersion: '6.0' +lockfileVersion: "6.0" settings: - autoInstallPeers: true - excludeLinksFromLockfile: false + autoInstallPeers: true + excludeLinksFromLockfile: false dependencies: - '@flashbots/ethers-provider-bundle': - specifier: ^0.6.2 - version: 0.6.2(ethers@5.7.2) - '@opensea/stream-js': - specifier: ^0.1.2 - version: 0.1.2 - axios: - specifier: ^1.5.1 - version: 1.5.1 - bundle-require: - specifier: ^4.0.2 - version: 4.0.2(esbuild@0.19.4) - commander: - specifier: ^11.0.0 - version: 11.0.0 - dedent: - specifier: ^1.5.1 - version: 1.5.1 - dotenv: - specifier: ^16.3.1 - version: 16.3.1 - ethers: - specifier: ^5.7.2 - version: 5.7.2 - find-up: - specifier: ^6.3.0 - version: 6.3.0 - fs-extra: - specifier: ^11.1.1 - version: 11.1.1 - opensea-js: - specifier: ^6.1.11 - version: 6.1.11 - pathe: - specifier: ^1.1.1 - version: 1.1.1 - picocolors: - specifier: ^1.0.0 - version: 1.0.0 - tsup: - specifier: ^7.2.0 - version: 7.2.0(typescript@5.2.2) + "@flashbots/ethers-provider-bundle": + specifier: ^0.6.2 + version: 0.6.2(ethers@5.7.2) + "@opensea/stream-js": + specifier: ^0.1.2 + version: 0.1.2 + axios: + specifier: ^1.5.1 + version: 1.5.1 + bundle-require: + specifier: ^4.0.2 + version: 4.0.2(esbuild@0.19.4) + commander: + specifier: ^11.0.0 + version: 11.0.0 + dedent: + specifier: ^1.5.1 + version: 1.5.1 + dotenv: + specifier: ^16.3.1 + version: 16.3.1 + ethers: + specifier: ^5.7.2 + version: 5.7.2 + find-up: + specifier: ^6.3.0 + version: 6.3.0 + fs-extra: + specifier: ^11.1.1 + version: 11.1.1 + opensea-js: + specifier: ^6.1.11 + version: 6.1.11 + pathe: + specifier: ^1.1.1 + version: 1.1.1 + picocolors: + specifier: ^1.0.0 + version: 1.0.0 + tsup: + specifier: ^7.2.0 + version: 7.2.0(typescript@5.2.2) devDependencies: - '@trivago/prettier-plugin-sort-imports': - specifier: ^4.2.0 - version: 4.2.0(prettier@3.0.3) - '@types/cli-progress': - specifier: ^3.11.3 - version: 3.11.3 - '@types/fs-extra': - specifier: ^11.0.2 - version: 11.0.2 - '@types/js-yaml': - specifier: ^4.0.7 - version: 4.0.7 - '@types/node': - specifier: ^20.8.4 - version: 20.8.4 - abi-to-sol: - specifier: ^0.8.0 - version: 0.8.0 - execa: - specifier: ^8.0.1 - version: 8.0.1 - prettier: - specifier: ^3.0.3 - version: 3.0.3 - typescript: - specifier: ^5.2.2 - version: 5.2.2 + "@trivago/prettier-plugin-sort-imports": + specifier: ^4.2.0 + version: 4.2.0(prettier@3.0.3) + "@types/cli-progress": + specifier: ^3.11.3 + version: 3.11.3 + "@types/fs-extra": + specifier: ^11.0.2 + version: 11.0.2 + "@types/js-yaml": + specifier: ^4.0.7 + version: 4.0.7 + "@types/node": + specifier: ^20.8.4 + version: 20.8.4 + abi-to-sol: + specifier: ^0.8.0 + version: 0.8.0 + execa: + specifier: ^8.0.1 + version: 8.0.1 + prettier: + specifier: ^3.0.3 + version: 3.0.3 + typescript: + specifier: ^5.2.2 + version: 5.2.2 packages: + /@0xsequence/abi@0.43.34: + resolution: + { + integrity: sha512-wZ3JLA4kw2em8A7gFW5oESdo+F3G/WjIhCp/aZ0x3UgayBxrQjwBURoqDQPrY5k/BJ4R68LIEabLTrpSXesh1g==, + } + dev: false + + /@0xsequence/api@0.43.34: + resolution: + { + integrity: sha512-YmV65zn9vZiprEXLfLVIWANK3WBag3d+N0Sc5Br19ezmCFBg52DdzumJIM+8S3maUE2JdL9RbgBLZ+9JOBKnEg==, + } + dev: false + + /@0xsequence/auth@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-dw58nX2gc5QkIkzeVCheFZrRQgHwp4ZlJdg2e5gk7jU8eEu48oWP6faz30MFfiJfUCaysbGZ0o9+mGPqwpPG2g==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/api": 0.43.34 + "@0xsequence/config": 0.43.34(ethers@5.7.2) + "@0xsequence/ethauth": 0.8.1(ethers@5.7.2) + "@0xsequence/indexer": 0.43.34 + "@0xsequence/metadata": 0.43.34 + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/provider": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + "@0xsequence/wallet": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@0xsequence/config@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-rOkNLB7z64ZkURzTXMF+4zTPo17VUei6vT5sp9Uzd5zamEneWGFdUJltzDc8sLdUWTEVdkyckaTSTS+8/sHuLw==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/multicall": 0.43.34(ethers@5.7.2) + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@0xsequence/ethauth@0.8.1(ethers@5.7.2): + resolution: + { + integrity: sha512-P21cxRSS+2mDAqFVAJt0lwQFtbObX+Ewlj8DMyDELp81+QbfHFh6LCyu8dTXNdBx6UbmRFOCSBno5Txd50cJPQ==, + } + peerDependencies: + ethers: ">=5.5" + dependencies: + ethers: 5.7.2 + js-base64: 3.7.5 + dev: false + + /@0xsequence/guard@0.43.34: + resolution: + { + integrity: sha512-U8uIjC8nifDgugo+4V3siu5fs86TqOmsb4Wvx0n6G/zbX2LaPGOYwHqCYkWrukETnk/FYiy8GoTuV11T9jIrSg==, + } + dev: false + + /@0xsequence/indexer@0.43.34: + resolution: + { + integrity: sha512-u7dnbLGH447Utph3Ebvfmi98kTebdc8+we1L6FSYpodpvN3q/lb5de8BL1Jbmry0m9MSLy1iGwdGA0AivwNgtA==, + } + dev: false + + /@0xsequence/metadata@0.43.34: + resolution: + { + integrity: sha512-ZJO+cerq2gQqktqyCsD1zfAAeOzsCDZXEDTO47oT5v42Bl4L50Vlj1PxNlo9iKzYooCA2LZjeWJkrvzfa0cvjA==, + } + dev: false + + /@0xsequence/multicall@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-7gLlX3TOi+qZYe28DVdqkQJBeibl9JOdCcHaw9zkQYAZ+2WLouZl5Rlv0ZHEwX46gOiG1mCt/tZugoRkguKE0Q==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@0xsequence/network@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-KH2k4zEiXBHBathU+T7AXxzSDRm0XJ2+bJSSKci+RWesLPT2TwZY7YLfSWjSyp20EPqeyuaG7Snn86e60Zi/eg==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/indexer": 0.43.34 + "@0xsequence/provider": 0.43.34(ethers@5.7.2) + "@0xsequence/relayer": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@0xsequence/provider@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-AuMiP3budYbtql1L8eemcmxknuN5QJcPirr4DtkCnifCMGDoF/savSuue6+7K65HGj/8yzdFrRlt0MYavYWVoA==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/auth": 0.43.34(ethers@5.7.2) + "@0xsequence/config": 0.43.34(ethers@5.7.2) + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/relayer": 0.43.34(ethers@5.7.2) + "@0xsequence/transactions": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + "@0xsequence/wallet": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + eventemitter2: 6.4.9 + webextension-polyfill: 0.10.0 + dev: false + + /@0xsequence/relayer@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-Kl6LitpG24i3ha6CxBRnFAD1/vAbC1+pub7yywhwH8jmnd7KncHAZNgYT48BZI6B2bOeQiY+tTevUcgYw0hSzA==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/config": 0.43.34(ethers@5.7.2) + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/transactions": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@0xsequence/transactions@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-C6xDBqDOpx3+fuZ4OWStpAgAMKW7het1a6cwuQRalN8s+3n/SkjgzSK8Xc/5FT4FVExJuwo/D/AkvyOFz7AaCg==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/config": 0.43.34(ethers@5.7.2) + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@0xsequence/utils@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-Rp0vVeBUeTmOSpXwy+Adlycitg0V4qjao1QvCqONgu9Rh1NIVpocVLx42iSopFQFIALhYB0ZrHp+ns6QsC08+A==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + ethers: 5.7.2 + js-base64: 3.7.5 + dev: false + + /@0xsequence/wallet@0.43.34(ethers@5.7.2): + resolution: + { + integrity: sha512-8ZojYXcLnItXfmBy1PRR4qf25GKV5E0bcGLb3tuw/7M6QlFi1CqgRcHuuXYZ4XYyLxLBaKUC1+3sNqcFJGAirA==, + } + peerDependencies: + ethers: ">=5.5 < 6" + dependencies: + "@0xsequence/abi": 0.43.34 + "@0xsequence/config": 0.43.34(ethers@5.7.2) + "@0xsequence/guard": 0.43.34 + "@0xsequence/network": 0.43.34(ethers@5.7.2) + "@0xsequence/relayer": 0.43.34(ethers@5.7.2) + "@0xsequence/transactions": 0.43.34(ethers@5.7.2) + "@0xsequence/utils": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + dev: false + + /@babel/code-frame@7.22.13: + resolution: + { + integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/highlight": 7.22.20 + chalk: 2.4.2 + dev: true + + /@babel/generator@7.17.7: + resolution: + { + integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + dev: true + + /@babel/helper-environment-visitor@7.22.20: + resolution: + { + integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-function-name@7.23.0: + resolution: + { + integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/template": 7.22.15 + "@babel/types": 7.23.0 + dev: true + + /@babel/helper-hoist-variables@7.22.5: + resolution: + { + integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.0 + dev: true + + /@babel/helper-split-export-declaration@7.22.6: + resolution: + { + integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/types": 7.23.0 + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: + { + integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/helper-validator-identifier@7.22.20: + resolution: + { + integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==, + } + engines: { node: ">=6.9.0" } + dev: true + + /@babel/highlight@7.22.20: + resolution: + { + integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + dev: true + + /@babel/parser@7.23.0: + resolution: + { + integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==, + } + engines: { node: ">=6.0.0" } + hasBin: true + dependencies: + "@babel/types": 7.17.0 + dev: true + + /@babel/runtime@7.23.2: + resolution: + { + integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==, + } + engines: { node: ">=6.9.0" } + dependencies: + regenerator-runtime: 0.14.0 + dev: true + + /@babel/template@7.22.15: + resolution: + { + integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.22.13 + "@babel/parser": 7.23.0 + "@babel/types": 7.23.0 + dev: true + + /@babel/traverse@7.17.3: + resolution: + { + integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/code-frame": 7.22.13 + "@babel/generator": 7.17.7 + "@babel/helper-environment-visitor": 7.22.20 + "@babel/helper-function-name": 7.23.0 + "@babel/helper-hoist-variables": 7.22.5 + "@babel/helper-split-export-declaration": 7.22.6 + "@babel/parser": 7.23.0 + "@babel/types": 7.17.0 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/types@7.17.0: + resolution: + { + integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-validator-identifier": 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@babel/types@7.23.0: + resolution: + { + integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==, + } + engines: { node: ">=6.9.0" } + dependencies: + "@babel/helper-string-parser": 7.22.5 + "@babel/helper-validator-identifier": 7.22.20 + to-fast-properties: 2.0.0 + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: + { + integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm64@0.19.4: + resolution: + { + integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: + { + integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-arm@0.19.4: + resolution: + { + integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: + { + integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true + + /@esbuild/android-x64@0.19.4: + resolution: + { + integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [android] + requiresBuild: true + dev: false + optional: true - /@0xsequence/abi@0.43.34: - resolution: {integrity: sha512-wZ3JLA4kw2em8A7gFW5oESdo+F3G/WjIhCp/aZ0x3UgayBxrQjwBURoqDQPrY5k/BJ4R68LIEabLTrpSXesh1g==} - dev: false - - /@0xsequence/api@0.43.34: - resolution: {integrity: sha512-YmV65zn9vZiprEXLfLVIWANK3WBag3d+N0Sc5Br19ezmCFBg52DdzumJIM+8S3maUE2JdL9RbgBLZ+9JOBKnEg==} - dev: false - - /@0xsequence/auth@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-dw58nX2gc5QkIkzeVCheFZrRQgHwp4ZlJdg2e5gk7jU8eEu48oWP6faz30MFfiJfUCaysbGZ0o9+mGPqwpPG2g==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/api': 0.43.34 - '@0xsequence/config': 0.43.34(ethers@5.7.2) - '@0xsequence/ethauth': 0.8.1(ethers@5.7.2) - '@0xsequence/indexer': 0.43.34 - '@0xsequence/metadata': 0.43.34 - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/provider': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - '@0xsequence/wallet': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@0xsequence/config@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-rOkNLB7z64ZkURzTXMF+4zTPo17VUei6vT5sp9Uzd5zamEneWGFdUJltzDc8sLdUWTEVdkyckaTSTS+8/sHuLw==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/multicall': 0.43.34(ethers@5.7.2) - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@0xsequence/ethauth@0.8.1(ethers@5.7.2): - resolution: {integrity: sha512-P21cxRSS+2mDAqFVAJt0lwQFtbObX+Ewlj8DMyDELp81+QbfHFh6LCyu8dTXNdBx6UbmRFOCSBno5Txd50cJPQ==} - peerDependencies: - ethers: '>=5.5' - dependencies: - ethers: 5.7.2 - js-base64: 3.7.5 - dev: false - - /@0xsequence/guard@0.43.34: - resolution: {integrity: sha512-U8uIjC8nifDgugo+4V3siu5fs86TqOmsb4Wvx0n6G/zbX2LaPGOYwHqCYkWrukETnk/FYiy8GoTuV11T9jIrSg==} - dev: false - - /@0xsequence/indexer@0.43.34: - resolution: {integrity: sha512-u7dnbLGH447Utph3Ebvfmi98kTebdc8+we1L6FSYpodpvN3q/lb5de8BL1Jbmry0m9MSLy1iGwdGA0AivwNgtA==} - dev: false - - /@0xsequence/metadata@0.43.34: - resolution: {integrity: sha512-ZJO+cerq2gQqktqyCsD1zfAAeOzsCDZXEDTO47oT5v42Bl4L50Vlj1PxNlo9iKzYooCA2LZjeWJkrvzfa0cvjA==} - dev: false - - /@0xsequence/multicall@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-7gLlX3TOi+qZYe28DVdqkQJBeibl9JOdCcHaw9zkQYAZ+2WLouZl5Rlv0ZHEwX46gOiG1mCt/tZugoRkguKE0Q==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@0xsequence/network@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-KH2k4zEiXBHBathU+T7AXxzSDRm0XJ2+bJSSKci+RWesLPT2TwZY7YLfSWjSyp20EPqeyuaG7Snn86e60Zi/eg==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/indexer': 0.43.34 - '@0xsequence/provider': 0.43.34(ethers@5.7.2) - '@0xsequence/relayer': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@0xsequence/provider@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-AuMiP3budYbtql1L8eemcmxknuN5QJcPirr4DtkCnifCMGDoF/savSuue6+7K65HGj/8yzdFrRlt0MYavYWVoA==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/auth': 0.43.34(ethers@5.7.2) - '@0xsequence/config': 0.43.34(ethers@5.7.2) - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/relayer': 0.43.34(ethers@5.7.2) - '@0xsequence/transactions': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - '@0xsequence/wallet': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - eventemitter2: 6.4.9 - webextension-polyfill: 0.10.0 - dev: false - - /@0xsequence/relayer@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-Kl6LitpG24i3ha6CxBRnFAD1/vAbC1+pub7yywhwH8jmnd7KncHAZNgYT48BZI6B2bOeQiY+tTevUcgYw0hSzA==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/config': 0.43.34(ethers@5.7.2) - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/transactions': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@0xsequence/transactions@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-C6xDBqDOpx3+fuZ4OWStpAgAMKW7het1a6cwuQRalN8s+3n/SkjgzSK8Xc/5FT4FVExJuwo/D/AkvyOFz7AaCg==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/config': 0.43.34(ethers@5.7.2) - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@0xsequence/utils@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-Rp0vVeBUeTmOSpXwy+Adlycitg0V4qjao1QvCqONgu9Rh1NIVpocVLx42iSopFQFIALhYB0ZrHp+ns6QsC08+A==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - ethers: 5.7.2 - js-base64: 3.7.5 - dev: false - - /@0xsequence/wallet@0.43.34(ethers@5.7.2): - resolution: {integrity: sha512-8ZojYXcLnItXfmBy1PRR4qf25GKV5E0bcGLb3tuw/7M6QlFi1CqgRcHuuXYZ4XYyLxLBaKUC1+3sNqcFJGAirA==} - peerDependencies: - ethers: '>=5.5 < 6' - dependencies: - '@0xsequence/abi': 0.43.34 - '@0xsequence/config': 0.43.34(ethers@5.7.2) - '@0xsequence/guard': 0.43.34 - '@0xsequence/network': 0.43.34(ethers@5.7.2) - '@0xsequence/relayer': 0.43.34(ethers@5.7.2) - '@0xsequence/transactions': 0.43.34(ethers@5.7.2) - '@0xsequence/utils': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - dev: false - - /@babel/code-frame@7.22.13: - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 - dev: true - - /@babel/generator@7.17.7: - resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.17.0 - jsesc: 2.5.2 - source-map: 0.5.7 - dev: true - - /@babel/helper-environment-visitor@7.22.20: - resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-function-name@7.23.0: - resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.22.15 - '@babel/types': 7.23.0 - dev: true - - /@babel/helper-hoist-variables@7.22.5: - resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - - /@babel/helper-split-export-declaration@7.22.6: - resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/types': 7.23.0 - dev: true - - /@babel/helper-string-parser@7.22.5: - resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/helper-validator-identifier@7.22.20: - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - dev: true - - /@babel/highlight@7.22.20: - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - dev: true - - /@babel/parser@7.23.0: - resolution: {integrity: sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==} - engines: {node: '>=6.0.0'} - hasBin: true - dependencies: - '@babel/types': 7.17.0 - dev: true - - /@babel/runtime@7.23.2: - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.0 - dev: true - - /@babel/template@7.22.15: - resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/parser': 7.23.0 - '@babel/types': 7.23.0 - dev: true - - /@babel/traverse@7.17.3: - resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.17.7 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.0 - '@babel/types': 7.17.0 - debug: 4.3.4 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@babel/types@7.17.0: - resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - - /@babel/types@7.23.0: - resolution: {integrity: sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/helper-string-parser': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - to-fast-properties: 2.0.0 - dev: true - - /@esbuild/android-arm64@0.18.20: - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm64@0.19.4: - resolution: {integrity: sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm@0.18.20: - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-arm@0.19.4: - resolution: {integrity: sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==} - engines: {node: '>=12'} - cpu: [arm] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-x64@0.18.20: - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/android-x64@0.19.4: - resolution: {integrity: sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==} - engines: {node: '>=12'} - cpu: [x64] - os: [android] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-arm64@0.18.20: - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-arm64@0.19.4: - resolution: {integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-x64@0.18.20: - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/darwin-x64@0.19.4: - resolution: {integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==} - engines: {node: '>=12'} - cpu: [x64] - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-arm64@0.18.20: - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-arm64@0.19.4: - resolution: {integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==} - engines: {node: '>=12'} - cpu: [arm64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-x64@0.18.20: - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/freebsd-x64@0.19.4: - resolution: {integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==} - engines: {node: '>=12'} - cpu: [x64] - os: [freebsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm64@0.18.20: - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm64@0.19.4: - resolution: {integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==} - engines: {node: '>=12'} - cpu: [arm64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm@0.18.20: - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-arm@0.19.4: - resolution: {integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==} - engines: {node: '>=12'} - cpu: [arm] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ia32@0.18.20: - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ia32@0.19.4: - resolution: {integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==} - engines: {node: '>=12'} - cpu: [ia32] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-loong64@0.18.20: - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-loong64@0.19.4: - resolution: {integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==} - engines: {node: '>=12'} - cpu: [loong64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-mips64el@0.18.20: - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-mips64el@0.19.4: - resolution: {integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==} - engines: {node: '>=12'} - cpu: [mips64el] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ppc64@0.18.20: - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-ppc64@0.19.4: - resolution: {integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==} - engines: {node: '>=12'} - cpu: [ppc64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-riscv64@0.18.20: - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-riscv64@0.19.4: - resolution: {integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==} - engines: {node: '>=12'} - cpu: [riscv64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-s390x@0.18.20: - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-s390x@0.19.4: - resolution: {integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==} - engines: {node: '>=12'} - cpu: [s390x] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-x64@0.18.20: - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/linux-x64@0.19.4: - resolution: {integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==} - engines: {node: '>=12'} - cpu: [x64] - os: [linux] - requiresBuild: true - dev: false - optional: true - - /@esbuild/netbsd-x64@0.18.20: - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/netbsd-x64@0.19.4: - resolution: {integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==} - engines: {node: '>=12'} - cpu: [x64] - os: [netbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/openbsd-x64@0.18.20: - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/openbsd-x64@0.19.4: - resolution: {integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==} - engines: {node: '>=12'} - cpu: [x64] - os: [openbsd] - requiresBuild: true - dev: false - optional: true - - /@esbuild/sunos-x64@0.18.20: - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /@esbuild/sunos-x64@0.19.4: - resolution: {integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==} - engines: {node: '>=12'} - cpu: [x64] - os: [sunos] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-arm64@0.18.20: - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-arm64@0.19.4: - resolution: {integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==} - engines: {node: '>=12'} - cpu: [arm64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-ia32@0.18.20: - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-ia32@0.19.4: - resolution: {integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==} - engines: {node: '>=12'} - cpu: [ia32] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-x64@0.18.20: - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@esbuild/win32-x64@0.19.4: - resolution: {integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==} - engines: {node: '>=12'} - cpu: [x64] - os: [win32] - requiresBuild: true - dev: false - optional: true - - /@ethereumjs/rlp@4.0.1: - resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} - engines: {node: '>=14'} - hasBin: true - dev: false - - /@ethereumjs/util@8.1.0: - resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} - engines: {node: '>=14'} - dependencies: - '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.2 - micro-ftch: 0.3.1 - dev: false - - /@ethersproject/abi@5.7.0: - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - - /@ethersproject/abstract-provider@5.7.0: - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - dev: false - - /@ethersproject/abstract-signer@5.7.0: - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - dev: false - - /@ethersproject/address@5.7.0: - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/rlp': 5.7.0 - dev: false - - /@ethersproject/base64@5.7.0: - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 - dev: false - - /@ethersproject/basex@5.7.0: - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - dev: false - - /@ethersproject/bignumber@5.7.0: - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - dev: false - - /@ethersproject/bytes@5.7.0: - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - dependencies: - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/constants@5.7.0: - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - dev: false - - /@ethersproject/contracts@5.7.0: - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/transactions': 5.7.0 - dev: false - - /@ethersproject/hash@5.7.0: - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - - /@ethersproject/hdnode@5.7.0: - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - dev: false - - /@ethersproject/json-wallets@5.7.0: - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - dependencies: - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - aes-js: 3.0.0 - scrypt-js: 3.0.1 - dev: false - - /@ethersproject/keccak256@5.7.0: - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - dev: false - - /@ethersproject/logger@5.7.0: - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - dev: false - - /@ethersproject/networks@5.7.1: - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - dependencies: - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/pbkdf2@5.7.0: - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 - dev: false - - /@ethersproject/properties@5.7.0: - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - dependencies: - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/providers@5.7.2: - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bech32: 1.1.4 - ws: 7.4.6 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@ethersproject/random@5.7.0: - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/rlp@5.7.0: - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/sha2@5.7.0: - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - dev: false - - /@ethersproject/signing-key@5.7.0: - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - bn.js: 5.2.1 - elliptic: 6.5.4 - hash.js: 1.1.7 - dev: false - - /@ethersproject/solidity@5.7.0: - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - - /@ethersproject/strings@5.7.0: - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/transactions@5.7.0: - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - dependencies: - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - dev: false - - /@ethersproject/units@5.7.0: - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - dev: false - - /@ethersproject/wallet@5.7.0: - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - dependencies: - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/random': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wordlists': 5.7.0 - dev: false - - /@ethersproject/web@5.7.1: - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - dependencies: - '@ethersproject/base64': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - - /@ethersproject/wordlists@5.7.0: - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/strings': 5.7.0 - dev: false - - /@flashbots/ethers-provider-bundle@0.6.2(ethers@5.7.2): - resolution: {integrity: sha512-W4Hi47zWggWgLBwhoxH3qaojudAjcbBU+ldEYi5o06UQm/25Hk/AUvCLiN+9nvy1g3xxpF9QBdMniUwjC4cpBw==} - peerDependencies: - ethers: 5.7.2 - dependencies: - ethers: 5.7.2 - dev: false - - /@jridgewell/gen-mapping@0.3.3: - resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} - engines: {node: '>=6.0.0'} - dependencies: - '@jridgewell/set-array': 1.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.9 - dev: false - - /@jridgewell/resolve-uri@3.1.1: - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/set-array@1.1.2: - resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} - engines: {node: '>=6.0.0'} - dev: false - - /@jridgewell/sourcemap-codec@1.4.15: - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - dev: false - - /@jridgewell/trace-mapping@0.3.9: - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 - dev: false - - /@noble/curves@1.1.0: - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} - dependencies: - '@noble/hashes': 1.3.1 - dev: false - - /@noble/hashes@1.3.1: - resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} - engines: {node: '>= 16'} - dev: false - - /@nodelib/fs.scandir@2.1.5: - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - dev: false - - /@nodelib/fs.stat@2.0.5: - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} - engines: {node: '>= 8'} - dev: false - - /@nodelib/fs.walk@1.2.8: - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} - engines: {node: '>= 8'} - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 - dev: false - - /@opensea/seaport-js@2.0.8: - resolution: {integrity: sha512-uOjqXtXK49vbOoxXy/z54evxV3OtExjNe81E9CK6v6nOX0vDZH6dnDSTbC8ELL1RrAXM8dmDMtA0szepDyoaKQ==} - engines: {node: '>=16.0.0'} - requiresBuild: true - dependencies: - '@0xsequence/multicall': 0.43.34(ethers@5.7.2) - ethers: 5.7.2 - merkletreejs: 0.3.10 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /@opensea/stream-js@0.1.2: - resolution: {integrity: sha512-o68yuCM2W8K6IcIIdvnzzR21/QBxNR4ewFRFUFSphSWrW8FHuxxIobtAljF+sWxe1Mc5Xzs4UKPZ7oBSs+LboQ==} - engines: {node: '>=16.11.0'} - dependencies: - phoenix: 1.7.9 - dev: false - - /@scure/base@1.1.3: - resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} - dev: false - - /@scure/bip32@1.3.1: - resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.3 - dev: false - - /@scure/bip39@1.2.1: - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} - dependencies: - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.3 - dev: false - - /@solidity-parser/parser@0.16.1: - resolution: {integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==} - requiresBuild: true - dependencies: - antlr4ts: 0.5.0-alpha.4 - dev: true - optional: true - - /@trivago/prettier-plugin-sort-imports@4.2.0(prettier@3.0.3): - resolution: {integrity: sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==} - peerDependencies: - '@vue/compiler-sfc': 3.x - prettier: 2.x - 3.x - peerDependenciesMeta: - '@vue/compiler-sfc': + /@esbuild/darwin-arm64@0.18.20: + resolution: + { + integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - dependencies: - '@babel/generator': 7.17.7 - '@babel/parser': 7.23.0 - '@babel/traverse': 7.17.3 - '@babel/types': 7.17.0 - javascript-natural-sort: 0.7.1 - lodash: 4.17.21 - prettier: 3.0.3 - transitivePeerDependencies: - - supports-color - dev: true - - /@truffle/abi-utils@1.0.3: - resolution: {integrity: sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==} - engines: {node: ^16.20 || ^18.16 || >=20} - dependencies: - change-case: 3.0.2 - fast-check: 3.1.1 - web3-utils: 1.10.0 - dev: true - - /@truffle/contract-schema@3.4.16: - resolution: {integrity: sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==} - engines: {node: ^16.20 || ^18.16 || >=20} - dependencies: - ajv: 6.12.6 - debug: 4.3.4 - transitivePeerDependencies: - - supports-color - dev: true - - /@types/bn.js@5.1.3: - resolution: {integrity: sha512-wT1B4iIO82ecXkdN6waCK8Ou7E71WU+mP1osDA5Q8c6Ur+ozU2vIKUIhSpUr6uE5L2YHocKS1Z2jG2fBC1YVeg==} - dependencies: - '@types/node': 20.8.4 - dev: true - - /@types/cli-progress@3.11.3: - resolution: {integrity: sha512-/+C9xAdVtc+g5yHHkGBThgAA8rYpi5B+2ve3wLtybYj0JHEBs57ivR4x/zGfSsplRnV+psE91Nfin1soNKqz5Q==} - dependencies: - '@types/node': 20.8.4 - dev: true - - /@types/fs-extra@11.0.2: - resolution: {integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==} - dependencies: - '@types/jsonfile': 6.1.2 - '@types/node': 20.8.4 - dev: true - - /@types/js-yaml@4.0.7: - resolution: {integrity: sha512-RJZP9WAMMr1514KbdSXkLRrKvYQacjr1+HWnY8pui/uBTBoSgD9ZGR17u/d4nb9NpERp0FkdLBe7hq8NIPBgkg==} - dev: true - - /@types/jsonfile@6.1.2: - resolution: {integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==} - dependencies: - '@types/node': 20.8.4 - dev: true - - /@types/node@20.8.4: - resolution: {integrity: sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==} - dependencies: - undici-types: 5.25.3 - dev: true - - /@types/pbkdf2@3.1.1: - resolution: {integrity: sha512-4HCoGwR3221nOc7G0Z/6KgTNGgaaFGkbGrtUJsB+zlKX2LBVjFHHIUkieMBgHHXgBH5Gq6dZHJKdBYdtlhBQvw==} - dependencies: - '@types/node': 20.8.4 - dev: true - - /@types/secp256k1@4.0.5: - resolution: {integrity: sha512-aIonTBMErtE3T9MxDvTZRzcrT/mCqpEZBw3CCY/i+oG9n57N/+7obBkhFgavUAIrX21bU0LHg1XRgtaLdelBhA==} - dependencies: - '@types/node': 20.8.4 - dev: true - - /abi-to-sol@0.8.0: - resolution: {integrity: sha512-hCGE+K1YiepxpWik0yPCN3Dfi+GY0kg2RNy29Mdjho2cXnhauvmsuvYjNDV8TFOhBq3a95KZUIfPUIkqqjHPYg==} - hasBin: true - dependencies: - '@truffle/abi-utils': 1.0.3 - '@truffle/contract-schema': 3.4.16 - ajv: 6.12.6 - better-ajv-errors: 0.8.2(ajv@6.12.6) - neodoc: 2.0.2 - semver: 7.5.4 - source-map-support: 0.5.21 - optionalDependencies: - prettier: 2.8.8 - prettier-plugin-solidity: 1.1.3(prettier@2.8.8) - transitivePeerDependencies: - - supports-color - dev: true - - /aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - dev: false - - /ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - dev: true - - /ansi-regex@2.1.1: - resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /antlr4ts@0.5.0-alpha.4: - resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} - requiresBuild: true - dev: true - optional: true - - /any-promise@1.3.0: - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - dev: false - - /anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - dev: false - - /array-union@2.1.0: - resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} - engines: {node: '>=8'} - dev: false - - /asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - dev: false - - /axios@1.5.1: - resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} - dependencies: - follow-redirects: 1.15.3 - form-data: 4.0.0 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - dev: false - - /balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - dev: false - - /base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - dev: false - - /better-ajv-errors@0.8.2(ajv@6.12.6): - resolution: {integrity: sha512-FnODTBJSQSHmJXDLPiC7ca0dC4S1HSTPv1+Hg2sm/C71i3Dj0l1jcUEaq/3OQ6MmnUveshTsUvUj65pDSr3Qow==} - peerDependencies: - ajv: 4.11.8 - 8 - dependencies: - '@babel/code-frame': 7.22.13 - '@babel/runtime': 7.23.2 - ajv: 6.12.6 - chalk: 2.4.2 - core-js: 3.33.0 - json-to-ast: 2.1.0 - jsonpointer: 5.0.1 - leven: 3.1.0 - dev: true - - /bignumber.js@9.1.2: - resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - dev: false - - /binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - dev: false - - /blakejs@1.2.1: - resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} - dev: true - - /bn.js@4.11.6: - resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} - - /bn.js@4.12.0: - resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} - - /bn.js@5.2.1: - resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - - /brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - dev: false - - /braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - dev: false - - /brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - /browserify-aes@1.2.0: - resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /bs58@4.0.1: - resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} - dependencies: - base-x: 3.0.9 - dev: true - - /bs58check@2.1.2: - resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} - dependencies: - bs58: 4.0.1 - create-hash: 1.2.0 - safe-buffer: 5.2.1 - dev: true - - /buffer-from@1.1.2: - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - dev: true - - /buffer-reverse@1.0.1: - resolution: {integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==} - dev: false - - /buffer-xor@1.0.3: - resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} - dev: true - - /bundle-require@4.0.2(esbuild@0.18.20): - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.18.20 - load-tsconfig: 0.2.5 - dev: false - - /bundle-require@4.0.2(esbuild@0.19.4): - resolution: {integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - peerDependencies: - esbuild: '>=0.17' - dependencies: - esbuild: 0.19.4 - load-tsconfig: 0.2.5 - dev: false - - /cac@6.7.14: - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} - engines: {node: '>=8'} - dev: false - - /camel-case@3.0.0: - resolution: {integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /change-case@3.0.2: - resolution: {integrity: sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==} - dependencies: - camel-case: 3.0.0 - constant-case: 2.0.0 - dot-case: 2.1.1 - header-case: 1.0.1 - is-lower-case: 1.1.3 - is-upper-case: 1.1.2 - lower-case: 1.1.4 - lower-case-first: 1.0.2 - no-case: 2.3.2 - param-case: 2.1.1 - pascal-case: 2.0.1 - path-case: 2.1.1 - sentence-case: 2.1.1 - snake-case: 2.1.0 - swap-case: 1.1.2 - title-case: 2.1.1 - upper-case: 1.1.3 - upper-case-first: 1.1.2 - dev: true - - /chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} - engines: {node: '>= 8.10.0'} - dependencies: - anymatch: 3.1.3 - braces: 3.0.2 - glob-parent: 5.1.2 - is-binary-path: 2.1.0 - is-glob: 4.0.3 - normalize-path: 3.0.0 - readdirp: 3.6.0 - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /cipher-base@1.0.4: - resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /code-error-fragment@0.0.230: - resolution: {integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==} - engines: {node: '>= 4'} - dev: true - - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - dev: true - - /combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - dependencies: - delayed-stream: 1.0.0 - dev: false - - /commander@11.0.0: - resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} - engines: {node: '>=16'} - dev: false - - /commander@4.1.1: - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} - engines: {node: '>= 6'} - dev: false - - /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: false - - /constant-case@2.0.0: - resolution: {integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==} - dependencies: - snake-case: 2.1.0 - upper-case: 1.1.3 - dev: true - - /core-js@3.33.0: - resolution: {integrity: sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==} - requiresBuild: true - dev: true - - /create-hash@1.2.0: - resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - dev: true - - /create-hmac@1.1.7: - resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - /crypto-js@3.3.0: - resolution: {integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==} - dev: false - - /debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: + + /@esbuild/darwin-arm64@0.19.4: + resolution: + { + integrity: sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false optional: true - dependencies: - ms: 2.1.2 - - /dedent@1.5.1: - resolution: {integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==} - peerDependencies: - babel-plugin-macros: ^3.1.0 - peerDependenciesMeta: - babel-plugin-macros: + + /@esbuild/darwin-x64@0.18.20: + resolution: + { + integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - dev: false - - /delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - dev: false - - /dir-glob@3.0.1: - resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} - engines: {node: '>=8'} - dependencies: - path-type: 4.0.0 - dev: false - - /dot-case@2.1.1: - resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} - dependencies: - no-case: 2.3.2 - dev: true - - /dotenv@16.3.1: - resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} - engines: {node: '>=12'} - dev: false - - /elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - /esbuild@0.18.20: - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.18.20 - '@esbuild/android-arm64': 0.18.20 - '@esbuild/android-x64': 0.18.20 - '@esbuild/darwin-arm64': 0.18.20 - '@esbuild/darwin-x64': 0.18.20 - '@esbuild/freebsd-arm64': 0.18.20 - '@esbuild/freebsd-x64': 0.18.20 - '@esbuild/linux-arm': 0.18.20 - '@esbuild/linux-arm64': 0.18.20 - '@esbuild/linux-ia32': 0.18.20 - '@esbuild/linux-loong64': 0.18.20 - '@esbuild/linux-mips64el': 0.18.20 - '@esbuild/linux-ppc64': 0.18.20 - '@esbuild/linux-riscv64': 0.18.20 - '@esbuild/linux-s390x': 0.18.20 - '@esbuild/linux-x64': 0.18.20 - '@esbuild/netbsd-x64': 0.18.20 - '@esbuild/openbsd-x64': 0.18.20 - '@esbuild/sunos-x64': 0.18.20 - '@esbuild/win32-arm64': 0.18.20 - '@esbuild/win32-ia32': 0.18.20 - '@esbuild/win32-x64': 0.18.20 - dev: false - - /esbuild@0.19.4: - resolution: {integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==} - engines: {node: '>=12'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@esbuild/android-arm': 0.19.4 - '@esbuild/android-arm64': 0.19.4 - '@esbuild/android-x64': 0.19.4 - '@esbuild/darwin-arm64': 0.19.4 - '@esbuild/darwin-x64': 0.19.4 - '@esbuild/freebsd-arm64': 0.19.4 - '@esbuild/freebsd-x64': 0.19.4 - '@esbuild/linux-arm': 0.19.4 - '@esbuild/linux-arm64': 0.19.4 - '@esbuild/linux-ia32': 0.19.4 - '@esbuild/linux-loong64': 0.19.4 - '@esbuild/linux-mips64el': 0.19.4 - '@esbuild/linux-ppc64': 0.19.4 - '@esbuild/linux-riscv64': 0.19.4 - '@esbuild/linux-s390x': 0.19.4 - '@esbuild/linux-x64': 0.19.4 - '@esbuild/netbsd-x64': 0.19.4 - '@esbuild/openbsd-x64': 0.19.4 - '@esbuild/sunos-x64': 0.19.4 - '@esbuild/win32-arm64': 0.19.4 - '@esbuild/win32-ia32': 0.19.4 - '@esbuild/win32-x64': 0.19.4 - dev: false - - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - dev: true - - /ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} - dependencies: - js-sha3: 0.8.0 - - /ethereum-cryptography@0.1.3: - resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} - dependencies: - '@types/pbkdf2': 3.1.1 - '@types/secp256k1': 4.0.5 - blakejs: 1.2.1 - browserify-aes: 1.2.0 - bs58check: 2.1.2 - create-hash: 1.2.0 - create-hmac: 1.1.7 - hash.js: 1.1.7 - keccak: 3.0.4 - pbkdf2: 3.1.2 - randombytes: 2.1.0 - safe-buffer: 5.2.1 - scrypt-js: 3.0.1 - secp256k1: 4.0.3 - setimmediate: 1.0.5 - dev: true - - /ethereum-cryptography@2.1.2: - resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} - dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/bip32': 1.3.1 - '@scure/bip39': 1.2.1 - dev: false - - /ethereumjs-util@7.1.5: - resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} - engines: {node: '>=10.0.0'} - dependencies: - '@types/bn.js': 5.1.3 - bn.js: 5.2.1 - create-hash: 1.2.0 - ethereum-cryptography: 0.1.3 - rlp: 2.2.7 - dev: true - - /ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - '@ethersproject/address': 5.7.0 - '@ethersproject/base64': 5.7.0 - '@ethersproject/basex': 5.7.0 - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/contracts': 5.7.0 - '@ethersproject/hash': 5.7.0 - '@ethersproject/hdnode': 5.7.0 - '@ethersproject/json-wallets': 5.7.0 - '@ethersproject/keccak256': 5.7.0 - '@ethersproject/logger': 5.7.0 - '@ethersproject/networks': 5.7.1 - '@ethersproject/pbkdf2': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/random': 5.7.0 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/sha2': 5.7.0 - '@ethersproject/signing-key': 5.7.0 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/strings': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/units': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@ethersproject/web': 5.7.1 - '@ethersproject/wordlists': 5.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /ethjs-unit@0.1.6: - resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} - engines: {node: '>=6.5.0', npm: '>=3'} - dependencies: - bn.js: 4.11.6 - number-to-bn: 1.7.0 - - /eventemitter2@6.4.9: - resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} - dev: false - - /evp_bytestokey@1.0.3: - resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - dev: true - - /execa@5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - human-signals: 2.1.0 - is-stream: 2.0.1 - merge-stream: 2.0.0 - npm-run-path: 4.0.1 - onetime: 5.1.2 - signal-exit: 3.0.7 - strip-final-newline: 2.0.0 - dev: false - - /execa@8.0.1: - resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} - engines: {node: '>=16.17'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.1.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - dev: true - - /fast-check@3.1.1: - resolution: {integrity: sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==} - engines: {node: '>=8.0.0'} - dependencies: - pure-rand: 5.0.5 - dev: true - - /fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true - - /fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} - engines: {node: '>=8.6.0'} - dependencies: - '@nodelib/fs.stat': 2.0.5 - '@nodelib/fs.walk': 1.2.8 - glob-parent: 5.1.2 - merge2: 1.4.1 - micromatch: 4.0.5 - dev: false - - /fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true - - /fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} - dependencies: - reusify: 1.0.4 - dev: false - - /fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - dev: false - - /find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - dev: false - - /follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: + + /@esbuild/darwin-x64@0.19.4: + resolution: + { + integrity: sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false optional: true - dev: false - - /form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - dev: false - - /fs-extra@11.1.1: - resolution: {integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==} - engines: {node: '>=14.14'} - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.0 - dev: false - - /fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false - - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - dev: false - optional: true - - /get-stream@6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - dev: false - - /get-stream@8.0.1: - resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} - engines: {node: '>=16'} - dev: true - - /glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.3 - dev: false - - /glob@7.1.6: - resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - dev: false - - /globals@11.12.0: - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} - engines: {node: '>=4'} - dev: true - - /globby@11.1.0: - resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} - engines: {node: '>=10'} - dependencies: - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 - merge2: 1.4.1 - slash: 3.0.0 - dev: false - - /graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - dev: false - - /grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - dev: true - - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - dev: true - - /hash-base@3.1.0: - resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} - engines: {node: '>=4'} - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - dev: true - - /hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - /header-case@1.0.1: - resolution: {integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - /human-signals@2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: false - - /human-signals@5.0.0: - resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} - engines: {node: '>=16.17.0'} - dev: true - - /ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} - engines: {node: '>= 4'} - dev: false - - /inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - dev: false - - /inherits@2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /is-binary-path@2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - dev: false - - /is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - dev: false - - /is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: false - - /is-hex-prefixed@1.0.0: - resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} - engines: {node: '>=6.5.0', npm: '>=3'} - - /is-lower-case@1.1.3: - resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} - dependencies: - lower-case: 1.1.4 - dev: true - - /is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - dev: false - - /is-stream@2.0.1: - resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} - engines: {node: '>=8'} - dev: false - - /is-stream@3.0.0: - resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: true - - /is-upper-case@1.1.2: - resolution: {integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==} - dependencies: - upper-case: 1.1.3 - dev: true - - /isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - /javascript-natural-sort@0.7.1: - resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} - dev: true - - /joycon@3.1.1: - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} - engines: {node: '>=10'} - dev: false - - /js-base64@3.7.5: - resolution: {integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==} - dev: false - - /js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - - /jsesc@2.5.2: - resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true - - /json-to-ast@2.1.0: - resolution: {integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==} - engines: {node: '>= 4'} - dependencies: - code-error-fragment: 0.0.230 - grapheme-splitter: 1.0.4 - dev: true - - /jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.11 - dev: false - - /jsonpointer@5.0.1: - resolution: {integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==} - engines: {node: '>=0.10.0'} - dev: true - - /keccak@3.0.4: - resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} - engines: {node: '>=10.0.0'} - requiresBuild: true - dependencies: - node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 - readable-stream: 3.6.2 - dev: true - - /leven@3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: true - - /lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - dev: false - - /lines-and-columns@1.2.4: - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - dev: false - - /load-tsconfig@0.2.5: - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-locate: 6.0.0 - dev: false - - /lodash.sortby@4.7.0: - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - dev: false - - /lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - dev: true - - /lower-case-first@1.0.2: - resolution: {integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==} - dependencies: - lower-case: 1.1.4 - dev: true - - /lower-case@1.1.4: - resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} - dev: true - - /lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - dev: true - - /md5.js@1.3.5: - resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /merge-stream@2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2@1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: false - - /merkletreejs@0.3.10: - resolution: {integrity: sha512-lin42tKfRdkW+6iE5pjtQ9BnH+1Hk3sJ5Fn9hUUSjcXRcJbSISHgPCfYvMNEXiNqZPhz/TyRPEV30qgnujsQ7A==} - engines: {node: '>= 7.6.0'} - dependencies: - bignumber.js: 9.1.2 - buffer-reverse: 1.0.1 - crypto-js: 3.3.0 - treeify: 1.1.0 - web3-utils: 1.10.2 - dev: false - - /micro-ftch@0.3.1: - resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - dev: false - - /micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} - engines: {node: '>=8.6'} - dependencies: - braces: 3.0.2 - picomatch: 2.3.1 - dev: false - - /mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - dev: false - - /mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.52.0 - dev: false - - /mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - dev: false - - /mimic-fn@4.0.0: - resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} - engines: {node: '>=12'} - dev: true - - /minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - /minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - /minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - dependencies: - brace-expansion: 1.1.11 - dev: false - - /ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /mz@2.7.0: - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} - dependencies: - any-promise: 1.3.0 - object-assign: 4.1.1 - thenify-all: 1.6.0 - dev: false - - /neodoc@2.0.2: - resolution: {integrity: sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw==} - dependencies: - ansi-regex: 2.1.1 - dev: true - - /no-case@2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - dependencies: - lower-case: 1.1.4 - dev: true - - /node-addon-api@2.0.2: - resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} - dev: true - - /node-gyp-build@4.6.1: - resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} - hasBin: true - dev: true - - /normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - dev: false - - /npm-run-path@4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: false - - /npm-run-path@5.1.0: - resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - path-key: 4.0.0 - dev: true - - /number-to-bn@1.7.0: - resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} - engines: {node: '>=6.5.0', npm: '>=3'} - dependencies: - bn.js: 4.11.6 - strip-hex-prefix: 1.0.0 - - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: false - - /once@1.4.0: - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - dependencies: - wrappy: 1.0.2 - dev: false - - /onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - dev: false - - /onetime@6.0.0: - resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} - engines: {node: '>=12'} - dependencies: - mimic-fn: 4.0.0 - dev: true - - /opensea-js@6.1.11: - resolution: {integrity: sha512-acoIgEqdBBChDUpXpDFNIYUDxWoOE2cNXEk0h6G+RqgMYKX89BsS0JSY7Q0D5qbfT/Q5CpIPRA1sEmyNC9UG5g==} - engines: {node: '>=16.0.0'} - requiresBuild: true - dependencies: - '@opensea/seaport-js': 2.0.8 - ethers: 5.7.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - dev: false - - /p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - yocto-queue: 1.0.0 - dev: false - - /p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - p-limit: 4.0.0 - dev: false - - /param-case@2.1.1: - resolution: {integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==} - dependencies: - no-case: 2.3.2 - dev: true - - /pascal-case@2.0.1: - resolution: {integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==} - dependencies: - camel-case: 3.0.0 - upper-case-first: 1.1.2 - dev: true - - /path-case@2.1.1: - resolution: {integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==} - dependencies: - no-case: 2.3.2 - dev: true - - /path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dev: false - - /path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - dev: false - - /path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - /path-key@4.0.0: - resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} - engines: {node: '>=12'} - dev: true - - /path-type@4.0.0: - resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} - engines: {node: '>=8'} - dev: false - - /pathe@1.1.1: - resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} - dev: false - - /pbkdf2@3.1.2: - resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} - engines: {node: '>=0.12'} - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - dev: true - - /phoenix@1.7.9: - resolution: {integrity: sha512-oHBka/WCKVtFHNCCqnVDxiSHQZ0vvV0pU1I4oBmm68rNvGH3lVjdNGLRhK0+c3zcfsrqgpRS2p+Et6N4QAd2LQ==} - dev: false - - /picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: false - - /picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - dev: false - - /pirates@4.0.6: - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} - engines: {node: '>= 6'} - dev: false - - /postcss-load-config@4.0.1: - resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} - engines: {node: '>= 14'} - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: + + /@esbuild/freebsd-arm64@0.18.20: + resolution: + { + integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - ts-node: + + /@esbuild/freebsd-arm64@0.19.4: + resolution: + { + integrity: sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - dependencies: - lilconfig: 2.1.0 - yaml: 2.3.2 - dev: false - - /prettier-plugin-solidity@1.1.3(prettier@2.8.8): - resolution: {integrity: sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==} - engines: {node: '>=12'} - requiresBuild: true - peerDependencies: - prettier: '>=2.3.0 || >=3.0.0-alpha.0' - dependencies: - '@solidity-parser/parser': 0.16.1 - prettier: 2.8.8 - semver: 7.5.4 - solidity-comments-extractor: 0.0.7 - dev: true - optional: true - - /prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - requiresBuild: true - dev: true - optional: true - - /prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} - engines: {node: '>=14'} - hasBin: true - dev: true - - /proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} - dev: false - - /punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} - engines: {node: '>=6'} - - /pure-rand@5.0.5: - resolution: {integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==} - dev: true - - /queue-microtask@1.2.3: - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: false - - /randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - dependencies: - safe-buffer: 5.2.1 - - /readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - dev: true - - /readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.1 - dev: false - - /regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - dev: true - - /resolve-from@5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - dev: false - - /reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /ripemd160@2.0.2: - resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - dev: true - - /rlp@2.2.7: - resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} - hasBin: true - dependencies: - bn.js: 5.2.1 - dev: true - - /rollup@3.29.4: - resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} - engines: {node: '>=14.18.0', npm: '>=8.0.0'} - hasBin: true - optionalDependencies: - fsevents: 2.3.3 - dev: false - - /run-parallel@1.2.0: - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - dependencies: - queue-microtask: 1.2.3 - dev: false - - /safe-buffer@5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - /secp256k1@4.0.3: - resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} - engines: {node: '>=10.0.0'} - requiresBuild: true - dependencies: - elliptic: 6.5.4 - node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 - dev: true - - /semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - - /sentence-case@2.1.1: - resolution: {integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==} - dependencies: - no-case: 2.3.2 - upper-case-first: 1.1.2 - dev: true - - /setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - dev: true - - /sha.js@2.4.11: - resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} - hasBin: true - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - dev: true - - /shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - - /shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - /signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - dev: false - - /signal-exit@4.1.0: - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} - engines: {node: '>=14'} - dev: true - - /slash@3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - dev: false - - /snake-case@2.1.0: - resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} - dependencies: - no-case: 2.3.2 - dev: true - - /solidity-comments-extractor@0.0.7: - resolution: {integrity: sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==} - requiresBuild: true - dev: true - optional: true - - /source-map-support@0.5.21: - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} - dependencies: - buffer-from: 1.1.2 - source-map: 0.6.1 - dev: true - - /source-map@0.5.7: - resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - dev: true - - /source-map@0.8.0-beta.0: - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} - engines: {node: '>= 8'} - dependencies: - whatwg-url: 7.1.0 - dev: false - - /string_decoder@1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - dev: true - - /strip-final-newline@2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: false - - /strip-final-newline@3.0.0: - resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} - engines: {node: '>=12'} - dev: true - - /strip-hex-prefix@1.0.0: - resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} - engines: {node: '>=6.5.0', npm: '>=3'} - dependencies: - is-hex-prefixed: 1.0.0 - - /sucrase@3.34.0: - resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} - engines: {node: '>=8'} - hasBin: true - dependencies: - '@jridgewell/gen-mapping': 0.3.3 - commander: 4.1.1 - glob: 7.1.6 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.6 - ts-interface-checker: 0.1.13 - dev: false - - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /swap-case@1.1.2: - resolution: {integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==} - dependencies: - lower-case: 1.1.4 - upper-case: 1.1.3 - dev: true - - /thenify-all@1.6.0: - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} - engines: {node: '>=0.8'} - dependencies: - thenify: 3.3.1 - dev: false - - /thenify@3.3.1: - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - dependencies: - any-promise: 1.3.0 - dev: false - - /title-case@2.1.1: - resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: true - - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - dev: true - - /to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - dev: false - - /tr46@1.0.1: - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} - dependencies: - punycode: 2.3.0 - dev: false - - /tree-kill@1.2.2: - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} - hasBin: true - dev: false - - /treeify@1.1.0: - resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} - engines: {node: '>=0.6'} - dev: false - - /ts-interface-checker@0.1.13: - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} - dev: false - - /tsup@7.2.0(typescript@5.2.2): - resolution: {integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==} - engines: {node: '>=16.14'} - hasBin: true - peerDependencies: - '@swc/core': ^1 - postcss: ^8.4.12 - typescript: '>=4.1.0' - peerDependenciesMeta: - '@swc/core': + + /@esbuild/freebsd-x64@0.18.20: + resolution: + { + integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - postcss: + + /@esbuild/freebsd-x64@0.19.4: + resolution: + { + integrity: sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: false optional: true - typescript: + + /@esbuild/linux-arm64@0.18.20: + resolution: + { + integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - dependencies: - bundle-require: 4.0.2(esbuild@0.18.20) - cac: 6.7.14 - chokidar: 3.5.3 - debug: 4.3.4 - esbuild: 0.18.20 - execa: 5.1.1 - globby: 11.1.0 - joycon: 3.1.1 - postcss-load-config: 4.0.1 - resolve-from: 5.0.0 - rollup: 3.29.4 - source-map: 0.8.0-beta.0 - sucrase: 3.34.0 - tree-kill: 1.2.2 - typescript: 5.2.2 - transitivePeerDependencies: - - supports-color - - ts-node - dev: false - - /typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} - engines: {node: '>=14.17'} - hasBin: true - - /undici-types@5.25.3: - resolution: {integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==} - dev: true - - /universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - dev: false - - /upper-case-first@1.1.2: - resolution: {integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==} - dependencies: - upper-case: 1.1.3 - dev: true - - /upper-case@1.1.3: - resolution: {integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==} - dev: true - - /uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - dependencies: - punycode: 2.3.0 - dev: true - - /utf8@3.0.0: - resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} - - /util-deprecate@1.0.2: - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - dev: true - - /web3-utils@1.10.0: - resolution: {integrity: sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==} - engines: {node: '>=8.0.0'} - dependencies: - bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereumjs-util: 7.1.5 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - dev: true - - /web3-utils@1.10.2: - resolution: {integrity: sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==} - engines: {node: '>=8.0.0'} - dependencies: - '@ethereumjs/util': 8.1.0 - bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereum-cryptography: 2.1.2 - ethjs-unit: 0.1.6 - number-to-bn: 1.7.0 - randombytes: 2.1.0 - utf8: 3.0.0 - dev: false - - /webextension-polyfill@0.10.0: - resolution: {integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==} - dev: false - - /webidl-conversions@4.0.2: - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} - dev: false - - /whatwg-url@7.1.0: - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} - dependencies: - lodash.sortby: 4.7.0 - tr46: 1.0.1 - webidl-conversions: 4.0.2 - dev: false - - /which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - - /wrappy@1.0.2: - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false - - /ws@7.4.6: - resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} - engines: {node: '>=8.3.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: + + /@esbuild/linux-arm64@0.19.4: + resolution: + { + integrity: sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false optional: true - utf-8-validate: + + /@esbuild/linux-arm@0.18.20: + resolution: + { + integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false optional: true - dev: false - /yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - dev: true + /@esbuild/linux-arm@0.19.4: + resolution: + { + integrity: sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==, + } + engines: { node: ">=12" } + cpu: [arm] + os: [linux] + requiresBuild: true + dev: false + optional: true - /yaml@2.3.2: - resolution: {integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==} - engines: {node: '>= 14'} - dev: false + /@esbuild/linux-ia32@0.18.20: + resolution: + { + integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ia32@0.19.4: + resolution: + { + integrity: sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: + { + integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-loong64@0.19.4: + resolution: + { + integrity: sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==, + } + engines: { node: ">=12" } + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: + { + integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-mips64el@0.19.4: + resolution: + { + integrity: sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==, + } + engines: { node: ">=12" } + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: + { + integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-ppc64@0.19.4: + resolution: + { + integrity: sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==, + } + engines: { node: ">=12" } + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: + { + integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-riscv64@0.19.4: + resolution: + { + integrity: sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==, + } + engines: { node: ">=12" } + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: + { + integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-s390x@0.19.4: + resolution: + { + integrity: sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==, + } + engines: { node: ">=12" } + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: + { + integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/linux-x64@0.19.4: + resolution: + { + integrity: sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: + { + integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/netbsd-x64@0.19.4: + resolution: + { + integrity: sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: + { + integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/openbsd-x64@0.19.4: + resolution: + { + integrity: sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: + { + integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/sunos-x64@0.19.4: + resolution: + { + integrity: sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: + { + integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-arm64@0.19.4: + resolution: + { + integrity: sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==, + } + engines: { node: ">=12" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: + { + integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-ia32@0.19.4: + resolution: + { + integrity: sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==, + } + engines: { node: ">=12" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: + { + integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@esbuild/win32-x64@0.19.4: + resolution: + { + integrity: sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==, + } + engines: { node: ">=12" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@ethereumjs/rlp@4.0.1: + resolution: + { + integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==, + } + engines: { node: ">=14" } + hasBin: true + dev: false + + /@ethereumjs/util@8.1.0: + resolution: + { + integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==, + } + engines: { node: ">=14" } + dependencies: + "@ethereumjs/rlp": 4.0.1 + ethereum-cryptography: 2.1.2 + micro-ftch: 0.3.1 + dev: false + + /@ethersproject/abi@5.7.0: + resolution: + { + integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==, + } + dependencies: + "@ethersproject/address": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/hash": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/strings": 5.7.0 + dev: false + + /@ethersproject/abstract-provider@5.7.0: + resolution: + { + integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==, + } + dependencies: + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/networks": 5.7.1 + "@ethersproject/properties": 5.7.0 + "@ethersproject/transactions": 5.7.0 + "@ethersproject/web": 5.7.1 + dev: false + + /@ethersproject/abstract-signer@5.7.0: + resolution: + { + integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==, + } + dependencies: + "@ethersproject/abstract-provider": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + dev: false + + /@ethersproject/address@5.7.0: + resolution: + { + integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==, + } + dependencies: + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/rlp": 5.7.0 + dev: false + + /@ethersproject/base64@5.7.0: + resolution: + { + integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + dev: false + + /@ethersproject/basex@5.7.0: + resolution: + { + integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/properties": 5.7.0 + dev: false + + /@ethersproject/bignumber@5.7.0: + resolution: + { + integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + bn.js: 5.2.1 + dev: false + + /@ethersproject/bytes@5.7.0: + resolution: + { + integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==, + } + dependencies: + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/constants@5.7.0: + resolution: + { + integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==, + } + dependencies: + "@ethersproject/bignumber": 5.7.0 + dev: false + + /@ethersproject/contracts@5.7.0: + resolution: + { + integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==, + } + dependencies: + "@ethersproject/abi": 5.7.0 + "@ethersproject/abstract-provider": 5.7.0 + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/address": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/transactions": 5.7.0 + dev: false + + /@ethersproject/hash@5.7.0: + resolution: + { + integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==, + } + dependencies: + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/address": 5.7.0 + "@ethersproject/base64": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/strings": 5.7.0 + dev: false + + /@ethersproject/hdnode@5.7.0: + resolution: + { + integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==, + } + dependencies: + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/basex": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/pbkdf2": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/sha2": 5.7.0 + "@ethersproject/signing-key": 5.7.0 + "@ethersproject/strings": 5.7.0 + "@ethersproject/transactions": 5.7.0 + "@ethersproject/wordlists": 5.7.0 + dev: false + + /@ethersproject/json-wallets@5.7.0: + resolution: + { + integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==, + } + dependencies: + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/address": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/hdnode": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/pbkdf2": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/random": 5.7.0 + "@ethersproject/strings": 5.7.0 + "@ethersproject/transactions": 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + dev: false + + /@ethersproject/keccak256@5.7.0: + resolution: + { + integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + js-sha3: 0.8.0 + dev: false + + /@ethersproject/logger@5.7.0: + resolution: + { + integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==, + } + dev: false + + /@ethersproject/networks@5.7.1: + resolution: + { + integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==, + } + dependencies: + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/pbkdf2@5.7.0: + resolution: + { + integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/sha2": 5.7.0 + dev: false + + /@ethersproject/properties@5.7.0: + resolution: + { + integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==, + } + dependencies: + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/providers@5.7.2: + resolution: + { + integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==, + } + dependencies: + "@ethersproject/abstract-provider": 5.7.0 + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/address": 5.7.0 + "@ethersproject/base64": 5.7.0 + "@ethersproject/basex": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/hash": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/networks": 5.7.1 + "@ethersproject/properties": 5.7.0 + "@ethersproject/random": 5.7.0 + "@ethersproject/rlp": 5.7.0 + "@ethersproject/sha2": 5.7.0 + "@ethersproject/strings": 5.7.0 + "@ethersproject/transactions": 5.7.0 + "@ethersproject/web": 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@ethersproject/random@5.7.0: + resolution: + { + integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/rlp@5.7.0: + resolution: + { + integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/sha2@5.7.0: + resolution: + { + integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + hash.js: 1.1.7 + dev: false + + /@ethersproject/signing-key@5.7.0: + resolution: + { + integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + bn.js: 5.2.1 + elliptic: 6.5.4 + hash.js: 1.1.7 + dev: false + + /@ethersproject/solidity@5.7.0: + resolution: + { + integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==, + } + dependencies: + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/sha2": 5.7.0 + "@ethersproject/strings": 5.7.0 + dev: false + + /@ethersproject/strings@5.7.0: + resolution: + { + integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/transactions@5.7.0: + resolution: + { + integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==, + } + dependencies: + "@ethersproject/address": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/rlp": 5.7.0 + "@ethersproject/signing-key": 5.7.0 + dev: false + + /@ethersproject/units@5.7.0: + resolution: + { + integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==, + } + dependencies: + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/logger": 5.7.0 + dev: false + + /@ethersproject/wallet@5.7.0: + resolution: + { + integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==, + } + dependencies: + "@ethersproject/abstract-provider": 5.7.0 + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/address": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/hash": 5.7.0 + "@ethersproject/hdnode": 5.7.0 + "@ethersproject/json-wallets": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/random": 5.7.0 + "@ethersproject/signing-key": 5.7.0 + "@ethersproject/transactions": 5.7.0 + "@ethersproject/wordlists": 5.7.0 + dev: false + + /@ethersproject/web@5.7.1: + resolution: + { + integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==, + } + dependencies: + "@ethersproject/base64": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/strings": 5.7.0 + dev: false + + /@ethersproject/wordlists@5.7.0: + resolution: + { + integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==, + } + dependencies: + "@ethersproject/bytes": 5.7.0 + "@ethersproject/hash": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/strings": 5.7.0 + dev: false + + /@flashbots/ethers-provider-bundle@0.6.2(ethers@5.7.2): + resolution: + { + integrity: sha512-W4Hi47zWggWgLBwhoxH3qaojudAjcbBU+ldEYi5o06UQm/25Hk/AUvCLiN+9nvy1g3xxpF9QBdMniUwjC4cpBw==, + } + peerDependencies: + ethers: 5.7.2 + dependencies: + ethers: 5.7.2 + dev: false + + /@jridgewell/gen-mapping@0.3.3: + resolution: + { + integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.15 + "@jridgewell/trace-mapping": 0.3.9 + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: + { + integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, + } + engines: { node: ">=6.0.0" } + dev: false + + /@jridgewell/set-array@1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: ">=6.0.0" } + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + } + dev: false + + /@jridgewell/trace-mapping@0.3.9: + resolution: + { + integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, + } + dependencies: + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.4.15 + dev: false + + /@noble/curves@1.1.0: + resolution: + { + integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==, + } + dependencies: + "@noble/hashes": 1.3.1 + dev: false + + /@noble/hashes@1.3.1: + resolution: + { + integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==, + } + engines: { node: ">= 16" } + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + dev: false + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + dev: false + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + dev: false + + /@opensea/seaport-js@2.0.8: + resolution: + { + integrity: sha512-uOjqXtXK49vbOoxXy/z54evxV3OtExjNe81E9CK6v6nOX0vDZH6dnDSTbC8ELL1RrAXM8dmDMtA0szepDyoaKQ==, + } + engines: { node: ">=16.0.0" } + requiresBuild: true + dependencies: + "@0xsequence/multicall": 0.43.34(ethers@5.7.2) + ethers: 5.7.2 + merkletreejs: 0.3.10 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /@opensea/stream-js@0.1.2: + resolution: + { + integrity: sha512-o68yuCM2W8K6IcIIdvnzzR21/QBxNR4ewFRFUFSphSWrW8FHuxxIobtAljF+sWxe1Mc5Xzs4UKPZ7oBSs+LboQ==, + } + engines: { node: ">=16.11.0" } + dependencies: + phoenix: 1.7.9 + dev: false + + /@scure/base@1.1.3: + resolution: + { + integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==, + } + dev: false + + /@scure/bip32@1.3.1: + resolution: + { + integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==, + } + dependencies: + "@noble/curves": 1.1.0 + "@noble/hashes": 1.3.1 + "@scure/base": 1.1.3 + dev: false + + /@scure/bip39@1.2.1: + resolution: + { + integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==, + } + dependencies: + "@noble/hashes": 1.3.1 + "@scure/base": 1.1.3 + dev: false + + /@solidity-parser/parser@0.16.1: + resolution: + { + integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==, + } + requiresBuild: true + dependencies: + antlr4ts: 0.5.0-alpha.4 + dev: true + optional: true + + /@trivago/prettier-plugin-sort-imports@4.2.0(prettier@3.0.3): + resolution: + { + integrity: sha512-YBepjbt+ZNBVmN3ev1amQH3lWCmHyt5qTbLCp/syXJRu/Kw2koXh44qayB1gMRxcL/gV8egmjN5xWSrYyfUtyw==, + } + peerDependencies: + "@vue/compiler-sfc": 3.x + prettier: 2.x - 3.x + peerDependenciesMeta: + "@vue/compiler-sfc": + optional: true + dependencies: + "@babel/generator": 7.17.7 + "@babel/parser": 7.23.0 + "@babel/traverse": 7.17.3 + "@babel/types": 7.17.0 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 3.0.3 + transitivePeerDependencies: + - supports-color + dev: true + + /@truffle/abi-utils@1.0.3: + resolution: + { + integrity: sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==, + } + engines: { node: ^16.20 || ^18.16 || >=20 } + dependencies: + change-case: 3.0.2 + fast-check: 3.1.1 + web3-utils: 1.10.0 + dev: true + + /@truffle/contract-schema@3.4.16: + resolution: + { + integrity: sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==, + } + engines: { node: ^16.20 || ^18.16 || >=20 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + transitivePeerDependencies: + - supports-color + dev: true + + /@types/bn.js@5.1.3: + resolution: + { + integrity: sha512-wT1B4iIO82ecXkdN6waCK8Ou7E71WU+mP1osDA5Q8c6Ur+ozU2vIKUIhSpUr6uE5L2YHocKS1Z2jG2fBC1YVeg==, + } + dependencies: + "@types/node": 20.8.4 + dev: true + + /@types/cli-progress@3.11.3: + resolution: + { + integrity: sha512-/+C9xAdVtc+g5yHHkGBThgAA8rYpi5B+2ve3wLtybYj0JHEBs57ivR4x/zGfSsplRnV+psE91Nfin1soNKqz5Q==, + } + dependencies: + "@types/node": 20.8.4 + dev: true + + /@types/fs-extra@11.0.2: + resolution: + { + integrity: sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==, + } + dependencies: + "@types/jsonfile": 6.1.2 + "@types/node": 20.8.4 + dev: true + + /@types/js-yaml@4.0.7: + resolution: + { + integrity: sha512-RJZP9WAMMr1514KbdSXkLRrKvYQacjr1+HWnY8pui/uBTBoSgD9ZGR17u/d4nb9NpERp0FkdLBe7hq8NIPBgkg==, + } + dev: true + + /@types/jsonfile@6.1.2: + resolution: + { + integrity: sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==, + } + dependencies: + "@types/node": 20.8.4 + dev: true + + /@types/node@20.8.4: + resolution: + { + integrity: sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==, + } + dependencies: + undici-types: 5.25.3 + dev: true + + /@types/pbkdf2@3.1.1: + resolution: + { + integrity: sha512-4HCoGwR3221nOc7G0Z/6KgTNGgaaFGkbGrtUJsB+zlKX2LBVjFHHIUkieMBgHHXgBH5Gq6dZHJKdBYdtlhBQvw==, + } + dependencies: + "@types/node": 20.8.4 + dev: true + + /@types/secp256k1@4.0.5: + resolution: + { + integrity: sha512-aIonTBMErtE3T9MxDvTZRzcrT/mCqpEZBw3CCY/i+oG9n57N/+7obBkhFgavUAIrX21bU0LHg1XRgtaLdelBhA==, + } + dependencies: + "@types/node": 20.8.4 + dev: true + + /abi-to-sol@0.8.0: + resolution: + { + integrity: sha512-hCGE+K1YiepxpWik0yPCN3Dfi+GY0kg2RNy29Mdjho2cXnhauvmsuvYjNDV8TFOhBq3a95KZUIfPUIkqqjHPYg==, + } + hasBin: true + dependencies: + "@truffle/abi-utils": 1.0.3 + "@truffle/contract-schema": 3.4.16 + ajv: 6.12.6 + better-ajv-errors: 0.8.2(ajv@6.12.6) + neodoc: 2.0.2 + semver: 7.5.4 + source-map-support: 0.5.21 + optionalDependencies: + prettier: 2.8.8 + prettier-plugin-solidity: 1.1.3(prettier@2.8.8) + transitivePeerDependencies: + - supports-color + dev: true + + /aes-js@3.0.0: + resolution: + { + integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==, + } + dev: false + + /ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + dev: true + + /ansi-regex@2.1.1: + resolution: + { + integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, + } + engines: { node: ">=0.10.0" } + dev: true + + /ansi-styles@3.2.1: + resolution: + { + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, + } + engines: { node: ">=4" } + dependencies: + color-convert: 1.9.3 + dev: true + + /antlr4ts@0.5.0-alpha.4: + resolution: + { + integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==, + } + requiresBuild: true + dev: true + optional: true + + /any-promise@1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, + } + dev: false + + /anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: ">= 8" } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /array-union@2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: ">=8" } + dev: false + + /asynckit@0.4.0: + resolution: + { + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, + } + dev: false + + /axios@1.5.1: + resolution: + { + integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==, + } + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + dev: false + + /base-x@3.0.9: + resolution: + { + integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==, + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /bech32@1.1.4: + resolution: + { + integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==, + } + dev: false + + /better-ajv-errors@0.8.2(ajv@6.12.6): + resolution: + { + integrity: sha512-FnODTBJSQSHmJXDLPiC7ca0dC4S1HSTPv1+Hg2sm/C71i3Dj0l1jcUEaq/3OQ6MmnUveshTsUvUj65pDSr3Qow==, + } + peerDependencies: + ajv: 4.11.8 - 8 + dependencies: + "@babel/code-frame": 7.22.13 + "@babel/runtime": 7.23.2 + ajv: 6.12.6 + chalk: 2.4.2 + core-js: 3.33.0 + json-to-ast: 2.1.0 + jsonpointer: 5.0.1 + leven: 3.1.0 + dev: true + + /bignumber.js@9.1.2: + resolution: + { + integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==, + } + dev: false + + /binary-extensions@2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: ">=8" } + dev: false + + /blakejs@1.2.1: + resolution: + { + integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==, + } + dev: true + + /bn.js@4.11.6: + resolution: + { + integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==, + } + + /bn.js@4.12.0: + resolution: + { + integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==, + } + + /bn.js@5.2.1: + resolution: + { + integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, + } + + /brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + dev: false + + /braces@3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: ">=8" } + dependencies: + fill-range: 7.0.1 + dev: false + + /brorand@1.1.0: + resolution: + { + integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, + } + + /browserify-aes@1.2.0: + resolution: + { + integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==, + } + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /bs58@4.0.1: + resolution: + { + integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==, + } + dependencies: + base-x: 3.0.9 + dev: true + + /bs58check@2.1.2: + resolution: + { + integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==, + } + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + dev: true + + /buffer-from@1.1.2: + resolution: + { + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, + } + dev: true + + /buffer-reverse@1.0.1: + resolution: + { + integrity: sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==, + } + dev: false + + /buffer-xor@1.0.3: + resolution: + { + integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==, + } + dev: true + + /bundle-require@4.0.2(esbuild@0.18.20): + resolution: + { + integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + peerDependencies: + esbuild: ">=0.17" + dependencies: + esbuild: 0.18.20 + load-tsconfig: 0.2.5 + dev: false + + /bundle-require@4.0.2(esbuild@0.19.4): + resolution: + { + integrity: sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + peerDependencies: + esbuild: ">=0.17" + dependencies: + esbuild: 0.19.4 + load-tsconfig: 0.2.5 + dev: false + + /cac@6.7.14: + resolution: + { + integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, + } + engines: { node: ">=8" } + dev: false + + /camel-case@3.0.0: + resolution: + { + integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==, + } + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /chalk@2.4.2: + resolution: + { + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + } + engines: { node: ">=4" } + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: true + + /change-case@3.0.2: + resolution: + { + integrity: sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==, + } + dependencies: + camel-case: 3.0.0 + constant-case: 2.0.0 + dot-case: 2.1.1 + header-case: 1.0.1 + is-lower-case: 1.1.3 + is-upper-case: 1.1.2 + lower-case: 1.1.4 + lower-case-first: 1.0.2 + no-case: 2.3.2 + param-case: 2.1.1 + pascal-case: 2.0.1 + path-case: 2.1.1 + sentence-case: 2.1.1 + snake-case: 2.1.0 + swap-case: 1.1.2 + title-case: 2.1.1 + upper-case: 1.1.3 + upper-case-first: 1.1.2 + dev: true + + /chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: ">= 8.10.0" } + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /cipher-base@1.0.4: + resolution: + { + integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==, + } + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /code-error-fragment@0.0.230: + resolution: + { + integrity: sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==, + } + engines: { node: ">= 4" } + dev: true + + /color-convert@1.9.3: + resolution: + { + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + } + dependencies: + color-name: 1.1.3 + dev: true + + /color-name@1.1.3: + resolution: + { + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + } + dev: true + + /combined-stream@1.0.8: + resolution: + { + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + } + engines: { node: ">= 0.8" } + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@11.0.0: + resolution: + { + integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==, + } + engines: { node: ">=16" } + dev: false + + /commander@4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + } + engines: { node: ">= 6" } + dev: false + + /concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + dev: false + + /constant-case@2.0.0: + resolution: + { + integrity: sha512-eS0N9WwmjTqrOmR3o83F5vW8Z+9R1HnVz3xmzT2PMFug9ly+Au/fxRWlEBSb6LcZwspSsEn9Xs1uw9YgzAg1EQ==, + } + dependencies: + snake-case: 2.1.0 + upper-case: 1.1.3 + dev: true + + /core-js@3.33.0: + resolution: + { + integrity: sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==, + } + requiresBuild: true + dev: true + + /create-hash@1.2.0: + resolution: + { + integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==, + } + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + dev: true + + /create-hmac@1.1.7: + resolution: + { + integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==, + } + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /crypto-js@3.3.0: + resolution: + { + integrity: sha512-DIT51nX0dCfKltpRiXV+/TVZq+Qq2NgF4644+K7Ttnla7zEzqc+kjJyiB96BHNyUTBxyjzRcZYpUdZa+QAqi6Q==, + } + dev: false + + /debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /dedent@1.5.1: + resolution: + { + integrity: sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==, + } + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + dev: false + + /delayed-stream@1.0.0: + resolution: + { + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + } + engines: { node: ">=0.4.0" } + dev: false + + /dir-glob@3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: ">=8" } + dependencies: + path-type: 4.0.0 + dev: false + + /dot-case@2.1.1: + resolution: + { + integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==, + } + dependencies: + no-case: 2.3.2 + dev: true + + /dotenv@16.3.1: + resolution: + { + integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==, + } + engines: { node: ">=12" } + dev: false + + /elliptic@6.5.4: + resolution: + { + integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==, + } + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + /esbuild@0.18.20: + resolution: + { + integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==, + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + optionalDependencies: + "@esbuild/android-arm": 0.18.20 + "@esbuild/android-arm64": 0.18.20 + "@esbuild/android-x64": 0.18.20 + "@esbuild/darwin-arm64": 0.18.20 + "@esbuild/darwin-x64": 0.18.20 + "@esbuild/freebsd-arm64": 0.18.20 + "@esbuild/freebsd-x64": 0.18.20 + "@esbuild/linux-arm": 0.18.20 + "@esbuild/linux-arm64": 0.18.20 + "@esbuild/linux-ia32": 0.18.20 + "@esbuild/linux-loong64": 0.18.20 + "@esbuild/linux-mips64el": 0.18.20 + "@esbuild/linux-ppc64": 0.18.20 + "@esbuild/linux-riscv64": 0.18.20 + "@esbuild/linux-s390x": 0.18.20 + "@esbuild/linux-x64": 0.18.20 + "@esbuild/netbsd-x64": 0.18.20 + "@esbuild/openbsd-x64": 0.18.20 + "@esbuild/sunos-x64": 0.18.20 + "@esbuild/win32-arm64": 0.18.20 + "@esbuild/win32-ia32": 0.18.20 + "@esbuild/win32-x64": 0.18.20 + dev: false + + /esbuild@0.19.4: + resolution: + { + integrity: sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==, + } + engines: { node: ">=12" } + hasBin: true + requiresBuild: true + optionalDependencies: + "@esbuild/android-arm": 0.19.4 + "@esbuild/android-arm64": 0.19.4 + "@esbuild/android-x64": 0.19.4 + "@esbuild/darwin-arm64": 0.19.4 + "@esbuild/darwin-x64": 0.19.4 + "@esbuild/freebsd-arm64": 0.19.4 + "@esbuild/freebsd-x64": 0.19.4 + "@esbuild/linux-arm": 0.19.4 + "@esbuild/linux-arm64": 0.19.4 + "@esbuild/linux-ia32": 0.19.4 + "@esbuild/linux-loong64": 0.19.4 + "@esbuild/linux-mips64el": 0.19.4 + "@esbuild/linux-ppc64": 0.19.4 + "@esbuild/linux-riscv64": 0.19.4 + "@esbuild/linux-s390x": 0.19.4 + "@esbuild/linux-x64": 0.19.4 + "@esbuild/netbsd-x64": 0.19.4 + "@esbuild/openbsd-x64": 0.19.4 + "@esbuild/sunos-x64": 0.19.4 + "@esbuild/win32-arm64": 0.19.4 + "@esbuild/win32-ia32": 0.19.4 + "@esbuild/win32-x64": 0.19.4 + dev: false + + /escape-string-regexp@1.0.5: + resolution: + { + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + } + engines: { node: ">=0.8.0" } + dev: true + + /ethereum-bloom-filters@1.0.10: + resolution: + { + integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==, + } + dependencies: + js-sha3: 0.8.0 + + /ethereum-cryptography@0.1.3: + resolution: + { + integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==, + } + dependencies: + "@types/pbkdf2": 3.1.1 + "@types/secp256k1": 4.0.5 + blakejs: 1.2.1 + browserify-aes: 1.2.0 + bs58check: 2.1.2 + create-hash: 1.2.0 + create-hmac: 1.1.7 + hash.js: 1.1.7 + keccak: 3.0.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 + dev: true + + /ethereum-cryptography@2.1.2: + resolution: + { + integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==, + } + dependencies: + "@noble/curves": 1.1.0 + "@noble/hashes": 1.3.1 + "@scure/bip32": 1.3.1 + "@scure/bip39": 1.2.1 + dev: false + + /ethereumjs-util@7.1.5: + resolution: + { + integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==, + } + engines: { node: ">=10.0.0" } + dependencies: + "@types/bn.js": 5.1.3 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + dev: true + + /ethers@5.7.2: + resolution: + { + integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==, + } + dependencies: + "@ethersproject/abi": 5.7.0 + "@ethersproject/abstract-provider": 5.7.0 + "@ethersproject/abstract-signer": 5.7.0 + "@ethersproject/address": 5.7.0 + "@ethersproject/base64": 5.7.0 + "@ethersproject/basex": 5.7.0 + "@ethersproject/bignumber": 5.7.0 + "@ethersproject/bytes": 5.7.0 + "@ethersproject/constants": 5.7.0 + "@ethersproject/contracts": 5.7.0 + "@ethersproject/hash": 5.7.0 + "@ethersproject/hdnode": 5.7.0 + "@ethersproject/json-wallets": 5.7.0 + "@ethersproject/keccak256": 5.7.0 + "@ethersproject/logger": 5.7.0 + "@ethersproject/networks": 5.7.1 + "@ethersproject/pbkdf2": 5.7.0 + "@ethersproject/properties": 5.7.0 + "@ethersproject/providers": 5.7.2 + "@ethersproject/random": 5.7.0 + "@ethersproject/rlp": 5.7.0 + "@ethersproject/sha2": 5.7.0 + "@ethersproject/signing-key": 5.7.0 + "@ethersproject/solidity": 5.7.0 + "@ethersproject/strings": 5.7.0 + "@ethersproject/transactions": 5.7.0 + "@ethersproject/units": 5.7.0 + "@ethersproject/wallet": 5.7.0 + "@ethersproject/web": 5.7.1 + "@ethersproject/wordlists": 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /ethjs-unit@0.1.6: + resolution: + { + integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==, + } + engines: { node: ">=6.5.0", npm: ">=3" } + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + + /eventemitter2@6.4.9: + resolution: + { + integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==, + } + dev: false + + /evp_bytestokey@1.0.3: + resolution: + { + integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==, + } + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + dev: true + + /execa@5.1.1: + resolution: + { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: ">=10" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: false + + /execa@8.0.1: + resolution: + { + integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, + } + engines: { node: ">=16.17" } + dependencies: + cross-spawn: 7.0.3 + get-stream: 8.0.1 + human-signals: 5.0.0 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 4.1.0 + strip-final-newline: 3.0.0 + dev: true + + /fast-check@3.1.1: + resolution: + { + integrity: sha512-3vtXinVyuUKCKFKYcwXhGE6NtGWkqF8Yh3rvMZNzmwz8EPrgoc/v4pDdLHyLnCyCI5MZpZZkDEwFyXyEONOxpA==, + } + engines: { node: ">=8.0.0" } + dependencies: + pure-rand: 5.0.5 + dev: true + + /fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + dev: true + + /fast-glob@3.3.1: + resolution: + { + integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==, + } + engines: { node: ">=8.6.0" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + dev: true + + /fastq@1.15.0: + resolution: + { + integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, + } + dependencies: + reusify: 1.0.4 + dev: false + + /fill-range@7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: ">=8" } + dependencies: + to-regex-range: 5.0.1 + dev: false + + /find-up@6.3.0: + resolution: + { + integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + dev: false + + /follow-redirects@1.15.3: + resolution: + { + integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==, + } + engines: { node: ">=4.0" } + peerDependencies: + debug: "*" + peerDependenciesMeta: + debug: + optional: true + dev: false + + /form-data@4.0.0: + resolution: + { + integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + } + engines: { node: ">= 6" } + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /fs-extra@11.1.1: + resolution: + { + integrity: sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==, + } + engines: { node: ">=14.14" } + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.0 + dev: false + + /fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + dev: false + + /fsevents@2.3.3: + resolution: + { + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /get-stream@6.0.1: + resolution: + { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: ">=10" } + dev: false + + /get-stream@8.0.1: + resolution: + { + integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, + } + engines: { node: ">=16" } + dev: true + + /glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + dependencies: + is-glob: 4.0.3 + dev: false + + /glob@7.1.6: + resolution: + { + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /globals@11.12.0: + resolution: + { + integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + } + engines: { node: ">=4" } + dev: true + + /globby@11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: ">=10" } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + dev: false + + /grapheme-splitter@1.0.4: + resolution: + { + integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==, + } + dev: true + + /has-flag@3.0.0: + resolution: + { + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + } + engines: { node: ">=4" } + dev: true + + /hash-base@3.1.0: + resolution: + { + integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==, + } + engines: { node: ">=4" } + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + dev: true + + /hash.js@1.1.7: + resolution: + { + integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, + } + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + /header-case@1.0.1: + resolution: + { + integrity: sha512-i0q9mkOeSuhXw6bGgiQCCBgY/jlZuV/7dZXyZ9c6LcBrqwvT8eT719E9uxE5LiZftdl+z81Ugbg/VvXV4OJOeQ==, + } + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /hmac-drbg@1.0.1: + resolution: + { + integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, + } + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + /human-signals@2.1.0: + resolution: + { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: ">=10.17.0" } + dev: false + + /human-signals@5.0.0: + resolution: + { + integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, + } + engines: { node: ">=16.17.0" } + dev: true + + /ignore@5.2.4: + resolution: + { + integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, + } + engines: { node: ">= 4" } + dev: false + + /inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + dev: false + + /inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + /is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + dev: false + + /is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + dev: false + + /is-hex-prefixed@1.0.0: + resolution: + { + integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==, + } + engines: { node: ">=6.5.0", npm: ">=3" } + + /is-lower-case@1.1.3: + resolution: + { + integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==, + } + dependencies: + lower-case: 1.1.4 + dev: true + + /is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + dev: false + + /is-stream@2.0.1: + resolution: + { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: ">=8" } + dev: false + + /is-stream@3.0.0: + resolution: + { + integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: true + + /is-upper-case@1.1.2: + resolution: + { + integrity: sha512-GQYSJMgfeAmVwh9ixyk888l7OIhNAGKtY6QA+IrWlu9MDTCaXmeozOZ2S9Knj7bQwBO/H6J2kb+pbyTUiMNbsw==, + } + dependencies: + upper-case: 1.1.3 + dev: true + + /isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + /javascript-natural-sort@0.7.1: + resolution: + { + integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==, + } + dev: true + + /joycon@3.1.1: + resolution: + { + integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==, + } + engines: { node: ">=10" } + dev: false + + /js-base64@3.7.5: + resolution: + { + integrity: sha512-3MEt5DTINKqfScXKfJFrRbxkrnk2AxPWGBL/ycjz4dK8iqiSJ06UxD8jh8xuh6p10TX4t2+7FsBYVxxQbMg+qA==, + } + dev: false + + /js-sha3@0.8.0: + resolution: + { + integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==, + } + + /js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + dev: true + + /jsesc@2.5.2: + resolution: + { + integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + } + engines: { node: ">=4" } + hasBin: true + dev: true + + /json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + dev: true + + /json-to-ast@2.1.0: + resolution: + { + integrity: sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==, + } + engines: { node: ">= 4" } + dependencies: + code-error-fragment: 0.0.230 + grapheme-splitter: 1.0.4 + dev: true + + /jsonfile@6.1.0: + resolution: + { + integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + } + dependencies: + universalify: 2.0.0 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /jsonpointer@5.0.1: + resolution: + { + integrity: sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /keccak@3.0.4: + resolution: + { + integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==, + } + engines: { node: ">=10.0.0" } + requiresBuild: true + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + readable-stream: 3.6.2 + dev: true + + /leven@3.1.0: + resolution: + { + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + } + engines: { node: ">=6" } + dev: true + + /lilconfig@2.1.0: + resolution: + { + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + } + engines: { node: ">=10" } + dev: false + + /lines-and-columns@1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + } + dev: false + + /load-tsconfig@0.2.5: + resolution: + { + integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: false + + /locate-path@7.2.0: + resolution: + { + integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + p-locate: 6.0.0 + dev: false + + /lodash.sortby@4.7.0: + resolution: + { + integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==, + } + dev: false + + /lodash@4.17.21: + resolution: + { + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + } + dev: true + + /lower-case-first@1.0.2: + resolution: + { + integrity: sha512-UuxaYakO7XeONbKrZf5FEgkantPf5DUqDayzP5VXZrtRPdH86s4kN47I8B3TW10S4QKiE3ziHNf3kRN//okHjA==, + } + dependencies: + lower-case: 1.1.4 + dev: true + + /lower-case@1.1.4: + resolution: + { + integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==, + } + dev: true + + /lru-cache@6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + dev: true + + /md5.js@1.3.5: + resolution: + { + integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==, + } + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /merge-stream@2.0.0: + resolution: + { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + + /merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: ">= 8" } + dev: false + + /merkletreejs@0.3.10: + resolution: + { + integrity: sha512-lin42tKfRdkW+6iE5pjtQ9BnH+1Hk3sJ5Fn9hUUSjcXRcJbSISHgPCfYvMNEXiNqZPhz/TyRPEV30qgnujsQ7A==, + } + engines: { node: ">= 7.6.0" } + dependencies: + bignumber.js: 9.1.2 + buffer-reverse: 1.0.1 + crypto-js: 3.3.0 + treeify: 1.1.0 + web3-utils: 1.10.2 + dev: false + + /micro-ftch@0.3.1: + resolution: + { + integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==, + } + dev: false + + /micromatch@4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: ">=8.6" } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: false + + /mime-db@1.52.0: + resolution: + { + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + } + engines: { node: ">= 0.6" } + dev: false + + /mime-types@2.1.35: + resolution: + { + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + } + engines: { node: ">= 0.6" } + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn@2.1.0: + resolution: + { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: ">=6" } + dev: false + + /mimic-fn@4.0.0: + resolution: + { + integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, + } + engines: { node: ">=12" } + dev: true + + /minimalistic-assert@1.0.1: + resolution: + { + integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, + } + + /minimalistic-crypto-utils@1.0.1: + resolution: + { + integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, + } + + /minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + dependencies: + brace-expansion: 1.1.11 + dev: false + + /ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + /mz@2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /neodoc@2.0.2: + resolution: + { + integrity: sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw==, + } + dependencies: + ansi-regex: 2.1.1 + dev: true + + /no-case@2.3.2: + resolution: + { + integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==, + } + dependencies: + lower-case: 1.1.4 + dev: true + + /node-addon-api@2.0.2: + resolution: + { + integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==, + } + dev: true + + /node-gyp-build@4.6.1: + resolution: + { + integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==, + } + hasBin: true + dev: true + + /normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + dev: false + + /npm-run-path@4.0.1: + resolution: + { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: ">=8" } + dependencies: + path-key: 3.1.1 + dev: false + + /npm-run-path@5.1.0: + resolution: + { + integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + path-key: 4.0.0 + dev: true + + /number-to-bn@1.7.0: + resolution: + { + integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==, + } + engines: { node: ">=6.5.0", npm: ">=3" } + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + /object-assign@4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: ">=0.10.0" } + dev: false + + /once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + dependencies: + wrappy: 1.0.2 + dev: false + + /onetime@5.1.2: + resolution: + { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: ">=6" } + dependencies: + mimic-fn: 2.1.0 + dev: false + + /onetime@6.0.0: + resolution: + { + integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, + } + engines: { node: ">=12" } + dependencies: + mimic-fn: 4.0.0 + dev: true + + /opensea-js@6.1.11: + resolution: + { + integrity: sha512-acoIgEqdBBChDUpXpDFNIYUDxWoOE2cNXEk0h6G+RqgMYKX89BsS0JSY7Q0D5qbfT/Q5CpIPRA1sEmyNC9UG5g==, + } + engines: { node: ">=16.0.0" } + requiresBuild: true + dependencies: + "@opensea/seaport-js": 2.0.8 + ethers: 5.7.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + dev: false + + /p-limit@4.0.0: + resolution: + { + integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + yocto-queue: 1.0.0 + dev: false + + /p-locate@6.0.0: + resolution: + { + integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dependencies: + p-limit: 4.0.0 + dev: false + + /param-case@2.1.1: + resolution: + { + integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==, + } + dependencies: + no-case: 2.3.2 + dev: true + + /pascal-case@2.0.1: + resolution: + { + integrity: sha512-qjS4s8rBOJa2Xm0jmxXiyh1+OFf6ekCWOvUaRgAQSktzlTbMotS0nmG9gyYAybCWBcuP4fsBeRCKNwGBnMe2OQ==, + } + dependencies: + camel-case: 3.0.0 + upper-case-first: 1.1.2 + dev: true + + /path-case@2.1.1: + resolution: + { + integrity: sha512-Ou0N05MioItesaLr9q8TtHVWmJ6fxWdqKB2RohFmNWVyJ+2zeKIeDNWAN6B/Pe7wpzWChhZX6nONYmOnMeJQ/Q==, + } + dependencies: + no-case: 2.3.2 + dev: true + + /path-exists@5.0.0: + resolution: + { + integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + dev: false + + /path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: ">=0.10.0" } + dev: false + + /path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } + + /path-key@4.0.0: + resolution: + { + integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, + } + engines: { node: ">=12" } + dev: true + + /path-type@4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: ">=8" } + dev: false + + /pathe@1.1.1: + resolution: + { + integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==, + } + dev: false + + /pbkdf2@3.1.2: + resolution: + { + integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==, + } + engines: { node: ">=0.12" } + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + dev: true + + /phoenix@1.7.9: + resolution: + { + integrity: sha512-oHBka/WCKVtFHNCCqnVDxiSHQZ0vvV0pU1I4oBmm68rNvGH3lVjdNGLRhK0+c3zcfsrqgpRS2p+Et6N4QAd2LQ==, + } + dev: false + + /picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } + dev: false + + /picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + dev: false + + /pirates@4.0.6: + resolution: + { + integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, + } + engines: { node: ">= 6" } + dev: false + + /postcss-load-config@4.0.1: + resolution: + { + integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==, + } + engines: { node: ">= 14" } + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + yaml: 2.3.2 + dev: false + + /prettier-plugin-solidity@1.1.3(prettier@2.8.8): + resolution: + { + integrity: sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==, + } + engines: { node: ">=12" } + requiresBuild: true + peerDependencies: + prettier: ">=2.3.0 || >=3.0.0-alpha.0" + dependencies: + "@solidity-parser/parser": 0.16.1 + prettier: 2.8.8 + semver: 7.5.4 + solidity-comments-extractor: 0.0.7 + dev: true + optional: true + + /prettier@2.8.8: + resolution: + { + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, + } + engines: { node: ">=10.13.0" } + hasBin: true + requiresBuild: true + dev: true + optional: true + + /prettier@3.0.3: + resolution: + { + integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==, + } + engines: { node: ">=14" } + hasBin: true + dev: true + + /proxy-from-env@1.1.0: + resolution: + { + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + } + dev: false + + /punycode@2.3.0: + resolution: + { + integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, + } + engines: { node: ">=6" } + + /pure-rand@5.0.5: + resolution: + { + integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==, + } + dev: true + + /queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + dev: false + + /randombytes@2.1.0: + resolution: + { + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, + } + dependencies: + safe-buffer: 5.2.1 + + /readable-stream@3.6.2: + resolution: + { + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + } + engines: { node: ">= 6" } + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + dev: true + + /readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + dependencies: + picomatch: 2.3.1 + dev: false + + /regenerator-runtime@0.14.0: + resolution: + { + integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, + } + dev: true + + /resolve-from@5.0.0: + resolution: + { + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + } + engines: { node: ">=8" } + dev: false + + /reusify@1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + dev: false + + /ripemd160@2.0.2: + resolution: + { + integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==, + } + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + dev: true + + /rlp@2.2.7: + resolution: + { + integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==, + } + hasBin: true + dependencies: + bn.js: 5.2.1 + dev: true + + /rollup@3.29.4: + resolution: + { + integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==, + } + engines: { node: ">=14.18.0", npm: ">=8.0.0" } + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: false + + /run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + dependencies: + queue-microtask: 1.2.3 + dev: false + + /safe-buffer@5.2.1: + resolution: + { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + + /scrypt-js@3.0.1: + resolution: + { + integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==, + } + + /secp256k1@4.0.3: + resolution: + { + integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==, + } + engines: { node: ">=10.0.0" } + requiresBuild: true + dependencies: + elliptic: 6.5.4 + node-addon-api: 2.0.2 + node-gyp-build: 4.6.1 + dev: true + + /semver@7.5.4: + resolution: + { + integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + + /sentence-case@2.1.1: + resolution: + { + integrity: sha512-ENl7cYHaK/Ktwk5OTD+aDbQ3uC8IByu/6Bkg+HDv8Mm+XnBnppVNalcfJTNsp1ibstKh030/JKQQWglDvtKwEQ==, + } + dependencies: + no-case: 2.3.2 + upper-case-first: 1.1.2 + dev: true + + /setimmediate@1.0.5: + resolution: + { + integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, + } + dev: true + + /sha.js@2.4.11: + resolution: + { + integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==, + } + hasBin: true + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + dev: true + + /shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + /signal-exit@3.0.7: + resolution: + { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + dev: false + + /signal-exit@4.1.0: + resolution: + { + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + } + engines: { node: ">=14" } + dev: true + + /slash@3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: ">=8" } + dev: false + + /snake-case@2.1.0: + resolution: + { + integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==, + } + dependencies: + no-case: 2.3.2 + dev: true + + /solidity-comments-extractor@0.0.7: + resolution: + { + integrity: sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==, + } + requiresBuild: true + dev: true + optional: true - /yocto-queue@1.0.0: - resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} - engines: {node: '>=12.20'} - dev: false + /source-map-support@0.5.21: + resolution: + { + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + } + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + + /source-map@0.5.7: + resolution: + { + integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + } + engines: { node: ">=0.10.0" } + dev: true + + /source-map@0.6.1: + resolution: + { + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + } + engines: { node: ">=0.10.0" } + dev: true + + /source-map@0.8.0-beta.0: + resolution: + { + integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==, + } + engines: { node: ">= 8" } + dependencies: + whatwg-url: 7.1.0 + dev: false + + /string_decoder@1.3.0: + resolution: + { + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + } + dependencies: + safe-buffer: 5.2.1 + dev: true + + /strip-final-newline@2.0.0: + resolution: + { + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + } + engines: { node: ">=6" } + dev: false + + /strip-final-newline@3.0.0: + resolution: + { + integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, + } + engines: { node: ">=12" } + dev: true + + /strip-hex-prefix@1.0.0: + resolution: + { + integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==, + } + engines: { node: ">=6.5.0", npm: ">=3" } + dependencies: + is-hex-prefixed: 1.0.0 + + /sucrase@3.34.0: + resolution: + { + integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==, + } + engines: { node: ">=8" } + hasBin: true + dependencies: + "@jridgewell/gen-mapping": 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color@5.5.0: + resolution: + { + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + } + engines: { node: ">=4" } + dependencies: + has-flag: 3.0.0 + dev: true + + /swap-case@1.1.2: + resolution: + { + integrity: sha512-BAmWG6/bx8syfc6qXPprof3Mn5vQgf5dwdUNJhsNqU9WdPt5P+ES/wQ5bxfijy8zwZgZZHslC3iAsxsuQMCzJQ==, + } + dependencies: + lower-case: 1.1.4 + upper-case: 1.1.3 + dev: true + + /thenify-all@1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + } + engines: { node: ">=0.8" } + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + } + dependencies: + any-promise: 1.3.0 + dev: false + + /title-case@2.1.1: + resolution: + { + integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==, + } + dependencies: + no-case: 2.3.2 + upper-case: 1.1.3 + dev: true + + /to-fast-properties@2.0.0: + resolution: + { + integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + } + engines: { node: ">=4" } + dev: true + + /to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + dependencies: + is-number: 7.0.0 + dev: false + + /tr46@1.0.1: + resolution: + { + integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==, + } + dependencies: + punycode: 2.3.0 + dev: false + + /tree-kill@1.2.2: + resolution: + { + integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, + } + hasBin: true + dev: false + + /treeify@1.1.0: + resolution: + { + integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==, + } + engines: { node: ">=0.6" } + dev: false + + /ts-interface-checker@0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, + } + dev: false + + /tsup@7.2.0(typescript@5.2.2): + resolution: + { + integrity: sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==, + } + engines: { node: ">=16.14" } + hasBin: true + peerDependencies: + "@swc/core": ^1 + postcss: ^8.4.12 + typescript: ">=4.1.0" + peerDependenciesMeta: + "@swc/core": + optional: true + postcss: + optional: true + typescript: + optional: true + dependencies: + bundle-require: 4.0.2(esbuild@0.18.20) + cac: 6.7.14 + chokidar: 3.5.3 + debug: 4.3.4 + esbuild: 0.18.20 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + postcss-load-config: 4.0.1 + resolve-from: 5.0.0 + rollup: 3.29.4 + source-map: 0.8.0-beta.0 + sucrase: 3.34.0 + tree-kill: 1.2.2 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + - ts-node + dev: false + + /typescript@5.2.2: + resolution: + { + integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==, + } + engines: { node: ">=14.17" } + hasBin: true + + /undici-types@5.25.3: + resolution: + { + integrity: sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==, + } + dev: true + + /universalify@2.0.0: + resolution: + { + integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==, + } + engines: { node: ">= 10.0.0" } + dev: false + + /upper-case-first@1.1.2: + resolution: + { + integrity: sha512-wINKYvI3Db8dtjikdAqoBbZoP6Q+PZUyfMR7pmwHzjC2quzSkUq5DmPrTtPEqHaz8AGtmsB4TqwapMTM1QAQOQ==, + } + dependencies: + upper-case: 1.1.3 + dev: true + + /upper-case@1.1.3: + resolution: + { + integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==, + } + dev: true + + /uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + dependencies: + punycode: 2.3.0 + dev: true + + /utf8@3.0.0: + resolution: + { + integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==, + } + + /util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + dev: true + + /web3-utils@1.10.0: + resolution: + { + integrity: sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==, + } + engines: { node: ">=8.0.0" } + dependencies: + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereumjs-util: 7.1.5 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: true + + /web3-utils@1.10.2: + resolution: + { + integrity: sha512-TdApdzdse5YR+5GCX/b/vQnhhbj1KSAtfrDtRW7YS0kcWp1gkJsN62gw6GzCaNTeXookB7UrLtmDUuMv65qgow==, + } + engines: { node: ">=8.0.0" } + dependencies: + "@ethereumjs/util": 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.0.10 + ethereum-cryptography: 2.1.2 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + dev: false + + /webextension-polyfill@0.10.0: + resolution: + { + integrity: sha512-c5s35LgVa5tFaHhrZDnr3FpQpjj1BB+RXhLTYUxGqBVN460HkbM8TBtEqdXWbpTKfzwCcjAZVF7zXCYSKtcp9g==, + } + dev: false + + /webidl-conversions@4.0.2: + resolution: + { + integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==, + } + dev: false + + /whatwg-url@7.1.0: + resolution: + { + integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==, + } + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + dev: false + + /which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + dev: false + + /ws@7.4.6: + resolution: + { + integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==, + } + engines: { node: ">=8.3.0" } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + dev: false + + /yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + dev: true + + /yaml@2.3.2: + resolution: + { + integrity: sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==, + } + engines: { node: ">= 14" } + dev: false + + /yocto-queue@1.0.0: + resolution: + { + integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==, + } + engines: { node: ">=12.20" } + dev: false diff --git a/src/cli/cli.ts b/src/cli/cli.ts index bbbf985..0dc92a7 100644 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -1,10 +1,10 @@ -import { Command } from 'commander' +import { Command } from "commander" -import config from '@/cli/commands/config' -import init from '@/cli/commands/init' -import references from '@/cli/commands/references' -import start from '@/cli/commands/start' -import strategies from '@/cli/commands/strategies' +import config from "@/cli/commands/config" +import init from "@/cli/commands/init" +import references from "@/cli/commands/references" +import start from "@/cli/commands/start" +import strategies from "@/cli/commands/strategies" const program = new Command() @@ -17,46 +17,46 @@ const program = new Command() // from the awaits lol. program - .name('mev') - .description('The controlling property of an aggressive long-tail mev bot.') + .name("mev") + .description("The controlling property of an aggressive long-tail mev bot.") program - .command('init') - .description('Initialize a new mev project.') - .option('-c --config ', 'Path to config file.') - .option('-r --root ', 'Path to root directory.') - .action(init) + .command("init") + .description("Initialize a new mev project.") + .option("-c --config ", "Path to config file.") + .option("-r --root ", "Path to root directory.") + .action(init) program - .command('config') - .description('List the active configurations.') - .option('-c --config ', 'Path to config file.') - .option('-r --root ', 'Path to root directory.') - .action(config) + .command("config") + .description("List the active configurations.") + .option("-c --config ", "Path to config file.") + .option("-r --root ", "Path to root directory.") + .action(config) program - .command('strategies') - .description('List all strategies.') - .option('-c --config ', 'Path to config file.') - .option('-r --root ', 'Path to root directory.') - .action(strategies) + .command("strategies") + .description("List all strategies.") + .option("-c --config ", "Path to config file.") + .option("-r --root ", "Path to root directory.") + .action(strategies) program - .command('references') - .description('Generate the references for the onchain mechanisms.') - .option('-c --config ', 'Path to config file.') - .option('-r --root ', 'Path to root directory.') - .action(references) + .command("references") + .description("Generate the references for the onchain mechanisms.") + .option("-c --config ", "Path to config file.") + .option("-r --root ", "Path to root directory.") + .action(references) program - .command('start') - .description('Run the bot.') - .option('-c --config ', 'Path to config file.') - .option('-r --root ', 'Path to root directory.') - .option('-s --strategy ', 'Strategy to run.') - .action(start) + .command("start") + .description("Run the bot.") + .option("-c --config ", "Path to config file.") + .option("-r --root ", "Path to root directory.") + .option("-s --strategy ", "Strategy to run.") + .action(start) // Run commander with async/await. ;(async function () { - await program.parseAsync(process.argv) + await program.parseAsync(process.argv) })() diff --git a/src/cli/commands/config.ts b/src/cli/commands/config.ts index 3436c47..e491adb 100644 --- a/src/cli/commands/config.ts +++ b/src/cli/commands/config.ts @@ -1,16 +1,16 @@ -import { configs } from '@/lib/functions/config' +import { configs } from "@/lib/functions/config" export default async function ( - options: Parameters[number] = {} + options: Parameters[number] = {}, ) { - for (const config of await configs(options)) { - console.table( - Object.entries(config).map(([key, value]) => ({ - key, - value - })) - ) - } + for (const config of await configs(options)) { + console.table( + Object.entries(config).map(([key, value]) => ({ + key, + value, + })), + ) + } - process.exit() + process.exit() } diff --git a/src/cli/commands/init.ts b/src/cli/commands/init.ts index 042b41f..a7afbc9 100644 --- a/src/cli/commands/init.ts +++ b/src/cli/commands/init.ts @@ -1,62 +1,62 @@ -import dedent from 'dedent' -import { default as fse } from 'fs-extra' -import { resolve } from 'pathe' -import pc from 'picocolors' +import dedent from "dedent" +import { default as fse } from "fs-extra" +import { resolve } from "pathe" +import pc from "picocolors" -import { find, format, name, usingTypescript } from '@/lib/functions/config' -import { logger } from '@/lib/logger' +import { find, format, name, usingTypescript } from "@/lib/functions/config" +import { logger } from "@/lib/logger" export default async function init( - options: Partial<{ - config: string - root: string - content: any - }> + options: Partial<{ + config: string + root: string + content: any + }>, ) { - const configPath = await find({ - config: options.config, - root: options.root - }) - - if (configPath) { - logger.info( - `* Found configuration file at: \n\t ${pc.gray(configPath)}` - ) - - return - } - - const isUsingTypescript = await usingTypescript() - const rootDir = resolve(options.root || process.cwd()) - - let outPath: string - if (options.config) { - outPath = resolve(rootDir, options.config) - } else { - outPath = resolve( - rootDir, - `${name}.config.${isUsingTypescript ? 'ts' : 'js'}` - ) - } - - let content: string - if (isUsingTypescript) { - const config = options.content ?? {} - - content = dedent(` + const configPath = await find({ + config: options.config, + root: options.root, + }) + + if (configPath) { + logger.info( + `* Found configuration file at: \n\t ${pc.gray(configPath)}`, + ) + + return + } + + const isUsingTypescript = await usingTypescript() + const rootDir = resolve(options.root || process.cwd()) + + let outPath: string + if (options.config) { + outPath = resolve(rootDir, options.config) + } else { + outPath = resolve( + rootDir, + `${name}.config.${isUsingTypescript ? "ts" : "js"}`, + ) + } + + let content: string + if (isUsingTypescript) { + const config = options.content ?? {} + + content = dedent(` import { defineConfig } from "@nftchance/mev" export default defineConfig(${JSON.stringify(config)}) `) - } else { - content = dedent(` + } else { + content = dedent(` // TODO: This is not yet supported. `) - } + } - // ! Run prettier so that we format out the stringified JSON. - const formatted = await format(content) - await fse.writeFile(outPath, formatted) + // ! Run prettier so that we format out the stringified JSON. + const formatted = await format(content) + await fse.writeFile(outPath, formatted) - logger.info(`✔︎ Generated configuration file at: \n\t ${pc.gray(outPath)}`) + logger.info(`✔︎ Generated configuration file at: \n\t ${pc.gray(outPath)}`) } diff --git a/src/cli/commands/references.ts b/src/cli/commands/references.ts index b92e1d8..2aaebcc 100644 --- a/src/cli/commands/references.ts +++ b/src/cli/commands/references.ts @@ -1,17 +1,17 @@ -import { configs } from '@/lib/functions/config' -import { generateReferences } from '@/lib/functions/references' +import { configs } from "@/lib/functions/config" +import { generateReferences } from "@/lib/functions/references" export default async function ( - options: Parameters[number] = {} + options: Parameters[number] = {}, ) { - // TODO: Right now the generation of references can overwrite existing files - // in the references directory. This is not ideal, and should be fixed - // in the future though it does not really have any active impact beyond - // build-time taking longer than it should. + // TODO: Right now the generation of references can overwrite existing files + // in the references directory. This is not ideal, and should be fixed + // in the future though it does not really have any active impact beyond + // build-time taking longer than it should. - for (const config of await configs(options)) { - await generateReferences(config.references) - } + for (const config of await configs(options)) { + await generateReferences(config.references) + } - process.exit() + process.exit() } diff --git a/src/cli/commands/start.ts b/src/cli/commands/start.ts index a4e52ce..74ff045 100644 --- a/src/cli/commands/start.ts +++ b/src/cli/commands/start.ts @@ -1,41 +1,41 @@ -import pc from 'picocolors' +import pc from "picocolors" -import { Engine } from '@/core/engine/engine' -import { configs } from '@/lib/functions/config' -import { getStrategy } from '@/lib/functions/strategies' -import { logger } from '@/lib/logger' +import { Engine } from "@/core/engine/engine" +import { configs } from "@/lib/functions/config" +import { getStrategy } from "@/lib/functions/strategies" +import { logger } from "@/lib/logger" type Props = Partial<{ - strategy: string + strategy: string }> & - Parameters[0] + Parameters[0] export default async function (options: Props = {}) { - const { strategy: strategyName } = options + const { strategy: strategyName } = options - let ran = false + let ran = false - for (const config of await configs(options)) { - let strategies: Record = config.strategies + for (const config of await configs(options)) { + let strategies: Record = config.strategies - if (strategyName) { - const strategy = getStrategy( - config.strategies, - strategyName - ) + if (strategyName) { + const strategy = getStrategy( + config.strategies, + strategyName, + ) - if (strategy === undefined) { - logger.warn(`Strategy '${pc.gray(strategyName)}' not found.`) - continue - } + if (strategy === undefined) { + logger.warn(`Strategy '${pc.gray(strategyName)}' not found.`) + continue + } - strategies = { [strategyName]: strategy } - } + strategies = { [strategyName]: strategy } + } - ran = true + ran = true - await new Engine(config, strategies).run() - } + await new Engine(config, strategies).run() + } - if (!ran) logger.error('No strategies were run.') + if (!ran) logger.error("No strategies were run.") } diff --git a/src/cli/commands/strategies.ts b/src/cli/commands/strategies.ts index c87dcb2..cbf7a4e 100644 --- a/src/cli/commands/strategies.ts +++ b/src/cli/commands/strategies.ts @@ -1,18 +1,18 @@ -import { configs } from '@/lib/functions/config' -import { getStrategyNames } from '@/lib/functions/strategies' +import { configs } from "@/lib/functions/config" +import { getStrategyNames } from "@/lib/functions/strategies" export default async function ( - options: Parameters[number] = {} + options: Parameters[number] = {}, ) { - for (const config of await configs(options)) { - const names = getStrategyNames(config.strategies) + for (const config of await configs(options)) { + const names = getStrategyNames(config.strategies) - console.table( - names.map((name, index) => ({ - name - })) - ) - } + console.table( + names.map((name, index) => ({ + name, + })), + ) + } - process.exit() + process.exit() } diff --git a/src/core/abstract.ts b/src/core/abstract.ts index 1455242..2bf902f 100644 --- a/src/core/abstract.ts +++ b/src/core/abstract.ts @@ -1,8 +1,8 @@ -import { logger as dLogger, Logger } from '@/lib/logger' +import { logger as dLogger, Logger } from "@/lib/logger" export abstract class Abstract { - constructor( - public readonly key: TKey, - public readonly logger: Logger = dLogger - ) {} + constructor( + public readonly key: TKey, + public readonly logger: Logger = dLogger, + ) {} } diff --git a/src/core/collector.ts b/src/core/collector.ts index 52294b2..1b52634 100644 --- a/src/core/collector.ts +++ b/src/core/collector.ts @@ -1,22 +1,22 @@ -import { EventEmitter } from 'node:events' +import { EventEmitter } from "node:events" -import { Abstract } from '@/core/abstract' +import { Abstract } from "@/core/abstract" export abstract class Collector< - TKey extends string, - TCollection + TKey extends string, + TCollection, > extends Abstract { - constructor(public readonly key: TKey) { - super(key) - } + constructor(public readonly key: TKey) { + super(key) + } - emit(stream: EventEmitter, collection: TCollection) { - try { - stream.emit('Collection', { key: this.key, collection }) - } catch (err) { - this.logger.error(`[${this.key}]: ${err}`) - } - } + emit(stream: EventEmitter, collection: TCollection) { + try { + stream.emit("Collection", { key: this.key, collection }) + } catch (err) { + this.logger.error(`[${this.key}]: ${err}`) + } + } - abstract getCollectionStream: (stream: EventEmitter) => Promise + abstract getCollectionStream: (stream: EventEmitter) => Promise } diff --git a/src/core/collectors/block.ts b/src/core/collectors/block.ts index aa95c8b..180fbbf 100644 --- a/src/core/collectors/block.ts +++ b/src/core/collectors/block.ts @@ -1,38 +1,38 @@ -import { providers } from 'ethers' -import { EventEmitter } from 'node:events' +import { providers } from "ethers" +import { EventEmitter } from "node:events" -import { Collector } from '@/core/collector' +import { Collector } from "@/core/collector" -const key = 'NewBlock' as const +const key = "NewBlock" as const export type BlockCollection = { - hash: string - number: number + hash: string + number: number } export class BlockCollector extends Collector { - constructor(public readonly client: providers.WebSocketProvider) { - super(key) - } + constructor(public readonly client: providers.WebSocketProvider) { + super(key) + } - getCollectionStream = async (stream: EventEmitter) => { - this.client.on('block', async (blockNumber: number) => { - try { - const block = await this.client.getBlock(blockNumber) + getCollectionStream = async (stream: EventEmitter) => { + this.client.on("block", async (blockNumber: number) => { + try { + const block = await this.client.getBlock(blockNumber) - if (!block?.hash) { - this.logger.warn( - `[${this.key}]: Block [${blockNumber}] does not exist.` - ) - } + if (!block?.hash) { + this.logger.warn( + `[${this.key}]: Block [${blockNumber}] does not exist.`, + ) + } - this.emit(stream, { - hash: block.hash, - number: block.number - }) - } catch (err) { - this.logger.error(`[${this.key}] Failed retrieving block.`) - } - }) - } + this.emit(stream, { + hash: block.hash, + number: block.number, + }) + } catch (err) { + this.logger.error(`[${this.key}] Failed retrieving block.`) + } + }) + } } diff --git a/src/core/collectors/heartbeat.ts b/src/core/collectors/heartbeat.ts index c77fbcb..ddb9a60 100644 --- a/src/core/collectors/heartbeat.ts +++ b/src/core/collectors/heartbeat.ts @@ -1,29 +1,29 @@ -import { EventEmitter } from 'node:events' +import { EventEmitter } from "node:events" -import { Collector } from '@/core/collector' +import { Collector } from "@/core/collector" -const key = 'Heartbeat' as const +const key = "Heartbeat" as const export type HeartbeatCollection = { - nonce: number + nonce: number } export class HeartbeatCollector extends Collector< - typeof key, - HeartbeatCollection + typeof key, + HeartbeatCollection > { - public static key = key - public nonce = 0 + public static key = key + public nonce = 0 - constructor(public readonly rate: number) { - super(key) - } + constructor(public readonly rate: number) { + super(key) + } - getCollectionStream = async (stream: EventEmitter) => { - setInterval(() => { - this.emit(stream, { - nonce: this.nonce++ - }) - }, this.rate) - } + getCollectionStream = async (stream: EventEmitter) => { + setInterval(() => { + this.emit(stream, { + nonce: this.nonce++, + }) + }, this.rate) + } } diff --git a/src/core/collectors/opensea.ts b/src/core/collectors/opensea.ts index e5fdbe7..dde9546 100644 --- a/src/core/collectors/opensea.ts +++ b/src/core/collectors/opensea.ts @@ -1,45 +1,45 @@ -import { OpenSeaStreamClient } from '@opensea/stream-js' -import { EventEmitter } from 'node:events' +import { OpenSeaStreamClient } from "@opensea/stream-js" +import { EventEmitter } from "node:events" -import { Collector } from '@/core/collector' +import { Collector } from "@/core/collector" -const key = 'Opensea' as const +const key = "Opensea" as const const collectorKeys = [ - 'onItemMetadataUpdated', - 'onItemCancelled', - 'onItemListed', - 'onItemSold', - 'onItemTransferred', - 'onItemReceivedOffer', - 'onItemReceivedBid', - 'onCollectionOffer', - 'onTraitOffer', - 'onOrderInvalidate', - 'onOrderRevalidate' + "onItemMetadataUpdated", + "onItemCancelled", + "onItemListed", + "onItemSold", + "onItemTransferred", + "onItemReceivedOffer", + "onItemReceivedBid", + "onCollectionOffer", + "onTraitOffer", + "onOrderInvalidate", + "onOrderRevalidate", ] as const export class OpenseaCollector< - TKey extends (typeof collectorKeys)[number] + TKey extends (typeof collectorKeys)[number], > extends Collector< - `${typeof key}${string}`, - // ! Recover the callback parameter type from the OpenSeaStreamClient. - Parameters[1]>[0]['payload'] + `${typeof key}${string}`, + // ! Recover the callback parameter type from the OpenSeaStreamClient. + Parameters[1]>[0]["payload"] > { - public static key = key - - constructor( - public readonly collectorKey: TKey, - public readonly openseaStreamClient: OpenSeaStreamClient - ) { - super(`${key}${collectorKey.replace('on', '')}`) - } - - getCollectionStream = async (stream: EventEmitter) => { - this.openseaStreamClient[this.collectorKey]('*', event => { - this.emit(stream, event.payload) - }) - } + public static key = key + + constructor( + public readonly collectorKey: TKey, + public readonly openseaStreamClient: OpenSeaStreamClient, + ) { + super(`${key}${collectorKey.replace("on", "")}`) + } + + getCollectionStream = async (stream: EventEmitter) => { + this.openseaStreamClient[this.collectorKey]("*", (event) => { + this.emit(stream, event.payload) + }) + } } // ! TODO: There is probably a better way to do this, but I @@ -49,112 +49,112 @@ export class OpenseaCollector< // while maintaing the verbosity feel free to open a PR // with an improvement. -export class OpenseaItemMetadataCollector extends OpenseaCollector<'onItemMetadataUpdated'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemMetadataUpdated', openseaStreamClient) - } +export class OpenseaItemMetadataCollector extends OpenseaCollector<"onItemMetadataUpdated"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemMetadataUpdated", openseaStreamClient) + } } export type OpenseaItemMetadataCollection = Parameters< - OpenseaItemMetadataCollector['emit'] + OpenseaItemMetadataCollector["emit"] >[1] -export class OpenseaItemCancelledCollector extends OpenseaCollector<'onItemCancelled'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemCancelled', openseaStreamClient) - } +export class OpenseaItemCancelledCollector extends OpenseaCollector<"onItemCancelled"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemCancelled", openseaStreamClient) + } } export type OpenseaItemCancelledCollection = Parameters< - OpenseaItemCancelledCollector['emit'] + OpenseaItemCancelledCollector["emit"] >[1] -export class OpenseaListingCollector extends OpenseaCollector<'onItemListed'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemListed', openseaStreamClient) - } +export class OpenseaListingCollector extends OpenseaCollector<"onItemListed"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemListed", openseaStreamClient) + } } export type OpenseaListingCollection = Parameters< - OpenseaListingCollector['emit'] + OpenseaListingCollector["emit"] >[1] -export class OpenseaItemSoldCollector extends OpenseaCollector<'onItemSold'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemSold', openseaStreamClient) - } +export class OpenseaItemSoldCollector extends OpenseaCollector<"onItemSold"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemSold", openseaStreamClient) + } } export type OpenseaItemSoldCollection = Parameters< - OpenseaItemSoldCollector['emit'] + OpenseaItemSoldCollector["emit"] >[1] -export class OpenseaItemTransferredCollector extends OpenseaCollector<'onItemTransferred'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemTransferred', openseaStreamClient) - } +export class OpenseaItemTransferredCollector extends OpenseaCollector<"onItemTransferred"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemTransferred", openseaStreamClient) + } } export type OpenseaItemTransferredCollection = Parameters< - OpenseaItemTransferredCollector['emit'] + OpenseaItemTransferredCollector["emit"] >[1] -export class OpenseaItemOfferCollector extends OpenseaCollector<'onItemReceivedOffer'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemReceivedOffer', openseaStreamClient) - } +export class OpenseaItemOfferCollector extends OpenseaCollector<"onItemReceivedOffer"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemReceivedOffer", openseaStreamClient) + } } export type OpenseaItemOfferCollection = Parameters< - OpenseaItemOfferCollector['emit'] + OpenseaItemOfferCollector["emit"] >[1] -export class OpenseaItemBidCollector extends OpenseaCollector<'onItemReceivedBid'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onItemReceivedBid', openseaStreamClient) - } +export class OpenseaItemBidCollector extends OpenseaCollector<"onItemReceivedBid"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onItemReceivedBid", openseaStreamClient) + } } export type OpenseaItemBidCollection = Parameters< - OpenseaItemBidCollector['emit'] + OpenseaItemBidCollector["emit"] >[1] -export class OpenseaCollectionOfferCollector extends OpenseaCollector<'onCollectionOffer'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onCollectionOffer', openseaStreamClient) - } +export class OpenseaCollectionOfferCollector extends OpenseaCollector<"onCollectionOffer"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onCollectionOffer", openseaStreamClient) + } } export type OpenseaCollectionOfferCollection = Parameters< - OpenseaCollectionOfferCollector['emit'] + OpenseaCollectionOfferCollector["emit"] >[1] -export class OpenseaTraitOfferCollector extends OpenseaCollector<'onTraitOffer'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onTraitOffer', openseaStreamClient) - } +export class OpenseaTraitOfferCollector extends OpenseaCollector<"onTraitOffer"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onTraitOffer", openseaStreamClient) + } } export type OpenseaTraitOfferCollection = Parameters< - OpenseaTraitOfferCollector['emit'] + OpenseaTraitOfferCollector["emit"] >[1] -export class OpenseaOrderInvalidateCollector extends OpenseaCollector<'onOrderInvalidate'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onOrderInvalidate', openseaStreamClient) - } +export class OpenseaOrderInvalidateCollector extends OpenseaCollector<"onOrderInvalidate"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onOrderInvalidate", openseaStreamClient) + } } export type OpenseaOrderInvalidateCollection = Parameters< - OpenseaOrderInvalidateCollector['emit'] + OpenseaOrderInvalidateCollector["emit"] >[1] -export class OpenseaOrderRevalidateCollector extends OpenseaCollector<'onOrderRevalidate'> { - constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { - super('onOrderRevalidate', openseaStreamClient) - } +export class OpenseaOrderRevalidateCollector extends OpenseaCollector<"onOrderRevalidate"> { + constructor(public readonly openseaStreamClient: OpenSeaStreamClient) { + super("onOrderRevalidate", openseaStreamClient) + } } export type OpenseaOrderRevalidateCollection = Parameters< - OpenseaOrderRevalidateCollector['emit'] + OpenseaOrderRevalidateCollector["emit"] >[1] diff --git a/src/core/engine/config.ts b/src/core/engine/config.ts index b6f171c..c919ed2 100644 --- a/src/core/engine/config.ts +++ b/src/core/engine/config.ts @@ -1,57 +1,57 @@ -import dotenv from 'dotenv' +import dotenv from "dotenv" -import { Collector } from '@/core/collector' +import { Collector } from "@/core/collector" import { - DEFAULT_COLLECTORS, - DEFAULT_EXECUTORS, - DEFAULT_NETWORK, - DEFAULT_NETWORKS, - DEFAULT_RPC, - DEFAULT_STRATEGIES -} from '@/core/engine/constants' -import { Executor } from '@/core/executor' + DEFAULT_COLLECTORS, + DEFAULT_EXECUTORS, + DEFAULT_NETWORK, + DEFAULT_NETWORKS, + DEFAULT_RPC, + DEFAULT_STRATEGIES, +} from "@/core/engine/constants" +import { Executor } from "@/core/executor" // * Load dotenv config here so that when a user imports the library // they automatically have access to process.env based on their .env. dotenv.config() export function defineConfig({ - references = {}, - defaultNetwork = DEFAULT_NETWORK, - networks = DEFAULT_NETWORKS, - collectors = DEFAULT_COLLECTORS, - executors = DEFAULT_EXECUTORS, - strategies = DEFAULT_STRATEGIES + references = {}, + defaultNetwork = DEFAULT_NETWORK, + networks = DEFAULT_NETWORKS, + collectors = DEFAULT_COLLECTORS, + executors = DEFAULT_EXECUTORS, + strategies = DEFAULT_STRATEGIES, }: Partial<{ - references: Partial<{ - artifacts: string - etherscan: (address: string) => string - bytecode: ( - address: string, - block: number | 'latest' | 'pending' - ) => Promise - contracts: Record - }> - defaultNetwork: keyof typeof DEFAULT_RPC - networks: Record< - string, - { - rpc: `wss://${string}` - } - > - collectors: Array> - executors: Array> - strategies: Record + references: Partial<{ + artifacts: string + etherscan: (address: string) => string + bytecode: ( + address: string, + block: number | "latest" | "pending", + ) => Promise + contracts: Record + }> + defaultNetwork: keyof typeof DEFAULT_RPC + networks: Record< + string, + { + rpc: `wss://${string}` + } + > + collectors: Array> + executors: Array> + strategies: Record }> = {}) { - return { - references, - defaultNetwork, - networks, - collectors, - executors, - strategies: - collectors === DEFAULT_COLLECTORS && executors === DEFAULT_EXECUTORS - ? { ...DEFAULT_STRATEGIES, ...strategies } - : strategies - } as const + return { + references, + defaultNetwork, + networks, + collectors, + executors, + strategies: + collectors === DEFAULT_COLLECTORS && executors === DEFAULT_EXECUTORS + ? { ...DEFAULT_STRATEGIES, ...strategies } + : strategies, + } as const } diff --git a/src/core/engine/constants.ts b/src/core/engine/constants.ts index 3437bd6..a72abdb 100644 --- a/src/core/engine/constants.ts +++ b/src/core/engine/constants.ts @@ -1,65 +1,65 @@ -import { BlockCollector } from '../collectors/block' -import { LogExecutor } from '../executors/log' -import { providers } from 'ethers' +import { BlockCollector } from "../collectors/block" +import { LogExecutor } from "../executors/log" +import { providers } from "ethers" -import { BlockLog } from '@/core/strategies/block.log' +import { BlockLog } from "@/core/strategies/block.log" // * Resource to acquire public RPC node URLs to use as default: // - https://chainlist.org/ export const DEFAULT_RPC = { - // ! Mainnet - 1: { - default: 'wss://ethereum.publicnode.com' - }, - // ! Optimism - 10: { - default: 'wss://optimism.publicnode.com' - }, - // ! Polygon - 137: { - default: 'wss://polygon-bor.publicnode.com' - }, - // ! Base - 8453: { - default: 'wss://base.publicnode.com' - }, - // ! Arbitrum - 42161: { - default: 'wss://arbitrum-one.publicnode.com' - } + // ! Mainnet + 1: { + default: "wss://ethereum.publicnode.com", + }, + // ! Optimism + 10: { + default: "wss://optimism.publicnode.com", + }, + // ! Polygon + 137: { + default: "wss://polygon-bor.publicnode.com", + }, + // ! Base + 8453: { + default: "wss://base.publicnode.com", + }, + // ! Arbitrum + 42161: { + default: "wss://arbitrum-one.publicnode.com", + }, } as const export const DEFAULT_PROVIDERS = Object.fromEntries( - Object.entries(DEFAULT_RPC).map(([key, value]) => [ - key, - Object.fromEntries( - Object.entries(value).map(([key, value]) => [ - key, - new providers.WebSocketProvider(value) - ]) - ) - ]) + Object.entries(DEFAULT_RPC).map(([key, value]) => [ + key, + Object.fromEntries( + Object.entries(value).map(([key, value]) => [ + key, + new providers.WebSocketProvider(value), + ]), + ), + ]), ) export const DEFAULT_NETWORK: keyof typeof DEFAULT_RPC = 1 const provider = new providers.WebSocketProvider( - DEFAULT_RPC[DEFAULT_NETWORK].default + DEFAULT_RPC[DEFAULT_NETWORK].default, ) export const DEFAULT_COLLECTORS = [new BlockCollector(provider)] export const DEFAULT_EXECUTORS = [new LogExecutor()] export const DEFAULT_STRATEGIES = { - block: { - log: new BlockLog() - } + block: { + log: new BlockLog(), + }, } as const export const DEFAULT_NETWORKS = {} as const export const DEFAULT_ETHERSCAN = (address: string): string => { - throw new Error( - 'Must implement `etherscan()` in `mev.config.ts.defineConfig({ references: { etherscan: }})` to generate references for deployed contracts.' - ) + throw new Error( + "Must implement `etherscan()` in `mev.config.ts.defineConfig({ references: { etherscan: }})` to generate references for deployed contracts.", + ) } diff --git a/src/core/engine/engine.ts b/src/core/engine/engine.ts index e3d9c54..e0abef0 100644 --- a/src/core/engine/engine.ts +++ b/src/core/engine/engine.ts @@ -1,102 +1,103 @@ -import { EventEmitter } from 'node:events' +import { EventEmitter } from "node:events" -import { Collector } from '@/core/collector' -import { defineConfig } from '@/core/engine/config' -import { Executor } from '@/core/executor' -import { Strategy } from '@/core/strategy' -import { logger } from '@/lib/logger' +import { Collector } from "@/core/collector" +import { defineConfig } from "@/core/engine/config" +import { Executor } from "@/core/executor" +import { Strategy } from "@/core/strategy" +import { logger } from "@/lib/logger" export class Engine< - TCollectors extends Collector, - TExecutors extends Executor, - TStrategies extends Record> + TCollectors extends Collector, + TExecutors extends Executor, + TStrategies extends Record>, > { - constructor( - public readonly config: ReturnType, - public readonly strategies: TStrategies, - public readonly stream: EventEmitter = new EventEmitter() - ) { - logger.info( - `Engine initialized with ${config.collectors.length} collectors, ${ - config.executors.length - } executors, and ${Object.keys(strategies).length} strategies.` - ) - } + constructor( + public readonly config: ReturnType, + public readonly strategies: TStrategies, + public readonly stream: EventEmitter = new EventEmitter(), + ) { + logger.info( + `Engine initialized with ${config.collectors.length} collectors, ${ + config.executors.length + } executors, and ${Object.keys(strategies).length} strategies.`, + ) + } - run = async () => { - // ! Catch actions that are generated by collected events. - // ! This is run first so that we always have Executors - // listening for actions when the collectors start. - const executorsPromise = this.config.executors.map(async executor => - this.stream.on(executor.key, async action => { - await executor.execute(action) - }) - ) + run = async () => { + // ! Catch actions that are generated by collected events. + // ! This is run first so that we always have Executors + // listening for actions when the collectors start. + const executorsPromise = this.config.executors.map(async (executor) => + this.stream.on(executor.key, async (action) => { + await executor.execute(action) + }), + ) - const strategiesPromises = Object.entries(this.strategies).map( - async ([name, strategy]) => { - console.log(`Running: ${name}`) + const strategiesPromises = Object.entries(this.strategies).map( + async ([name, strategy]) => { + console.log(`Running: ${name}`) - // ! If the strategy does not have a processCollection method - // then we don't need to do anything and can move on to the next. - if (strategy.processCollection === undefined) return + // ! If the strategy does not have a processCollection method + // then we don't need to do anything and can move on to the next. + if (strategy.processCollection === undefined) return - // ! Initialize the backfilled state. - if (strategy.syncState) await strategy.syncState() + // ! Initialize the backfilled state. + if (strategy.syncState) await strategy.syncState() - // ! Catch and process events as they arrive from the collectors. - // * Will emit: - // | 'Execution', ['Log', { ... }] - // | 'Execution', ['SubmitTransaction', { ... }] - // ? We use `Collection` as the key because this map is only creating - // a hook per strategy rather than hook per connector per strategy. - // That is not needed for Executors though because we assume them to - // be optimistic which means if we are sending an Execution, it is - // always meant to be run with the body that is provided, thus, - // we can listen for the key of the Execution rather than `Execution`. - this.stream.on( - 'Collection', - async ({ - key, - collection - }: { - key: TCollectors['key'] - collection: Parameters[1] - }) => { - // * A strategy will always consume the collection however - // that does not mean it will always be used. If there - // is an action that needs to be taken, then we plan - // on passing that to the configured Executors and if there - // is no action to take we will go back to waiting for - // future messages to arrive. - const execution = await strategy.processCollection( - key, - collection - ) + // ! Catch and process events as they arrive from the collectors. + // * Will emit: + // | 'Execution', ['Log', { ... }] + // | 'Execution', ['SubmitTransaction', { ... }] + // ? We use `Collection` as the key because this map is only creating + // a hook per strategy rather than hook per connector per strategy. + // That is not needed for Executors though because we assume them to + // be optimistic which means if we are sending an Execution, it is + // always meant to be run with the body that is provided, thus, + // we can listen for the key of the Execution rather than `Execution`. + this.stream.on( + "Collection", + async ({ + key, + collection, + }: { + key: TCollectors["key"] + collection: Parameters[1] + }) => { + // * A strategy will always consume the collection however + // that does not mean it will always be used. If there + // is an action that needs to be taken, then we plan + // on passing that to the configured Executors and if there + // is no action to take we will go back to waiting for + // future messages to arrive. + const execution = await strategy.processCollection( + key, + collection, + ) - // * If the strategy doesn't emit an action then - // we don't need to do anything and resume listening. - if (execution === undefined) return + // * If the strategy doesn't emit an action then + // we don't need to do anything and resume listening. + if (execution === undefined) return - // * Pass the need for Execution to the Executors. - this.stream.emit(execution.key, execution.execution) - } - ) - } - ) + // * Pass the need for Execution to the Executors. + this.stream.emit(execution.key, execution.execution) + }, + ) + }, + ) - // ! Sends events that are caught by the strategies. - // * Will emit: - // | 'Collection', ['NewBlock', { ... }] - // | 'Collection', ['OpenseaOrder', { ... }] - const collectorsPromises = this.config.collectors.map( - async collector => await collector.getCollectionStream(this.stream) - ) + // ! Sends events that are caught by the strategies. + // * Will emit: + // | 'Collection', ['NewBlock', { ... }] + // | 'Collection', ['OpenseaOrder', { ... }] + const collectorsPromises = this.config.collectors.map( + async (collector) => + await collector.getCollectionStream(this.stream), + ) - await Promise.all([ - ...collectorsPromises, - ...executorsPromise, - ...strategiesPromises - ]) - } + await Promise.all([ + ...collectorsPromises, + ...executorsPromise, + ...strategiesPromises, + ]) + } } diff --git a/src/core/engine/override.ts b/src/core/engine/override.ts index 0b9e00d..40a7440 100644 --- a/src/core/engine/override.ts +++ b/src/core/engine/override.ts @@ -1,96 +1,96 @@ -import { providers, utils, Wallet } from 'ethers' -import { AccessList } from 'ethers/lib/utils' +import { providers, utils, Wallet } from "ethers" +import { AccessList } from "ethers/lib/utils" // ! Geth Implementation Reference used to architect this class: // https://geth.ethereum.org/docs/interacting-with-geth/rpc/ns-eth export type State = Partial<{ - // * Fake balance to set for the account before executing the call. - balance: `0x${string}` - // * Fake nonce to set for the account before executing the call. - nonce: `0x${string}` - // ! Bytecode reference to override the slot with. - code: `0x${string}` - // ! Fake key-value mapping to override all slots in the - // account storage before executing the call. - state: Record<`0x${string}`, any> - // ! Fake key-value mapping to override individual slots in - // the account storage before executing the call. - stateDiff: Record<`0x${string}`, any> + // * Fake balance to set for the account before executing the call. + balance: `0x${string}` + // * Fake nonce to set for the account before executing the call. + nonce: `0x${string}` + // ! Bytecode reference to override the slot with. + code: `0x${string}` + // ! Fake key-value mapping to override all slots in the + // account storage before executing the call. + state: Record<`0x${string}`, any> + // ! Fake key-value mapping to override individual slots in + // the account storage before executing the call. + stateDiff: Record<`0x${string}`, any> }> export class StateOverride { - state: Record< - `0x${string}`, - // ! All numerical values should be hex encoded and not their raw values. - State - > = {} + state: Record< + `0x${string}`, + // ! All numerical values should be hex encoded and not their raw values. + State + > = {} - constructor( - public readonly client: T, - public readonly fast = false - ) {} + constructor( + public readonly client: T, + public readonly fast = false, + ) {} - // * Add the state override to an adddress. - addStateToAddress = (address: `0x${string}`, state: State) => { - const isValid = utils.isAddress(address) + // * Add the state override to an adddress. + addStateToAddress = (address: `0x${string}`, state: State) => { + const isValid = utils.isAddress(address) - if (!isValid) { - throw new Error(`Invalid address: ${address}`) - } + if (!isValid) { + throw new Error(`Invalid address: ${address}`) + } - // ! Maintain the base state already set for this address - // override it with the new state if it exists. - this.state[address] = { - ...this.state[address], - ...state - } - } + // ! Maintain the base state already set for this address + // override it with the new state if it exists. + this.state[address] = { + ...this.state[address], + ...state, + } + } - // * Add state override to a random address and return address. - addState = (state: State) => { - const randomAddress = Wallet.createRandom().address as `0x${string}` + // * Add state override to a random address and return address. + addState = (state: State) => { + const randomAddress = Wallet.createRandom().address as `0x${string}` - this.addStateToAddress(randomAddress, state) + this.addStateToAddress(randomAddress, state) - return randomAddress - } + return randomAddress + } - // ! If we do not provide the hex values that is okay because - // it will automatically be converted to the proper JSON-RPC format. - hex = ( - transaction: Parameters< - typeof providers.JsonRpcProvider.hexlifyTransaction - >[0] - ) => { - // * This will make all the values of the transaction safe as well as - // make sure the `accessList` is all setup. - return providers.JsonRpcProvider.hexlifyTransaction(transaction) - } + // ! If we do not provide the hex values that is okay because + // it will automatically be converted to the proper JSON-RPC format. + hex = ( + transaction: Parameters< + typeof providers.JsonRpcProvider.hexlifyTransaction + >[0], + ) => { + // * This will make all the values of the transaction safe as well as + // make sure the `accessList` is all setup. + return providers.JsonRpcProvider.hexlifyTransaction(transaction) + } - // * Simulate the transaction and return the access list and gas used. - simulate = async ( - transaction: Parameters[0], - block: number | 'latest' | 'pending' - ): Promise<{ - accessList: AccessList - gasUsed: `0x${string}` - }> => { - return await this.client.send('eth_createAccessList', [ - this.hex(transaction), - block - ]) - } + // * Simulate the transaction and return the access list and gas used. + simulate = async ( + transaction: Parameters[0], + block: number | "latest" | "pending", + ): Promise<{ + accessList: AccessList + gasUsed: `0x${string}` + }> => { + return await this.client.send("eth_createAccessList", [ + this.hex(transaction), + block, + ]) + } - // * Submit an `eth_call` with the state override. - call = async ( - transaction: Parameters[0], - block: number | 'latest' | 'pending' - ) => { - return await this.client.send('eth_call', [ - this.hex(transaction), - block, - this.state - ]) - } + // * Submit an `eth_call` with the state override. + call = async ( + transaction: Parameters[0], + block: number | "latest" | "pending", + ) => { + return await this.client.send("eth_call", [ + this.hex(transaction), + block, + this.state, + ]) + } } diff --git a/src/core/executor.ts b/src/core/executor.ts index 63d1c66..af6d3a6 100644 --- a/src/core/executor.ts +++ b/src/core/executor.ts @@ -1,12 +1,12 @@ -import { Abstract } from '@/core/abstract' +import { Abstract } from "@/core/abstract" export abstract class Executor< - TKey extends string, - TExecution + TKey extends string, + TExecution, > extends Abstract<`${TKey}Execution`> { - constructor(key: TKey) { - super(`${key}Execution`) - } + constructor(key: TKey) { + super(`${key}Execution`) + } - abstract execute: (execution: TExecution) => Promise + abstract execute: (execution: TExecution) => Promise } diff --git a/src/core/executors/discord.ts b/src/core/executors/discord.ts index 816c5f7..de04ade 100644 --- a/src/core/executors/discord.ts +++ b/src/core/executors/discord.ts @@ -1,36 +1,36 @@ -import axios from 'axios' +import axios from "axios" -import { Executor } from '@/core/executor' -import { logger } from '@/lib/logger' +import { Executor } from "@/core/executor" +import { logger } from "@/lib/logger" -const key = 'Discord' +const key = "Discord" export type DiscordExecution = { - webhookUrl: string - data: { - embeds: Array> - } + webhookUrl: string + data: { + embeds: Array> + } } export class DiscordExecutor< - TExecution extends DiscordExecution = DiscordExecution + TExecution extends DiscordExecution = DiscordExecution, > extends Executor { - constructor() { - super(key) - } + constructor() { + super(key) + } - execute = async ({ webhookUrl, data }: TExecution) => { - axios - .post(webhookUrl, data, { - headers: { 'Content-Type': 'application/json' } - }) - .then(() => { - logger.info(`Discord message sent to ${webhookUrl}`) - }) - .catch(error => { - logger.error( - `Discord message failed to send to ${webhookUrl}: ${error}` - ) - }) - } + execute = async ({ webhookUrl, data }: TExecution) => { + axios + .post(webhookUrl, data, { + headers: { "Content-Type": "application/json" }, + }) + .then(() => { + logger.info(`Discord message sent to ${webhookUrl}`) + }) + .catch((error) => { + logger.error( + `Discord message failed to send to ${webhookUrl}: ${error}`, + ) + }) + } } diff --git a/src/core/executors/flashbots.ts b/src/core/executors/flashbots.ts index bddff42..f2256d3 100644 --- a/src/core/executors/flashbots.ts +++ b/src/core/executors/flashbots.ts @@ -1,87 +1,87 @@ import { - FlashbotsBundleProvider, - FlashbotsPrivateTransactionResponse, - FlashbotsTransactionResolution, - RelayResponseError -} from '@flashbots/ethers-provider-bundle' -import { providers, Wallet } from 'ethers' + FlashbotsBundleProvider, + FlashbotsPrivateTransactionResponse, + FlashbotsTransactionResolution, + RelayResponseError, +} from "@flashbots/ethers-provider-bundle" +import { providers, Wallet } from "ethers" -import { Executor } from '@/core/executor' -import { logger } from '@/lib/logger' +import { Executor } from "@/core/executor" +import { logger } from "@/lib/logger" export type FlashbotsExecution = { - transaction: providers.TransactionRequest - config?: Partial<{ - // ! How many blocks in the future we will allow settlement within. - buffer: number - }> + transaction: providers.TransactionRequest + config?: Partial<{ + // ! How many blocks in the future we will allow settlement within. + buffer: number + }> } -const key = 'Flashbots' as const +const key = "Flashbots" as const export class FlashbotsExecutor< - TExecution extends FlashbotsExecution + TExecution extends FlashbotsExecution, > extends Executor { - public static key = key - public flashbotsClient: FlashbotsBundleProvider | undefined + public static key = key + public flashbotsClient: FlashbotsBundleProvider | undefined - constructor( - public readonly client: providers.WebSocketProvider, - public readonly signer: Wallet - ) { - super(key) - } + constructor( + public readonly client: providers.WebSocketProvider, + public readonly signer: Wallet, + ) { + super(key) + } - init = async () => { - this.flashbotsClient = await FlashbotsBundleProvider.create( - this.client, - this.signer - ) - } + init = async () => { + this.flashbotsClient = await FlashbotsBundleProvider.create( + this.client, + this.signer, + ) + } - execute = async (execution: TExecution) => { - if (!this.flashbotsClient) { - throw new Error('Flashbots client not initialized') - } + execute = async (execution: TExecution) => { + if (!this.flashbotsClient) { + throw new Error("Flashbots client not initialized") + } - const blockNumber = await this.flashbotsClient.getBlockNumber() - const maxBlockNumber = blockNumber + (execution.config?.buffer ?? 25) + const blockNumber = await this.flashbotsClient.getBlockNumber() + const maxBlockNumber = blockNumber + (execution.config?.buffer ?? 25) - const privateTransaction = { - transaction: execution.transaction, - signer: this.signer - } + const privateTransaction = { + transaction: execution.transaction, + signer: this.signer, + } - let pendingTransaction = - await this.flashbotsClient.sendPrivateTransaction( - privateTransaction, - { - maxBlockNumber - } - ) + let pendingTransaction = + await this.flashbotsClient.sendPrivateTransaction( + privateTransaction, + { + maxBlockNumber, + }, + ) - if ((pendingTransaction as RelayResponseError).error) { - pendingTransaction = pendingTransaction as RelayResponseError - logger.error( - `[Flashbots] Flashbots relay error: ${pendingTransaction.error.message}` - ) - return - } + if ((pendingTransaction as RelayResponseError).error) { + pendingTransaction = pendingTransaction as RelayResponseError + logger.error( + `[Flashbots] Flashbots relay error: ${pendingTransaction.error.message}`, + ) + return + } - // * Wait for the transaction to be included or bypass the window of opportunity. - pendingTransaction = - pendingTransaction as FlashbotsPrivateTransactionResponse + // * Wait for the transaction to be included or bypass the window of opportunity. + pendingTransaction = + pendingTransaction as FlashbotsPrivateTransactionResponse - const response = await pendingTransaction.wait() + const response = await pendingTransaction.wait() - if (response === FlashbotsTransactionResolution.TransactionIncluded) { - logger.success( - `[Flashbots] Transaction included in block: ${pendingTransaction.transaction.hash}` - ) - } else { - logger.warn( - `[Flashbots] Transaction not included in block: ${pendingTransaction.transaction.hash}` - ) - } - } + if (response === FlashbotsTransactionResolution.TransactionIncluded) { + logger.success( + `[Flashbots] Transaction included in block: ${pendingTransaction.transaction.hash}`, + ) + } else { + logger.warn( + `[Flashbots] Transaction not included in block: ${pendingTransaction.transaction.hash}`, + ) + } + } } diff --git a/src/core/executors/log.ts b/src/core/executors/log.ts index a1ca101..eae17c0 100644 --- a/src/core/executors/log.ts +++ b/src/core/executors/log.ts @@ -1,20 +1,20 @@ -import { Executor } from '@/core/executor' -import { logger } from '@/lib/logger' +import { Executor } from "@/core/executor" +import { logger } from "@/lib/logger" export type LogExecution = { message: string } -const key = 'Log' as const +const key = "Log" as const export class LogExecutor< - TExecution extends LogExecution = LogExecution + TExecution extends LogExecution = LogExecution, > extends Executor { - public static key = key + public static key = key - constructor() { - super(key) - } + constructor() { + super(key) + } - execute = async ({ message }: TExecution) => { - logger.info(message) - } + execute = async ({ message }: TExecution) => { + logger.info(message) + } } diff --git a/src/core/executors/mempool.ts b/src/core/executors/mempool.ts index a6003c4..0f72ab9 100644 --- a/src/core/executors/mempool.ts +++ b/src/core/executors/mempool.ts @@ -1,51 +1,51 @@ // import { ContractTransaction, providers } from 'ethers' -import { BigNumber, PopulatedTransaction, Wallet } from 'ethers' +import { BigNumber, PopulatedTransaction, Wallet } from "ethers" -import { Executor } from '@/core/executor' +import { Executor } from "@/core/executor" export type MempoolExecution = { - transaction: PopulatedTransaction - gasInfo?: { - totalProfit: number - bidPercentage?: number - } + transaction: PopulatedTransaction + gasInfo?: { + totalProfit: number + bidPercentage?: number + } } -const key = 'Mempool' as const +const key = "Mempool" as const export class MempoolExecutor< - TExecution extends MempoolExecution = MempoolExecution + TExecution extends MempoolExecution = MempoolExecution, > extends Executor { - public static key = key - - constructor(public readonly signer: Wallet) { - super(key) - } - - execute = async ({ transaction, gasInfo }: TExecution) => { - // ! Estimate the gas consumption. - const gasEstimate = await this.signer.provider.estimateGas(transaction) - - let bidGasPrice = 0n - if (gasInfo) { - const breakEvenGasPrice = - BigInt(gasInfo.totalProfit) / BigInt(gasEstimate.toString()) - - // ! A portion of the potential profit is used for gas. - bidGasPrice = - (breakEvenGasPrice * BigInt(gasInfo.bidPercentage || 0)) / 100n - } else { - // ! Use the blocks current gas price if one was not provided. - bidGasPrice = await this.signer.provider - .getFeeData() - .then(feeData => - BigInt(feeData?.maxFeePerGas?.toString() || '0') - ) - } - - transaction.gasPrice = BigNumber.from(bidGasPrice.toString()) - - // ! Send the transaction. - await this.signer.sendTransaction(transaction) - } + public static key = key + + constructor(public readonly signer: Wallet) { + super(key) + } + + execute = async ({ transaction, gasInfo }: TExecution) => { + // ! Estimate the gas consumption. + const gasEstimate = await this.signer.provider.estimateGas(transaction) + + let bidGasPrice = 0n + if (gasInfo) { + const breakEvenGasPrice = + BigInt(gasInfo.totalProfit) / BigInt(gasEstimate.toString()) + + // ! A portion of the potential profit is used for gas. + bidGasPrice = + (breakEvenGasPrice * BigInt(gasInfo.bidPercentage || 0)) / 100n + } else { + // ! Use the blocks current gas price if one was not provided. + bidGasPrice = await this.signer.provider + .getFeeData() + .then((feeData) => + BigInt(feeData?.maxFeePerGas?.toString() || "0"), + ) + } + + transaction.gasPrice = BigNumber.from(bidGasPrice.toString()) + + // ! Send the transaction. + await this.signer.sendTransaction(transaction) + } } diff --git a/src/core/strategies/block.log.ts b/src/core/strategies/block.log.ts index 93ba1fb..ac42680 100644 --- a/src/core/strategies/block.log.ts +++ b/src/core/strategies/block.log.ts @@ -1,32 +1,34 @@ -import { BlockCollector } from '@/core/collectors/block' -import { LogExecutor } from '@/core/executors/log' -import { Strategy } from '@/core/strategy' -import { logger } from '@/lib/logger' +import { BlockCollector } from "@/core/collectors/block" +import { LogExecutor } from "@/core/executors/log" +import { Strategy } from "@/core/strategy" +import { logger } from "@/lib/logger" export class BlockLog< - TCollector extends BlockCollector, - TExecutor extends LogExecutor + TCollector extends BlockCollector, + TExecutor extends LogExecutor, > extends Strategy { - constructor() { - super('BlockLog') - } + constructor() { + super("BlockLog") + } - // ! A new collection will arrive from the collector every time - // a new block is mined. Because this is a basic BlockLog, we - // will always pass on a message to the executor. - processCollection = async ( - key: TCollector['key'], - collection: Parameters[1] - ) => { - switch (key) { - case 'NewBlock': - // ! When a new block is received, go ahead and log it. - return { - key: `${LogExecutor.key}Execution`, - execution: { message: `Block Number: ${collection.number}` } - } as const - } + // ! A new collection will arrive from the collector every time + // a new block is mined. Because this is a basic BlockLog, we + // will always pass on a message to the executor. + processCollection = async ( + key: TCollector["key"], + collection: Parameters[1], + ) => { + switch (key) { + case "NewBlock": + // ! When a new block is received, go ahead and log it. + return { + key: `${LogExecutor.key}Execution`, + execution: { + message: `Block Number: ${collection.number}`, + }, + } as const + } - logger.error(`[${this.key}]: Invalid key [${key}]`) - } + logger.error(`[${this.key}]: Invalid key [${key}]`) + } } diff --git a/src/core/strategy.ts b/src/core/strategy.ts index 930af3c..109e964 100644 --- a/src/core/strategy.ts +++ b/src/core/strategy.ts @@ -1,21 +1,21 @@ -import { Collector } from '@/core/collector' -import { Executor } from '@/core/executor' -import { logger } from '@/lib/logger' +import { Collector } from "@/core/collector" +import { Executor } from "@/core/executor" +import { logger } from "@/lib/logger" export abstract class Strategy< - TCollector extends Collector, - TExecutor extends Executor + TCollector extends Collector, + TExecutor extends Executor, > { - constructor(public readonly key: string) {} + constructor(public readonly key: string) {} - syncState = async () => - logger.warn(`[${this.key}]: requires no state sync.`) + syncState = async () => + logger.warn(`[${this.key}]: requires no state sync.`) - abstract processCollection: ( - key: TCollector['key'], - collection: Parameters[1] - ) => Promise<{ - key: TExecutor['key'] - execution: Parameters[0] - } | void> + abstract processCollection: ( + key: TCollector["key"], + collection: Parameters[1], + ) => Promise<{ + key: TExecutor["key"] + execution: Parameters[0] + } | void> } diff --git a/src/index.ts b/src/index.ts index 061c543..dd4a9fd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,52 +1,52 @@ -export { Abstract } from '@/core/abstract' -export { defineConfig } from '@/core/engine/config' -export { State, StateOverride } from '@/core/engine/override' +export { Abstract } from "@/core/abstract" +export { defineConfig } from "@/core/engine/config" +export { State, StateOverride } from "@/core/engine/override" // ! Collectors -export { Collector } from '@/core/collector' -export { BlockCollection, BlockCollector } from '@/core/collectors/block' +export { Collector } from "@/core/collector" +export { BlockCollection, BlockCollector } from "@/core/collectors/block" export { - HeartbeatCollection, - HeartbeatCollector -} from '@/core/collectors/heartbeat' + HeartbeatCollection, + HeartbeatCollector, +} from "@/core/collectors/heartbeat" export { - OpenseaCollectionOfferCollection, - OpenseaCollectionOfferCollector, - OpenseaCollector, - OpenseaItemBidCollection, - OpenseaItemBidCollector, - OpenseaItemCancelledCollection, - OpenseaItemCancelledCollector, - OpenseaItemMetadataCollection, - OpenseaItemMetadataCollector, - OpenseaItemOfferCollection, - OpenseaItemOfferCollector, - OpenseaItemSoldCollection, - OpenseaItemSoldCollector, - OpenseaItemTransferredCollection, - OpenseaItemTransferredCollector, - OpenseaListingCollection, - OpenseaListingCollector, - OpenseaOrderInvalidateCollection, - OpenseaOrderInvalidateCollector, - OpenseaOrderRevalidateCollection, - OpenseaOrderRevalidateCollector, - OpenseaTraitOfferCollection, - OpenseaTraitOfferCollector -} from '@/core/collectors/opensea' + OpenseaCollectionOfferCollection, + OpenseaCollectionOfferCollector, + OpenseaCollector, + OpenseaItemBidCollection, + OpenseaItemBidCollector, + OpenseaItemCancelledCollection, + OpenseaItemCancelledCollector, + OpenseaItemMetadataCollection, + OpenseaItemMetadataCollector, + OpenseaItemOfferCollection, + OpenseaItemOfferCollector, + OpenseaItemSoldCollection, + OpenseaItemSoldCollector, + OpenseaItemTransferredCollection, + OpenseaItemTransferredCollector, + OpenseaListingCollection, + OpenseaListingCollector, + OpenseaOrderInvalidateCollection, + OpenseaOrderInvalidateCollector, + OpenseaOrderRevalidateCollection, + OpenseaOrderRevalidateCollector, + OpenseaTraitOfferCollection, + OpenseaTraitOfferCollector, +} from "@/core/collectors/opensea" // ! Executors -export { Executor } from '@/core/executor' -export { DiscordExecution, DiscordExecutor } from '@/core/executors/discord' +export { Executor } from "@/core/executor" +export { DiscordExecution, DiscordExecutor } from "@/core/executors/discord" export { - FlashbotsExecution, - FlashbotsExecutor -} from '@/core/executors/flashbots' -export { LogExecution, LogExecutor } from '@/core/executors/log' -export { MempoolExecution, MempoolExecutor } from '@/core/executors/mempool' + FlashbotsExecution, + FlashbotsExecutor, +} from "@/core/executors/flashbots" +export { LogExecution, LogExecutor } from "@/core/executors/log" +export { MempoolExecution, MempoolExecutor } from "@/core/executors/mempool" // ! Strategies -export { Strategy } from '@/core/strategy' +export { Strategy } from "@/core/strategy" // ! Utilities -export { Logger, logger } from '@/lib/logger' +export { Logger, logger } from "@/lib/logger" diff --git a/src/lib/functions/artifacts.ts b/src/lib/functions/artifacts.ts index f467835..f5e7e52 100644 --- a/src/lib/functions/artifacts.ts +++ b/src/lib/functions/artifacts.ts @@ -1,76 +1,76 @@ -import { default as fse } from 'fs-extra' -import path from 'pathe' +import { default as fse } from "fs-extra" +import path from "pathe" -import { defineConfig } from '@/core/engine/config' +import { defineConfig } from "@/core/engine/config" async function getJsonFilesInDirectory(directory: string) { - let jsonFiles: Array = [] + let jsonFiles: Array = [] - // Ensure the directory exists - const exists = await fse.pathExists(directory) + // Ensure the directory exists + const exists = await fse.pathExists(directory) - if (!exists) { - return jsonFiles - } + if (!exists) { + return jsonFiles + } - // Read the directory content - const filesAndDirs = await fse.readdir(directory) + // Read the directory content + const filesAndDirs = await fse.readdir(directory) - for (let item of filesAndDirs) { - const fullPath = path.join(directory, item) - const stats = await fse.stat(fullPath) + for (let item of filesAndDirs) { + const fullPath = path.join(directory, item) + const stats = await fse.stat(fullPath) - // If it's a directory, recurse into it - if (stats.isDirectory()) { - const subDirFiles = await getJsonFilesInDirectory(fullPath) - jsonFiles = jsonFiles.concat(subDirFiles) - } else if (path.extname(fullPath) === '.json') { - // If it's a JSON file, add to the list - jsonFiles.push(fullPath) - } - } + // If it's a directory, recurse into it + if (stats.isDirectory()) { + const subDirFiles = await getJsonFilesInDirectory(fullPath) + jsonFiles = jsonFiles.concat(subDirFiles) + } else if (path.extname(fullPath) === ".json") { + // If it's a JSON file, add to the list + jsonFiles.push(fullPath) + } + } - return jsonFiles + return jsonFiles } export async function getArtifacts( - references: ReturnType['references'] + references: ReturnType["references"], ) { - return ( - (await getJsonFilesInDirectory(references.artifacts || './artifacts')) - // * Filter out the non-json files. - .filter(file => file.endsWith('.json')) - // * Read the json files. - .map(file => fse.readFileSync(file).toString()) - // * Parse the json files. - .map(file => JSON.parse(file)) - // * Filter out the non-contract artifacts. - .filter(file => file.contractName) - // * Map the json files to the desired format. - .map(file => { - // TODO: Not actually sure if we should use bytecode or deployedBytecode. - // ! The difference is that deployedBytecode has the constructor bytecode removed. - let { - contractName: name, - abi, - bytecode, - deployedBytecode - } = file + return ( + (await getJsonFilesInDirectory(references.artifacts || "./artifacts")) + // * Filter out the non-json files. + .filter((file) => file.endsWith(".json")) + // * Read the json files. + .map((file) => fse.readFileSync(file).toString()) + // * Parse the json files. + .map((file) => JSON.parse(file)) + // * Filter out the non-contract artifacts. + .filter((file) => file.contractName) + // * Map the json files to the desired format. + .map((file) => { + // TODO: Not actually sure if we should use bytecode or deployedBytecode. + // ! The difference is that deployedBytecode has the constructor bytecode removed. + let { + contractName: name, + abi, + bytecode, + deployedBytecode, + } = file - // ! This mostly only happens when it is not a contract that is deployed itself - // meaning you will likely want to retrieve the bytecode from the contract - // that inherits from it. - if (bytecode === '0x') bytecode = undefined + // ! This mostly only happens when it is not a contract that is deployed itself + // meaning you will likely want to retrieve the bytecode from the contract + // that inherits from it. + if (bytecode === "0x") bytecode = undefined - if (deployedBytecode === '0x') deployedBytecode = undefined + if (deployedBytecode === "0x") deployedBytecode = undefined - return { - key: name.replace('.sol', ''), - name, - abi: JSON.stringify(abi), - bytecode, - deployedBytecode - } - }) - ) + return { + key: name.replace(".sol", ""), + name, + abi: JSON.stringify(abi), + bytecode, + deployedBytecode, + } + }) + ) } diff --git a/src/lib/functions/config.ts b/src/lib/functions/config.ts index ad81cb9..bacf7ac 100644 --- a/src/lib/functions/config.ts +++ b/src/lib/functions/config.ts @@ -1,115 +1,115 @@ -import { bundleRequire } from 'bundle-require' -import { findUp } from 'find-up' -import { default as fse } from 'fs-extra' -import { basename, resolve } from 'pathe' -import pc from 'picocolors' -import prettier from 'prettier' +import { bundleRequire } from "bundle-require" +import { findUp } from "find-up" +import { default as fse } from "fs-extra" +import { basename, resolve } from "pathe" +import pc from "picocolors" +import prettier from "prettier" -import { defineConfig } from '@/core/engine/config' -import { logger } from '@/lib/logger' +import { defineConfig } from "@/core/engine/config" +import { logger } from "@/lib/logger" export type MaybeArray = T | T[] -export const name = 'mev' as const +export const name = "mev" as const export const configFiles = [ - `${name}.config.ts`, - `${name}.config.js`, - `${name}.config.mjs`, - `${name}.config.mts` + `${name}.config.ts`, + `${name}.config.js`, + `${name}.config.mjs`, + `${name}.config.mts`, ] as const export async function find({ - config, - root + config, + root, }: Partial<{ config: string; root: string }> | undefined = {}) { - const rootDir = resolve(root || process.cwd()) + const rootDir = resolve(root || process.cwd()) - // ! We already know where the config is. - if (config) { - const path = resolve(rootDir, config) + // ! We already know where the config is. + if (config) { + const path = resolve(rootDir, config) - if (fse.pathExistsSync(path)) return path + if (fse.pathExistsSync(path)) return path - return - } + return + } - // * We don't know where the config is, so we need to find it. - return await findUp(configFiles, { cwd: rootDir }) + // * We don't know where the config is, so we need to find it. + return await findUp(configFiles, { cwd: rootDir }) } export async function load({ - configPath + configPath, }: { - configPath: string + configPath: string }): Promise>> { - const res = await bundleRequire({ - filepath: configPath - }) + const res = await bundleRequire({ + filepath: configPath, + }) - let config = res.mod.default + let config = res.mod.default - if (config.default) config = config.default + if (config.default) config = config.default - if (typeof config !== 'function') return config + if (typeof config !== "function") return config - return await config() + return await config() } export async function usingTypescript() { - try { - const cwd = process.cwd() - const tsconfig = await findUp('tsconfig.json', { cwd }) - - return !!tsconfig - } catch { - return false - } + try { + const cwd = process.cwd() + const tsconfig = await findUp("tsconfig.json", { cwd }) + + return !!tsconfig + } catch { + return false + } } export async function format(content: string) { - const config = await prettier.resolveConfig(process.cwd()) - - return prettier.format(content, { - arrowParens: 'always', - endOfLine: 'lf', - parser: 'typescript', - printWidth: 80, - semi: false, - singleQuote: true, - tabWidth: 4, - trailingComma: 'none', - ...config, - // disable all prettier plugins due to potential ESM issues with prettier - // https://github.com/wagmi-dev/wagmi/issues/2971 - plugins: [] - }) + const config = await prettier.resolveConfig(process.cwd()) + + return prettier.format(content, { + arrowParens: "always", + endOfLine: "lf", + parser: "typescript", + printWidth: 80, + semi: false, + singleQuote: true, + tabWidth: 4, + trailingComma: "none", + ...config, + // disable all prettier plugins due to potential ESM issues with prettier + // https://github.com/wagmi-dev/wagmi/issues/2971 + plugins: [], + }) } export async function configs( - options: Partial<{ - config: string - root: string - }> = {} + options: Partial<{ + config: string + root: string + }> = {}, ): Promise>> { - const configPath = await find({ - config: options.config, - root: options.root - }) + const configPath = await find({ + config: options.config, + root: options.root, + }) - if (configPath) { - const resolvedConfigs = await load({ configPath }) + if (configPath) { + const resolvedConfigs = await load({ configPath }) - const isArrayConfig = Array.isArray(resolvedConfigs) + const isArrayConfig = Array.isArray(resolvedConfigs) - logger.info( - `Using config at index:\n\t${pc.gray(basename(configPath))}` - ) + logger.info( + `Using config at index:\n\t${pc.gray(basename(configPath))}`, + ) - return isArrayConfig ? resolvedConfigs : [resolvedConfigs] - } + return isArrayConfig ? resolvedConfigs : [resolvedConfigs] + } - logger.warn(`Could not find configuration file. Using default.`) + logger.warn(`Could not find configuration file. Using default.`) - return [defineConfig()] + return [defineConfig()] } diff --git a/src/lib/functions/references.ts b/src/lib/functions/references.ts index 3bef3b1..d2c94e6 100644 --- a/src/lib/functions/references.ts +++ b/src/lib/functions/references.ts @@ -1,61 +1,61 @@ -import { useEtherscan } from '../hooks/useEtherscan' -import { format } from './config' -import { shell } from './shell' -import { default as fse } from 'fs-extra' +import { useEtherscan } from "../hooks/useEtherscan" +import { format } from "./config" +import { shell } from "./shell" +import { default as fse } from "fs-extra" -import { defineConfig } from '@/core/engine/config' -import { DEFAULT_ETHERSCAN } from '@/core/engine/constants' -import { getArtifacts } from '@/lib/functions/artifacts' -import { logger } from '@/lib/logger' +import { defineConfig } from "@/core/engine/config" +import { DEFAULT_ETHERSCAN } from "@/core/engine/constants" +import { getArtifacts } from "@/lib/functions/artifacts" +import { logger } from "@/lib/logger" const generateStaticReferences = async ({ - key, - name, - address, - abi, - bytecode, - deployedBytecode + key, + name, + address, + abi, + bytecode, + deployedBytecode, }: { - key: string - name: string - address?: string - abi: string - bytecode?: string - deployedBytecode?: string + key: string + name: string + address?: string + abi: string + bytecode?: string + deployedBytecode?: string }) => { - const bigName = name.replace(' ', '_').toUpperCase() + const bigName = name.replace(" ", "_").toUpperCase() - const imports = [address === undefined ? 'utils' : 'Contract'] + const imports = [address === undefined ? "utils" : "Contract"] - let protocolGeneration = ` + let protocolGeneration = ` // Autogenerated file for @${key}. Do not edit. import { ${imports} } from 'ethers' export const ${bigName}_NAME = '${name}' as const ` - if (abi) - protocolGeneration += `\n + if (abi) + protocolGeneration += `\n export const ${bigName}_ABI = ${abi} as const ` - if (bytecode) - protocolGeneration += `\n + if (bytecode) + protocolGeneration += `\n export const ${bigName}_BYTECODE = '${bytecode}' as const ` - if (deployedBytecode) - protocolGeneration += `\n + if (deployedBytecode) + protocolGeneration += `\n export const ${bigName}_DEPLOYED_BYTECODE = '${deployedBytecode}' as const ` - if (address !== undefined) - protocolGeneration += `\n + if (address !== undefined) + protocolGeneration += `\n export const ${bigName}_ADDRESS = '${address}' as const ` - if (address !== undefined && abi !== undefined) - protocolGeneration += `\n + if (address !== undefined && abi !== undefined) + protocolGeneration += `\n export const ${bigName}_CONTRACT = new Contract( '${address}', ${bigName}_ABI @@ -63,146 +63,146 @@ const generateStaticReferences = async ({ export const ${bigName}_INTERFACE = ${bigName}_CONTRACT.interface ` - if (address === undefined && abi !== undefined) - protocolGeneration += ` + if (address === undefined && abi !== undefined) + protocolGeneration += ` export const ${bigName}_INTERFACE = new utils.Interface( ${bigName}_ABI )` - if (!fse.existsSync(`./src/references/${key}`)) - fse.mkdirSync(`./src/references/${key}`, { - recursive: true - }) + if (!fse.existsSync(`./src/references/${key}`)) + fse.mkdirSync(`./src/references/${key}`, { + recursive: true, + }) - const formatted = await format(protocolGeneration) + const formatted = await format(protocolGeneration) - fse.writeFileSync(`./src/references/${key}/index.ts`, formatted) + fse.writeFileSync(`./src/references/${key}/index.ts`, formatted) - logger.info(`Generated ./src/references/${key}/index.ts`) + logger.info(`Generated ./src/references/${key}/index.ts`) - if (abi) { - const filename = key.startsWith('I') ? key : `I${key}` + if (abi) { + const filename = key.startsWith("I") ? key : `I${key}` - const response = await shell( - `echo '${abi}' | pnpm abi-to-sol ${filename} --solidity-version 0.8.17 --license BUSL-1.1` - ) + const response = await shell( + `echo '${abi}' | pnpm abi-to-sol ${filename} --solidity-version 0.8.17 --license BUSL-1.1`, + ) - if (typeof response === 'string') - fse.writeFileSync( - `./src/references/${key}/${filename}.sol`, - response - ) - } + if (typeof response === "string") + fse.writeFileSync( + `./src/references/${key}/${filename}.sol`, + response, + ) + } } const generateDynamicReferences = ({ - name, - source + name, + source, }: { - name: string - source: string | undefined + name: string + source: string | undefined }) => { - if (!source) return - - // * Remove the double curly braces from the source code. - // ! I am not sure why this is happening, but it is solved now. - source = source.replace('{{', '{') - source = source.replace('}}', '}') - - try { - const contractSources = JSON.parse(source).sources as { - [key: string]: { content: string } - } - - Object.entries(contractSources).forEach(([sourceKey, value]) => { - const directory = `./src/references/${name}/${sourceKey - .replace('./', '') - .split('/') - .slice(0, -1) - .join('/')}` - - const filename = sourceKey.replace('./', '').split('/').slice(-1)[0] - - fse.mkdirSync(directory, { - recursive: true - }) - - fse.writeFileSync(`${directory}/${filename}`, value.content) - - logger.info(`Generated ${directory}/${filename}`) - }) - } catch (error) { - logger.error(`Failed to parse the source code for ${name}.`) - } + if (!source) return + + // * Remove the double curly braces from the source code. + // ! I am not sure why this is happening, but it is solved now. + source = source.replace("{{", "{") + source = source.replace("}}", "}") + + try { + const contractSources = JSON.parse(source).sources as { + [key: string]: { content: string } + } + + Object.entries(contractSources).forEach(([sourceKey, value]) => { + const directory = `./src/references/${name}/${sourceKey + .replace("./", "") + .split("/") + .slice(0, -1) + .join("/")}` + + const filename = sourceKey.replace("./", "").split("/").slice(-1)[0] + + fse.mkdirSync(directory, { + recursive: true, + }) + + fse.writeFileSync(`${directory}/${filename}`, value.content) + + logger.info(`Generated ${directory}/${filename}`) + }) + } catch (error) { + logger.error(`Failed to parse the source code for ${name}.`) + } } export const generateReferences = async < - T extends ReturnType['references'] + T extends ReturnType["references"], >( - references: T + references: T, ) => { - if (references === undefined) { - logger.warn('No references defined.') - return - } - - // ! Generate the deployed contract references. - let responses: Array<{ - key: string - name: string - address?: string - abi: string - bytecode?: string - deployedBytecode?: string - source?: string - }> = [] - - // ! Generate the base responses for every 'deployed' contract being retrieved. - responses = responses.concat( - await Promise.all( - Object.entries(references.contracts || []).map( - async ([key, address]) => { - const { abi, name, source } = await useEtherscan( - references.etherscan || DEFAULT_ETHERSCAN, - address - ) - - return { key, address, name: key, abi, source } - } - ) - ) - ) - - // ! Generate the base respones for local artifacts (ideally generated by Hardhat). - // * Get all the files in the artifacts directory. - responses = responses.concat(await getArtifacts(references)) - - await Promise.all( - responses.map( - async ({ key, name, address, abi, bytecode, deployedBytecode }) => { - // ! If the bytecode was not provided, but we can retrieve it, then do so. - // * This is not the creationCode (deployedBytecode) but the actual bytecode. - if (references.bytecode && address && bytecode === undefined) - bytecode = await references.bytecode(address, 'latest') - - await generateStaticReferences({ - key, - name, - address, - abi, - bytecode, - deployedBytecode - }) - } - ) - ) - - // ! Generate the dynamic references. - // * If `.source` is undefined, then it is a local artifact and the Solidity - // file was already created by the user. - responses.forEach(({ name, source }) => { - generateDynamicReferences({ name, source }) - }) - - logger.success(`References generated for ${responses.length} contracts.`) + if (references === undefined) { + logger.warn("No references defined.") + return + } + + // ! Generate the deployed contract references. + let responses: Array<{ + key: string + name: string + address?: string + abi: string + bytecode?: string + deployedBytecode?: string + source?: string + }> = [] + + // ! Generate the base responses for every 'deployed' contract being retrieved. + responses = responses.concat( + await Promise.all( + Object.entries(references.contracts || []).map( + async ([key, address]) => { + const { abi, name, source } = await useEtherscan( + references.etherscan || DEFAULT_ETHERSCAN, + address, + ) + + return { key, address, name: key, abi, source } + }, + ), + ), + ) + + // ! Generate the base respones for local artifacts (ideally generated by Hardhat). + // * Get all the files in the artifacts directory. + responses = responses.concat(await getArtifacts(references)) + + await Promise.all( + responses.map( + async ({ key, name, address, abi, bytecode, deployedBytecode }) => { + // ! If the bytecode was not provided, but we can retrieve it, then do so. + // * This is not the creationCode (deployedBytecode) but the actual bytecode. + if (references.bytecode && address && bytecode === undefined) + bytecode = await references.bytecode(address, "latest") + + await generateStaticReferences({ + key, + name, + address, + abi, + bytecode, + deployedBytecode, + }) + }, + ), + ) + + // ! Generate the dynamic references. + // * If `.source` is undefined, then it is a local artifact and the Solidity + // file was already created by the user. + responses.forEach(({ name, source }) => { + generateDynamicReferences({ name, source }) + }) + + logger.success(`References generated for ${responses.length} contracts.`) } diff --git a/src/lib/functions/shell.ts b/src/lib/functions/shell.ts index 6025086..6166ed3 100644 --- a/src/lib/functions/shell.ts +++ b/src/lib/functions/shell.ts @@ -1,12 +1,12 @@ -import { exec } from 'child_process' +import { exec } from "child_process" export const shell = (cmd: string) => { - return new Promise((resolve, reject) => { - exec(cmd, (error, stdout, stderr) => { - if (error) { - console.warn(error) - } - resolve(stdout ? stdout : stderr) - }) - }) + return new Promise((resolve, reject) => { + exec(cmd, (error, stdout, stderr) => { + if (error) { + console.warn(error) + } + resolve(stdout ? stdout : stderr) + }) + }) } diff --git a/src/lib/functions/strategies.ts b/src/lib/functions/strategies.ts index f81a933..b16e4de 100644 --- a/src/lib/functions/strategies.ts +++ b/src/lib/functions/strategies.ts @@ -1,45 +1,45 @@ -import { Strategy } from '@/core/strategy' +import { Strategy } from "@/core/strategy" export function getStrategyNames>( - strategies: TStrategies, - names: Array = [], - nameTree: string = '' + strategies: TStrategies, + names: Array = [], + nameTree: string = "", ): Array { - if (!strategies) return [] - - for (const [key, value] of Object.entries(strategies)) { - // ! If the accessed object is a Strategy. - if (value instanceof Strategy) { - names.push(`${nameTree}${key}`) - } - - // ! If the accessed object is still an object with values (Record). - else if (value && typeof value === 'object') { - getStrategyNames(value as TStrategies, names, `${nameTree}${key}.`) - } - - // ! If the accessed object is a primitive. - // * While this is not expected, it is possible. - else if (value && typeof value !== 'object') { - names.push(`${nameTree}${key}`) - } - } - - return names + if (!strategies) return [] + + for (const [key, value] of Object.entries(strategies)) { + // ! If the accessed object is a Strategy. + if (value instanceof Strategy) { + names.push(`${nameTree}${key}`) + } + + // ! If the accessed object is still an object with values (Record). + else if (value && typeof value === "object") { + getStrategyNames(value as TStrategies, names, `${nameTree}${key}.`) + } + + // ! If the accessed object is a primitive. + // * While this is not expected, it is possible. + else if (value && typeof value !== "object") { + names.push(`${nameTree}${key}`) + } + } + + return names } export function getStrategy>( - strategies: TStrategies, - name: string + strategies: TStrategies, + name: string, ) { - const pieces = name.split('.') + const pieces = name.split(".") - let strategy = strategies as TStrategies - for (const piece of pieces) { - if (!strategy[piece]) return + let strategy = strategies as TStrategies + for (const piece of pieces) { + if (!strategy[piece]) return - strategy = strategy[piece] as TStrategies - } + strategy = strategy[piece] as TStrategies + } - if (strategy instanceof Strategy) return strategy + if (strategy instanceof Strategy) return strategy } diff --git a/src/lib/hooks/useEtherscan.ts b/src/lib/hooks/useEtherscan.ts index 8a1b95a..9476378 100644 --- a/src/lib/hooks/useEtherscan.ts +++ b/src/lib/hooks/useEtherscan.ts @@ -1,16 +1,16 @@ -import axios from 'axios' +import axios from "axios" export const useEtherscan = async ( - url: (address: string) => string, - address: `0x${string}` + url: (address: string) => string, + address: `0x${string}`, ) => { - const response = await axios.get(url(address)) + const response = await axios.get(url(address)) - const { - ABI: abi, - ContractName: name, - SourceCode: source - } = response.data.result[0] + const { + ABI: abi, + ContractName: name, + SourceCode: source, + } = response.data.result[0] - return { abi, name, source } + return { abi, name, source } } diff --git a/src/lib/logger.ts b/src/lib/logger.ts index b7972e1..995a613 100644 --- a/src/lib/logger.ts +++ b/src/lib/logger.ts @@ -1,65 +1,65 @@ -import picocolors from 'picocolors' +import picocolors from "picocolors" enum LogLevel { - DEBUG, - INFO, - WARN, - ERROR, - SUCCESS + DEBUG, + INFO, + WARN, + ERROR, + SUCCESS, } export class Logger { - private logLevel: LogLevel + private logLevel: LogLevel - constructor(logLevel: LogLevel = LogLevel.INFO) { - this.logLevel = logLevel - } + constructor(logLevel: LogLevel = LogLevel.INFO) { + this.logLevel = logLevel + } - private log(level: LogLevel, message: string): void { - if (level >= this.logLevel) { - const color = this.getColor(level) - const logMessage = `[${LogLevel[level]}] ${message}` + private log(level: LogLevel, message: string): void { + if (level >= this.logLevel) { + const color = this.getColor(level) + const logMessage = `[${LogLevel[level]}] ${message}` - console.log(color(logMessage)) - } - } + console.log(color(logMessage)) + } + } - private getColor(level: LogLevel): (message: string) => string { - switch (level) { - case LogLevel.SUCCESS: - return picocolors.green - case LogLevel.DEBUG: - return picocolors.blue - case LogLevel.INFO: - return picocolors.blue - case LogLevel.WARN: - return picocolors.yellow - case LogLevel.ERROR: - return picocolors.red - default: - return picocolors.white - } - } + private getColor(level: LogLevel): (message: string) => string { + switch (level) { + case LogLevel.SUCCESS: + return picocolors.green + case LogLevel.DEBUG: + return picocolors.blue + case LogLevel.INFO: + return picocolors.blue + case LogLevel.WARN: + return picocolors.yellow + case LogLevel.ERROR: + return picocolors.red + default: + return picocolors.white + } + } - success(message: string): void { - this.log(LogLevel.SUCCESS, `✔ ${message}`) - } + success(message: string): void { + this.log(LogLevel.SUCCESS, `✔ ${message}`) + } - debug(message: string): void { - this.log(LogLevel.DEBUG, `🐛 ${message}`) - } + debug(message: string): void { + this.log(LogLevel.DEBUG, `🐛 ${message}`) + } - info(message: string): void { - this.log(LogLevel.INFO, `ℹ ${message}`) - } + info(message: string): void { + this.log(LogLevel.INFO, `ℹ ${message}`) + } - warn(message: string): void { - this.log(LogLevel.WARN, `⚠ ${message}`) - } + warn(message: string): void { + this.log(LogLevel.WARN, `⚠ ${message}`) + } - error(message: string): void { - this.log(LogLevel.ERROR, `✖ ${message}`) - } + error(message: string): void { + this.log(LogLevel.ERROR, `✖ ${message}`) + } } export const logger = new Logger() diff --git a/tsconfig.json b/tsconfig.json index b658e2c..3ed4b31 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,27 +1,27 @@ { - "compilerOptions": { - "module": "ESNext", - "target": "ESNext", - "moduleResolution": "node", - "strict": true, - "jsx": "preserve", - "allowSyntheticDefaultImports": true, - "forceConsistentCasingInFileNames": true, - "allowImportingTsExtensions": true, - "noEmit": true, - "allowJs": true, - "rootDir": "./src", - "outDir": "./dist", - "esModuleInterop": true, - "sourceMap": true, - "declaration": true, - "declarationMap": true, - "skipLibCheck": true, - "baseUrl": ".", - "paths": { - "@/*": ["src/*"] - } - }, - "include": ["src/**/*"], - "exclude": ["node_modules/", "references/", "dist", "tsup.config.ts"] + "compilerOptions": { + "module": "ESNext", + "target": "ESNext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "allowImportingTsExtensions": true, + "noEmit": true, + "allowJs": true, + "rootDir": "./src", + "outDir": "./dist", + "esModuleInterop": true, + "sourceMap": true, + "declaration": true, + "declarationMap": true, + "skipLibCheck": true, + "baseUrl": ".", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src/**/*"], + "exclude": ["node_modules/", "references/", "dist", "tsup.config.ts"] } diff --git a/tsup.config.ts b/tsup.config.ts index af358a0..a35d6bc 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,10 +1,10 @@ -import { defineConfig } from 'tsup' +import { defineConfig } from "tsup" export default defineConfig({ - entryPoints: ['src/'], - outDir: 'dist', - dts: true, - sourcemap: true, - clean: true, - format: ['cjs', 'esm'] + entryPoints: ["src/"], + outDir: "dist", + dts: true, + sourcemap: true, + clean: true, + format: ["cjs", "esm"], })