diff --git a/lib/solmate b/lib/solmate new file mode 160000 index 0000000..d155ee8 --- /dev/null +++ b/lib/solmate @@ -0,0 +1 @@ +Subproject commit d155ee8d58f96426f57c015b34dee8a410c1eacc diff --git a/package.json b/package.json index fc11c54..8b2de4d 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ }, "devDependencies": { "@typechain/ethers-v5": "^10.1.0", + "@types/yargs": "^17.0.11", "ethers": "^5.7.0", "husky": "^8.0.1", "lint-staged": "^13.0.3", @@ -27,7 +28,9 @@ "prettier-plugin-solidity": "^1.0.0-dev.23", "solhint": "^3.3.7", "solhint-plugin-prettier": "^0.0.5", + "ts-node": "^10.9.1", "typechain": "^8.1.0", + "yargs": "^17.5.1", "typescript": "^4.8.2" }, "lint-staged": { diff --git a/script/DeployContracts.s.sol b/script/DeployContracts.s.sol index 5a2a2e0..c4ea5fa 100644 --- a/script/DeployContracts.s.sol +++ b/script/DeployContracts.s.sol @@ -1,85 +1,95 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -// import "forge-std/Script.sol"; -// import "../src/token/builder/BuilderToken.sol"; -// import {UpgradeManager} from "../src/upgrade/UpgradeManager.sol"; -// import {BuilderDAOToken} from "../src/builderDAO/BuilderDAOToken.sol"; - -// import {BuilderDAOToken} from "../src/builderDAO/BuilderDAOToken.sol"; -// import {BuilderDAOAuction} from "../src/builderDAO/BuilderDAOAuction.sol"; - -// import {IToken, Token} from "../src/token/Token.sol"; -// import {IAuction, Auction} from "../src/auction/Auction.sol"; - -// import {IMetadataRenderer, MetadataRenderer} from "../src/token/metadata/MetadataRenderer.sol"; -// import {IUpgradeManager, UpgradeManager} from "../src/upgrade/UpgradeManager.sol"; -// import {IDeployer, Deployer} from "../src/Deployer.sol"; -// import {IGovernor, Governor} from "../src/governance/governor/Governor.sol"; -// import {ITreasury, Treasury} from "../src/governance/treasury/Treasury.sol"; - -// import {MockTreasury} from "./MockTreasury.sol"; - -// contract DeployContracts is Script { -// UpgradeManager upgradeManager; -// address REGISTAR_ADDRESS = address(0x0901); -// address weth; -// address foundersDAO; -// Deployer deployer; - -// function setUp() public { -// weth = vm.envAddress("WETH_ADDRESS"); -// foundersDAO = vm.envAddress("FOUNDERS_DAO"); -// } - -// function run() public { -// vm.startBroadcast(); -// upgradeManager = new UpgradeManager(REGISTAR_ADDRESS); -// setupContracts(); -// vm.stopBroadcast(); -// } - -// function setupContracts() public { -// address builderDAOTokenImpl = address(new BuilderDAOToken(address(upgradeManager))); -// address builderDAOAuctionImpl = address(new BuilderDAOAuction(address(upgradeManager), weth)); - -// address mockTreasury = address(new MockTreasury(address(this))); - -// address metadataRendererImpl = address(new MetadataRenderer(address(upgradeManager))); -// address treasuryImpl = address(mockTreasury); -// address governorImpl = address(new Governor(address(upgradeManager))); -// deployer = new Deployer(builderDAOTokenImpl, metadataRendererImpl, builderDAOAuctionImpl, treasuryImpl, governorImpl); - -// bytes memory tokeninitStrings = abi.encode( -// "Builder DAO", -// "BUILD", -// "The Builder DAO Governance Token", -// "ipfs://Qmew7TdyGnj6YRUjQR68sUJN3239MYXRD8uxowxF6rGK8j", -// "http://localhost:5000/render" -// ); - -// address nounsDAO = foundersDAO; - -// (address _token, address _metadata, address _auction, address _treasury, address _governor) = deployer.deploy( -// IDeployer.TokenParams({initStrings: tokeninitStrings, foundersDAO: nounsDAO, foundersMaxAllocation: 100, foundersAllocationFrequency: 5}), -// IDeployer.AuctionParams({reservePrice: 0.01 ether, duration: 10 minutes}), -// IDeployer.GovParams({ -// timelockDelay: 2 days, -// votingDelay: 1, // 1 block -// votingPeriod: 1 days, -// proposalThresholdBPS: 500, -// quorumVotesBPS: 1000 -// }) -// ); - -// address correctTreasuryImpl = address(new Treasury(address(upgradeManager))); - -// address tokenImpl = address(new Token(address(upgradeManager), _treasury)); -// address auctionImpl = address(new Auction(address(upgradeManager), weth, nounsDAO, 100, address(_treasury), 100)); - -// address deployerV2Impl = address(new Deployer(tokenImpl, _metadata, auctionImpl, correctTreasuryImpl, _governor)); - -// // builderDAOTreasury -// MockTreasury(_treasury).execute(address(deployer), abi.encodeWithSignature("upgradeTo(address)", deployerV2Impl)); -// } -// } +import "forge-std/Script.sol"; +import "forge-std/console2.sol"; + +import { IToken, Token } from "../src/token/Token.sol"; +import { IAuction, Auction } from "../src/auction/Auction.sol"; + +import { MetadataRenderer } from "../src/token/metadata/MetadataRenderer.sol"; +import { Manager } from "../src/manager/Manager.sol"; +import { IManager } from "../src/manager/IManager.sol"; +import { Governor } from "../src/governance/governor/Governor.sol"; +import { IGovernor } from "../src/governance/governor/IGovernor.sol"; +import { Treasury } from "../src/governance/treasury/Treasury.sol"; +import { ITreasury } from "../src/governance/treasury/ITreasury.sol"; + +import { ERC1967Proxy } from "../src/lib/proxy/ERC1967PRoxy.sol"; + +import { MockTreasury } from "./MockTreasury.sol"; +import { MockManager } from "./MockManager.sol"; + +contract DeployContracts is Script { + address weth; + address foundersDAO; + + function setUp() public { + weth = vm.envAddress("WETH_ADDRESS"); + foundersDAO = vm.envAddress("FOUNDERS_DAO"); + } + + function run() public { + vm.startBroadcast(); + setupContracts(); + vm.stopBroadcast(); + } + + function setupDAO() public {} + + function setupContracts() public { + Manager manager = Manager(address(new ERC1967Proxy(address(new MockManager()), abi.encodeWithSelector(MockManager.initialize.selector)))); + address newManagerImpl = address( + new Manager({ + _tokenImpl: address(new Token(address(manager))), + _metadataImpl: address(new MetadataRenderer(address(manager))), + _auctionImpl: address(new Auction(address(manager), weth)), + _treasuryImpl: address(new MockTreasury(address(this))), + _governorImpl: address(new Governor(address(manager))) + }) + ); + manager.upgradeTo(newManagerImpl); + + address mockTreasury = manager.treasuryImpl(); + + bytes memory tokeninitStrings = abi.encode( + "Builder DAO", + "BUILD", + "The Builder DAO Governance Token", + "ipfs://Qmew7TdyGnj6YRUjQR68sUJN3239MYXRD8uxowxF6rGK8j", + "http://localhost:5000/render" + ); + + IManager.FounderParams[] memory founderParams = new IManager.FounderParams[](1); + + founderParams[0] = IManager.FounderParams({ wallet: foundersDAO, percentage: 2, vestingEnd: block.timestamp + (2 * 60 * 60 * 30 * 12) }); + + (address _token, address _metadata, address _auction, address _timelock, address _governor) = manager.deploy( + founderParams, + IManager.TokenParams({ initStrings: tokeninitStrings }), + IManager.AuctionParams({ reservePrice: 0.01 ether, duration: 10 minutes }), + IManager.GovParams({ + timelockDelay: 2 days, + votingDelay: 1, // 1 block + votingPeriod: 1 days, + proposalThresholdBps: 500, + quorumThresholdBps: 1000 + }) + ); + + address correctTreasury = address(new Treasury(address(manager))); + + address tokenImpl = address(new Token(address(manager))); + address auctionImpl = address(new Auction(address(manager), weth)); + + address managerV2Impl = address(new Manager(tokenImpl, _metadata, auctionImpl, correctTreasury, _governor)); + + manager.upgradeTo(managerV2Impl); + manager.transferOwnership(correctTreasury); + + console2.log("Manager: "); + console2.log(address(manager)); + console2.log("Manager impl: "); + console2.log(managerV2Impl); + } +} diff --git a/script/DeployNewDAO.s.sol b/script/DeployNewDAO.s.sol index 66632ad..ce17dc4 100644 --- a/script/DeployNewDAO.s.sol +++ b/script/DeployNewDAO.s.sol @@ -1,52 +1,67 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -// import "forge-std/Script.sol"; -// import {IDeployer} from "../src/IDeployer.sol"; - -// contract SetupDaoScript is Script { -// IDeployer deployer; - -// function setUp() public { -// deployer = IDeployer(vm.envAddress("DEPLOYER")); -// } - -// function run() public { -// vm.startBroadcast(); - -// console2.log(msg.sender); - -// IDeployer.TokenParams memory tokenParams = IDeployer.TokenParams({ -// initStrings: abi.encode( -// "Mock Token", -// "MOCK", -// "This is a mock token", -// "ipfs://Qmew7TdyGnj6YRUjQR68sUJN3239MYXRD8uxowxF6rGK8j", -// "http://localhost:5000/render" -// ), -// foundersDAO: msg.sender, -// foundersMaxAllocation: 100, -// foundersAllocationFrequency: 5 -// }); - -// IDeployer.AuctionParams memory auctionParams = IDeployer.AuctionParams({reservePrice: 0.01 ether, duration: 10 minutes}); - -// IDeployer.GovParams memory govParams = IDeployer.GovParams({ -// timelockDelay: 0, -// votingDelay: 0, // 1 block -// votingPeriod: 10, -// proposalThresholdBPS: 10, -// quorumVotesBPS: 100 -// }); - -// (address _token, address _metadata, address _auction, address _treasury, address _governor) = deployer.deploy( -// tokenParams, -// auctionParams, -// govParams -// ); - -// // now that we have a DAO process a proposal - -// vm.stopBroadcast(); -// } -// } +import "forge-std/Script.sol"; +import {IManager} from "../src/manager/IManager.sol"; + +import {Auction} from "../src/auction/Auction.sol"; + +contract SetupDaoScript is Script { + IManager manager; + address founder; + + function setUp() public { + manager = IManager(vm.envAddress("MANAGER")); + founder = vm.envAddress("FOUNDERS_DAO"); + } + + function run() public { + console2.log(msg.sender); + + vm.startBroadcast(); + + IManager.TokenParams memory tokenParams = IManager.TokenParams({ + initStrings: abi.encode( + "Mock Token", + "MOCK", + "This is a mock token", + "ipfs://Qmew7TdyGnj6YRUjQR68sUJN3239MYXRD8uxowxF6rGK8j", + "http://localhost:5000/render" + ) + }); + + IManager.AuctionParams memory auctionParams = IManager.AuctionParams({reservePrice: 0.01 ether, duration: 10}); + + IManager.FounderParams[] memory founderParams = new IManager.FounderParams[](1); + founderParams[0] = IManager.FounderParams({ + wallet: founder, + percentage: 2, + vestingEnd: block.timestamp + (2 * 60 * 60 * 30 * 12) + }); + + IManager.GovParams memory govParams = IManager.GovParams({ + timelockDelay: 0, + votingDelay: 0, // 1 block + votingPeriod: 10, + proposalThresholdBps: 10, + quorumThresholdBps: 100 + }); + + (address _token, address _metadata, address _auction, address _treasury, address _governor) = manager.deploy( + founderParams, + tokenParams, + auctionParams, + govParams + ); + + // now that we have a DAO process a proposal + Auction auction = Auction(_auction); + + auction.setTimeBuffer(0); + + auction.unpause(); + + + vm.stopBroadcast(); + } +} diff --git a/script/MintAuction.s.sol b/script/MintAuction.s.sol new file mode 100644 index 0000000..7d70cf8 --- /dev/null +++ b/script/MintAuction.s.sol @@ -0,0 +1,89 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; +import {IManager} from "../src/manager/IManager.sol"; + +import {Auction} from "../src/auction/Auction.sol"; +import {IManager} from "../src/manager/IManager.sol"; +import {IToken} from "../src/token/Token.sol"; + +contract SetupDaoScript is Script { + IManager manager; + IToken token; + address founder; + + function setUp() public { + manager = IManager(vm.envAddress("MANAGER")); + token = IToken(vm.envAddress("TOKEN")); + founder = vm.envAddress("FOUNDERS_DAO"); + } + + function run() public { + console2.log(msg.sender); + + vm.startBroadcast(); + + IManager.TokenParams memory tokenParams = IManager.TokenParams({ + initStrings: abi.encode( + "Mock Token", + "MOCK", + "This is a mock token", + "ipfs://Qmew7TdyGnj6YRUjQR68sUJN3239MYXRD8uxowxF6rGK8j", + "http://localhost:5000/render" + ) + }); + + IManager.AuctionParams memory auctionParams = IManager.AuctionParams({reservePrice: 0.01 ether, duration: 40}); + + IManager.FounderParams[] memory founderParams = new IManager.FounderParams[](1); + founderParams[0] = IManager.FounderParams({ + wallet: founder, + percentage: 2, + vestingEnd: block.timestamp + (2 * 60 * 60 * 30 * 12) + }); + + IManager.GovParams memory govParams = IManager.GovParams({ + timelockDelay: 0, + votingDelay: 0, // 1 block + votingPeriod: 10, + proposalThresholdBps: 10, + quorumThresholdBps: 100 + }); + + (address _token, address _metadata, address _auction, address _treasury, address _governor) = manager.deploy( + founderParams, + tokenParams, + auctionParams, + govParams + ); + + // now that we have a DAO process a proposal + Auction auction = Auction(_auction); + + auction.setTimeBuffer(0); + + auction.unpause(); + + // create auction + auction.createBid{value: 0.01 ether}(1); + + string[] memory ffiArgs = new string[](2); + ffiArgs[0] = 'sleep'; + ffiArgs[1] = '20'; + vm.ffi(ffiArgs); + vm.warp(block.timestamp+20); + + auction.settleCurrentAndCreateNewAuction(); + + // create another auction + auction.createBid{value: 0.01 ether}(3); + + vm.ffi(ffiArgs); + vm.warp(block.timestamp+50); + + auction.settleCurrentAndCreateNewAuction(); + + vm.stopBroadcast(); + } +} diff --git a/script/MockManager.sol b/script/MockManager.sol new file mode 100644 index 0000000..9a1304b --- /dev/null +++ b/script/MockManager.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import { Ownable } from "../src/lib/utils/Ownable.sol"; +import { UUPS } from "../src/lib/proxy/UUPS.sol"; + +contract MockManager is Ownable, UUPS { + function initialize() initializer public { + __Ownable_init(msg.sender); + } + + function _authorizeUpgrade(address _newImpl) internal view override onlyOwner {} +} diff --git a/script/MockTreasury.sol b/script/MockTreasury.sol index b16998f..5904179 100644 --- a/script/MockTreasury.sol +++ b/script/MockTreasury.sol @@ -1,19 +1,23 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.13; -// contract MockTreasury { -// address owner; +contract MockTreasury { + address owner; -// constructor(address _owner) { -// owner = _owner; -// } + modifier onlyOwner() { + require(owner == msg.sender, "Not owner"); + _; + } -// function initialize(address govenor, uint256 timelockDelay) external { -// // do nothing -// } + constructor(address _owner) { + owner = _owner; + } -// function execute(address target, bytes calldata data) public { -// // require(msg.sender == owner, "only owner"); -// target.call(data); -// } -// } + function initialize(address govenor, uint256 timelockDelay) external { + // do nothing + } + + function execute(address target, bytes calldata data) public onlyOwner { + target.call(data); + } +} diff --git a/script/js/createAuctionBids.ts b/script/js/createAuctionBids.ts new file mode 100644 index 0000000..e69de29 diff --git a/script/js/createProposal.ts b/script/js/createProposal.ts new file mode 100644 index 0000000..709caee --- /dev/null +++ b/script/js/createProposal.ts @@ -0,0 +1,24 @@ +import yargs from 'yargs/yargs'; +import { hideBin } from 'yargs/helpers'; + +import {UpgradeManager__factory} from '../../build/typechain/factories'; + +function run(data) { + Manager__factory.connect() +} + +yargs(hideBin(process.argv)) + .command('bid [tokenid]', 'place bid', (yargs) => { + return yargs + .positional('tokenid', { + describe: 'token id to bid on' + }) + }, (argv) => { + run(argv) + }) + .option('verbose', { + alias: 'v', + type: 'boolean', + description: 'Run with verbose logging' + }) + .parse() \ No newline at end of file diff --git a/script/js/js-scripts/createProposal.ts b/script/js/js-scripts/createProposal.ts new file mode 100644 index 0000000..b0fcee8 --- /dev/null +++ b/script/js/js-scripts/createProposal.ts @@ -0,0 +1,120 @@ +import yargs from "yargs/yargs"; +import { hideBin } from "yargs/helpers"; + +import { + Auction__factory, + Governor__factory, + Manager__factory, + Timelock__factory, + Token__factory, +} from "../../build/typechain/factories"; +import { ethers, Signer, Wallet } from "ethers"; +import { Provider } from "@ethersproject/abstract-provider"; +import { StaticJsonRpcProvider } from "@ethersproject/providers"; + +async function waitTimestamp(timestampIncrement: number, provider: Provider): Promise { + const blockNumber = await provider.getBlockNumber(); + console.log(`waiting started at ${blockNumber}`); + + let startTime = (await provider.getBlock(blockNumber)).timestamp; + return new Promise((resolve) => { + const providerListener = async (blockNumber: number) => { + const block = await provider.getBlock(blockNumber); + if (block.timestamp > startTime + timestampIncrement) { + console.log(`waiting ended at ${blockNumber}`); + resolve(); + provider.off('block', providerListener); + } + } + provider.on('block', providerListener); + }) +} + +async function run(data: any, signer: Signer) { + console.log({status: 'running'}) + + const manager = Manager__factory.connect(data.manager, signer); + const token = Token__factory.connect(data.token, signer); + const allAddresses = await manager.getAddresses(token.address); + console.log({allAddresses}); + const auction = Auction__factory.connect(allAddresses[1], signer); + const timelock = Timelock__factory.connect(allAddresses[2], signer); + const governor = Governor__factory.connect(allAddresses[3], signer); + + const proposalArgs: [string[], string[], string[], string] = [ + [auction.address], + ['0'], + [auction.interface.encodeFunctionData("setMinimumBidIncrement", [9])], + "set bid incemet to 9", + ]; + + // step 1: create proposal + console.log('creating proposal'); + const tx = await governor.propose(...proposalArgs); + const receipt = await tx.wait(); + let proposalId: any; + for (let evt of receipt.events || []) { + proposalId = evt.args![1]; + } + + await waitTimestamp(10, manager.provider); + + const simulateCast = await governor.callStatic.castVote(proposalId, '1'); + console.log(simulateCast); + + await governor.castVote(proposalId, '1'); + + + await waitTimestamp(14, manager.provider); + + // execute + await governor.execute(...proposalArgs); +} + + + +yargs(hideBin(process.argv)) + .env("BIDDER") + .command( + "bid [tokenid]", + "place bid", + (yargs) => { + return yargs.positional("tokenid", { + describe: "token id to bid on", + }); + }, + async (argv) => { + console.log(argv); + const signer = new Wallet(argv["private-key"] as string, new StaticJsonRpcProvider(argv.rpc as string)); + console.log('has signer'); + await run(argv, signer); + } + ) + .option("private-key", { + alias: "pk", + description: "private key", + required: true, + }) + .option("rpc-url", { + alias: "rpc", + description: "rpc-url", + required: true, + }) + .option("manager", { + alias: "m", + description: "manager address", + type: 'string', + required: true, + }) + .option("token", { + alias: "t", + description: "token address", + type: 'string', + required: true, + }) + .option("verbose", { + alias: "v", + type: "boolean", + description: "Run with verbose logging", + }) + .parse(); diff --git a/src/manager/Manager.sol b/src/manager/Manager.sol index 5339d55..0758148 100644 --- a/src/manager/Manager.sol +++ b/src/manager/Manager.sol @@ -58,7 +58,7 @@ contract Manager is IManager, UUPS, Ownable, ManagerStorageV1 { address _auctionImpl, address _treasuryImpl, address _governorImpl - ) payable initializer { + ) payable { tokenImpl = _tokenImpl; metadataImpl = _metadataImpl; auctionImpl = _auctionImpl; diff --git a/yarn.lock b/yarn.lock index cb0563d..a9154af 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,6 +23,13 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + "@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" @@ -365,6 +372,24 @@ "@ethersproject/properties" "^5.7.0" "@ethersproject/strings" "^5.7.0" +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@openzeppelin/contracts-upgradeable@^4.7.3": version "4.7.3" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.3.tgz#f1d606e2827d409053f3e908ba4eb8adb1dd6995" @@ -382,6 +407,26 @@ dependencies: antlr4ts "^0.5.0-alpha.4" +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + "@typechain/ethers-v5@^10.1.0": version "10.1.0" resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.1.0.tgz#068d7dc7014502354696dab59590a7841091e951" @@ -400,16 +445,38 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.0.tgz#ea03e9f0376a4446f44797ca19d9c46c36e352dc" integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A== +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^17.0.11": + version "17.0.11" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.11.tgz#5e10ca33e219807c0eee0f08b5efcba9b6a42c06" + integrity sha512-aB4y9UDUXTSMxmM4MH+YnuR0g5Cph3FLQBoWoMB21DSvFVAxRVEHEMx3TLh+zUZYMCQtKiqazz0Q4Rre31f/OA== + dependencies: + "@types/yargs-parser" "*" + acorn-jsx@^5.0.0: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + acorn@^6.0.7: version "6.4.2" resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== +acorn@^8.4.1: + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -494,6 +561,11 @@ antlr4ts@^0.5.0-alpha.4: resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -652,6 +724,15 @@ cli-width@^2.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -726,6 +807,11 @@ cosmiconfig@^5.0.7: js-yaml "^3.13.1" parse-json "^4.0.0" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -763,6 +849,11 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -815,6 +906,11 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" @@ -1071,6 +1167,11 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -1370,6 +1471,11 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -1625,6 +1731,11 @@ regexpp@^2.0.1: resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -1977,6 +2088,25 @@ ts-essentials@^7.0.1: resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== +ts-node@^10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" @@ -2042,6 +2172,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -2104,6 +2239,11 @@ ws@7.4.6: resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -2113,3 +2253,26 @@ yaml@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.1.1.tgz#1e06fb4ca46e60d9da07e4f786ea370ed3c3cfec" integrity sha512-o96x3OPo8GjWeSLF+wOAbrPfhFOGY0W00GNaxCDv+9hkcDJEnev1yh8S7pgHF0ik6zc8sQLuL8hjHjJULZp8bw== + +yargs-parser@^21.0.0: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@^17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.3" + y18n "^5.0.5" + yargs-parser "^21.0.0" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==