From 2441bbf8e96ab4c474e5b1aa5c75db2676e2ba4d Mon Sep 17 00:00:00 2001 From: Jun Kim <64379343+junkim012@users.noreply.github.com> Date: Thu, 1 Aug 2024 17:10:07 +0900 Subject: [PATCH 1/4] chore: add husky pre-commit and pre-push, github actions --- .github/workflows/checks.yml | 165 + .github/workflows/test.yml | 34 - .husky/pre-commit | 1 + .husky/pre-push | 1 + .prettierignore | 2 + .solhint.json | 24 + README.md | 2 +- bun.lockb | Bin 3135 -> 97689 bytes package-lock.json | 2969 ----------------- package.json | 6 +- pnpm-lock.yaml | 1343 -------- script/deploy/deployAll.s.sol | 2 +- ..._DeployManagerWithMerkleVerification.s.sol | 5 +- script/deploy/single/07_TellerSetup.s.sol | 2 +- slither.config.json | 17 + src/atomic-queue/AtomicSolver.sol | 2 +- src/atomic-queue/AtomicSolverV3.sol | 2 - src/base/BoringVault.sol | 2 +- .../BaseDecoderAndSanitizer.sol | 1 + .../Protocols/AaveV3DecoderAndSanitizer.sol | 2 +- .../Protocols/AuraDecoderAndSanitizer.sol | 2 +- .../Protocols/ConvexDecoderAndSanitizer.sol | 2 +- .../Protocols/CurveDecoderAndSanitizer.sol | 2 +- .../Protocols/ERC4626DecoderAndSanitizer.sol | 2 +- .../Protocols/EtherFiDecoderAndSanitizer.sol | 2 +- .../Protocols/GearboxDecoderAndSanitizer.sol | 2 +- .../ITB/ITBPositionDecoderAndSanitizer.sol | 8 +- .../ITB/aave/AaveDecoderAndSanitizer.sol | 2 +- .../common/ITBContractDecoderAndSanitizer.sol | 4 +- .../CurveAndConvexDecoderAndSanitizer.sol | 7 +- .../gearbox/GearboxDecoderAndSanitizer.sol | 2 +- .../Protocols/LidoDecoderAndSanitizer.sol | 2 +- .../NativeWrapperDecoderAndSanitizer.sol | 2 +- ...rossChainOPTellerWithMultiAssetSupport.sol | 4 +- .../Roles/CrossChain/CrossChainTellerBase.sol | 2 +- ...inLayerZeroTellerWithMultiAssetSupport.sol | 3 +- .../Roles/CrossChain/MultiChainTellerBase.sol | 2 +- .../Roles/CrossChain/OAppAuth/OAppAuth.sol | 2 +- .../CrossChain/OAppAuth/OAppAuthCore.sol | 2 +- .../CrossChain/OAppAuth/OAppAuthReceiver.sol | 2 +- .../CrossChain/OAppAuth/OAppAuthSender.sol | 7 +- .../Roles/ManagerWithMerkleVerification.sol | 2 +- .../Roles/TellerWithMultiAssetSupport.sol | 3 +- src/micro-managers/DexAggregatorUManager.sol | 2 +- src/micro-managers/DexSwapperUManager.sol | 2 +- src/oracles/EthPerTokenRateProvider.sol | 1 + ...ssChainOPTellerWithMultiAssetSupport.t.sol | 2 +- ...LayerZeroTellerWithMultiAssetSupport.t.sol | 4 +- ...ssChainOPTellerWithMultiAssetSupport.t.sol | 2 +- ...LayerZeroTellerWithMultiAssetSupport.t.sol | 7 +- test/EtherFiLiquid1Migration.t.sol | 2 +- test/ManagerWithMerkleVerification.t.sol | 6 +- test/ion/IonPoolSharedSetup.sol | 2 +- 53 files changed, 275 insertions(+), 4405 deletions(-) create mode 100644 .github/workflows/checks.yml delete mode 100644 .github/workflows/test.yml create mode 100644 .husky/pre-commit create mode 100644 .husky/pre-push create mode 100644 .prettierignore create mode 100644 .solhint.json delete mode 100644 package-lock.json delete mode 100644 pnpm-lock.yaml create mode 100644 slither.config.json diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml new file mode 100644 index 0000000..f9fd437 --- /dev/null +++ b/.github/workflows/checks.yml @@ -0,0 +1,165 @@ +on: [pull_request, workflow_dispatch] + +concurrency: + group: ${{github.workflow}}-${{github.ref}} + cancel-in-progress: true + +jobs: + prettify: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + node_version: + - 20 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Use Node.js ${{ matrix.node_version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node_version }} + + - name: Run Prettier + run: npx prettier -c '**/*.{md,yml,yaml}' + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Check Solidity formatting with forge fmt + run: | + forge fmt --check + + # Optional: Revert changes made by forge fmt to leave the working directory clean + - name: Revert formatting changes + if: failure() + run: git reset --hard $BEFORE_FMT + + codespell: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run codespell + uses: codespell-project/actions-codespell@v2.0 + with: + check_filenames: true + ignore_words_list: we,amountIn + skip: ./.git,./lib,./certora,./audit + + validate-links: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + ruby_version: + - 3.3 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + + - name: Install awesome_bot + run: gem install awesome_bot + + - name: Validate URLs + run: awesome_bot ./*.md src/**/*.sol --allow-dupe --allow-redirect --request-delay 0.4 --white-list mainnet.infura.io/v3,localhost + + solhint: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + node_version: + - 20 + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Run solhint + run: | + yarn install + yarn solhint + + slither: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + node_version: + - 20 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: "recursive" + + - name: Set up Python 3.10 + uses: actions/setup-python@v4 + with: + python-version: "3.10" + + - name: Install dependencies + run: | + wget https://github.com/ethereum/solidity/releases/download/v0.8.7/solc-static-linux + chmod +x solc-static-linux + sudo mv solc-static-linux /usr/local/bin/solc + pip3 install slither-analyzer + pip3 inspect + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Slither + run: | + slither src + + storage-check: + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: + - ubuntu-latest + node_version: + - 20 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: "recursive" + + - name: Install Foundry + uses: onbjerg/foundry-toolchain@v1 + with: + version: nightly + + - name: Check storage layout + uses: Rubilmax/foundry-storage-check@v3.7 + with: + contract: src/IonPool.sol:IonPool + address: "0x00000000005a1de4c0eb34609e211ad8831707e0" # the address at which the contract check is deployed diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 9282e82..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: test - -on: workflow_dispatch - -env: - FOUNDRY_PROFILE: ci - -jobs: - check: - strategy: - fail-fast: true - - name: Foundry project - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Install Foundry - uses: foundry-rs/foundry-toolchain@v1 - with: - version: nightly - - - name: Run Forge build - run: | - forge --version - forge build --sizes - id: build - - - name: Run Forge tests - run: | - forge test -vvv - id: test diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..789c006 --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1 @@ +forge fmt --check \ No newline at end of file diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100644 index 0000000..720960f --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1 @@ +forge test \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..db6e243 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,2 @@ +lib/ +package.json \ No newline at end of file diff --git a/.solhint.json b/.solhint.json new file mode 100644 index 0000000..f9a970c --- /dev/null +++ b/.solhint.json @@ -0,0 +1,24 @@ +{ + "extends": "solhint:recommended", + "plugins": [], + "rules": { + "avoid-suicide": "error", + "avoid-sha3": "warn", + "func-visibility": [ + "warn", + { + "ignoreConstructors": true + } + ], + "state-visibility": "off", + "no-inline-assembly": "off", + "one-contract-per-file": "off", + "var-name-mixedcase": "off", + "immutable-vars-naming": "off", + "reason-string": "off", + "gas-custom-errors": "off", + "const-name-snakecase": "off", + "func-name-mixedcase": "off", + "no-unused-vars": "off" + } +} diff --git a/README.md b/README.md index 0c71a22..5aa755e 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The BoringVault architecture is made up of: ## Arctic Architecture -The Arctic Architecture implements a unique Manger, Teller, and Accountant. +The Arctic Architecture implements a unique Manager, Teller, and Accountant. ### ManagerWithMerkleVerification diff --git a/bun.lockb b/bun.lockb index bbbf5de72d237903c9b03af5d94d14f5463e0706..25d2620a302ffc8ce3c54ed6950867eb4779491b 100755 GIT binary patch literal 97689 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" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", - "dependencies": { - "@babel/highlight": "^7.24.7", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@chainlink/contracts-ccip": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@chainlink/contracts-ccip/-/contracts-ccip-0.7.6.tgz", - "integrity": "sha512-yNbCBFpLs3R+ALymto9dQYKz3vatnjqYGu1pnMD0i2fHEMthiXe0+otaNCGNht6n8k7ruNaA0DNpz3F+2jHQXw==", - "peer": true, - "dependencies": { - "@eth-optimism/contracts": "^0.5.21", - "@openzeppelin/contracts": "~4.3.3", - "@openzeppelin/contracts-upgradeable-4.7.3": "npm:@openzeppelin/contracts-upgradeable@v4.7.3", - "@openzeppelin/contracts-v0.7": "npm:@openzeppelin/contracts@v3.4.2" - } - }, - "node_modules/@chainlink/contracts-ccip/node_modules/@eth-optimism/contracts": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.5.40.tgz", - "integrity": "sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==", - "peer": true, - "dependencies": { - "@eth-optimism/core-utils": "0.12.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0" - }, - "peerDependencies": { - "ethers": "^5" - } - }, - "node_modules/@chainlink/contracts-ccip/node_modules/@openzeppelin/contracts": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", - "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==", - "peer": true - }, - "node_modules/@eth-optimism/contracts": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz", - "integrity": "sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==", - "peer": true, - "dependencies": { - "@eth-optimism/core-utils": "0.12.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0" - }, - "peerDependencies": { - "ethers": "^5" - } - }, - "node_modules/@eth-optimism/core-utils": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", - "integrity": "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==", - "peer": true, - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/address": "^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/keccak256": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/providers": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bufio": "^1.0.7", - "chai": "^4.3.4" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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.0", - "@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.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/@layerzerolabs/lz-definitions": { - "version": "2.3.27", - "resolved": "https://registry.npmjs.org/@layerzerolabs/lz-definitions/-/lz-definitions-2.3.27.tgz", - "integrity": "sha512-wtdU3/2IT6Q3xLemz6mbRQWj2WUZOLuzxtkhN0+/aS5Km2M094oGpaAdJStxVf+urJPjAYO2eMth11ubdHVFeg==", - "dev": true, - "dependencies": { - "tiny-invariant": "^1.3.1" - } - }, - "node_modules/@layerzerolabs/lz-evm-messagelib-v2": { - "version": "2.3.27", - "resolved": "https://registry.npmjs.org/@layerzerolabs/lz-evm-messagelib-v2/-/lz-evm-messagelib-v2-2.3.27.tgz", - "integrity": "sha512-BskoYA4rp34Cp26XJk+StoJHX7/+1PmW+/HP7gZkWpey8SIdBHYhjwrj3SvOxB9biLqaoWtEQi+ZUBgoVx7gBA==", - "peerDependencies": { - "@arbitrum/nitro-contracts": "^1.1.0", - "@axelar-network/axelar-gmp-sdk-solidity": "^5.6.4", - "@chainlink/contracts-ccip": "^0.7.6", - "@eth-optimism/contracts": "^0.6.0", - "@layerzerolabs/lz-evm-protocol-v2": "^2.3.27", - "@layerzerolabs/lz-evm-v1-0.7": "^2.3.27", - "@openzeppelin/contracts": "^4.8.1 || ^5.0.0", - "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0", - "hardhat-deploy": "^0.11.44", - "solidity-bytes-utils": "^0.8.0" - }, - "peerDependenciesMeta": { - "@arbitrum/nitro-contracts": { - "optional": true - } - } - }, - "node_modules/@layerzerolabs/lz-evm-oapp-v2": { - "version": "2.3.27", - "resolved": "https://registry.npmjs.org/@layerzerolabs/lz-evm-oapp-v2/-/lz-evm-oapp-v2-2.3.27.tgz", - "integrity": "sha512-74kvgMGT+LsUXMt6SN32pLDnagzUIsCXvnrcUI53Ab46hT5EuawxJUUm7kWL8fEdojK+A7kv1LrH9s4x75acFQ==", - "peerDependencies": { - "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.27", - "@layerzerolabs/lz-evm-protocol-v2": "^2.3.27", - "@layerzerolabs/lz-evm-v1-0.7": "^2.3.27", - "@openzeppelin/contracts": "^4.8.1 || ^5.0.0", - "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0", - "hardhat-deploy": "^0.11.44", - "solidity-bytes-utils": "^0.8.0" - } - }, - "node_modules/@layerzerolabs/lz-evm-protocol-v2": { - "version": "2.3.27", - "resolved": "https://registry.npmjs.org/@layerzerolabs/lz-evm-protocol-v2/-/lz-evm-protocol-v2-2.3.27.tgz", - "integrity": "sha512-TVjyhMMa914kgxshlY8DzYJuvpiE9Nbb5c7DZhD4g8eTssz/C0MutS5Uc8l9pqY9L96ZyUaTFKZ2ipd4ZvzvhA==", - "peerDependencies": { - "@openzeppelin/contracts": "^4.8.1 || ^5.0.0", - "@openzeppelin/contracts-upgradeable": "^4.8.1 || ^5.0.0", - "hardhat-deploy": "^0.11.44", - "solidity-bytes-utils": "^0.8.0" - } - }, - "node_modules/@layerzerolabs/lz-evm-v1-0.7": { - "version": "2.3.27", - "resolved": "https://registry.npmjs.org/@layerzerolabs/lz-evm-v1-0.7/-/lz-evm-v1-0.7-2.3.27.tgz", - "integrity": "sha512-X2Xp178btP09e+zvmwjJHYpu5NsoI3FWAFuAfj1x1EJRR630VCRmJ3RGd9RM91PXh33Aha0IemfS5ZuNRV843Q==", - "peerDependencies": { - "@openzeppelin/contracts": "3.4.2-solc-0.7 || ^3.4.2 || ^4.0.0 || ^5.0.0", - "@openzeppelin/contracts-upgradeable": "3.4.2-solc-0.7 || ^3.4.2 || ^4.0.0 || ^5.0.0", - "hardhat-deploy": "^0.11.44" - } - }, - "node_modules/@layerzerolabs/test-devtools-evm-foundry": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@layerzerolabs/test-devtools-evm-foundry/-/test-devtools-evm-foundry-0.2.7.tgz", - "integrity": "sha512-UPK//qfhG4nAwBoBbqyjPtKPlfw6U6O4fwLQAhtov56Fi17t8c/Hnl42pgfRniHs+0ORcTaZG0zU2XvdjH6iXQ==", - "dev": true, - "peerDependencies": { - "@layerzerolabs/lz-evm-messagelib-v2": "^2.3.3", - "@layerzerolabs/lz-evm-oapp-v2": "^2.3.3", - "@layerzerolabs/lz-evm-protocol-v2": "^2.3.3", - "@layerzerolabs/lz-evm-v1-0.7": "^2.3.3", - "@openzeppelin/contracts": "^4.9.5 || ^5.0.0", - "@openzeppelin/contracts-upgradeable": "^4.9.5 || ^5.0.0" - } - }, - "node_modules/@layerzerolabs/toolbox-foundry": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@layerzerolabs/toolbox-foundry/-/toolbox-foundry-0.1.7.tgz", - "integrity": "sha512-vVFaOADxcXwHYSuHqQ+n7jpUzJAqUO9mH+S82EmDReiN13RKTt1rCj6JEu1JcHj3TlujbuyGtrX7fxZAmOC6Hg==", - "dev": true - }, - "node_modules/@openzeppelin/contracts": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" - }, - "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.0.2.tgz", - "integrity": "sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==", - "peer": true, - "peerDependencies": { - "@openzeppelin/contracts": "5.0.2" - } - }, - "node_modules/@openzeppelin/contracts-upgradeable-4.7.3": { - "name": "@openzeppelin/contracts-upgradeable", - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz", - "integrity": "sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==", - "peer": true - }, - "node_modules/@openzeppelin/contracts-v0.7": { - "name": "@openzeppelin/contracts", - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.2.tgz", - "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==", - "peer": true - }, - "node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" - }, - "node_modules/@pnpm/npm-conf": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.2.2.tgz", - "integrity": "sha512-UA91GwWPhFExt3IizW6bOeY/pQ0BkuNwKjk9iQW9KqxluGCrg4VenZ0/L+2Y0+ZOtme72EVvg6v0zo3AMQRCeA==", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@solidity-parser/parser": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", - "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==" - }, - "node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@types/bun": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.1.6.tgz", - "integrity": "sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==", - "dev": true, - "dependencies": { - "bun-types": "1.1.17" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==" - }, - "node_modules/@types/node": { - "version": "20.12.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz", - "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "peer": true - }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "peer": true - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/antlr4": { - "version": "4.13.1-patch-1", - "resolved": "https://registry.npmjs.org/antlr4/-/antlr4-4.13.1-patch-1.tgz", - "integrity": "sha512-OjFLWWLzDMV9rdFhpvroCWR4ooktNg9/nvVYSA5z28wuVpU36QUNuioR1XLnQtcjVlf8npjyz593PxnU/f/Cow==", - "engines": { - "node": ">=16" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "peer": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/ast-parents": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/ast-parents/-/ast-parents-0.0.1.tgz", - "integrity": "sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "peer": true - }, - "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "peer": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "peer": true - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "peer": true - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "peer": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "peer": true - }, - "node_modules/bufio": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.2.1.tgz", - "integrity": "sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA==", - "peer": true, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/bun-types": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.17.tgz", - "integrity": "sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg==", - "dev": true, - "dependencies": { - "@types/node": "~20.12.8", - "@types/ws": "~8.5.10" - } - }, - "node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", - "peer": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.0.8" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "peer": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "peer": true, - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "peer": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "engines": { - "node": ">=14" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", - "peer": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "peer": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ds-test": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/dapphub/ds-test.git#e282159d5170298eb2455a6c05280ab5a73a4ef0", - "license": "GPL-3.0", - "peer": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "peer": true, - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "peer": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "peer": true - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "peer": true, - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "peer": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "peer": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "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" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "peer": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "peer": true, - "dependencies": { - "imul": "^1.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "peer": true, - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forge-std": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/forge-std/-/forge-std-1.1.2.tgz", - "integrity": "sha512-Wfb0iAS9PcfjMKtGpWQw9mXzJxrWD62kJCUqqLcyuI0+VRtJ3j20XembjF3kS20qELYdXft1vD/SPFVWVKMFOw==" - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "peer": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "engines": { - "node": ">= 14.17" - } - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "peer": true, - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "peer": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "peer": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "peer": true - }, - "node_modules/hardhat-deploy": { - "version": "0.11.45", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.45.tgz", - "integrity": "sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w==", - "peer": true, - "dependencies": { - "@ethersproject/abi": "^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/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "peer": true, - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "peer": true, - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "peer": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "peer": true, - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" - }, - "node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "peer": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "peer": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "peer": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "peer": true - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "peer": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", - "dependencies": { - "package-json": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "peer": true, - "dependencies": { - "get-func-name": "^2.0.1" - } - }, - "node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/match-all": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "peer": true - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "peer": true - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "peer": true - }, - "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "peer": true - }, - "node_modules/murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", - "peer": true, - "dependencies": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", - "peer": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/package-json": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", - "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", - "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "peer": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "engines": { - "node": ">=4" - } - }, - "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", - "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", - "peer": true, - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "peer": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", - "dependencies": { - "@pnpm/npm-conf": "^2.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "peer": true - }, - "node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "peer": true, - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "peer": true, - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/solhint": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/solhint/-/solhint-5.0.1.tgz", - "integrity": "sha512-QeQLS9HGCnIiibt+xiOa/+MuP7BWz9N7C5+Mj9pLHshdkNhuo3AzCpWmjfWVZBUuwIUO3YyCRVIcYLR3YOKGfg==", - "dependencies": { - "@solidity-parser/parser": "^0.18.0", - "ajv": "^6.12.6", - "antlr4": "^4.13.1-patch-1", - "ast-parents": "^0.0.1", - "chalk": "^4.1.2", - "commander": "^10.0.0", - "cosmiconfig": "^8.0.0", - "fast-diff": "^1.2.0", - "glob": "^8.0.3", - "ignore": "^5.2.4", - "js-yaml": "^4.1.0", - "latest-version": "^7.0.0", - "lodash": "^4.17.21", - "pluralize": "^8.0.0", - "semver": "^7.5.2", - "strip-ansi": "^6.0.1", - "table": "^6.8.1", - "text-table": "^0.2.0" - }, - "bin": { - "solhint": "solhint.js" - }, - "optionalDependencies": { - "prettier": "^2.8.3" - } - }, - "node_modules/solhint/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/solidity-bytes-utils": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/solidity-bytes-utils/-/solidity-bytes-utils-0.8.2.tgz", - "integrity": "sha512-cqXPYAV2auhpdKSTPuqji0CwpSceZDu95CzqSM/9tDJ2MoMaMsdHTpOIWtVw31BIqqGPNmIChCswzbw0tHaMTw==", - "peer": true, - "dependencies": { - "ds-test": "github:dapphub/ds-test", - "forge-std": "^1.1.2" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "peer": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "peer": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "peer": true, - "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 - } - } - }, - "node_modules/zksync-web3": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", - "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", - "deprecated": "This package has been deprecated in favor of zksync-ethers@5.0.0", - "peer": true, - "peerDependencies": { - "ethers": "^5.7.0" - } - } - } -} diff --git a/package.json b/package.json index 7208ce1..a38fe7d 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,8 @@ "08_DeployRateProviders:deployment:deploy:anvil": "forge script script/deploy/08_DeployRateProviders.s.sol --rpc-url http://localhost:8545 --private-key $PRIVATE_KEY --slow", "08_DeployRateProviders:deployment:deploy:tenderly": "forge script script/deploy/08_DeployRateProviders.s.sol --rpc-url $TENDERLY_RPC_URL --private-key $PRIVATE_KEY --slow", "08_DeployRateProviders:deployment:deploy:sepolia": "forge script script/deploy/08_DeployRateProviders.s.sol --rpc-url $SEPOLIA_RPC_URL --private-key $PRIVATE_KEY --slow", - "08_DeployRateProviders:deployment:deploy:mainnet": "forge script script/deploy/08_DeployRateProviders.s.sol --rpc-url $MAINNET_RPC_URL --private-key $PRIVATE_KEY --slow" + "08_DeployRateProviders:deployment:deploy:mainnet": "forge script script/deploy/08_DeployRateProviders.s.sol --rpc-url $MAINNET_RPC_URL --private-key $PRIVATE_KEY --slow", + "prepare": "husky" }, "devDependencies": { "@layerzerolabs/lz-definitions": "^2.3.25", @@ -54,7 +55,8 @@ "@layerzerolabs/test-devtools-evm-foundry": "^0.2.7", "@layerzerolabs/toolbox-foundry": "^0.1.6", "@openzeppelin/contracts": "^5.0.2", - "@types/bun": "latest" + "@types/bun": "latest", + "husky": "^9.1.4" }, "peerDependencies": { "typescript": "^5.0.0" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index f50fa7a..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,1343 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@layerzerolabs/lz-evm-v1-0.7': - specifier: ^2.3.25 - version: 2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45) - devDependencies: - '@layerzerolabs/lz-definitions': - specifier: ^2.3.25 - version: 2.3.25 - '@layerzerolabs/lz-evm-messagelib-v2': - specifier: ^2.3.25 - version: 2.3.25(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6(ethers@5.7.2))(@eth-optimism/contracts@0.6.0(ethers@5.7.2))(@layerzerolabs/lz-evm-protocol-v2@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2))(@layerzerolabs/lz-evm-v1-0.7@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45))(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-oapp-v2': - specifier: ^2.3.25 - version: 2.3.25(2srxvw7xz2ajnfx477hjh3cklq) - '@layerzerolabs/lz-evm-protocol-v2': - specifier: ^2.3.25 - version: 2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/toolbox-foundry': - specifier: ^0.1.6 - version: 0.1.6 - '@openzeppelin/contracts': - specifier: ^5.0.2 - version: 5.0.2 - '@types/bun': - specifier: latest - version: 1.1.6 - -packages: - - '@axelar-network/axelar-gmp-sdk-solidity@5.9.0': - resolution: {integrity: sha512-BarUqOln3m5jnvBo+LF6ARWwbRXqek93dDtCgIevKGl+Be2JcNOaBB32Bg2LOOBnpOKJBvJq1SI2ZoGurBQ4Qg==} - engines: {node: '>=18'} - - '@chainlink/contracts-ccip@0.7.6': - resolution: {integrity: sha512-yNbCBFpLs3R+ALymto9dQYKz3vatnjqYGu1pnMD0i2fHEMthiXe0+otaNCGNht6n8k7ruNaA0DNpz3F+2jHQXw==} - - '@eth-optimism/contracts@0.5.40': - resolution: {integrity: sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==} - peerDependencies: - ethers: ^5 - - '@eth-optimism/contracts@0.6.0': - resolution: {integrity: sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==} - peerDependencies: - ethers: ^5 - - '@eth-optimism/core-utils@0.12.0': - resolution: {integrity: sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==} - - '@ethersproject/abi@5.7.0': - resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} - - '@ethersproject/abstract-provider@5.7.0': - resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} - - '@ethersproject/abstract-signer@5.7.0': - resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} - - '@ethersproject/address@5.7.0': - resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} - - '@ethersproject/base64@5.7.0': - resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} - - '@ethersproject/basex@5.7.0': - resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} - - '@ethersproject/bignumber@5.7.0': - resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} - - '@ethersproject/bytes@5.7.0': - resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} - - '@ethersproject/constants@5.7.0': - resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} - - '@ethersproject/contracts@5.7.0': - resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} - - '@ethersproject/hash@5.7.0': - resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} - - '@ethersproject/hdnode@5.7.0': - resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} - - '@ethersproject/json-wallets@5.7.0': - resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} - - '@ethersproject/keccak256@5.7.0': - resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} - - '@ethersproject/logger@5.7.0': - resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} - - '@ethersproject/networks@5.7.1': - resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} - - '@ethersproject/pbkdf2@5.7.0': - resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} - - '@ethersproject/properties@5.7.0': - resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} - - '@ethersproject/providers@5.7.2': - resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} - - '@ethersproject/random@5.7.0': - resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} - - '@ethersproject/rlp@5.7.0': - resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} - - '@ethersproject/sha2@5.7.0': - resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} - - '@ethersproject/signing-key@5.7.0': - resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} - - '@ethersproject/solidity@5.7.0': - resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} - - '@ethersproject/strings@5.7.0': - resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} - - '@ethersproject/transactions@5.7.0': - resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} - - '@ethersproject/units@5.7.0': - resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} - - '@ethersproject/wallet@5.7.0': - resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} - - '@ethersproject/web@5.7.1': - resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} - - '@ethersproject/wordlists@5.7.0': - resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - - '@layerzerolabs/lz-definitions@2.3.25': - resolution: {integrity: sha512-7/F1MvcLpbxFmXu9GN+Aox2X+CH+95GCgg88bbEf34ZxrtDFY00Ye9sJ652QHuSYfdECQ5o5jSVq8pFmVfwtXw==} - - '@layerzerolabs/lz-evm-messagelib-v2@2.3.25': - resolution: {integrity: sha512-QcIqNry0qia7Rf/7PR1t4VibQT2QGZdyLzsiKICzb2k8EpwiUYnHriIX6VBeFklVOBc3D9ffwZ/bBvsg9NykKg==} - peerDependencies: - '@arbitrum/nitro-contracts': ^1.1.0 - '@axelar-network/axelar-gmp-sdk-solidity': ^5.6.4 - '@chainlink/contracts-ccip': ^0.7.6 - '@eth-optimism/contracts': ^0.6.0 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.25 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.25 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.11.44 - solidity-bytes-utils: ^0.8.0 - peerDependenciesMeta: - '@arbitrum/nitro-contracts': - optional: true - - '@layerzerolabs/lz-evm-oapp-v2@2.3.25': - resolution: {integrity: sha512-TYfRph0YJkl4m6hCGNZiVFvbb8mIWDrg/Zd+nw7OSu/VZxHQgEuaBFiRECxFxWNjyeZklOyBxL8UOZRxrhMKjg==} - peerDependencies: - '@layerzerolabs/lz-evm-messagelib-v2': ^2.3.25 - '@layerzerolabs/lz-evm-protocol-v2': ^2.3.25 - '@layerzerolabs/lz-evm-v1-0.7': ^2.3.25 - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.11.44 - solidity-bytes-utils: ^0.8.0 - - '@layerzerolabs/lz-evm-protocol-v2@2.3.25': - resolution: {integrity: sha512-Q6L5X84IZA7XUBQL88zeF5FZMzSCOCmJ9dbgrzSIDWxQZ50qKGIXQHqhkdzsQqQdCY79tekbhzfRSNmKORN7/g==} - peerDependencies: - '@openzeppelin/contracts': ^4.8.1 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': ^4.8.1 || ^5.0.0 - hardhat-deploy: ^0.11.44 - solidity-bytes-utils: ^0.8.0 - - '@layerzerolabs/lz-evm-v1-0.7@2.3.25': - resolution: {integrity: sha512-sHxnNR+GVnqapWf0YJDfWR6L6BLK7hGxUlhUo3YpnJejxRM3Hmr2pv6DoaSNQ+PjI7tuP3NdhEKJwGfbaj8wGA==} - peerDependencies: - '@openzeppelin/contracts': 3.4.2-solc-0.7 || ^3.4.2 || ^4.0.0 || ^5.0.0 - '@openzeppelin/contracts-upgradeable': 3.4.2-solc-0.7 || ^3.4.2 || ^4.0.0 || ^5.0.0 - hardhat-deploy: ^0.11.44 - - '@layerzerolabs/toolbox-foundry@0.1.6': - resolution: {integrity: sha512-NepJe0ddecrX5ATwIP2wMD0XINO5yjnZyPyol24yul6NzDxbhgwK26BS0Q+nmexnehXcWrntP2kyfKldTikwyg==} - - '@openzeppelin/contracts-upgradeable@4.7.3': - resolution: {integrity: sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==} - - '@openzeppelin/contracts-upgradeable@5.0.2': - resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} - peerDependencies: - '@openzeppelin/contracts': 5.0.2 - - '@openzeppelin/contracts@3.4.2': - resolution: {integrity: sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==} - - '@openzeppelin/contracts@4.3.3': - resolution: {integrity: sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==} - - '@openzeppelin/contracts@5.0.2': - resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} - - '@types/bun@1.1.6': - resolution: {integrity: sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==} - - '@types/node@20.12.14': - resolution: {integrity: sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==} - - '@types/qs@6.9.15': - resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} - - '@types/ws@8.5.10': - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - - aes-js@3.0.0: - resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} - - ansi-colors@4.1.3: - resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} - engines: {node: '>=6'} - - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - anymatch@3.1.3: - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} - engines: {node: '>= 8'} - - assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - - asynckit@0.4.0: - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - - axios@0.21.4: - resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - - bech32@1.1.4: - resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} - - binary-extensions@2.3.0: - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} - engines: {node: '>=8'} - - 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==} - - braces@3.0.3: - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} - engines: {node: '>=8'} - - brorand@1.1.0: - resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - - bufio@1.2.1: - resolution: {integrity: sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA==} - engines: {node: '>=14.0.0'} - - bun-types@1.1.17: - resolution: {integrity: sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg==} - - call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - - chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - - chokidar@3.6.0: - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} - engines: {node: '>= 8.10.0'} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - combined-stream@1.0.8: - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} - engines: {node: '>= 0.8'} - - debug@4.3.5: - resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - deep-eql@4.1.4: - resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} - engines: {node: '>=6'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - delayed-stream@1.0.0: - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} - engines: {node: '>=0.4.0'} - - ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: - resolution: {tarball: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0} - version: 1.0.0 - - elliptic@6.5.4: - resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} - - encode-utf8@1.0.3: - resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} - - enquirer@2.4.1: - resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} - engines: {node: '>=8.6'} - - es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - ethers@5.7.2: - resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - - fill-range@7.1.1: - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} - engines: {node: '>=8'} - - fmix@0.1.0: - resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} - - follow-redirects@1.15.6: - resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - - forge-std@1.1.2: - resolution: {integrity: sha512-Wfb0iAS9PcfjMKtGpWQw9mXzJxrWD62kJCUqqLcyuI0+VRtJ3j20XembjF3kS20qELYdXft1vD/SPFVWVKMFOw==} - - form-data@4.0.0: - resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} - engines: {node: '>= 6'} - - fs-extra@10.1.0: - resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} - engines: {node: '>=12'} - - fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - get-func-name@2.0.2: - resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - - get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - - glob-parent@5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - - gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - hardhat-deploy@0.11.45: - resolution: {integrity: sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w==} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - - has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - - hash.js@1.1.7: - resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - - hasown@2.0.2: - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} - engines: {node: '>= 0.4'} - - hmac-drbg@1.0.1: - resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} - - imul@1.0.1: - resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} - engines: {node: '>=0.10.0'} - - 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'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-number@7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - js-sha3@0.8.0: - resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} - - jsonfile@6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - - loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} - - match-all@1.2.6: - resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} - - mime-db@1.52.0: - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} - engines: {node: '>= 0.6'} - - mime-types@2.1.35: - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} - engines: {node: '>= 0.6'} - - minimalistic-assert@1.0.1: - resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} - - minimalistic-crypto-utils@1.0.1: - resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} - - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - murmur-128@0.2.1: - resolution: {integrity: sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==} - - normalize-path@3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.2: - resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} - engines: {node: '>= 0.4'} - - pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} - engines: {node: '>=8.6'} - - qs@6.12.1: - resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} - engines: {node: '>=0.6'} - - readdirp@3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - - scrypt-js@3.0.1: - resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - - solidity-bytes-utils@0.8.2: - resolution: {integrity: sha512-cqXPYAV2auhpdKSTPuqji0CwpSceZDu95CzqSM/9tDJ2MoMaMsdHTpOIWtVw31BIqqGPNmIChCswzbw0tHaMTw==} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - tiny-invariant@1.3.3: - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} - - to-regex-range@5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - universalify@2.0.1: - resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} - engines: {node: '>= 10.0.0'} - - 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 - - zksync-web3@0.14.4: - resolution: {integrity: sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==} - deprecated: This package has been deprecated in favor of zksync-ethers@5.0.0 - peerDependencies: - ethers: ^5.7.0 - -snapshots: - - '@axelar-network/axelar-gmp-sdk-solidity@5.9.0': {} - - '@chainlink/contracts-ccip@0.7.6(ethers@5.7.2)': - dependencies: - '@eth-optimism/contracts': 0.5.40(ethers@5.7.2) - '@openzeppelin/contracts': 4.3.3 - '@openzeppelin/contracts-upgradeable-4.7.3': '@openzeppelin/contracts-upgradeable@4.7.3' - '@openzeppelin/contracts-v0.7': '@openzeppelin/contracts@3.4.2' - transitivePeerDependencies: - - bufferutil - - ethers - - utf-8-validate - - '@eth-optimism/contracts@0.5.40(ethers@5.7.2)': - dependencies: - '@eth-optimism/core-utils': 0.12.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - ethers: 5.7.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@eth-optimism/contracts@0.6.0(ethers@5.7.2)': - dependencies: - '@eth-optimism/core-utils': 0.12.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/abstract-signer': 5.7.0 - ethers: 5.7.2 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@eth-optimism/core-utils@0.12.0': - dependencies: - '@ethersproject/abi': 5.7.0 - '@ethersproject/abstract-provider': 5.7.0 - '@ethersproject/address': 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/keccak256': 5.7.0 - '@ethersproject/properties': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/rlp': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/web': 5.7.1 - bufio: 1.2.1 - chai: 4.4.1 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@ethersproject/abi@5.7.0': - 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 - - '@ethersproject/abstract-provider@5.7.0': - 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 - - '@ethersproject/abstract-signer@5.7.0': - 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 - - '@ethersproject/address@5.7.0': - 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 - - '@ethersproject/base64@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - - '@ethersproject/basex@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/properties': 5.7.0 - - '@ethersproject/bignumber@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - bn.js: 5.2.1 - - '@ethersproject/bytes@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/constants@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - - '@ethersproject/contracts@5.7.0': - 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 - - '@ethersproject/hash@5.7.0': - 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 - - '@ethersproject/hdnode@5.7.0': - 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 - - '@ethersproject/json-wallets@5.7.0': - 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 - - '@ethersproject/keccak256@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - js-sha3: 0.8.0 - - '@ethersproject/logger@5.7.0': {} - - '@ethersproject/networks@5.7.1': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/pbkdf2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/sha2': 5.7.0 - - '@ethersproject/properties@5.7.0': - dependencies: - '@ethersproject/logger': 5.7.0 - - '@ethersproject/providers@5.7.2': - 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 - - '@ethersproject/random@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/rlp@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/sha2@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/logger': 5.7.0 - hash.js: 1.1.7 - - '@ethersproject/signing-key@5.7.0': - 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 - - '@ethersproject/solidity@5.7.0': - 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 - - '@ethersproject/strings@5.7.0': - dependencies: - '@ethersproject/bytes': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/transactions@5.7.0': - 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 - - '@ethersproject/units@5.7.0': - dependencies: - '@ethersproject/bignumber': 5.7.0 - '@ethersproject/constants': 5.7.0 - '@ethersproject/logger': 5.7.0 - - '@ethersproject/wallet@5.7.0': - 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 - - '@ethersproject/web@5.7.1': - 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 - - '@ethersproject/wordlists@5.7.0': - 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 - - '@layerzerolabs/lz-definitions@2.3.25': - dependencies: - tiny-invariant: 1.3.3 - - '@layerzerolabs/lz-evm-messagelib-v2@2.3.25(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6(ethers@5.7.2))(@eth-optimism/contracts@0.6.0(ethers@5.7.2))(@layerzerolabs/lz-evm-protocol-v2@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2))(@layerzerolabs/lz-evm-v1-0.7@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45))(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2)': - dependencies: - '@axelar-network/axelar-gmp-sdk-solidity': 5.9.0 - '@chainlink/contracts-ccip': 0.7.6(ethers@5.7.2) - '@eth-optimism/contracts': 0.6.0(ethers@5.7.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45) - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.11.45 - solidity-bytes-utils: 0.8.2 - - '@layerzerolabs/lz-evm-oapp-v2@2.3.25(2srxvw7xz2ajnfx477hjh3cklq)': - dependencies: - '@layerzerolabs/lz-evm-messagelib-v2': 2.3.25(@axelar-network/axelar-gmp-sdk-solidity@5.9.0)(@chainlink/contracts-ccip@0.7.6(ethers@5.7.2))(@eth-optimism/contracts@0.6.0(ethers@5.7.2))(@layerzerolabs/lz-evm-protocol-v2@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2))(@layerzerolabs/lz-evm-v1-0.7@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45))(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-protocol-v2': 2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2) - '@layerzerolabs/lz-evm-v1-0.7': 2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45) - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.11.45 - solidity-bytes-utils: 0.8.2 - - '@layerzerolabs/lz-evm-protocol-v2@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)(solidity-bytes-utils@0.8.2)': - dependencies: - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.11.45 - solidity-bytes-utils: 0.8.2 - - '@layerzerolabs/lz-evm-v1-0.7@2.3.25(@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2))(@openzeppelin/contracts@5.0.2)(hardhat-deploy@0.11.45)': - dependencies: - '@openzeppelin/contracts': 5.0.2 - '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - hardhat-deploy: 0.11.45 - - '@layerzerolabs/toolbox-foundry@0.1.6': {} - - '@openzeppelin/contracts-upgradeable@4.7.3': {} - - '@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2)': - dependencies: - '@openzeppelin/contracts': 5.0.2 - - '@openzeppelin/contracts@3.4.2': {} - - '@openzeppelin/contracts@4.3.3': {} - - '@openzeppelin/contracts@5.0.2': {} - - '@types/bun@1.1.6': - dependencies: - bun-types: 1.1.17 - - '@types/node@20.12.14': - dependencies: - undici-types: 5.26.5 - - '@types/qs@6.9.15': {} - - '@types/ws@8.5.10': - dependencies: - '@types/node': 20.12.14 - - aes-js@3.0.0: {} - - ansi-colors@4.1.3: {} - - ansi-regex@5.0.1: {} - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - anymatch@3.1.3: - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.1 - - assertion-error@1.1.0: {} - - asynckit@0.4.0: {} - - axios@0.21.4(debug@4.3.5): - dependencies: - follow-redirects: 1.15.6(debug@4.3.5) - transitivePeerDependencies: - - debug - - bech32@1.1.4: {} - - binary-extensions@2.3.0: {} - - bn.js@4.12.0: {} - - bn.js@5.2.1: {} - - braces@3.0.3: - dependencies: - fill-range: 7.1.1 - - brorand@1.1.0: {} - - bufio@1.2.1: {} - - bun-types@1.1.17: - dependencies: - '@types/node': 20.12.14 - '@types/ws': 8.5.10 - - call-bind@1.0.7: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - - chai@4.4.1: - dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.4 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - check-error@1.0.3: - dependencies: - get-func-name: 2.0.2 - - chokidar@3.6.0: - dependencies: - anymatch: 3.1.3 - braces: 3.0.3 - 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 - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - combined-stream@1.0.8: - dependencies: - delayed-stream: 1.0.0 - - debug@4.3.5: - dependencies: - ms: 2.1.2 - - deep-eql@4.1.4: - dependencies: - type-detect: 4.0.8 - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - - delayed-stream@1.0.0: {} - - ds-test@https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0: {} - - elliptic@6.5.4: - 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 - - encode-utf8@1.0.3: {} - - enquirer@2.4.1: - dependencies: - ansi-colors: 4.1.3 - strip-ansi: 6.0.1 - - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 - - es-errors@1.3.0: {} - - ethers@5.7.2: - 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 - - fill-range@7.1.1: - dependencies: - to-regex-range: 5.0.1 - - fmix@0.1.0: - dependencies: - imul: 1.0.1 - - follow-redirects@1.15.6(debug@4.3.5): - optionalDependencies: - debug: 4.3.5 - - forge-std@1.1.2: {} - - form-data@4.0.0: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - mime-types: 2.1.35 - - fs-extra@10.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 - universalify: 2.0.1 - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} - - get-func-name@2.0.2: {} - - get-intrinsic@1.2.4: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - - glob-parent@5.1.2: - dependencies: - is-glob: 4.0.3 - - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 - - graceful-fs@4.2.11: {} - - hardhat-deploy@0.11.45: - dependencies: - '@ethersproject/abi': 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/contracts': 5.7.0 - '@ethersproject/providers': 5.7.2 - '@ethersproject/solidity': 5.7.0 - '@ethersproject/transactions': 5.7.0 - '@ethersproject/wallet': 5.7.0 - '@types/qs': 6.9.15 - axios: 0.21.4(debug@4.3.5) - chalk: 4.1.2 - chokidar: 3.6.0 - debug: 4.3.5 - enquirer: 2.4.1 - ethers: 5.7.2 - form-data: 4.0.0 - fs-extra: 10.1.0 - match-all: 1.2.6 - murmur-128: 0.2.1 - qs: 6.12.1 - zksync-web3: 0.14.4(ethers@5.7.2) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.0 - - has-proto@1.0.3: {} - - has-symbols@1.0.3: {} - - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - - hasown@2.0.2: - dependencies: - function-bind: 1.1.2 - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - imul@1.0.1: {} - - inherits@2.0.4: {} - - is-binary-path@2.1.0: - dependencies: - binary-extensions: 2.3.0 - - is-extglob@2.1.1: {} - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-number@7.0.0: {} - - js-sha3@0.8.0: {} - - jsonfile@6.1.0: - dependencies: - universalify: 2.0.1 - optionalDependencies: - graceful-fs: 4.2.11 - - loupe@2.3.7: - dependencies: - get-func-name: 2.0.2 - - match-all@1.2.6: {} - - mime-db@1.52.0: {} - - mime-types@2.1.35: - dependencies: - mime-db: 1.52.0 - - minimalistic-assert@1.0.1: {} - - minimalistic-crypto-utils@1.0.1: {} - - ms@2.1.2: {} - - murmur-128@0.2.1: - dependencies: - encode-utf8: 1.0.3 - fmix: 0.1.0 - imul: 1.0.1 - - normalize-path@3.0.0: {} - - object-inspect@1.13.2: {} - - pathval@1.1.1: {} - - picomatch@2.3.1: {} - - qs@6.12.1: - dependencies: - side-channel: 1.0.6 - - readdirp@3.6.0: - dependencies: - picomatch: 2.3.1 - - scrypt-js@3.0.1: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - - side-channel@1.0.6: - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.2 - - solidity-bytes-utils@0.8.2: - dependencies: - ds-test: https://codeload.github.com/dapphub/ds-test/tar.gz/e282159d5170298eb2455a6c05280ab5a73a4ef0 - forge-std: 1.1.2 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - tiny-invariant@1.3.3: {} - - to-regex-range@5.0.1: - dependencies: - is-number: 7.0.0 - - type-detect@4.0.8: {} - - undici-types@5.26.5: {} - - universalify@2.0.1: {} - - ws@7.4.6: {} - - zksync-web3@0.14.4(ethers@5.7.2): - dependencies: - ethers: 5.7.2 diff --git a/script/deploy/deployAll.s.sol b/script/deploy/deployAll.s.sol index d1bb9aa..a5c3279 100644 --- a/script/deploy/deployAll.s.sol +++ b/script/deploy/deployAll.s.sol @@ -42,7 +42,7 @@ error INVALID_TELLER_CONTRACT_NAME(); * * /deployment-config/chain * - * contains chain specific configurations (EX. WETH or BALANCER addresses) that are the same accross all deployments in + * contains chain specific configurations (EX. WETH or BALANCER addresses) that are the same across all deployments in * a chain * */ diff --git a/script/deploy/single/03_DeployManagerWithMerkleVerification.s.sol b/script/deploy/single/03_DeployManagerWithMerkleVerification.s.sol index 8c7124f..0b0e553 100644 --- a/script/deploy/single/03_DeployManagerWithMerkleVerification.s.sol +++ b/script/deploy/single/03_DeployManagerWithMerkleVerification.s.sol @@ -18,7 +18,10 @@ contract DeployManagerWithMerkleVerification is BaseScript { require(config.managerSalt != bytes32(0), "manager salt must not be zero"); require(config.boringVault != address(0), "boring vault address must not be zero"); require(address(config.boringVault).code.length != 0, "boring vault must have code"); - require(address(config.balancerVault).code.length != 0 || address(config.balancerVault) == address(0), "balancer vault must have code or be zero address"); + require( + address(config.balancerVault).code.length != 0 || address(config.balancerVault) == address(0), + "balancer vault must have code or be zero address" + ); // Create Contract bytes memory creationCode = type(ManagerWithMerkleVerification).creationCode; diff --git a/script/deploy/single/07_TellerSetup.s.sol b/script/deploy/single/07_TellerSetup.s.sol index 172bf7c..ea6684f 100644 --- a/script/deploy/single/07_TellerSetup.s.sol +++ b/script/deploy/single/07_TellerSetup.s.sol @@ -32,7 +32,7 @@ contract TellerSetup is BaseScript { // add asset teller.addAsset(ERC20(config.assets[i])); - // set the cooresponding rate provider + // set the corresponding rate provider string memory key = string( abi.encodePacked(".assetToRateProviderAndPriceFeed.", config.assets[i].toHexString(), ".rateProvider") ); diff --git a/slither.config.json b/slither.config.json new file mode 100644 index 0000000..057ebfa --- /dev/null +++ b/slither.config.json @@ -0,0 +1,17 @@ +{ + "filter_paths": "lib", + "detectors_to_exclude": "naming-convention,pragma,assembly,equality", + "exclude_informational": true, + "exclude_low": true, + "solc_remaps": [ + "@solmate/=lib/solmate/src/", + "@forge-std/=lib/forge-std/src/", + "forge-std/=lib/forge-std/src/", + "@ds-test/=lib/forge-std/lib/ds-test/src/", + "ds-test/=lib/forge-std/lib/ds-test/src/", + "@openzeppelin/=lib/openzeppelin-contracts/", + "@ion-protocol/=lib/ion-protocol/src/", + "@layerzerolabs/=node_modules/@layerzerolabs/" + ] + } + \ No newline at end of file diff --git a/src/atomic-queue/AtomicSolver.sol b/src/atomic-queue/AtomicSolver.sol index 0c7f817..b3f85dc 100644 --- a/src/atomic-queue/AtomicSolver.sol +++ b/src/atomic-queue/AtomicSolver.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity 0.8.21; -import { AtomicQueue, ERC20, SafeTransferLib } from "./AtomicQueue.sol"; +import { ERC20, SafeTransferLib } from "./AtomicQueue.sol"; import { IAtomicSolver } from "./IAtomicSolver.sol"; import { Owned } from "@solmate/auth/Owned.sol"; diff --git a/src/atomic-queue/AtomicSolverV3.sol b/src/atomic-queue/AtomicSolverV3.sol index 3225afe..4afa55d 100644 --- a/src/atomic-queue/AtomicSolverV3.sol +++ b/src/atomic-queue/AtomicSolverV3.sol @@ -4,8 +4,6 @@ pragma solidity 0.8.21; import { AtomicQueue, ERC20, SafeTransferLib } from "./AtomicQueue.sol"; import { IAtomicSolver } from "./IAtomicSolver.sol"; import { Auth, Authority } from "@solmate/auth/Auth.sol"; -import { ERC4626 } from "@solmate/tokens/ERC4626.sol"; -import { IWEETH } from "src/interfaces/IStaking.sol"; import { FixedPointMathLib } from "@solmate/utils/FixedPointMathLib.sol"; import { TellerWithMultiAssetSupport } from "src/base/Roles/TellerWithMultiAssetSupport.sol"; diff --git a/src/base/BoringVault.sol b/src/base/BoringVault.sol index 9b49e26..fe7cd0a 100644 --- a/src/base/BoringVault.sol +++ b/src/base/BoringVault.sol @@ -22,7 +22,7 @@ contract BoringVault is ERC20, Auth, ERC721Holder, ERC1155Holder { // ========================================= STATE ========================================= /** - * @notice Contract responsbile for implementing `beforeTransfer`. + * @notice Contract responsible for implementing `beforeTransfer`. */ BeforeTransferHook public hook; diff --git a/src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol index 98b4bc3..35b7ee3 100644 --- a/src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol @@ -1,6 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; +// solhint-disable-next-line no-unused-import import { DecoderCustomTypes } from "src/interfaces/DecoderCustomTypes.sol"; contract BaseDecoderAndSanitizer { diff --git a/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol index b2edcf8..d797c2d 100644 --- a/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract AaveV3DecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== AAVEV3 =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/AuraDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/AuraDecoderAndSanitizer.sol index e36a5c3..e5fea11 100644 --- a/src/base/DecodersAndSanitizers/Protocols/AuraDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/AuraDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract AuraDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== AURA =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/ConvexDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ConvexDecoderAndSanitizer.sol index dbb5ebc..9f9ea0d 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ConvexDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ConvexDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract ConvexDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== CONVEX =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/CurveDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/CurveDecoderAndSanitizer.sol index c547671..50cf818 100644 --- a/src/base/DecodersAndSanitizers/Protocols/CurveDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/CurveDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract CurveDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== CURVE =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/ERC4626DecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ERC4626DecoderAndSanitizer.sol index 2714de9..0bb8c93 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ERC4626DecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ERC4626DecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract ERC4626DecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== ERC4626 =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/EtherFiDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/EtherFiDecoderAndSanitizer.sol index caa7588..9b92b54 100644 --- a/src/base/DecodersAndSanitizers/Protocols/EtherFiDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/EtherFiDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract EtherFiDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== ETHERFI =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/GearboxDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/GearboxDecoderAndSanitizer.sol index e2c6230..37879b4 100644 --- a/src/base/DecodersAndSanitizers/Protocols/GearboxDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/GearboxDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract GearboxDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== GEARBOX =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/ITBPositionDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/ITBPositionDecoderAndSanitizer.sol index 0738278..f44eb22 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/ITBPositionDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/ITBPositionDecoderAndSanitizer.sol @@ -1,10 +1,10 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import "./common/BoringDecoderAndSanitizer.sol"; -import "./aave/AaveDecoderAndSanitizer.sol"; -import "./curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol"; -import "./gearbox/GearboxDecoderAndSanitizer.sol"; +import { BoringDecoderAndSanitizer } from "./common/BoringDecoderAndSanitizer.sol"; +import { AaveDecoderAndSanitizer } from "./aave/AaveDecoderAndSanitizer.sol"; +import { CurveAndConvexDecoderAndSanitizer } from "./curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol"; +import { GearboxDecoderAndSanitizer } from "./gearbox/GearboxDecoderAndSanitizer.sol"; contract ITBPositionDecoderAndSanitizer is BoringDecoderAndSanitizer, diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol index 4eeb593..a64d9fd 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import "../common/ITBContractDecoderAndSanitizer.sol"; +import { ITBContractDecoderAndSanitizer } from "../common/ITBContractDecoderAndSanitizer.sol"; abstract contract AaveDecoderAndSanitizer is ITBContractDecoderAndSanitizer { function deposit(address asset, uint256) external pure returns (bytes memory addressesFound) { diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol index 263dba8..6d9da4b 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol @@ -1,8 +1,8 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import "./WithdrawableDecoderAndSanitizer.sol"; -import "./Ownable2StepDecoderAndSanitizer.sol"; +import { WithdrawableDecoderAndSanitizer } from "./WithdrawableDecoderAndSanitizer.sol"; +import { Ownable2StepDecoderAndSanitizer } from "./Ownable2StepDecoderAndSanitizer.sol"; /// @title Decoder and sanitizer for ITBContract /// @author IntoTheBlock Corp diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol index 3dbca54..7b5a719 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol @@ -1,10 +1,11 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import "../common/ITBContractDecoderAndSanitizer.sol"; -import "./CurveNoConfigDecoderAndSanitizer.sol"; -import "./ConvexDecoderAndSanitizer.sol"; +import { ITBContractDecoderAndSanitizer } from "../common/ITBContractDecoderAndSanitizer.sol"; +import { CurveNoConfigDecoderAndSanitizer } from "./CurveNoConfigDecoderAndSanitizer.sol"; +import { ConvexDecoderAndSanitizer } from "./ConvexDecoderAndSanitizer.sol"; +/* solhint-disable */ abstract contract CurveAndConvexDecoderAndSanitizer is ITBContractDecoderAndSanitizer, CurveNoConfigDecoderAndSanitizer, diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol index 1085169..d56a778 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import "../common/ITBContractDecoderAndSanitizer.sol"; +import { ITBContractDecoderAndSanitizer } from "../common/ITBContractDecoderAndSanitizer.sol"; abstract contract GearboxDecoderAndSanitizer is ITBContractDecoderAndSanitizer { function deposit(uint256, uint256) external pure returns (bytes memory addressesFound) { diff --git a/src/base/DecodersAndSanitizers/Protocols/LidoDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/LidoDecoderAndSanitizer.sol index f1629d6..c29e40c 100644 --- a/src/base/DecodersAndSanitizers/Protocols/LidoDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/LidoDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract LidoDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== LIDO =============================== diff --git a/src/base/DecodersAndSanitizers/Protocols/NativeWrapperDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/NativeWrapperDecoderAndSanitizer.sol index c90f941..3314fae 100644 --- a/src/base/DecodersAndSanitizers/Protocols/NativeWrapperDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/NativeWrapperDecoderAndSanitizer.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { BaseDecoderAndSanitizer, DecoderCustomTypes } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import { BaseDecoderAndSanitizer } from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract NativeWrapperDecoderAndSanitizer is BaseDecoderAndSanitizer { //============================== ETHERFI =============================== diff --git a/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol b/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol index f99bd84..0cb0e33 100644 --- a/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol +++ b/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol @@ -2,7 +2,6 @@ pragma solidity 0.8.21; import { CrossChainTellerBase, BridgeData, ERC20 } from "./CrossChainTellerBase.sol"; -import { Auth } from "@solmate/auth/Auth.sol"; interface ICrossDomainMessenger { function xDomainMessageSender() external view returns (address); @@ -103,10 +102,11 @@ contract CrossChainOPTellerWithMultiAssetSupport is CrossChainTellerBase { } /** - * @notice the virtual function to override to get bridge fees, allways zero for OP + * @notice the virtual function to override to get bridge fees, always zero for OP * @param shareAmount to send * @param data bridge data */ + // solhint-disable-next-line no-unused-vars function _quote(uint256 shareAmount, BridgeData calldata data) internal view override returns (uint256) { return 0; } diff --git a/src/base/Roles/CrossChain/CrossChainTellerBase.sol b/src/base/Roles/CrossChain/CrossChainTellerBase.sol index c63146d..7cf2923 100644 --- a/src/base/Roles/CrossChain/CrossChainTellerBase.sol +++ b/src/base/Roles/CrossChain/CrossChainTellerBase.sol @@ -111,7 +111,7 @@ abstract contract CrossChainTellerBase is TellerWithMultiAssetSupport { function _quote(uint256 shareAmount, BridgeData calldata data) internal view virtual returns (uint256); /** - * @notice after bridge code, just an emit but can be overriden + * @notice after bridge code, just an emit but can be overridden * @param shareAmount share amount burned * @param data bridge data * @param messageId message id returned when bridged diff --git a/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol b/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol index df5c0f8..187bd22 100644 --- a/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol +++ b/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol @@ -4,7 +4,6 @@ pragma solidity 0.8.21; import { MultiChainTellerBase, MultiChainTellerBase_MessagesNotAllowedFrom } from "./MultiChainTellerBase.sol"; import { BridgeData, ERC20 } from "./CrossChainTellerBase.sol"; import { OAppAuth, MessagingFee, Origin, MessagingReceipt } from "./OAppAuth/OAppAuth.sol"; -import { Auth } from "@solmate/auth/Auth.sol"; import { OptionsBuilder } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oapp/libs/OptionsBuilder.sol"; @@ -76,7 +75,7 @@ contract MultiChainLayerZeroTellerWithMultiAssetSupport is MultiChainTellerBase, /** * @notice bridge override to allow bridge logic to be done for bridge() and depositAndBridge() - * @param shareAmount to be moved accross chain + * @param shareAmount to be moved across chain * @param data BridgeData */ function _bridge(uint256 shareAmount, BridgeData calldata data) internal override returns (bytes32) { diff --git a/src/base/Roles/CrossChain/MultiChainTellerBase.sol b/src/base/Roles/CrossChain/MultiChainTellerBase.sol index ba91537..2f47905 100644 --- a/src/base/Roles/CrossChain/MultiChainTellerBase.sol +++ b/src/base/Roles/CrossChain/MultiChainTellerBase.sol @@ -24,7 +24,7 @@ error MultiChainTellerBase_GasTooLow(); * We've noticed that many bridge options are L1 -> L2 only, which are quite simple IE Optimism Messenger * While others like LZ that can contact many bridges, contain lots of additional complexity to manage the configuration * for these chains - * To keep this seperated we are using this MultiChain syntax for the > 2 chain messenging while only CrossChain for 2 + * To keep this separated we are using this MultiChain syntax for the > 2 chain messaging while only CrossChain for 2 * chain messengers like OP */ abstract contract MultiChainTellerBase is CrossChainTellerBase { diff --git a/src/base/Roles/CrossChain/OAppAuth/OAppAuth.sol b/src/base/Roles/CrossChain/OAppAuth/OAppAuth.sol index 2228ef8..23ec88e 100644 --- a/src/base/Roles/CrossChain/OAppAuth/OAppAuth.sol +++ b/src/base/Roles/CrossChain/OAppAuth/OAppAuth.sol @@ -18,7 +18,7 @@ import { OAppAuthSender } from "./OAppAuthSender.sol"; * @dev Abstract contract serving as the base for OApp implementation, combining OAppSender and OAppReceiver * functionality. * - * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatability purposes + * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatibility purposes */ abstract contract OAppAuth is OAppAuthSender, OAppAuthReceiver { /** diff --git a/src/base/Roles/CrossChain/OAppAuth/OAppAuthCore.sol b/src/base/Roles/CrossChain/OAppAuth/OAppAuthCore.sol index 9200a24..6ca0b76 100644 --- a/src/base/Roles/CrossChain/OAppAuth/OAppAuthCore.sol +++ b/src/base/Roles/CrossChain/OAppAuth/OAppAuthCore.sol @@ -9,7 +9,7 @@ import { IOAppCore, ILayerZeroEndpointV2 } from "@layerzerolabs/lz-evm-oapp-v2/c * @title OAppAuthCore * @dev Abstract contract implementing the IOAppCore interface with basic OApp configurations. * - * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatability purposes + * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatibility purposes */ abstract contract OAppAuthCore is IOAppCore, Auth { // The LayerZero endpoint associated with the given OApp diff --git a/src/base/Roles/CrossChain/OAppAuth/OAppAuthReceiver.sol b/src/base/Roles/CrossChain/OAppAuth/OAppAuthReceiver.sol index 18afa48..f19c131 100644 --- a/src/base/Roles/CrossChain/OAppAuth/OAppAuthReceiver.sol +++ b/src/base/Roles/CrossChain/OAppAuth/OAppAuthReceiver.sol @@ -9,7 +9,7 @@ import { OAppAuthCore } from "./OAppAuthCore.sol"; * @title OAppAuthReceiver * @dev Abstract contract implementing the ILayerZeroReceiver interface and extending OAppCore for OApp receivers. * - * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatability purposes + * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatibility purposes */ abstract contract OAppAuthReceiver is IOAppReceiver, OAppAuthCore { // Custom error message for when the caller is not the registered endpoint/ diff --git a/src/base/Roles/CrossChain/OAppAuth/OAppAuthSender.sol b/src/base/Roles/CrossChain/OAppAuth/OAppAuthSender.sol index d5466ea..aafd78c 100644 --- a/src/base/Roles/CrossChain/OAppAuth/OAppAuthSender.sol +++ b/src/base/Roles/CrossChain/OAppAuth/OAppAuthSender.sol @@ -14,7 +14,7 @@ import { OAppAuthCore } from "./OAppAuthCore.sol"; * @title OAppAuthSender * @dev Abstract contract implementing the OAppSender functionality for sending messages to a LayerZero endpoint. * - * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatability purposes + * @dev This Auth version of OAppCore uses solmate's Auth instead of OZ's Ownable for compatibility purposes */ abstract contract OAppAuthSender is OAppAuthCore { using SafeERC20 for IERC20; @@ -97,9 +97,8 @@ abstract contract OAppAuthSender is OAppAuthCore { uint256 messageValue = _payNative(_fee.nativeFee); if (_fee.lzTokenFee > 0) _payLzToken(_fee.lzTokenFee); - return endpoint - // solhint-disable-next-line check-send-result - .send{ value: messageValue }( + // solhint-disable-next-line check-send-result + return endpoint.send{ value: messageValue }( MessagingParams(_dstEid, _getPeerOrRevert(_dstEid), _message, _options, _fee.lzTokenFee > 0), _refundAddress ); } diff --git a/src/base/Roles/ManagerWithMerkleVerification.sol b/src/base/Roles/ManagerWithMerkleVerification.sol index 1aa1d8a..67f05c2 100644 --- a/src/base/Roles/ManagerWithMerkleVerification.sol +++ b/src/base/Roles/ManagerWithMerkleVerification.sol @@ -27,7 +27,7 @@ contract ManagerWithMerkleVerification is Auth { * @dev Each leaf is composed of the keccak256 hash of abi.encodePacked {decodersAndSanitizer, target, * valueIsNonZero, selector, argumentAddress_0, ...., argumentAddress_N} * Where: - * - decodersAndSanitizer is the addres to call to extract packed address arguments from the calldata + * - decodersAndSanitizer is the address to call to extract packed address arguments from the calldata * - target is the address to make the call to * - valueIsNonZero is a bool indicating whether or not the value is non-zero * - selector is the function selector on target diff --git a/src/base/Roles/TellerWithMultiAssetSupport.sol b/src/base/Roles/TellerWithMultiAssetSupport.sol index b12beb6..9cf70da 100644 --- a/src/base/Roles/TellerWithMultiAssetSupport.sol +++ b/src/base/Roles/TellerWithMultiAssetSupport.sol @@ -47,7 +47,7 @@ contract TellerWithMultiAssetSupport is Auth, BeforeTransferHook, ReentrancyGuar /** * @notice After deposits, shares are locked to the msg.sender's address * for `shareLockPeriod`. - * @dev During this time all trasnfers from msg.sender will revert, and + * @dev During this time all transfers from msg.sender will revert, and * deposits are refundable. */ uint64 public shareLockPeriod; @@ -278,6 +278,7 @@ contract TellerWithMultiAssetSupport is Auth, BeforeTransferHook, ReentrancyGuar if (isPaused) revert TellerWithMultiAssetSupport__Paused(); if (!isSupported[depositAsset]) revert TellerWithMultiAssetSupport__AssetNotSupported(); + // solhint-disable-next-line no-empty-blocks try depositAsset.permit(msg.sender, address(vault), depositAmount, deadline, v, r, s) { } catch { if (depositAsset.allowance(msg.sender, address(vault)) < depositAmount) { diff --git a/src/micro-managers/DexAggregatorUManager.sol b/src/micro-managers/DexAggregatorUManager.sol index 80de003..316dd52 100644 --- a/src/micro-managers/DexAggregatorUManager.sol +++ b/src/micro-managers/DexAggregatorUManager.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { UManager, FixedPointMathLib, ManagerWithMerkleVerification, ERC20 } from "src/micro-managers/UManager.sol"; +import { UManager, FixedPointMathLib, ERC20 } from "src/micro-managers/UManager.sol"; import { AggregationRouterV5 } from "src/interfaces/AggregationRouterV5.sol"; import { PriceRouter } from "src/interfaces/PriceRouter.sol"; diff --git a/src/micro-managers/DexSwapperUManager.sol b/src/micro-managers/DexSwapperUManager.sol index a03c705..80d8139 100644 --- a/src/micro-managers/DexSwapperUManager.sol +++ b/src/micro-managers/DexSwapperUManager.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; -import { UManager, FixedPointMathLib, ManagerWithMerkleVerification, ERC20 } from "src/micro-managers/UManager.sol"; +import { UManager, FixedPointMathLib, ERC20 } from "src/micro-managers/UManager.sol"; import { IUniswapV3Router } from "src/interfaces/IUniswapV3Router.sol"; import { PriceRouter } from "src/interfaces/PriceRouter.sol"; import { DecoderCustomTypes } from "src/interfaces/DecoderCustomTypes.sol"; diff --git a/src/oracles/EthPerTokenRateProvider.sol b/src/oracles/EthPerTokenRateProvider.sol index 8562ad5..efbc0dd 100644 --- a/src/oracles/EthPerTokenRateProvider.sol +++ b/src/oracles/EthPerTokenRateProvider.sol @@ -113,6 +113,7 @@ contract EthPerTokenRateProvider is IRateProvider { /** * @dev To revert upon custom checks such as sequencer liveness. */ + // solhint-disable-next-line no-empty-blocks function _validityCheck() internal view virtual { } function _isEqual(string memory a, string memory b) internal pure returns (bool) { diff --git a/test/CrossChain/CrossChainOPTellerWithMultiAssetSupport.t.sol b/test/CrossChain/CrossChainOPTellerWithMultiAssetSupport.t.sol index e4cb430..d4e5224 100644 --- a/test/CrossChain/CrossChainOPTellerWithMultiAssetSupport.t.sol +++ b/test/CrossChain/CrossChainOPTellerWithMultiAssetSupport.t.sol @@ -104,7 +104,7 @@ contract CrossChainOPTellerWithMultiAssetSupportTest is CrossChainBaseTest { vm.deal(user, 10e18); WETH.approve(address(boringVault), amount); - // preform depositAndBridge + // perform depositAndBridge BridgeData memory data = BridgeData({ chainSelector: DESTINATION_SELECTOR, destinationChainReceiver: userChain2, diff --git a/test/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.t.sol b/test/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.t.sol index f592561..eff4feb 100644 --- a/test/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.t.sol +++ b/test/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.t.sol @@ -78,7 +78,7 @@ contract MultiChainLayerZeroTellerWithMultiAssetSupportTest is MultiChainBaseTes vm.deal(user, 10e18); WETH.approve(address(boringVault), amount); - // preform depositAndBridge + // perform depositAndBridge BridgeData memory data = BridgeData({ chainSelector: DESTINATION_SELECTOR, destinationChainReceiver: userChain2, @@ -125,7 +125,7 @@ contract MultiChainLayerZeroTellerWithMultiAssetSupportTest is MultiChainBaseTes vm.deal(user, 10e18); WETH.approve(address(boringVault), amount); - // preform depositAndBridge + // perform depositAndBridge BridgeData memory data = BridgeData({ chainSelector: DESTINATION_SELECTOR, destinationChainReceiver: userChain2, diff --git a/test/CrossChain/live/LIVECrossChainOPTellerWithMultiAssetSupport.t.sol b/test/CrossChain/live/LIVECrossChainOPTellerWithMultiAssetSupport.t.sol index da84074..f976407 100644 --- a/test/CrossChain/live/LIVECrossChainOPTellerWithMultiAssetSupport.t.sol +++ b/test/CrossChain/live/LIVECrossChainOPTellerWithMultiAssetSupport.t.sol @@ -8,7 +8,7 @@ import { /** * @notice live test for OP Teller, since OP doesn't use any sort of mock handlers or testing contracts, it is able to - * be almost entierly inherited from it's local test parent, with just adjusting the deployment with the existing + * be almost entirely inherited from it's local test parent, with just adjusting the deployment with the existing * addresses. */ contract LIVECrossChainOPTTellerWithMultiAssetSupportTest is CrossChainOPTellerWithMultiAssetSupportTest { diff --git a/test/CrossChain/live/LIVEMultiChainLayerZeroTellerWithMultiAssetSupport.t.sol b/test/CrossChain/live/LIVEMultiChainLayerZeroTellerWithMultiAssetSupport.t.sol index 67a6a49..95d6d73 100644 --- a/test/CrossChain/live/LIVEMultiChainLayerZeroTellerWithMultiAssetSupport.t.sol +++ b/test/CrossChain/live/LIVEMultiChainLayerZeroTellerWithMultiAssetSupport.t.sol @@ -12,7 +12,8 @@ import { FixedPointMathLib } from "@solmate/utils/FixedPointMathLib.sol"; /** * @notice LayerZero normally is tested with a foundry testing framework that includes mocks for the crosschain ability, - * Testing this live is not an option so most functions must be overriden and simplified to test only on the local chain + * Testing this live is not an option so most functions must be overridden and simplified to test only on the local + * chain */ contract LIVEMultiChainLayerZeroTellerWithMultiAssetSupportTest is MultiChainLayerZeroTellerWithMultiAssetSupportTest @@ -86,7 +87,7 @@ contract LIVEMultiChainLayerZeroTellerWithMultiAssetSupportTest is vm.deal(user, 10e18); WETH.approve(address(boringVault), amount); - // preform depositAndBridge + // perform depositAndBridge BridgeData memory data = BridgeData({ chainSelector: DESTINATION_SELECTOR, destinationChainReceiver: userChain2, @@ -131,7 +132,7 @@ contract LIVEMultiChainLayerZeroTellerWithMultiAssetSupportTest is vm.deal(user, 10e18); WETH.approve(address(boringVault), amount); - // preform depositAndBridge + // perform depositAndBridge BridgeData memory data = BridgeData({ chainSelector: DESTINATION_SELECTOR, destinationChainReceiver: userChain2, diff --git a/test/EtherFiLiquid1Migration.t.sol b/test/EtherFiLiquid1Migration.t.sol index bd3b8ee..c055012 100644 --- a/test/EtherFiLiquid1Migration.t.sol +++ b/test/EtherFiLiquid1Migration.t.sol @@ -292,7 +292,7 @@ contract EtherFiLiquid1MigrationTest is Test, MainnetAddresses { uint256 totalAssetsAfter = etherFiLiquid1.totalAssets(); - // There is a small change in total assets because the BoringVault prices weETH usinf the rate, but, + // There is a small change in total assets because the BoringVault prices weETH using the rate, but, // when the cellar prices weETH, there is some small rounding errors when getValue logic is used. assertApproxEqRel( totalAssetsAfter, totalAssetsBefore, 0.00000001e18, "Total assets should not change after migration." diff --git a/test/ManagerWithMerkleVerification.t.sol b/test/ManagerWithMerkleVerification.t.sol index 7acbe05..561717e 100644 --- a/test/ManagerWithMerkleVerification.t.sol +++ b/test/ManagerWithMerkleVerification.t.sol @@ -1523,7 +1523,7 @@ contract ManagerWithMerkleVerificationTest is Test, MainnetAddresses { manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); // Finalize withdraw requests. - // Must wait atleast delegationManager.minWithdrawalDelayBlocks() blocks which is 50400. + // Must wait at least delegationManager.minWithdrawalDelayBlocks() blocks which is 50400. uint32 withdrawRequestBlock = uint32(block.number); vm.roll(block.number + 50_400); @@ -1883,7 +1883,7 @@ contract ManagerWithMerkleVerificationTest is Test, MainnetAddresses { doNothing = false; - // Try performing a flash loan but with userData editted. + // Try performing a flash loan but with userData edited. vm.expectRevert( abi.encodeWithSelector( ManagerWithMerkleVerification.ManagerWithMerkleVerification__BadFlashLoanIntentHash.selector @@ -3046,7 +3046,7 @@ contract ManagerWithMerkleVerificationTest is Test, MainnetAddresses { manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); // Finalize withdraw requests. - // Must wait atleast delegationManager.minWithdrawalDelayBlocks() blocks which is 50400. + // Must wait at least delegationManager.minWithdrawalDelayBlocks() blocks which is 50400. uint32 withdrawRequestBlock = uint32(block.number); vm.roll(block.number + 50_400); diff --git a/test/ion/IonPoolSharedSetup.sol b/test/ion/IonPoolSharedSetup.sol index 6593fef..ec44d04 100644 --- a/test/ion/IonPoolSharedSetup.sol +++ b/test/ion/IonPoolSharedSetup.sol @@ -200,7 +200,7 @@ contract IonPoolSharedSetup is Test, MainnetAddresses { _leafs[0][i] = keccak256(rawDigest); } - tree = _buildTrees(_leafs); // are other indicies in the leafs ever accessed? + tree = _buildTrees(_leafs); } function _buildTrees(bytes32[][] memory merkleTreeIn) internal pure returns (bytes32[][] memory merkleTreeOut) { From 5f061d0be156c71f61553dcebfe3f8c8fc489d47 Mon Sep 17 00:00:00 2001 From: Carson Date: Thu, 1 Aug 2024 13:17:02 -0400 Subject: [PATCH 2/4] feat: after receive and custom bridge messageIDs emmited --- ...rossChainOPTellerWithMultiAssetSupport.sol | 14 ++++++++---- .../Roles/CrossChain/CrossChainTellerBase.sol | 22 ++++++++++++++----- ...inLayerZeroTellerWithMultiAssetSupport.sol | 2 ++ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol b/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol index f99bd84..a690598 100644 --- a/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol +++ b/src/base/Roles/CrossChain/CrossChainOPTellerWithMultiAssetSupport.sol @@ -19,6 +19,7 @@ contract CrossChainOPTellerWithMultiAssetSupport is CrossChainTellerBase { uint32 public maxMessageGas; uint32 public minMessageGas; + uint128 public nonce; error CrossChainOPTellerWithMultiAssetSupport_OnlyMessenger(); error CrossChainOPTellerWithMultiAssetSupport_OnlyPeerAsSender(); @@ -60,7 +61,7 @@ contract CrossChainOPTellerWithMultiAssetSupport is CrossChainTellerBase { * @param receiver to receive the shares * @param shareMintAmount amount of shares to mint */ - function receiveBridgeMessage(address receiver, uint256 shareMintAmount) external { + function receiveBridgeMessage(address receiver, uint256 shareMintAmount, bytes32 messageId) external { _beforeReceive(); if (msg.sender != address(messenger)) { @@ -72,6 +73,8 @@ contract CrossChainOPTellerWithMultiAssetSupport is CrossChainTellerBase { } vault.enter(address(0), ERC20(address(0)), 0, receiver, shareMintAmount); + + _afterReceive(shareMintAmount, receiver, messageId); } /** @@ -79,13 +82,16 @@ contract CrossChainOPTellerWithMultiAssetSupport is CrossChainTellerBase { * @param data bridge data * @return messageId */ - function _bridge(uint256 shareAmount, BridgeData calldata data) internal override returns (bytes32) { + function _bridge(uint256 shareAmount, BridgeData calldata data) internal override returns (bytes32 messageId) { + unchecked { + messageId = keccak256(abi.encodePacked(++nonce, address(this), block.chainid)); + } + messenger.sendMessage( peer, - abi.encodeCall(this.receiveBridgeMessage, (data.destinationChainReceiver, shareAmount)), + abi.encodeCall(this.receiveBridgeMessage, (data.destinationChainReceiver, shareAmount, messageId)), uint32(data.messageGas) ); - return bytes32(0); } /** diff --git a/src/base/Roles/CrossChain/CrossChainTellerBase.sol b/src/base/Roles/CrossChain/CrossChainTellerBase.sol index c63146d..82fa8cb 100644 --- a/src/base/Roles/CrossChain/CrossChainTellerBase.sol +++ b/src/base/Roles/CrossChain/CrossChainTellerBase.sol @@ -90,12 +90,6 @@ abstract contract CrossChainTellerBase is TellerWithMultiAssetSupport { _afterBridge(shareAmount, data, messageId); } - /** - * @notice the before bridge hook to perform additional checks - * @param data bridge data - */ - function _beforeBridge(BridgeData calldata data) internal virtual; - /** * @notice the virtual bridge function to be overridden * @param data bridge data @@ -110,6 +104,12 @@ abstract contract CrossChainTellerBase is TellerWithMultiAssetSupport { */ function _quote(uint256 shareAmount, BridgeData calldata data) internal view virtual returns (uint256); + /** + * @notice the before bridge hook to perform additional checks + * @param data bridge data + */ + function _beforeBridge(BridgeData calldata data) internal virtual; + /** * @notice after bridge code, just an emit but can be overriden * @param shareAmount share amount burned @@ -126,4 +126,14 @@ abstract contract CrossChainTellerBase is TellerWithMultiAssetSupport { function _beforeReceive() internal virtual { if (isPaused) revert TellerWithMultiAssetSupport__Paused(); } + + /** + * @notice a hook to execute after receiving + * @param shareAmount the shareAmount that was minted + * @param destinationChainReceiver the receiver of the shares + * @param messageId the message ID + */ + function _afterReceive(uint256 shareAmount, address destinationChainReceiver, bytes32 messageId) internal virtual { + emit MessageReceived(messageId, shareAmount, destinationChainReceiver); + } } diff --git a/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol b/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol index df5c0f8..c159ebd 100644 --- a/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol +++ b/src/base/Roles/CrossChain/MultiChainLayerZeroTellerWithMultiAssetSupport.sol @@ -72,6 +72,8 @@ contract MultiChainLayerZeroTellerWithMultiAssetSupport is MultiChainTellerBase, // Decode the payload to get the message (uint256 shareAmount, address receiver) = abi.decode(payload, (uint256, address)); vault.enter(address(0), ERC20(address(0)), 0, receiver, shareAmount); + + _afterReceive(shareAmount, receiver, _guid); } /** From 35437761b782c9086d128db57c911e71f1a0b2fa Mon Sep 17 00:00:00 2001 From: Jun Kim <64379343+junkim012@users.noreply.github.com> Date: Wed, 7 Aug 2024 01:46:44 +0900 Subject: [PATCH 3/4] chore: fix codespell --- src/base/Roles/CrossChain/CrossChainTellerBase.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/base/Roles/CrossChain/CrossChainTellerBase.sol b/src/base/Roles/CrossChain/CrossChainTellerBase.sol index 1304d3b..8a1dc1c 100644 --- a/src/base/Roles/CrossChain/CrossChainTellerBase.sol +++ b/src/base/Roles/CrossChain/CrossChainTellerBase.sol @@ -112,7 +112,7 @@ abstract contract CrossChainTellerBase is TellerWithMultiAssetSupport { function _beforeBridge(BridgeData calldata data) internal virtual; /** - * @notice after bridge code, just an emit but can be overriden + * @notice after bridge code, just an emit but can be overridden * @param shareAmount share amount burned * @param data bridge data * @param messageId message id returned when bridged From 0ab4a886fb249d3604b5e050a69fb5214697fd95 Mon Sep 17 00:00:00 2001 From: Jun Kim <64379343+junkim012@users.noreply.github.com> Date: Wed, 7 Aug 2024 22:22:07 +0900 Subject: [PATCH 4/4] chore: update readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5aa755e..0b5bf3f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ .,_,.='``'-.,\____/ \___|\_/ \___|_| |_\____/ \___|\__,_|___/-..__..-'' ~~-- ``` +> This repository began as a fork of [Se7enSeas](https://github.com/Se7en-Seas)' open source [boring-vault](https://github.com/Se7en-Seas/boring-vault) repo. We want to credit the Se7enSeas for creating the BoringVault architecture and allowing its free distribution. + # Boring Vault Architecture Boring Vaults are flexible vault contracts that allow for intricate strategies, secured by both onchain and offchain mechanisms.