From 61d9be3dc530ff43b78e6fb593972327279eba4a Mon Sep 17 00:00:00 2001 From: 0xtekgrinder <72015889+0xtekgrinder@users.noreply.github.com> Date: Fri, 2 Feb 2024 12:46:51 -0500 Subject: [PATCH] refactor: utils repository (#104) * forge install: utils * refactor: use utils repository for addresses and other utils functions * chore: install node_modules in ci * chore: update ci-deep to install node_modules * feat: updqte vanity script to write to json and ageur more globally * feat: use CHQIN_SOURCE instead of CHAIN_ETHEREUM * feat: use CHAIN_SORUCE everywhere and fix wrong imports --- .github/workflows/ci-deep.yml | 7 + .github/workflows/ci.yml | 16 + .gitmodules | 3 + lib/utils | 1 + package.json | 4 +- remappings.txt | 1 + scripts/Constants.s.sol | 13 +- scripts/ConstantsArbitrum.s.sol | 22 - scripts/ConstantsAvalanche.s.sol | 17 - scripts/ConstantsBSC.s.sol | 17 - scripts/ConstantsBase.s.sol | 17 - scripts/ConstantsCelo.s.sol | 18 - scripts/ConstantsGnosis.s.sol | 17 - scripts/ConstantsLinea.s.sol | 11 - scripts/ConstantsOptimism.s.sol | 18 - scripts/ConstantsPolygon.s.sol | 18 - scripts/ConstantsPolygonZkEVM.s.sol | 17 - scripts/DeployRebalancer.s.sol | 6 +- scripts/DeployRedeemer.s.sol | 2 +- scripts/DeploySavings.s.sol | 19 +- scripts/DeploySavingsNoCreate2.s.sol | 19 +- scripts/DeploySavingsNoImplem.s.sol | 18 +- scripts/DeployTransmuter.s.sol | 9 +- scripts/gnosis/DeploySavingsGnosis.s.sol | 2 +- scripts/test/CheckTransmuter.s.sol | 11 +- scripts/test/CheckTransmuterUSD.s.sol | 2 +- scripts/utils/Utils.s.sol | 49 +- scripts/utils/VanityAddress.s.sol | 60 +- test/Fixture.sol | 21 +- test/fuzz/SavingsTest.t.sol | 10 +- test/fuzz/SavingsVestTest.t.sol | 10 +- test/units/DiamondCut.t.sol | 2 +- test/units/DiamondLoupe.t.sol | 6 +- test/units/Layout.t.sol | 2 +- test/units/Transmuter.t.sol | 8 +- test/utils/Helper.sol | 57 +- test/utils/Transmuter.sol | 4 +- utils/forwardUtils.js | 21 + yarn.lock | 1030 +++++++++++++++++++++- 39 files changed, 1186 insertions(+), 399 deletions(-) create mode 160000 lib/utils delete mode 100644 scripts/ConstantsArbitrum.s.sol delete mode 100644 scripts/ConstantsAvalanche.s.sol delete mode 100644 scripts/ConstantsBSC.s.sol delete mode 100644 scripts/ConstantsBase.s.sol delete mode 100644 scripts/ConstantsCelo.s.sol delete mode 100644 scripts/ConstantsGnosis.s.sol delete mode 100644 scripts/ConstantsLinea.s.sol delete mode 100644 scripts/ConstantsOptimism.s.sol delete mode 100644 scripts/ConstantsPolygon.s.sol delete mode 100644 scripts/ConstantsPolygonZkEVM.s.sol create mode 100755 utils/forwardUtils.js diff --git a/.github/workflows/ci-deep.yml b/.github/workflows/ci-deep.yml index df2c4592..cba986cf 100644 --- a/.github/workflows/ci-deep.yml +++ b/.github/workflows/ci-deep.yml @@ -55,6 +55,9 @@ jobs: with: version: nightly + - name: Install node_modules + run: yarn install + - name: Compile foundry run: yarn compile --sizes @@ -65,6 +68,7 @@ jobs: path: | cache-forge out + node_modules - name: "Add build summary" run: | @@ -85,6 +89,7 @@ jobs: path: | cache-forge out + node_modules key: "build-${{ github.sha }}" - name: Install Foundry @@ -109,6 +114,7 @@ jobs: path: | cache-forge out + node_modules key: "build-${{ github.sha }}" - name: Install Foundry @@ -136,6 +142,7 @@ jobs: path: | cache-forge out + node_modules key: "build-${{ github.sha }}" - name: Install Foundry diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 02004b79..27a56104 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -44,6 +44,9 @@ jobs: with: version: nightly + - name: Install node_modules + run: yarn install + - name: Compile foundry run: yarn compile --sizes @@ -54,6 +57,7 @@ jobs: path: | cache-forge out + node_modules - name: "Add build summary" run: | @@ -74,6 +78,7 @@ jobs: path: | cache-forge out + node_modules key: "build-${{ github.sha }}" - name: Install Foundry @@ -98,6 +103,7 @@ jobs: path: | cache-forge out + node_modules key: "build-${{ github.sha }}" - name: Install Foundry @@ -125,6 +131,7 @@ jobs: path: | cache-forge out + node_modules key: "build-${{ github.sha }}" - name: Install Foundry @@ -145,6 +152,15 @@ jobs: with: submodules: "recursive" + - uses: actions/cache/restore@v3 + with: + fail-on-cache-miss: true + path: | + cache-forge + out + node_modules + key: "build-${{ github.sha }}" + - name: "Install Foundry" uses: "foundry-rs/foundry-toolchain@v1" diff --git a/.gitmodules b/.gitmodules index 1f7759a6..4a60f6ed 100644 --- a/.gitmodules +++ b/.gitmodules @@ -20,3 +20,6 @@ [submodule "lib/openzeppelin-contracts"] path = lib/openzeppelin-contracts url = https://github.com/OpenZeppelin/openzeppelin-contracts +[submodule "lib/utils"] + path = lib/utils + url = https://github.com/AngleProtocol/utils diff --git a/lib/utils b/lib/utils new file mode 160000 index 00000000..e33f4b9f --- /dev/null +++ b/lib/utils @@ -0,0 +1 @@ +Subproject commit e33f4b9f042704eb02f37e32d93c108f5005cd3f diff --git a/package.json b/package.json index 71cbf7ef..a8b4e8d2 100644 --- a/package.json +++ b/package.json @@ -52,5 +52,7 @@ "solhint": "^3.5.1", "solhint-plugin-prettier": "^0.0.5" }, - "dependencies": {} + "dependencies": { + "@angleprotocol/sdk": "^3.0.129" + } } diff --git a/remappings.txt b/remappings.txt index 3e0f047a..0b856211 100644 --- a/remappings.txt +++ b/remappings.txt @@ -11,3 +11,4 @@ oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/ mock/=test/mock/ prb/math/=lib/prb-math/src/ borrow/=lib/borrow-contracts/contracts +utils/=lib/utils \ No newline at end of file diff --git a/scripts/Constants.s.sol b/scripts/Constants.s.sol index 5aebcce2..1737646c 100644 --- a/scripts/Constants.s.sol +++ b/scripts/Constants.s.sol @@ -2,23 +2,16 @@ pragma solidity ^0.8.19; import "contracts/utils/Constants.sol"; +import { CHAIN_ETHEREUM } from "utils/src/Constants.sol"; /*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// MAINNET CONSTANTS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ -address constant ACCESS_CONTROL_MANAGER = 0x5bc6BEf80DA563EBf6Df6D6913513fa9A7ec89BE; -address constant CHAIN_AGEUR = 0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8; -address constant GOVERNOR = 0xdC4e6DFe07EFCa50a197DF15D9200883eF4Eb1c8; -address constant GUARDIAN = 0x0C2553e4B9dFA9f83b1A6D3EAB96c4bAaB42d430; -address constant PROXY_ADMIN = 0x1D941EF0D3Bba4ad67DBfBCeE5262F4CEE53A32b; -address constant PROXY_ADMIN_GUARDIAN = 0xD9F1A8e00b0EEbeDddd9aFEaB55019D55fcec017; -address constant TREASURY_EUR = 0x8667DBEBf68B0BFa6Db54f550f41Be16c4067d60; -address constant TREASURY_USD = 0xf8588520E760BB0b3bDD62Ecb25186A28b0830ee; +uint256 constant CHAIN_SOURCE = CHAIN_ETHEREUM; + address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; address constant DEPLOYER = 0xfdA462548Ce04282f4B6D6619823a7C64Fdc0185; -address constant TRANSMUTER_EUR = 0x00253582b2a3FE112feEC532221d9708c64cEFAb; -address constant TRANSMUTER_USD = 0x222222fD79264BBE280b4986F6FEfBC3524d0137; address constant EUROC = 0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c; address constant EUROE = 0x820802Fa8a99901F52e39acD21177b0BE6EE2974; diff --git a/scripts/ConstantsArbitrum.s.sol b/scripts/ConstantsArbitrum.s.sol deleted file mode 100644 index 86b4a29f..00000000 --- a/scripts/ConstantsArbitrum.s.sol +++ /dev/null @@ -1,22 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - ARBITRUM CONSTANTS -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant ACCESS_CONTROL_MANAGER = 0x31429d1856aD1377A8A0079410B297e1a9e214c2; -address constant CHAIN_AGEUR = 0xFA5Ed56A203466CbBC2430a43c66b9D8723528E7; -address constant GOVERNOR = 0xAA2DaCCAb539649D1839772C625108674154df0B; -address constant GUARDIAN = 0x55F01DDaE74b60e3c255BD2f619FEbdFce560a9C; -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant PROXY_ADMIN = 0x9a5b060Bd7b8f86c4C0D720a17367729670AfB19; -address constant PROXY_ADMIN_GUARDIAN = 0xf2eDa0829E8A9CF53EBCB8AFCBb558D2eABCEF64; - -address constant TREASURY_USD = 0x79E4dF078A06AC31BfAA0f672f1f6E9B7F38113E; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0xadF56645e6796E32a805e5bC70267C656D0EaF7c; diff --git a/scripts/ConstantsAvalanche.s.sol b/scripts/ConstantsAvalanche.s.sol deleted file mode 100644 index 4bbeb7f1..00000000 --- a/scripts/ConstantsAvalanche.s.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant CHAIN_AGEUR = 0xAEC8318a9a59bAEb39861d10ff6C7f7bf1F96C57; -address constant PROXY_ADMIN = 0x7AB641E661a9728913A44e06f6a4879481142DDb; -address constant ACCESS_CONTROL_MANAGER = 0xe9f183FC656656f1F17af1F2b0dF79b8fF9ad8eD; - -address constant TREASURY_USD = 0xdE725566Fa2bAfd175066943D8D50ae762058e92; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0xdd8670B64B8Ec2c4f7dA9F8f6d1F757D107e1895; diff --git a/scripts/ConstantsBSC.s.sol b/scripts/ConstantsBSC.s.sol deleted file mode 100644 index 16f4ac14..00000000 --- a/scripts/ConstantsBSC.s.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant CHAIN_AGEUR = 0x12f31B73D812C6Bb0d735a218c086d44D5fe5f89; -address constant PROXY_ADMIN = 0x9a5b060Bd7b8f86c4C0D720a17367729670AfB19; -address constant ACCESS_CONTROL_MANAGER = 0x31429d1856aD1377A8A0079410B297e1a9e214c2; - -address constant TREASURY_USD = 0x075A2660901430DC5714Ca50282e5a2A1Eec4e59; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0x1E5B48c08D6b5efE0792d04f27602bD90026514a; diff --git a/scripts/ConstantsBase.s.sol b/scripts/ConstantsBase.s.sol deleted file mode 100644 index 94663d7f..00000000 --- a/scripts/ConstantsBase.s.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant CHAIN_AGEUR = 0xA61BeB4A3d02decb01039e378237032B351125B4; -address constant PROXY_ADMIN = 0x1D941EF0D3Bba4ad67DBfBCeE5262F4CEE53A32b; -address constant ACCESS_CONTROL_MANAGER = 0x4b1E2c2762667331Bc91648052F646d1b0d35984; - -address constant TREASURY_USD = 0xdD6A0A00fE3353e813F3B3864694D55D2a7cE11C; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0x07C89CC845D046aEad377DddC61114AA9D920Ac0; diff --git a/scripts/ConstantsCelo.s.sol b/scripts/ConstantsCelo.s.sol deleted file mode 100644 index de16dc6b..00000000 --- a/scripts/ConstantsCelo.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; - -address constant CHAIN_AGEUR = 0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049; -address constant PROXY_ADMIN = 0x5183f032bf42109cD370B9559FD22207e432301E; -address constant ACCESS_CONTROL_MANAGER = 0x59153e939c5b4721543251ff3049Ea04c755373B; - -address constant TREASURY_USD = 0x029F049C59A6b56610a34ba01d0d28E26ed407A8; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0xb1F2A25fFB2b095E99f430cAF507cC31F9A3EaAB; diff --git a/scripts/ConstantsGnosis.s.sol b/scripts/ConstantsGnosis.s.sol deleted file mode 100644 index 32a0020a..00000000 --- a/scripts/ConstantsGnosis.s.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant CHAIN_AGEUR = 0x4b1E2c2762667331Bc91648052F646d1b0d35984; -address constant PROXY_ADMIN = 0x9a5b060Bd7b8f86c4C0D720a17367729670AfB19; -address constant ACCESS_CONTROL_MANAGER = 0x3E399AE5B4D8bc0021e53b51c8BCdD66DD62c03b; - -address constant TREASURY_USD = 0x3E9Ea799C447B3C65702c82F8193085F330a1DB0; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0x6C04c39B9E73aC91106D12F828e2E29Fd8ef1024; diff --git a/scripts/ConstantsLinea.s.sol b/scripts/ConstantsLinea.s.sol deleted file mode 100644 index 6faafb04..00000000 --- a/scripts/ConstantsLinea.s.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant CHAIN_AGEUR = 0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8; -address constant PROXY_ADMIN = 0x1D941EF0D3Bba4ad67DBfBCeE5262F4CEE53A32b; -address constant ACCESS_CONTROL_MANAGER = 0x4b1E2c2762667331Bc91648052F646d1b0d35984; - -address constant TREASURY_USD = 0x840b25c87B626a259CA5AC32124fA752F0230a72; diff --git a/scripts/ConstantsOptimism.s.sol b/scripts/ConstantsOptimism.s.sol deleted file mode 100644 index 1d19d412..00000000 --- a/scripts/ConstantsOptimism.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; - -address constant CHAIN_AGEUR = 0x9485aca5bbBE1667AD97c7fE7C4531a624C8b1ED; -address constant PROXY_ADMIN = 0xC16B81Af351BA9e64C1a069E3Ab18c244A1E3049; -address constant ACCESS_CONTROL_MANAGER = 0x1a7e4e63778B4f12a199C062f3eFdD288afCBce8; - -address constant TREASURY_USD = 0x770F7CDFAe5ecaA3A0538DA7Cb1D6c8F22252fe0; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0xB2378660Daebb9BA6c1ce2a38d3ee1d6a6E4Dc14; diff --git a/scripts/ConstantsPolygon.s.sol b/scripts/ConstantsPolygon.s.sol deleted file mode 100644 index 2eba5217..00000000 --- a/scripts/ConstantsPolygon.s.sol +++ /dev/null @@ -1,18 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; - -address constant CHAIN_AGEUR = 0xE0B52e49357Fd4DAf2c15e02058DCE6BC0057db4; -address constant PROXY_ADMIN = 0xBFca293e17e067e8aBdca30A5D35ADDd0cBaE6D6; -address constant ACCESS_CONTROL_MANAGER = 0x78754109cb73772d70A6560297037657C2AF51b8; - -address constant TREASURY_USD = 0x37ad97C08E3Ce8184aD30911bfb0BcEe443d5120; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0xA7C8AF476558fD8C91422daE19E783dfdf6Ffbb3; diff --git a/scripts/ConstantsPolygonZkEVM.s.sol b/scripts/ConstantsPolygonZkEVM.s.sol deleted file mode 100644 index 35cf91ca..00000000 --- a/scripts/ConstantsPolygonZkEVM.s.sol +++ /dev/null @@ -1,17 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0 -pragma solidity ^0.8.19; - -import "contracts/utils/Constants.sol"; - -address constant IMMUTABLE_CREATE2_FACTORY_ADDRESS = 0x0000000000FFe8B47B3e2130213B802212439497; -address constant CHAIN_AGEUR = 0xA61BeB4A3d02decb01039e378237032B351125B4; -address constant PROXY_ADMIN = 0x31429d1856aD1377A8A0079410B297e1a9e214c2; -address constant ACCESS_CONTROL_MANAGER = 0x4b1E2c2762667331Bc91648052F646d1b0d35984; - -address constant TREASURY_USD = 0x352742b8c16bf83b83107283E151F843E80fdD97; - -/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - SAVINGS IMPLEM - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - -address constant SAVINGS_IMPLEM = 0x5EE94c25e3d5113CD055537340B9d19CFA4D9217; diff --git a/scripts/DeployRebalancer.s.sol b/scripts/DeployRebalancer.s.sol index 4756e47c..63da1c35 100644 --- a/scripts/DeployRebalancer.s.sol +++ b/scripts/DeployRebalancer.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "./utils/Utils.s.sol"; +import "./utils/Utils.s.sol"; import { console } from "forge-std/console.sol"; import { Rebalancer } from "contracts/helpers/Rebalancer.sol"; import { IAccessControlManager } from "contracts/utils/AccessControl.sol"; @@ -18,8 +18,8 @@ contract DeployRebalancer is Utils { address deployer = vm.addr(deployerPrivateKey); console.log("Deployer address: ", deployer); Rebalancer rebalancer = new Rebalancer( - IAccessControlManager(ACCESS_CONTROL_MANAGER), - ITransmuter(TRANSMUTER_EUR) + IAccessControlManager(_chainToContract(CHAIN_SOURCE, ContractType.CoreBorrow)), + ITransmuter(_chainToContract(CHAIN_SOURCE, ContractType.TransmuterAgEUR)) ); console.log("Rebalancer deployed at: ", address(rebalancer)); diff --git a/scripts/DeployRedeemer.s.sol b/scripts/DeployRedeemer.s.sol index 9b59b0dd..471ae3cd 100644 --- a/scripts/DeployRedeemer.s.sol +++ b/scripts/DeployRedeemer.s.sol @@ -21,7 +21,7 @@ contract DeployRedeemer is Utils { address oldRedeemer = 0x8E669F6eF8485694196F32d568BA4Ac268b9FE8f; function run() external { - // vm.startPrank(GOVERNOR); + // vm.startPrank(_chainToContract(CHAIN_SOURCE, ContractType.GovernorMultisig); uint256 deployerPrivateKey = vm.deriveKey(vm.envString("MNEMONIC_FORK"), 0); address deployer = vm.addr(deployerPrivateKey); diff --git a/scripts/DeploySavings.s.sol b/scripts/DeploySavings.s.sol index b9e988a6..20c0328b 100644 --- a/scripts/DeploySavings.s.sol +++ b/scripts/DeploySavings.s.sol @@ -1,28 +1,29 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "./utils/Utils.s.sol"; +import "./utils/Utils.s.sol"; +import "utils/src/Constants.sol"; import { console } from "forge-std/console.sol"; +import { CHAIN_SOURCE } from "./Constants.s.sol"; import { stdJson } from "forge-std/StdJson.sol"; import "stringutils/strings.sol"; import { Savings } from "contracts/savings/Savings.sol"; import { IAccessControlManager } from "contracts/utils/AccessControl.sol"; -import "./ConstantsPolygonZkEVM.s.sol"; import "oz/interfaces/IERC20.sol"; import "oz-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; import { TransparentUpgradeableProxy } from "oz/proxy/transparent/TransparentUpgradeableProxy.sol"; import { ImmutableCreate2Factory } from "./utils/TransmuterDeploymentHelper.s.sol"; -/// @dev To deploy on a different chain, just replace the import of the `Constants.s.sol` file by a file which has the -/// constants defined for the chain of your choice. +/// @dev To deploy on a different chain, just replace the chainId and be sure the sdk has the required addresses contract DeploySavings is Utils { using stdJson for string; using strings for *; function run() external { // TODO: make sure that deployer has a 1 agEUR (=1e18) balance - // TODO: check the import of the constants file if it corresponds to the chain you're deploying on + // TODO: change the chainId + uint256 chainId = CHAIN_SOURCE; uint256 deployerPrivateKey = vm.deriveKey(vm.envString("MNEMONIC_MAINNET"), "m/44'/60'/0'/0/", 0); ImmutableCreate2Factory create2Factory = ImmutableCreate2Factory(IMMUTABLE_CREATE2_FACTORY_ADDRESS); string memory jsonVanity = vm.readFile(JSON_VANITY_PATH); @@ -55,11 +56,11 @@ contract DeploySavings is Utils { // Deploying the implementation Savings savingsImpl = new Savings(); TransparentUpgradeableProxy(payable(saving)).upgradeTo(address(savingsImpl)); - TransparentUpgradeableProxy(payable(saving)).changeAdmin(PROXY_ADMIN); - IERC20MetadataUpgradeable(CHAIN_AGEUR).approve(address(saving), 1e18); + TransparentUpgradeableProxy(payable(saving)).changeAdmin(_chainToContract(chainId, ContractType.ProxyAdmin)); + IERC20MetadataUpgradeable(_chainToContract(chainId, ContractType.AgEUR)).approve(address(saving), 1e18); Savings(saving).initialize( - IAccessControlManager(ACCESS_CONTROL_MANAGER), - IERC20MetadataUpgradeable(CHAIN_AGEUR), + IAccessControlManager(_chainToContract(chainId, ContractType.CoreBorrow)), + IERC20MetadataUpgradeable(_chainToContract(chainId, ContractType.AgEUR)), "Staked agEUR", "stEUR", 1 diff --git a/scripts/DeploySavingsNoCreate2.s.sol b/scripts/DeploySavingsNoCreate2.s.sol index 11eb7088..2521cca2 100644 --- a/scripts/DeploySavingsNoCreate2.s.sol +++ b/scripts/DeploySavingsNoCreate2.s.sol @@ -1,21 +1,22 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "./utils/Utils.s.sol"; +import "./utils/Utils.s.sol"; import { console } from "forge-std/console.sol"; import { Savings } from "contracts/savings/Savings.sol"; +import { CHAIN_SOURCE } from "./Constants.s.sol"; import { IAccessControlManager } from "contracts/utils/AccessControl.sol"; import "./Constants.s.sol"; import "oz/interfaces/IERC20.sol"; import "oz-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; -/// @dev To deploy on a different chain, just replace the import of the `Constants.s.sol` file by a file which has the -/// constants defined for the chain of your choice. +/// @dev To deploy on a different chain, just replace the chainId and be sure the sdk has the required addresses /// @dev This is a vanilla deployment file to easily and rapidly deploy a savings implementation at a random address contract DeploySavingsNoCreate2 is Utils { function run() external { // TODO: make sure that deployer has a 1 agEUR (=1e18) balance - // TODO: check the import of the constants file if it corresponds to the chain you're deploying on + // TODO: change the chainId + uint256 chainId = CHAIN_SOURCE; uint256 deployerPrivateKey = vm.deriveKey(vm.envString("MNEMONIC_FORK"), "m/44'/60'/0'/0/", 0); vm.startBroadcast(deployerPrivateKey); @@ -24,12 +25,14 @@ contract DeploySavingsNoCreate2 is Utils { Savings savingsImpl = new Savings(); bytes memory emptyData; - Savings saving = Savings(deployUpgradeable(address(savingsImpl), PROXY_ADMIN, emptyData)); + Savings saving = Savings( + _deployUpgradeable(address(savingsImpl), _chainToContract(chainId, ContractType.ProxyAdmin), emptyData) + ); console.log("Savings deployed at: ", address(saving)); - IERC20MetadataUpgradeable(CHAIN_AGEUR).approve(address(saving), 1e18); + IERC20MetadataUpgradeable(_chainToContract(chainId, ContractType.AgEUR)).approve(address(saving), 1e18); saving.initialize( - IAccessControlManager(ACCESS_CONTROL_MANAGER), - IERC20MetadataUpgradeable(CHAIN_AGEUR), + IAccessControlManager(_chainToContract(chainId, ContractType.CoreBorrow)), + IERC20MetadataUpgradeable(_chainToContract(chainId, ContractType.AgEUR)), "agEUR Savings Account", "sagEUR", 1 diff --git a/scripts/DeploySavingsNoImplem.s.sol b/scripts/DeploySavingsNoImplem.s.sol index 199ac3f9..f3e2fe2d 100644 --- a/scripts/DeploySavingsNoImplem.s.sol +++ b/scripts/DeploySavingsNoImplem.s.sol @@ -1,10 +1,11 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "./utils/Utils.s.sol"; +import "./utils/Utils.s.sol"; import { console } from "forge-std/console.sol"; import { stdJson } from "forge-std/StdJson.sol"; import "stringutils/strings.sol"; +import { CHAIN_SOURCE } from "./Constants.s.sol"; import { Savings } from "contracts/savings/Savings.sol"; import { IAccessControlManager } from "contracts/utils/AccessControl.sol"; import "./Constants.s.sol"; @@ -16,15 +17,15 @@ import { ImmutableCreate2Factory } from "./utils/TransmuterDeploymentHelper.s.so import { MockTreasury } from "../test/mock/MockTreasury.sol"; -/// @dev To deploy on a different chain, just replace the import of the `Constants.s.sol` file by a file which has the -/// constants defined for the chain of your choice. +/// @dev To deploy on a different chain, just replace the chainId and be sure the sdk has the required addresses contract DeploySavingsNoImplem is Utils { using stdJson for string; using strings for *; function run() external { // TODO: make sure that deployer has a 1 stablecoin (=1e18) balance - // TODO: check the import of the constants file if it corresponds to the chain you're deploying on + // TODO: change the chainId + uint256 chainId = CHAIN_SOURCE; uint256 deployerPrivateKey = vm.deriveKey(vm.envString("MNEMONIC_MAINNET"), "m/44'/60'/0'/0/", 0); ImmutableCreate2Factory create2Factory = ImmutableCreate2Factory(IMMUTABLE_CREATE2_FACTORY_ADDRESS); string memory jsonVanity = vm.readFile(JSON_VANITY_PATH); @@ -35,9 +36,10 @@ contract DeploySavingsNoImplem is Utils { console.log("Deployer address: ", deployer); // No need to deploy the implementation here // TODO: update addresses based on deployment - address agToken = 0x0000206329b97DB379d5E1Bf586BbDB969C63274; - address accessControlManager = ACCESS_CONTROL_MANAGER; - address treasury = TREASURY_USD; + // address agToken = _chainToContract(chainId, ContractType.AgUSD); + address agToken = _chainToContract(chainId, ContractType.AgEUR); + address accessControlManager = _chainToContract(chainId, ContractType.CoreBorrow); + address treasury = _chainToContract(chainId, ContractType.TreasuryAgUSD); // Then deploying the proxy. // To maintain chain consistency, we deploy with the deployer as a proxyAdmin before transferring @@ -61,7 +63,7 @@ contract DeploySavingsNoImplem is Utils { address saving = create2Factory.safeCreate2(salt, initCode); console.log("Savings deployed at: ", address(saving)); TransparentUpgradeableProxy(payable(saving)).upgradeTo(address(SAVINGS_IMPLEM)); - TransparentUpgradeableProxy(payable(saving)).changeAdmin(PROXY_ADMIN); + TransparentUpgradeableProxy(payable(saving)).changeAdmin(_chainToContract(chainId, ContractType.ProxyAdmin)); IERC20MetadataUpgradeable(agToken).approve(address(saving), 1e18); Savings(saving).initialize( IAccessControlManager(accessControlManager), diff --git a/scripts/DeployTransmuter.s.sol b/scripts/DeployTransmuter.s.sol index 3d2d447d..50c42cfb 100644 --- a/scripts/DeployTransmuter.s.sol +++ b/scripts/DeployTransmuter.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "./utils/Utils.s.sol"; +import "./utils/Utils.s.sol"; import { TransmuterDeploymentHelper } from "./utils/TransmuterDeploymentHelper.s.sol"; import { console } from "forge-std/console.sol"; import { stdJson } from "forge-std/StdJson.sol"; @@ -39,7 +39,12 @@ contract DeployTransmuter is TransmuterDeploymentHelper { address dummyImplementation = address(new DummyDiamondImplementation()); ITransmuter transmuter = _deployTransmuter( config, - abi.encodeWithSelector(Production.initialize.selector, ACCESS_CONTROL_MANAGER, AGEUR, dummyImplementation) + abi.encodeWithSelector( + Production.initialize.selector, + _chainToContract(CHAIN_SOURCE, ContractType.CoreBorrow), + AGEUR, + dummyImplementation + ) ); console.log("Transmuter deployed at: %s", address(transmuter)); diff --git a/scripts/gnosis/DeploySavingsGnosis.s.sol b/scripts/gnosis/DeploySavingsGnosis.s.sol index d75df329..8c6ffe73 100644 --- a/scripts/gnosis/DeploySavingsGnosis.s.sol +++ b/scripts/gnosis/DeploySavingsGnosis.s.sol @@ -43,7 +43,7 @@ contract DeploySavingsGnosis is Utils { Savings savingsImpl = new Savings(); Savings saving = Savings( - deployUpgradeable( + _deployUpgradeable( address(savingsImpl), address(proxy), abi.encodeWithSelector(Savings.initialize.selector, coreBorrow, agEUR, "Mock-sagEUR", "Mock-sagEUR", 1) diff --git a/scripts/test/CheckTransmuter.s.sol b/scripts/test/CheckTransmuter.s.sol index 84401fac..d9d2bff0 100644 --- a/scripts/test/CheckTransmuter.s.sol +++ b/scripts/test/CheckTransmuter.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "../utils/Utils.s.sol"; +import "../utils/Utils.s.sol"; import { console } from "forge-std/console.sol"; import { StdCheats } from "forge-std/Test.sol"; import { IERC20 } from "oz/token/ERC20/IERC20.sol"; @@ -35,7 +35,10 @@ contract CheckTransmuter is Utils, StdCheats { } */ - assertEq(address(transmuter.accessControlManager()), address(ACCESS_CONTROL_MANAGER)); + assertEq( + address(transmuter.accessControlManager()), + address(_chainToContract(CHAIN_SOURCE, ContractType.CoreBorrow)) + ); assertEq(address(transmuter.agToken()), address(AGEUR)); assertEq(transmuter.getCollateralList(), collaterals); assertEq(transmuter.getCollateralDecimals(EUROC), 6); @@ -191,8 +194,8 @@ contract CheckTransmuter is Utils, StdCheats { deal(BC3M, address(transmuter), BASE_18); - hoax(GOVERNOR); - IAgToken(address(TREASURY_EUR)).addMinter(address(transmuter)); + hoax(_chainToContract(CHAIN_SOURCE, ContractType.GovernorMultisig)); + IAgToken(address(_chainToContract(CHAIN_SOURCE, ContractType.TreasuryAgEUR))).addMinter(address(transmuter)); uint256 deployerPrivateKey = vm.deriveKey(vm.envString("MNEMONIC_FORK"), "m/44'/60'/0'/0/", 0); address deployer = vm.addr(deployerPrivateKey); diff --git a/scripts/test/CheckTransmuterUSD.s.sol b/scripts/test/CheckTransmuterUSD.s.sol index 0803a63f..6d2ec7d6 100644 --- a/scripts/test/CheckTransmuterUSD.s.sol +++ b/scripts/test/CheckTransmuterUSD.s.sol @@ -35,7 +35,7 @@ contract CheckTransmuterUSD is Utils, StdCheats { } */ /* - assertEq(address(transmuter.accessControlManager()), address(ACCESS_CONTROL_MANAGER)); + assertEq(address(transmuter.accessControlManager()), address(_chainToContract(CHAIN_SOURCE, ContractType.CoreBorrow))); assertEq(address(transmuter.agToken()), address(AGEUR)); */ assertEq(transmuter.getCollateralList(), collaterals); diff --git a/scripts/utils/Utils.s.sol b/scripts/utils/Utils.s.sol index 3720696c..e19d6285 100644 --- a/scripts/utils/Utils.s.sol +++ b/scripts/utils/Utils.s.sol @@ -6,8 +6,10 @@ import { StdAssertions } from "forge-std/Test.sol"; import "stringutils/strings.sol"; import { TransparentUpgradeableProxy } from "oz/proxy/transparent/TransparentUpgradeableProxy.sol"; +import { CommonUtils } from "utils/src/CommonUtils.sol"; +import { ContractType } from "utils/src/Constants.sol"; -contract Utils is Script, StdAssertions { +contract Utils is Script, StdAssertions, CommonUtils { using strings for *; string constant JSON_SELECTOR_PATH = "./scripts/selectors.json"; @@ -31,43 +33,6 @@ contract Utils is Script, StdAssertions { } } - function _generateSelectors(string memory _facetName, uint256 retries) internal returns (bytes4[] memory selectors) { - console.log("_generateSelectors ", _facetName); - //get string of contract methods - string[] memory cmd = new string[](5); - cmd[0] = "forge"; - cmd[1] = "inspect"; - cmd[2] = "--force"; - cmd[3] = _facetName; - cmd[4] = "methods"; - bytes memory res = vm.ffi(cmd); - string memory st = string(res); - - // if empty, try again - if (bytes(st).length == 0) { - if (retries != 0) { - return _generateSelectors(_facetName, retries - 1); - } - } - - // extract function signatures and take first 4 bytes of keccak - strings.slice memory s = st.toSlice(); - strings.slice memory delim = ":".toSlice(); - strings.slice memory delim2 = ",".toSlice(); - selectors = new bytes4[]((s.count(delim))); - for (uint i = 0; i < selectors.length; ++i) { - s.split('"'.toSlice()); - selectors[i] = bytes4(s.split(delim).until('"'.toSlice()).keccak()); - s.split(delim2); - } - return selectors; - } - - // return array of function selectors for given facet name - function _generateSelectors(string memory _facetName) internal returns (bytes4[] memory selectors) { - return _generateSelectors(_facetName, 3); - } - function _bytes4ToBytes32(bytes4 _in) internal pure returns (bytes32 out) { assembly { out := _in @@ -93,12 +58,4 @@ contract Utils is Script, StdAssertions { console.logBytes4(_in[i]); } } - - /*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - PROXY - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - - function deployUpgradeable(address implementation, address proxyAdmin, bytes memory data) public returns (address) { - return address(new TransparentUpgradeableProxy(implementation, proxyAdmin, data)); - } } diff --git a/scripts/utils/VanityAddress.s.sol b/scripts/utils/VanityAddress.s.sol index 2c2b1ba2..1a6ac331 100644 --- a/scripts/utils/VanityAddress.s.sol +++ b/scripts/utils/VanityAddress.s.sol @@ -1,62 +1,34 @@ // SPDX-License-Identifier: GPL-3.0 pragma solidity ^0.8.19; -import { Utils } from "./Utils.s.sol"; +import "../Constants.s.sol"; +import { VanityAddress } from "utils/src/VanityAddress.sol"; +import { Script } from "forge-std/Script.sol"; +import { console } from "forge-std/console.sol"; import "stringutils/strings.sol"; import { stdJson } from "forge-std/StdJson.sol"; -import { console } from "forge-std/console.sol"; -import "../Constants.s.sol"; +import { Utils } from "./Utils.s.sol"; -contract VanityAddress is Utils { +contract VanityAddressScript is Script, VanityAddress, Utils { using stdJson for string; - function _findDeploymentAddress( - bytes32 salt, - bytes memory initCode - ) internal pure returns (address deploymentAddress) { - deploymentAddress = address( - uint160( // downcast to match the address type. - uint256( // convert to uint to truncate upper digits. - keccak256( // compute the CREATE2 hash using 4 inputs. - abi.encodePacked( // pack all inputs to the hash together. - hex"ff", // start with 0xff to distinguish from RLP. - IMMUTABLE_CREATE2_FACTORY_ADDRESS, // this contract will be the caller. - salt, // pass in the supplied salt value. - keccak256(abi.encodePacked(initCode)) // pass in the hash of initialization code. - ) - ) - ) - ) - ); - } - function run() external { // Make sure that the initCode has been obtained through a via-IR compilation, or through the exact same setup as the deployment setup - bytes memory initCode = hex"60406080815262000cdb80380380620000188162000364565b9283398101906060818303126200035f576200003481620003a0565b9160209262000045848401620003a0565b8584015190936001600160401b0391908282116200035f57019280601f850112156200035f57835193620000836200007d86620003b5565b62000364565b94808652878601928882840101116200035f578288620000a49301620003d1565b823b1562000305577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b03199081166001600160a01b0386811691821790935590959194600093909290917fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8580a2805115801590620002fd575b620001f5575b50505050507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103937f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f86865493815196818616885216958684820152a18315620001a3575016179055516108869081620004558239f35b60849086519062461bcd60e51b82526004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152fd5b8951946060860190811186821017620002e9578a52602785527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c89860152660819985a5b195960ca1b8a860152823b156200029657928092819262000280969551915af43d156200028c573d620002706200007d82620003b5565b9081528092893d92013e620003f6565b5038808080806200012d565b60609150620003f6565b895162461bcd60e51b8152600481018a9052602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608490fd5b634e487b7160e01b85526041600452602485fd5b508362000127565b865162461bcd60e51b815260048101879052602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b600080fd5b6040519190601f01601f191682016001600160401b038111838210176200038a57604052565b634e487b7160e01b600052604160045260246000fd5b51906001600160a01b03821682036200035f57565b6001600160401b0381116200038a57601f01601f191660200190565b60005b838110620003e55750506000910152565b8181015183820152602001620003d4565b9091901562000403575090565b815115620004145750805190602001fd5b6044604051809262461bcd60e51b825260206004830152620004468151809281602486015260208686019101620003d1565b601f01601f19168101030190fdfe60806040526004361015610019575b3661037c575b61037c565b6000803560e01c9081633659cfe61461006c575080634f1ef286146100675780635c60da1b146100625780638f2839701461005d5763f851a4400361000e57610326565b610212565b61019e565b6100ef565b346100d15760203660031901126100d1576100856100d4565b6001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354163314600014610014576100ce906100c56104af565b90838252610516565b80f35b80fd5b600435906001600160a01b03821682036100ea57565b600080fd5b60403660031901126100ea576101036100d4565b60243567ffffffffffffffff918282116100ea57366023830112156100ea5781600401359283116100ea5736602484840101116100ea576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035416331460001461001457600060208480602461018a61018561019c996104fa565b6104d4565b96828852018387013784010152610624565b005b346100ea5760003660031901126100ea576001600160a01b03807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610354163314600014610014577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5460405191168152602090f35b346100ea5760203660031901126100ea5761022b6100d4565b6001600160a01b03907fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610391808354163314600014610014577f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f604084549281519481851686521693846020820152a181156102bc5773ffffffffffffffffffffffffffffffffffffffff1916179055005b608460405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152fd5b346100ea5760003660031901126100ea576001600160a01b037fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61039080825416331460001461001457905460405191168152602090f35b6001600160a01b03807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103541633146103f0577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc54166000808092368280378136915af43d82803e156103ec573d90f35b3d90fd5b60a460405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f7879207461726760648201527f65740000000000000000000000000000000000000000000000000000000000006084820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051906020820182811067ffffffffffffffff8211176104cf57604052565b610480565b6040519190601f01601f1916820167ffffffffffffffff8111838210176104cf57604052565b67ffffffffffffffff81116104cf57601f01601f191660200190565b803b156105ba576001600160a01b0381167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8173ffffffffffffffffffffffffffffffffffffffff198254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28151158015906105b2575b61059d575050565b6105af916105a96106b2565b91610722565b50565b506000610595565b608460405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152fd5b803b156105ba576001600160a01b0381167f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8173ffffffffffffffffffffffffffffffffffffffff198254161790557fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a28151158015906106aa5761059d575050565b506001610595565b604051906060820182811067ffffffffffffffff8211176104cf57604052602782527f206661696c6564000000000000000000000000000000000000000000000000006040837f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c60208201520152565b9190823b1561076b576000816107609460208394519201905af43d15610763573d90610750610185836104fa565b9182523d6000602084013e6107d5565b90565b6060906107d5565b608460405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152fd5b909190156107e1575090565b8151156107f15750805190602001fd5b6040519062461bcd60e51b82528160208060048301528251908160248401526000935b828510610837575050604492506000838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935061081456fea2646970667358221220d55b5da8b924769f7b438faccab9195abc467b47fdb6d935592c5612e7e7412164736f6c634300081300330000000000000000000000000000000000ffe8b47b3e2130213b802212439497000000000000000000000000fda462548ce04282f4b6d6619823a7c64fdc018500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000"; - // Deploy diamond string memory json = vm.readFile(JSON_VANITY_PATH); uint256 initInt = json.readUint(string.concat("$.", "init")); - uint256 i = initInt; - address computedAddress; - bool found = false; - while (!found && i - initInt < 3000000) { - computedAddress = _findDeploymentAddress( - bytes32(abi.encodePacked(DEPLOYER, abi.encodePacked(uint96(i)))), - initCode - ); - if (uint24(uint160(bytes20(computedAddress)) >> 136) == uint24(0x002222)) { - found = true; - break; - } - i = i + 1; - } + uint256 iterations = 3000000; + + (address computed, uint256 found) = minePrefix(initCode, DEPLOYER, 0x002222, initInt, iterations); + console.log("Computed: ", computed); + console.log("Found: ", found); - console.log("found ", found); - console.log("i ", i); - console.logBytes32(bytes32(abi.encodePacked(DEPLOYER, abi.encodePacked(uint96(i))))); - console.log("computedAddress ", computedAddress); + // write result to json vanity path + json = ""; + vm.serializeUint(json, "init", found); + string memory finalJson = vm.serializeAddress(json, "salt", computed); + vm.writeFile(JSON_VANITY_PATH, finalJson); } } diff --git a/test/Fixture.sol b/test/Fixture.sol index 3bb376fc..64c24868 100644 --- a/test/Fixture.sol +++ b/test/Fixture.sol @@ -17,8 +17,9 @@ import { MockTokenPermit } from "mock/MockTokenPermit.sol"; import { CollateralSetup, Test } from "contracts/transmuter/configs/Test.sol"; import "contracts/utils/Constants.sol"; import "contracts/utils/Errors.sol"; - +import { CHAIN_SOURCE } from "../scripts/Constants.s.sol"; import { ITransmuter, Transmuter } from "./utils/Transmuter.sol"; +import { ContractType } from "utils/src/Constants.sol"; import { console } from "forge-std/console.sol"; @@ -40,9 +41,9 @@ contract Fixture is Transmuter { uint256 internal constant _MAX_PERCENTAGE_DEVIATION = 1e12; uint256 internal constant _MAX_SUB_COLLATERALS = 10; - address public constant governor = 0xdC4e6DFe07EFCa50a197DF15D9200883eF4Eb1c8; - address public constant guardian = 0x0C2553e4B9dFA9f83b1A6D3EAB96c4bAaB42d430; - address public constant angle = 0x31429d1856aD1377A8A0079410B297e1a9e214c2; + address public guardian; + address public angle; + address public governor; address public alice; address public bob; @@ -57,6 +58,10 @@ contract Fixture is Transmuter { dylan = vm.addr(4); sweeper = address(uint160(uint256(keccak256(abi.encodePacked("sweeper"))))); + governor = _chainToContract(CHAIN_SOURCE, ContractType.GovernorMultisig); + guardian = _chainToContract(CHAIN_SOURCE, ContractType.GuardianMultisig); + angle = _chainToContract(CHAIN_SOURCE, ContractType.Angle); + vm.label(governor, "Governor"); vm.label(guardian, "Guardian"); vm.label(angle, "ANGLE"); @@ -109,14 +114,6 @@ contract Fixture is Transmuter { vm.label(address(eurY), "eurY"); } - /*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - UTILS - //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ - - function deployUpgradeable(address implementation, bytes memory data) public returns (address) { - return address(new TransparentUpgradeableProxy(implementation, address(proxyAdmin), data)); - } - /*////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ASSERTIONS //////////////////////////////////////////////////////////////////////////////////////////////////////////////////*/ diff --git a/test/fuzz/SavingsTest.t.sol b/test/fuzz/SavingsTest.t.sol index 3cde2598..169669ab 100644 --- a/test/fuzz/SavingsTest.t.sol +++ b/test/fuzz/SavingsTest.t.sol @@ -37,7 +37,7 @@ contract SavingsTest is Fixture, FunctionUtils { _savingImplementation = new Savings(); bytes memory data; - _saving = Savings(deployUpgradeable(address(_savingImplementation), data)); + _saving = Savings(_deployUpgradeable(address(proxyAdmin), address(_savingImplementation), data)); _name = "savingAgEUR"; _symbol = "SAGEUR"; @@ -79,8 +79,12 @@ contract SavingsTest is Fixture, FunctionUtils { assert(accessControlManager.isGovernorOrGuardian(guardian)); assert(accessControlManager.isGovernorOrGuardian(governor)); bytes memory data; - Savings savingsContract = Savings(deployUpgradeable(address(_savingImplementation), data)); - Savings savingsContract2 = Savings(deployUpgradeable(address(_savingImplementation), data)); + Savings savingsContract = Savings( + _deployUpgradeable(address(proxyAdmin), address(_savingImplementation), data) + ); + Savings savingsContract2 = Savings( + _deployUpgradeable(address(proxyAdmin), address(_savingImplementation), data) + ); vm.startPrank(governor); agToken.addMinter(address(savingsContract)); diff --git a/test/fuzz/SavingsVestTest.t.sol b/test/fuzz/SavingsVestTest.t.sol index 210dcaab..cd615506 100644 --- a/test/fuzz/SavingsVestTest.t.sol +++ b/test/fuzz/SavingsVestTest.t.sol @@ -73,7 +73,7 @@ contract SavingsVestTest is Fixture, FunctionUtils { _savingImplementation = new SavingsVest(); bytes memory data; - _saving = SavingsVest(deployUpgradeable(address(_savingImplementation), data)); + _saving = SavingsVest(_deployUpgradeable(address(proxyAdmin), address(_savingImplementation), data)); _name = "savingAgEUR"; _symbol = "SAGEUR"; @@ -123,8 +123,12 @@ contract SavingsVestTest is Fixture, FunctionUtils { assert(accessControlManager.isGovernorOrGuardian(guardian)); assert(accessControlManager.isGovernorOrGuardian(governor)); bytes memory data; - SavingsVest savingsContract = SavingsVest(deployUpgradeable(address(_savingImplementation), data)); - SavingsVest savingsContract2 = SavingsVest(deployUpgradeable(address(_savingImplementation), data)); + SavingsVest savingsContract = SavingsVest( + _deployUpgradeable(address(proxyAdmin), address(_savingImplementation), data) + ); + SavingsVest savingsContract2 = SavingsVest( + _deployUpgradeable(address(proxyAdmin), address(_savingImplementation), data) + ); vm.startPrank(governor); agToken.addMinter(address(savingsContract)); diff --git a/test/units/DiamondCut.t.sol b/test/units/DiamondCut.t.sol index 5c05292d..7905d6b4 100644 --- a/test/units/DiamondCut.t.sol +++ b/test/units/DiamondCut.t.sol @@ -28,7 +28,7 @@ contract Test_DiamondCut is Fixture { address writeFacet = address(new MockWriteFacet()); address writeExpandedFacet = address(new MockWriteExpanded()); address initializer = address(new MockInitializer()); - bytes4[] selectors = generateSelectors("IMockFacet"); + bytes4[] selectors = _generateSelectors("IMockFacet"); function test_RevertWhen_NotGovernor() public { FacetCut[] memory facetCut = new FacetCut[](1); diff --git a/test/units/DiamondLoupe.t.sol b/test/units/DiamondLoupe.t.sol index 46c0fe78..3cfaf238 100644 --- a/test/units/DiamondLoupe.t.sol +++ b/test/units/DiamondLoupe.t.sol @@ -21,7 +21,7 @@ contract Test_DiamondLoupe is Fixture { for (uint256 i; i < facetNames.length; ++i) { assertEq(facets[i].facetAddress, address(facetAddressList[i])); // Check address - bytes4[] memory selectors = generateSelectors(facetNames[i]); + bytes4[] memory selectors = _generateSelectors(facetNames[i]); assertEq(facets[i].functionSelectors.length, selectors.length); // Check selectors length for (uint256 j; j < selectors.length; ++j) { @@ -32,7 +32,7 @@ contract Test_DiamondLoupe is Fixture { function test_FacetFunctionSelectors() public { // Create a facet added in 2 phases to test the robustness - bytes4[] memory selectors = generateSelectors("IMockFacet"); + bytes4[] memory selectors = _generateSelectors("IMockFacet"); bytes4[] memory auxSelectors = new bytes4[](1); auxSelectors[0] = selectors[0]; @@ -78,7 +78,7 @@ contract Test_DiamondLoupe is Fixture { function test_FacetAddress() public { for (uint256 i; i < facetNames.length; ++i) { - bytes4[] memory selectors = generateSelectors(facetNames[i]); + bytes4[] memory selectors = _generateSelectors(facetNames[i]); for (uint256 j; j < selectors.length; ++j) { assertEq(transmuter.facetAddress(selectors[j]), facetAddressList[i]); // Check all selectors are present diff --git a/test/units/Layout.t.sol b/test/units/Layout.t.sol index 50dadde5..1a002cde 100644 --- a/test/units/Layout.t.sol +++ b/test/units/Layout.t.sol @@ -79,7 +79,7 @@ contract Test_Layout is Fixture { assertEq(layout.isTrusted(bob), 0); assertEq(layout.isSellerTrusted(bob), 0); - bytes4[] memory selectors = generateSelectors("ITransmuter"); + bytes4[] memory selectors = _generateSelectors("ITransmuter"); for (uint i = 0; i < selectors.length; ++i) { (address facetAddress, uint16 selectorPosition) = layout.selectorInfo(selectors[i]); assertNotEq(facetAddress, address(0)); diff --git a/test/units/Transmuter.t.sol b/test/units/Transmuter.t.sol index bc981245..52193f88 100644 --- a/test/units/Transmuter.t.sol +++ b/test/units/Transmuter.t.sol @@ -24,14 +24,14 @@ contract TestTransmuter is Fixture { function test_FacetsHaveCorrectSelectors() public { for (uint i = 0; i < facetAddressList.length; ++i) { bytes4[] memory fromLoupeFacet = transmuter.facetFunctionSelectors(facetAddressList[i]); - bytes4[] memory fromGenSelectors = generateSelectors(facetNames[i]); + bytes4[] memory fromGenSelectors = _generateSelectors(facetNames[i]); assertTrue(sameMembers(fromLoupeFacet, fromGenSelectors)); } } function test_SelectorsAssociatedWithCorrectFacet() public { for (uint i = 0; i < facetAddressList.length; ++i) { - bytes4[] memory fromGenSelectors = generateSelectors(facetNames[i]); + bytes4[] memory fromGenSelectors = _generateSelectors(facetNames[i]); for (uint j = 0; j < fromGenSelectors.length; j++) { assertEq(facetAddressList[i], transmuter.facetAddress(fromGenSelectors[j])); } @@ -39,7 +39,7 @@ contract TestTransmuter is Fixture { } function test_InterfaceCorrectlyImplemented() public { - bytes4[] memory selectors = generateSelectors("ITransmuter"); + bytes4[] memory selectors = _generateSelectors("ITransmuter"); for (uint i = 0; i < selectors.length; ++i) { assertEq(transmuter.isValidSelector(selectors[i]), true); } @@ -47,7 +47,7 @@ contract TestTransmuter is Fixture { // Checks that all implemented selectors are in the interface function test_OnlyInterfaceIsImplemented() public { - bytes4[] memory interfaceSelectors = generateSelectors("ITransmuter"); + bytes4[] memory interfaceSelectors = _generateSelectors("ITransmuter"); Facet[] memory facets = transmuter.facets(); diff --git a/test/utils/Helper.sol b/test/utils/Helper.sol index 35b0f798..7553a1aa 100644 --- a/test/utils/Helper.sol +++ b/test/utils/Helper.sol @@ -5,6 +5,7 @@ pragma solidity ^0.8.19; import "interfaces/IDiamondLoupe.sol"; import { Test, stdError } from "forge-std/Test.sol"; +import { CommonUtils } from "utils/src/CommonUtils.sol"; import "stringutils/strings.sol"; @@ -15,44 +16,9 @@ import "stringutils/strings.sol"; * to solidity tests. /******************************************************************************/ -abstract contract Helper is Test { +abstract contract Helper is Test, CommonUtils { using strings for *; - // return array of function selectors for given facet name - function generateSelectors(string memory _facetName, uint16 retries) internal returns (bytes4[] memory selectors) { - //get string of contract methods - string[] memory cmd = new string[](4); - cmd[0] = "forge"; - cmd[1] = "inspect"; - cmd[2] = _facetName; - cmd[3] = "methods"; - bytes memory res = vm.ffi(cmd); - string memory st = string(res); - - // if empty, try again - if (bytes(st).length == 0) { - if (retries != 0) { - return generateSelectors(_facetName, retries - 1); - } - } - - // extract function signatures and take first 4 bytes of keccak - strings.slice memory s = st.toSlice(); - strings.slice memory delim = ":".toSlice(); - strings.slice memory delim2 = ",".toSlice(); - selectors = new bytes4[]((s.count(delim))); - for (uint i = 0; i < selectors.length; ++i) { - s.split('"'.toSlice()); - selectors[i] = bytes4(s.split(delim).until('"'.toSlice()).keccak()); - s.split(delim2); - } - return selectors; - } - - function generateSelectors(string memory _facetName) internal returns (bytes4[] memory selectors) { - return generateSelectors(_facetName, 3); - } - // helper to remove index from bytes4[] array function removeElement(uint index, bytes4[] memory array) public pure returns (bytes4[] memory) { bytes4[] memory newarray = new bytes4[](array.length - 1); @@ -108,23 +74,4 @@ abstract contract Helper is Test { return false; } - - function getAllSelectors(address diamondAddress) public view returns (bytes4[] memory) { - Facet[] memory facetList = IDiamondLoupe(diamondAddress).facets(); - - uint len = 0; - for (uint i = 0; i < facetList.length; ++i) { - len += facetList[i].functionSelectors.length; - } - - uint pos = 0; - bytes4[] memory selectors = new bytes4[](len); - for (uint i = 0; i < facetList.length; ++i) { - for (uint j = 0; j < facetList[i].functionSelectors.length; j++) { - selectors[pos] = facetList[i].functionSelectors[j]; - pos += 1; - } - } - return selectors; - } } diff --git a/test/utils/Transmuter.sol b/test/utils/Transmuter.sol index ea1f05d1..2f0aeb00 100644 --- a/test/utils/Transmuter.sol +++ b/test/utils/Transmuter.sol @@ -64,7 +64,7 @@ abstract contract Transmuter is Helper { cut[i] = FacetCut({ facetAddress: facetAddressList[i], action: FacetCutAction.Add, - functionSelectors: generateSelectors(facetNames[i]) + functionSelectors: _generateSelectors(facetNames[i]) }); } @@ -84,7 +84,7 @@ abstract contract Transmuter is Helper { cut[i] = FacetCut({ facetAddress: facetAddressList[i], action: FacetCutAction.Add, - functionSelectors: generateSelectors(facetNames[i]) + functionSelectors: _generateSelectors(facetNames[i]) }); } diff --git a/utils/forwardUtils.js b/utils/forwardUtils.js new file mode 100755 index 00000000..67f9ddc6 --- /dev/null +++ b/utils/forwardUtils.js @@ -0,0 +1,21 @@ +const { exec } = require("child_process"); + +if (process.argv.length < 3) { + console.error('Please provide a chain input as an argument.'); + process.exit(1); +} + +const command = process.argv[2]; +const extraArgs = process.argv.slice(3).join(' '); + +exec(`node lib/utils/utils/${command}.js ${extraArgs}`, (error, stdout, stderr) => { + if (error) { + console.log(error); + return; + } + if (stderr) { + console.log(stderr); + return; + } + console.log(stdout); +}); diff --git a/yarn.lock b/yarn.lock index 20ec8d88..d29e0b5c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,6 +2,23 @@ # yarn lockfile v1 +"@angleprotocol/sdk@^3.0.129": + version "3.0.129" + resolved "https://registry.yarnpkg.com/@angleprotocol/sdk/-/sdk-3.0.129.tgz#bf63925e90a3479d1a7fbc229ba174af273e9086" + integrity sha512-OeEx8Tfmk3oHRAbpw9HM27a39b/cdAoj1GccU8y2pYttj6KELq3inIPBxjpdT4lXCoP7meYGpJTVu0Odllq9sw== + dependencies: + "@typechain/ethers-v5" "^10.0.0" + "@types/lodash" "^4.14.180" + ethers "^5.6.4" + graphql "^15.7.1" + graphql-request "^3.6.1" + jsbi "^4.3.0" + keccak256 "^1.0.6" + lodash "^4.17.21" + merkletreejs "^0.3.10" + tiny-invariant "^1.1.0" + typechain "^8.0.0" + "@babel/code-frame@^7.0.0": version "7.16.7" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz" @@ -23,6 +40,396 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + 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" + +"@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/address@5.7.0", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + +"@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + +"@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + +"@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + +"@ethersproject/contracts@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== + dependencies: + "@ethersproject/abi" "^5.7.0" + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + +"@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + +"@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + +"@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.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" + +"@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + +"@ethersproject/units@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + +"@ethersproject/wallet@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/hdnode" "^5.7.0" + "@ethersproject/json-wallets" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/wordlists" "^5.7.0" + +"@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@noble/curves@1.3.0", "@noble/curves@~1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.3.0.tgz#01be46da4fd195822dab821e72f71bf4aeec635e" + integrity sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA== + dependencies: + "@noble/hashes" "1.3.3" + +"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + +"@scure/base@~1.1.4": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.5.tgz#1d85d17269fe97694b9c592552dd9e5e33552157" + integrity sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ== + +"@scure/bip32@1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.3.tgz#a9624991dc8767087c57999a5d79488f48eae6c8" + integrity sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ== + dependencies: + "@noble/curves" "~1.3.0" + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + +"@scure/bip39@1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.2.tgz#f3426813f4ced11a47489cbcf7294aa963966527" + integrity sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA== + dependencies: + "@noble/hashes" "~1.3.2" + "@scure/base" "~1.1.4" + "@solidity-parser/parser@^0.16.0": version "0.16.0" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.0.tgz#1fb418c816ca1fc3a1e94b08bcfe623ec4e1add4" @@ -30,6 +437,29 @@ dependencies: antlr4ts "^0.5.0-alpha.4" +"@typechain/ethers-v5@^10.0.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@types/lodash@^4.14.180": + version "4.14.202" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.202.tgz#f09dbd2fb082d507178b2f2a5c7e74bd72ff98f8" + integrity sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ== + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + ajv@^6.12.6: version "6.12.6" resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" @@ -84,6 +514,16 @@ argparse@^2.0.1: resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + ast-parents@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/ast-parents/-/ast-parents-0.0.1.tgz#508fd0f05d0c48775d9eccda2e174423261e8dd3" @@ -94,11 +534,54 @@ astral-regex@^2.0.0: resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bignumber.js@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + brace-expansion@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" @@ -106,12 +589,30 @@ brace-expansion@^2.0.1: dependencies: balanced-match "^1.0.0" +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +buffer-reverse@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== + +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -chalk@^2.0.0: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -120,7 +621,7 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.1.2: +chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -152,11 +653,43 @@ color-name@~1.1.4: resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + cosmiconfig@^8.0.0: version "8.1.3" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-8.1.3.tgz#0e614a118fcc2d9e5afc2f87d53cd09931015689" @@ -167,6 +700,48 @@ cosmiconfig@^8.0.0: parse-json "^5.0.0" path-type "^4.0.0" +cross-fetch@^3.0.6: + version "3.1.8" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.8.tgz#0327eba65fd68a7d119f8fb2bf9334a1a7956f82" + integrity sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg== + dependencies: + node-fetch "^2.6.12" + +crypto-js@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== + +debug@^4.3.1: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +elliptic@6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + 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" + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" @@ -184,6 +759,72 @@ escape-string-regexp@^1.0.5: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz#1352270ed3b339fe25af5ceeadcf1b9c8e30768a" + integrity sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA== + dependencies: + "@noble/curves" "1.3.0" + "@noble/hashes" "1.3.3" + "@scure/bip32" "1.3.3" + "@scure/bip39" "1.2.2" + +ethers@^5.6.4: + version "5.7.2" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== + dependencies: + "@ethersproject/abi" "5.7.0" + "@ethersproject/abstract-provider" "5.7.0" + "@ethersproject/abstract-signer" "5.7.0" + "@ethersproject/address" "5.7.0" + "@ethersproject/base64" "5.7.0" + "@ethersproject/basex" "5.7.0" + "@ethersproject/bignumber" "5.7.0" + "@ethersproject/bytes" "5.7.0" + "@ethersproject/constants" "5.7.0" + "@ethersproject/contracts" "5.7.0" + "@ethersproject/hash" "5.7.0" + "@ethersproject/hdnode" "5.7.0" + "@ethersproject/json-wallets" "5.7.0" + "@ethersproject/keccak256" "5.7.0" + "@ethersproject/logger" "5.7.0" + "@ethersproject/networks" "5.7.1" + "@ethersproject/pbkdf2" "5.7.0" + "@ethersproject/properties" "5.7.0" + "@ethersproject/providers" "5.7.2" + "@ethersproject/random" "5.7.0" + "@ethersproject/rlp" "5.7.0" + "@ethersproject/sha2" "5.7.0" + "@ethersproject/signing-key" "5.7.0" + "@ethersproject/solidity" "5.7.0" + "@ethersproject/strings" "5.7.0" + "@ethersproject/transactions" "5.7.0" + "@ethersproject/units" "5.7.0" + "@ethersproject/wallet" "5.7.0" + "@ethersproject/web" "5.7.1" + "@ethersproject/wordlists" "5.7.0" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -199,11 +840,48 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^8.0.3: version "8.1.0" resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" @@ -215,6 +893,25 @@ glob@^8.0.3: minimatch "^5.0.1" once "^1.3.0" +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphql-request@^3.6.1: + version "3.7.0" + resolved "https://registry.yarnpkg.com/graphql-request/-/graphql-request-3.7.0.tgz#c7406e537084f8b9788541e3e6704340ca13055b" + integrity sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ== + dependencies: + cross-fetch "^3.0.6" + extract-files "^9.0.0" + form-data "^3.0.0" + +graphql@^15.7.1: + version "15.8.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.8.0.tgz#33410e96b012fa3bdb1091cc99a94769db212b38" + integrity sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw== + has-flag@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" @@ -225,6 +922,28 @@ has-flag@^4.0.0: resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" @@ -246,7 +965,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -261,6 +980,16 @@ is-fullwidth-code-point@^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== +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" @@ -273,6 +1002,11 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" +jsbi@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/jsbi/-/jsbi-4.3.0.tgz#b54ee074fb6fcbc00619559305c8f7e912b04741" + integrity sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g== + json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -288,17 +1022,47 @@ json-schema-traverse@^1.0.0: resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +keccak256@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.6.tgz#dd32fb771558fed51ce4e45a035ae7515573da58" + integrity sha512-8GLiM01PkdJVGUhR1e6M/AvWnSqYS0HaERI+K/QtStGDGlSTx2B1zTqZk4Zlqu5TxHJNTxWAdP9Y+WI50OApUw== + dependencies: + bn.js "^5.2.0" + buffer "^6.0.3" + keccak "^3.0.2" + +keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + lines-and-columns@^1.1.6: version "1.2.4" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -lodash@^4.17.21: +lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -310,6 +1074,51 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +merkletreejs@^0.3.10: + version "0.3.11" + resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.3.11.tgz#e0de05c3ca1fd368de05a12cb8efb954ef6fc04f" + integrity sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ== + dependencies: + bignumber.js "^9.0.1" + buffer-reverse "^1.0.1" + crypto-js "^4.2.0" + treeify "^1.1.0" + web3-utils "^1.3.4" + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + minimatch@^5.0.1: version "5.1.6" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" @@ -317,6 +1126,41 @@ minimatch@^5.0.1: dependencies: brace-expansion "^2.0.1" +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@^2.6.12: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build@^4.2.0: + version "4.8.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.0.tgz#3fee9c1731df4581a3f9ead74664369ff00d26dd" + integrity sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + once@^1.3.0: version "1.4.0" resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" @@ -341,6 +1185,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + path-type@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" @@ -367,7 +1216,7 @@ prettier-plugin-solidity@^1.1.3: semver "^7.3.8" solidity-comments-extractor "^0.0.7" -prettier@^2.0.0, prettier@^2.8.3: +prettier@^2.0.0, prettier@^2.3.1, prettier@^2.8.3: version "2.8.8" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== @@ -377,6 +1226,27 @@ punycode@^2.1.0: resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" @@ -387,6 +1257,16 @@ resolve-from@^4.0.0: resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +scrypt-js@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + semver@^7.3.8, semver@^7.5.2: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" @@ -440,6 +1320,11 @@ solidity-comments-extractor@^0.0.7: resolved "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -449,6 +1334,13 @@ string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" @@ -456,6 +1348,13 @@ strip-ansi@^6.0.1: dependencies: ansi-regex "^5.0.1" +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" @@ -470,6 +1369,16 @@ supports-color@^7.1.0: dependencies: has-flag "^4.0.0" +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + table@^6.8.1: version "6.8.1" resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" @@ -486,6 +1395,67 @@ text-table@^0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +tiny-invariant@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642" + integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +treeify@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +typechain@^8.0.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" @@ -493,11 +1463,61 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +web3-utils@^1.3.4: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.3.tgz#f1db99c82549c7d9f8348f04ffe4e0188b449714" + integrity sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + wrappy@1: version "1.0.2" resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"