diff --git a/packages/smart-contracts/README.md b/packages/smart-contracts/README.md index 3c1bdde221..18be49140f 100644 --- a/packages/smart-contracts/README.md +++ b/packages/smart-contracts/README.md @@ -269,6 +269,13 @@ yarn hardhat update-contracts This command will output details about each update on each chain +By default, updates are performed by a Safe wallet. They need to be confirmed by co-owners in the RN Admin Safe. +If the contracts are to be administrated by an EOA, use the flag `eoa`: + +```bash +yarn hardhat update-contracts --eoa +``` + ## Tests After a local deployment: diff --git a/packages/smart-contracts/hardhat.config.ts b/packages/smart-contracts/hardhat.config.ts index cac321c688..e63feb1d83 100644 --- a/packages/smart-contracts/hardhat.config.ts +++ b/packages/smart-contracts/hardhat.config.ts @@ -10,7 +10,6 @@ import '@matterlabs/hardhat-zksync-verify'; import { subtask, task } from 'hardhat/config'; import { config } from 'dotenv'; import deployAllContracts from './scripts/test-deploy-all'; -import { deployAllPaymentContracts } from './scripts/deploy-payments'; import { checkCreate2Deployer } from './scripts-create2/check-deployer'; import { deployDeployer, verifyDeployer } from './scripts-create2/deploy-request-deployer'; import { HardhatRuntimeEnvironmentExtended } from './scripts-create2/types'; @@ -306,20 +305,6 @@ task('deploy-local-env', 'Deploy a local environment').setAction(async (args, hr } }); -task( - 'deploy-live-payments', - 'Deploy payment contracts on a live network. Make sure to update all artifacts before running.', -) - .addFlag('dryRun', 'to prevent any deployment') - .addFlag('force', 'to force re-deployment') - .setAction(async (args, hre) => { - args.force = args.force ?? false; - args.dryRun = args.dryRun ?? false; - args.simulate = args.dryRun; - await hre.run(DEPLOYER_KEY_GUARD); - await deployAllPaymentContracts(args, hre as HardhatRuntimeEnvironmentExtended); - }); - task( 'deploy-live-storage', 'Deploy payment contracts on a live network. Make sure to update all artifacts before running.', @@ -365,13 +350,13 @@ task( await deployWithCreate2FromList(hre as HardhatRuntimeEnvironmentExtended); }); -task( - 'update-contracts', - 'Update the latest deployed contracts from the Create2DeploymentList', -).setAction(async (_args, hre) => { - await hre.run(DEPLOYER_KEY_GUARD); - await updateContractsFromList(hre as HardhatRuntimeEnvironmentExtended); -}); +task('update-contracts', 'Update the latest deployed contracts from the Create2DeploymentList') + .addFlag('safe', 'Is the update to be performed in Safe context') + .setAction(async (args, hre) => { + const signWithEoa = args.eoa ?? false; + await hre.run(DEPLOYER_KEY_GUARD); + await updateContractsFromList(hre as HardhatRuntimeEnvironmentExtended, signWithEoa); + }); task( 'verify-contract-from-deployer', diff --git a/packages/smart-contracts/package.json b/packages/smart-contracts/package.json index 9f7b66559a..98b2c9e5b8 100644 --- a/packages/smart-contracts/package.json +++ b/packages/smart-contracts/package.json @@ -68,6 +68,8 @@ "@requestnetwork/currency": "0.12.0", "@requestnetwork/types": "0.39.0", "@requestnetwork/utils": "0.39.0", + "@safe-global/api-kit": "1.3.1", + "@safe-global/protocol-kit": "1.3.0", "@superfluid-finance/ethereum-contracts": "1.1.1", "@typechain/ethers-v5": "7.0.1", "@typechain/hardhat": "2.1.2", diff --git a/packages/smart-contracts/scripts-create2/contract-setup/adminTasks.ts b/packages/smart-contracts/scripts-create2/contract-setup/adminTasks.ts index 82e026b0d3..16be222ba5 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/adminTasks.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/adminTasks.ts @@ -1,7 +1,7 @@ import { chainlinkConversionPath } from '../../src/lib'; import { uniswapV2RouterAddresses } from '../../scripts/utils'; import * as artifacts from '../../src/lib'; -import { BigNumber, Overrides, Wallet } from 'ethers'; +import { BigNumber, Overrides, Wallet, Contract } from 'ethers'; import { HardhatRuntimeEnvironmentExtended } from '../types'; import { parseUnits } from 'ethers/lib/utils'; import { @@ -12,6 +12,7 @@ import { } from '@requestnetwork/utils'; import { CurrencyTypes } from '@requestnetwork/types'; import { suggestFeesEip1559 } from '../fee-suggestion'; +import { executeContractMethod } from './execute-contract-method'; // Swap Fees: set to 5 for 0.5% const REQUEST_SWAP_FEES = 0; @@ -27,50 +28,93 @@ const BATCH_FEE_AMOUNT_USD_LIMIT = parseUnits('150', 8); * Erc20ConversionProxy | EthConversionProxy | ERC20SwapToConversion. * @param network The network used. * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO * @param version The version of the chainlink proxy to use, the last one by default. */ export const updateChainlinkConversionPath = async ( - contract: any, + contract: Contract, network: CurrencyTypes.EvmChainName, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, version?: string, ): Promise => { const currentChainlinkAddress = await contract.chainlinkConversionPath(); const chainlinkConversionPathAddress = chainlinkConversionPath.getAddress(network, version); if (currentChainlinkAddress !== chainlinkConversionPathAddress) { - const tx = await contract.updateConversionPathAddress( - chainlinkConversionPathAddress, + await executeContractMethod({ + network, + contract, + method: 'updateConversionPathAddress', + props: [chainlinkConversionPathAddress], txOverrides, - ); - await tx.wait(1); + signer, + signWithEoa, + }); console.log( `chainlink: the current address ${currentChainlinkAddress} has been replaced by: ${chainlinkConversionPathAddress}`, ); } }; +/** + * Updates the batchFee applied by the batch conversion proxy. + * @param contract BatchConversionPayments contract. + * @param network The network used + * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO + */ export const updateSwapRouter = async ( - contract: any, + contract: Contract, network: string, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, ): Promise => { const currentSwapRouter = await contract.swapRouter(); const expectedRouter = uniswapV2RouterAddresses[network]; if (expectedRouter && currentSwapRouter !== expectedRouter) { - const tx = await contract.setRouter(expectedRouter, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method: 'setRouter', + props: [expectedRouter], + txOverrides, + signer, + signWithEoa, + }); console.log(`Swap router address set to ${expectedRouter}`); } }; +/** + * Updates the batchFee applied by the batch conversion proxy. + * @param contract BatchConversionPayments contract. + * @param network The network used + * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO + */ export const updateRequestSwapFees = async ( - contract: any, + contract: Contract, + network: string, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, ): Promise => { const currentFees: BigNumber = await contract.requestSwapFees(); if (!currentFees.eq(REQUEST_SWAP_FEES)) { - const tx = await contract.updateRequestSwapFees(REQUEST_SWAP_FEES, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method: 'updateRequestSwapFees', + props: [REQUEST_SWAP_FEES], + txOverrides, + signer, + signWithEoa, + }); console.log( `currentFees: ${currentFees.toNumber() / 10}%, new fees: ${REQUEST_SWAP_FEES / 10}%`, ); @@ -80,16 +124,29 @@ export const updateRequestSwapFees = async ( /** * Updates the batchFee applied by the batch conversion proxy. * @param contract BatchConversionPayments contract. + * @param network The network used * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO */ export const updateBatchPaymentFees = async ( - contract: any, + contract: Contract, + network: string, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, ): Promise => { const currentFees: BigNumber = await contract.batchFee(); if (!BATCH_FEE.eq(currentFees)) { - const tx = await contract.setBatchFee(BATCH_FEE, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method: 'setBatchFee', + props: [BATCH_FEE], + txOverrides, + signer, + signWithEoa, + }); console.log(`Batch: currentFees: ${currentFees.toString()}, new fees: ${BATCH_FEE.toString()}`); } }; @@ -97,16 +154,29 @@ export const updateBatchPaymentFees = async ( /** * Updates the feeAMountUSDLimit of the batch conversion proxy. * @param contract BatchConversionPayments contract. + * @param network The network used * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO */ export const updateBatchPaymentFeeAmountUSDLimit = async ( - contract: any, + contract: Contract, + network: string, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, ): Promise => { const currentFeeAmountUSDLimit: BigNumber = await contract.batchFeeAmountUSDLimit(); if (!currentFeeAmountUSDLimit.eq(BATCH_FEE_AMOUNT_USD_LIMIT)) { - const tx = await contract.setBatchFeeAmountUSDLimit(BATCH_FEE_AMOUNT_USD_LIMIT, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method: 'setBatchFeeAmountUSDLimit', + props: [BATCH_FEE_AMOUNT_USD_LIMIT], + txOverrides, + signer, + signWithEoa, + }); console.log( `Batch: the current fee amount in USD limit: ${currentFeeAmountUSDLimit.toString()}, have been replaced by: ${BATCH_FEE_AMOUNT_USD_LIMIT.toString()}. ($1 = 1e8)`, ); @@ -119,13 +189,17 @@ export const updateBatchPaymentFeeAmountUSDLimit = async ( * @param network The network used. * @param txOverrides information related to gas fees. Increase their values if needed. * @param proxyType The type of the proxy fee. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO * @param version The version of the fee proxy to use, the last one by default. */ export const updatePaymentFeeProxyAddress = async ( - contract: any, + contract: Contract, network: CurrencyTypes.EvmChainName, txOverrides: Overrides, proxyType: 'native' | 'erc20', + signer: Wallet, + signWithEoa: boolean, version?: string, ): Promise => { let proxyAddress: string; @@ -139,8 +213,15 @@ export const updatePaymentFeeProxyAddress = async ( } if (currentAddress.toLocaleLowerCase() !== proxyAddress.toLocaleLowerCase()) { - const tx = await contract.updateConversionProxyAddress(proxyAddress, txOverrides); - await tx.wait(); + await executeContractMethod({ + network, + contract, + method: 'updateConversionProxyAddress', + props: [proxyAddress], + txOverrides, + signer, + signWithEoa, + }); console.log( `${proxyType} conversion proxy: the current address ${currentAddress} has been replaced by: ${proxyAddress}`, ); @@ -153,52 +234,61 @@ export const updatePaymentFeeProxyAddress = async ( * @param network The network used. * @param txOverrides information related to gas fees. Increase their values if needed. * @param proxyName The name of the fee proxy to update. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO */ export const updateBatchConversionProxy = async ( - contract: any, + contract: Contract, network: CurrencyTypes.EvmChainName, txOverrides: Overrides, - proxyName: - | 'native' - | 'nativeConversion' - | 'erc20' - | 'erc20Conversion' - | 'chainlinkConversionPath', + proxyName: string, + signer: Wallet, + signWithEoa: boolean, ): Promise => { let proxyAddress: string; - let batchSetProxy: any; + let method: string; let currentAddress: string; switch (proxyName) { case 'native': proxyAddress = artifacts.ethereumFeeProxyArtifact.getAddress(network); - batchSetProxy = await contract.setPaymentNativeProxy; + method = 'setPaymentNativeProxy'; currentAddress = await contract.paymentNativeProxy(); break; case 'nativeConversion': proxyAddress = artifacts.ethConversionArtifact.getAddress(network); - batchSetProxy = await contract.setPaymentNativeConversionProxy; + method = 'setPaymentNativeConversionProxy'; currentAddress = await contract.paymentNativeConversionProxy(); break; case 'erc20': proxyAddress = artifacts.erc20FeeProxyArtifact.getAddress(network); - batchSetProxy = await contract.setPaymentErc20Proxy; + method = 'setPaymentErc20Proxy'; currentAddress = await contract.paymentErc20Proxy(); break; case 'erc20Conversion': proxyAddress = artifacts.erc20ConversionProxy.getAddress(network); - batchSetProxy = await contract.setPaymentErc20ConversionProxy; + method = 'setPaymentErc20ConversionProxy'; currentAddress = await contract.paymentErc20ConversionProxy(); break; case 'chainlinkConversionPath': proxyAddress = artifacts.chainlinkConversionPath.getAddress(network); - batchSetProxy = await contract.setChainlinkConversionPath; + method = 'setChainlinkConversionPath'; currentAddress = await contract.chainlinkConversionPath(); break; + default: { + throw new Error(`${proxyName} not supported`); + } } if (currentAddress.toLocaleLowerCase() !== proxyAddress.toLocaleLowerCase()) { - const tx = await batchSetProxy(proxyAddress, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method, + props: [proxyAddress], + txOverrides, + signer, + signWithEoa, + }); console.log( `${proxyName}: the current address ${currentAddress} has been replaced by: ${proxyAddress}`, ); @@ -211,12 +301,17 @@ export const updateBatchConversionProxy = async ( * @param NativeAddress The address of native token, eg: ETH. * @param USDAddress The address of USD token. * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO */ export const updateNativeAndUSDAddress = async ( - contract: any, + contract: Contract, + network: string, NativeAddress: string, USDAddress: string, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, ): Promise => { const currentUSDAddress = (await contract.USDAddress()).toLocaleLowerCase(); const currentNativeAddress = (await contract.NativeAddress()).toLocaleLowerCase(); @@ -224,8 +319,15 @@ export const updateNativeAndUSDAddress = async ( currentNativeAddress !== NativeAddress.toLocaleLowerCase() || currentUSDAddress !== USDAddress.toLocaleLowerCase() ) { - const tx = await contract.setNativeAndUSDAddress(NativeAddress, USDAddress, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method: 'setNativeAndUSDAddress', + props: [NativeAddress, USDAddress], + txOverrides, + signer, + signWithEoa, + }); console.log( `Batch: the current NativeAddress: ${currentNativeAddress}, have been replaced by: ${NativeAddress}`, ); @@ -237,20 +339,34 @@ export const updateNativeAndUSDAddress = async ( /** * Update the native token hash used by a contract. + * @param contractType name of the contract to be updated * @param contract contract to be updated. + * @param network where the contract is deployed * @param nativeTokenHash The address of native token, eg: ETH. * @param txOverrides information related to gas fees. Increase their values if needed. + * @param signer Who is performing the updating + * @param signWithEoa Is the transaction to be signed by an EAO */ export const updateNativeTokenHash = async ( contractType: string, - contract: any, + contract: Contract, + network: string, nativeTokenHash: string, txOverrides: Overrides, + signer: Wallet, + signWithEoa: boolean, ): Promise => { const currentNativeTokenHash = (await contract.nativeTokenHash()).toLocaleLowerCase(); if (currentNativeTokenHash !== nativeTokenHash.toLocaleLowerCase()) { - const tx = await contract.updateNativeTokenHash(nativeTokenHash, txOverrides); - await tx.wait(1); + await executeContractMethod({ + network, + contract, + method: 'updateNativeTokenHash', + props: [nativeTokenHash], + txOverrides, + signer, + signWithEoa, + }); console.log( `${contractType}: the current NativeTokenHash: ${currentNativeTokenHash}, have been replaced by: ${nativeTokenHash}`, ); diff --git a/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts b/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts new file mode 100644 index 0000000000..73ee5be110 --- /dev/null +++ b/packages/smart-contracts/scripts-create2/contract-setup/execute-contract-method.ts @@ -0,0 +1,81 @@ +import SafeApiKit from '@safe-global/api-kit'; +import { Contract, Overrides, Wallet } from 'ethers'; +import { safeAdminArtifact } from '../../src/lib/'; +import Safe, { EthersAdapter, EthersAdapterConfig } from '@safe-global/protocol-kit'; +import { ethers } from 'ethers'; +import { CurrencyTypes } from '@requestnetwork/types'; + +const txServiceUrls: Record = { + mainnet: 'https://safe-transaction-mainnet.safe.global/', + goerli: 'https://safe-transaction-goerli.safe.global/', + sepolia: 'https://safe-transaction-sepolia.safe.global/', + matic: 'https://safe-transaction-polygon.safe.global/', + celo: 'https://safe-transaction-celo.safe.global/', + xsai: 'https://safe-transaction-gnosis-chain.safe.global/', + bsc: 'https://safe-transaction-bsc.safe.global/', + 'arbitrum-one': 'https://safe-transaction-arbitrum.safe.global/', + avalanche: 'https://safe-transaction-avalanche.safe.global/', + optimism: 'https://safe-transaction-optimism.safe.global/', + zksyncera: 'https://safe-transaction-zksync.safe.global/', +}; + +export const executeContractMethod = async ({ + network, + contract, + method, + props, + txOverrides, + signer, + signWithEoa, +}: { + network: string; + contract: Contract; + method: string; + props: any[]; + txOverrides: Overrides; + signer: Wallet; + signWithEoa?: boolean; +}): Promise => { + if (!signWithEoa) { + const safeAddress = safeAdminArtifact.getAddress(network as CurrencyTypes.VMChainName); + const txServiceUrl = txServiceUrls[network]; + if (!safeAddress || !txServiceUrl) { + throw new Error(`Can't administrate using Safe on ${network}`); + } + + const ethAdapter = new EthersAdapter({ + ethers, + signerOrProvider: signer, + } as unknown as EthersAdapterConfig); + const safeService = new SafeApiKit({ txServiceUrl, ethAdapter }); + const safeSdk = await Safe.create({ ethAdapter, safeAddress }); + + const safeTransactionData = [ + { + to: contract.address, + data: contract.interface.encodeFunctionData(method, props), + value: '0', + }, + ]; + const nonce = await safeService.getNextNonce(safeAddress); + const safeTransaction = await safeSdk.createTransaction({ + safeTransactionData, + options: { nonce }, + }); + const safeTxHash = await safeSdk.getTransactionHash(safeTransaction); + const senderSignature = await safeSdk.signTransactionHash(safeTxHash); + + await safeService.proposeTransaction({ + safeAddress, + safeTransactionData: safeTransaction.data, + safeTxHash, + senderAddress: signer.address, + senderSignature: senderSignature.data, + }); + console.log(`Transaction to be confirmed in Safe ${safeAddress} on ${network}`); + } else { + const contractConnected = contract.connect(signer); + const tx = await contractConnected[method](...props, txOverrides); + await tx.wait(1); + } +}; diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupBatchConversionPayments.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupBatchConversionPayments.ts index 536b9d55b2..48f25c6f56 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupBatchConversionPayments.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupBatchConversionPayments.ts @@ -15,13 +15,16 @@ import { CurrencyTypes, RequestLogicTypes } from '@requestnetwork/types'; * @param contractAddress address of the BatchConversionPayments contract. * If not provided fallback to the latest deployment address * @param hre Hardhat runtime environment. + * @param signWithEoa Are transactions to be signed by an EAO */ export const setupBatchConversionPayments = async ({ contractAddress, hre, + signWithEoa, }: { contractAddress?: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { // Setup contract parameters @@ -47,43 +50,45 @@ export const setupBatchConversionPayments = async ({ const { signer, txOverrides } = await getSignerAndGasFees(network, hre); const batchConversionPaymentConnected = batchConversionPaymentContract.connect(signer); - await updateBatchPaymentFees(batchConversionPaymentConnected, txOverrides); - await updateBatchPaymentFeeAmountUSDLimit(batchConversionPaymentConnected, txOverrides); - await updateBatchConversionProxy( + await updateBatchPaymentFees( batchConversionPaymentConnected, network, txOverrides, - 'erc20', + signer, + signWithEoa, ); - await updateBatchConversionProxy( + await updateBatchPaymentFeeAmountUSDLimit( batchConversionPaymentConnected, network, txOverrides, - 'native', + signer, + signWithEoa, ); - await updateBatchConversionProxy( - batchConversionPaymentConnected, - network, - txOverrides, + const proxies = [ + 'erc20', + 'native', 'erc20Conversion', - ); - await updateBatchConversionProxy( - batchConversionPaymentConnected, - network, - txOverrides, 'nativeConversion', - ); - await updateBatchConversionProxy( - batchConversionPaymentConnected, - network, - txOverrides, 'chainlinkConversionPath', - ); + ]; + for (const proxy of proxies) { + await updateBatchConversionProxy( + batchConversionPaymentConnected, + network, + txOverrides, + proxy, + signer, + signWithEoa, + ); + } await updateNativeAndUSDAddress( batchConversionPaymentConnected, + network, NativeAddress, USDAddress, txOverrides, + signer, + signWithEoa, ); }; for (const network of hre.config.xdeploy.networks) { diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupChainlinkConversionPath.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupChainlinkConversionPath.ts index b1c37075d3..4986562a1f 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupChainlinkConversionPath.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupChainlinkConversionPath.ts @@ -9,17 +9,20 @@ import { getSignerAndGasFees, updateNativeTokenHash } from './adminTasks'; * @param contractAddress address of the ChainlinkConversionPath contract * If not provided fallback to the latest deployment address * @param hre Hardhat runtime environment + * @param signWithEoa Are transactions to be signed by an EAO */ export const setupChainlinkConversionPath = async ({ contractAddress, hre, + signWithEoa, }: { contractAddress?: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { // Setup contract parameters await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { + hre.config.xdeploy.networks.map(async (network: string) => { try { EvmChains.assertChainSupported(network); if (!contractAddress) { @@ -41,8 +44,11 @@ export const setupChainlinkConversionPath = async ({ await updateNativeTokenHash( 'ChainlinkConversionPath', ChainlinkConversionPathConnected, + network, nativeTokenHash, txOverrides, + signer, + signWithEoa, ); console.log(`Setup of ChainlinkConversionPath successful on ${network}`); } catch (err) { diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToConversion.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToConversion.ts index 7606cd410a..f655e138a6 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToConversion.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToConversion.ts @@ -13,16 +13,19 @@ import { EvmChains } from '@requestnetwork/currency'; * @param contractAddress address of the ERC20SwapToConversion contract * If not provided fallback to the latest deployment address * @param hre Hardhat runtime environment + * @param signWithEoa Are transactions to be signed by an EAO */ export const setupERC20SwapToConversion = async ({ contractAddress, hre, + signWithEoa, }: { contractAddress?: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { + hre.config.xdeploy.networks.map(async (network: string) => { try { EvmChains.assertChainSupported(network); if (!contractAddress) { @@ -35,9 +38,27 @@ export const setupERC20SwapToConversion = async ({ const { signer, txOverrides } = await getSignerAndGasFees(network, hre); const ERC20SwapToConversionConnected = await ERC20SwapToConversionContract.connect(signer); - await updateChainlinkConversionPath(ERC20SwapToConversionConnected, network, txOverrides); - await updateSwapRouter(ERC20SwapToConversionConnected, network, txOverrides); - await updateRequestSwapFees(ERC20SwapToConversionConnected, txOverrides); + await updateChainlinkConversionPath( + ERC20SwapToConversionConnected, + network, + txOverrides, + signer, + signWithEoa, + ); + await updateSwapRouter( + ERC20SwapToConversionConnected, + network, + txOverrides, + signer, + signWithEoa, + ); + await updateRequestSwapFees( + ERC20SwapToConversionConnected, + network, + txOverrides, + signer, + signWithEoa, + ); console.log(`Setup of Erc20SwapToConversion successful on ${network}`); } catch (err) { console.warn(`An error occurred during the setup of Erc20SwapToConversion on ${network}`); diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToPay.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToPay.ts index df7d7f89f4..2b153190f9 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToPay.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupERC20SwapToPay.ts @@ -8,16 +8,19 @@ import { getSignerAndGasFees, updateRequestSwapFees, updateSwapRouter } from './ * @param contractAddress address of the ERC20SwapToPay contract * If not provided fallback to the latest deployment address * @param hre Hardhat runtime environment + * @param signWithEoa Are transactions to be signed by an EAO */ export const setupERC20SwapToPay = async ({ contractAddress, hre, + signWithEoa, }: { contractAddress?: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { + hre.config.xdeploy.networks.map(async (network: string) => { try { EvmChains.assertChainSupported(network); if (!contractAddress) { @@ -30,8 +33,14 @@ export const setupERC20SwapToPay = async ({ const { signer, txOverrides } = await getSignerAndGasFees(network, hre); const ERC20SwapToPayConnected = await ERC20SwapToPayContract.connect(signer); - await updateSwapRouter(ERC20SwapToPayConnected, network, txOverrides); - await updateRequestSwapFees(ERC20SwapToPayConnected, txOverrides); + await updateSwapRouter(ERC20SwapToPayConnected, network, txOverrides, signer, signWithEoa); + await updateRequestSwapFees( + ERC20SwapToPayConnected, + network, + txOverrides, + signer, + signWithEoa, + ); console.log(`Setup of ERC20SwapToPay successful on ${network}`); } catch (err) { console.warn(`An error occurred during the setup of ERC20SwapToPay on ${network}`); diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts index 8dedd28156..097d4e627b 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupETHConversionProxy.ts @@ -14,16 +14,19 @@ import { * @param contractAddress address of the ETHConversion contract * If not provided fallback to the latest deployment address * @param hre Hardhat runtime environment + * @param signWithEoa Are transactions to be signed by an EAO */ export const setupETHConversionProxy = async ({ contractAddress, hre, + signWithEoa, }: { contractAddress?: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { + hre.config.xdeploy.networks.map(async (network: string) => { try { EvmChains.assertChainSupported(network); if (!contractAddress) { @@ -47,13 +50,24 @@ export const setupETHConversionProxy = async ({ network, txOverrides, 'native', + signer, + signWithEoa, + ); + await updateChainlinkConversionPath( + EthConversionProxyConnected, + network, + txOverrides, + signer, + signWithEoa, ); - await updateChainlinkConversionPath(EthConversionProxyConnected, network, txOverrides); await updateNativeTokenHash( 'EthConversionProxy', EthConversionProxyConnected, + network, nativeTokenHash, txOverrides, + signer, + signWithEoa, ); console.log(`Setup of EthConversionProxy successful on ${network}`); } catch (err) { diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setupErc20ConversionProxy.ts b/packages/smart-contracts/scripts-create2/contract-setup/setupErc20ConversionProxy.ts index 349d081cf6..5d372d11ae 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setupErc20ConversionProxy.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setupErc20ConversionProxy.ts @@ -14,16 +14,19 @@ const ERC20ConversionVersion = '0.1.2'; * @param contractAddress address of the ERC20Conversion contract. * If not provided fallback to the latest deployment address * @param hre Hardhat runtime environment + * @param signWithEoa Are transactions to be signed by an EAO */ export const setupErc20ConversionProxy = async ({ contractAddress, hre, + signWithEoa, }: { contractAddress?: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { await Promise.all( - hre.config.xdeploy.networks.map(async (network) => { + hre.config.xdeploy.networks.map(async (network: string) => { try { EvmChains.assertChainSupported(network); if (!contractAddress) { @@ -41,8 +44,16 @@ export const setupErc20ConversionProxy = async ({ network, txOverrides, 'erc20', + signer, + signWithEoa, + ); + await updateChainlinkConversionPath( + Erc20ConversionProxyConnected, + network, + txOverrides, + signer, + signWithEoa, ); - await updateChainlinkConversionPath(Erc20ConversionProxyConnected, network, txOverrides); console.log(`Setup of Erc20ConversionProxy successful on ${network}`); } catch (err) { console.warn(`An error occurred during the setup of Erc20ConversionProxy on ${network}`); diff --git a/packages/smart-contracts/scripts-create2/contract-setup/setups.ts b/packages/smart-contracts/scripts-create2/contract-setup/setups.ts index a5fc18069b..4a8dac327f 100644 --- a/packages/smart-contracts/scripts-create2/contract-setup/setups.ts +++ b/packages/smart-contracts/scripts-create2/contract-setup/setups.ts @@ -12,39 +12,42 @@ import { setupErc20ConversionProxy } from './setupErc20ConversionProxy'; * @param contractAddress address of the proxy * @param hre Hardhat runtime environment * @param contractName name of the contract + * @param signWithEao Is the signer an EAO account. */ export const setupContract = async ({ contractAddress, contractName, hre, + signWithEoa, }: { contractAddress?: string; contractName: string; hre: HardhatRuntimeEnvironmentExtended; + signWithEoa: boolean; }): Promise => { switch (contractName) { case 'ChainlinkConversionPath': { - await setupChainlinkConversionPath({ contractAddress, hre }); + await setupChainlinkConversionPath({ contractAddress, hre, signWithEoa }); break; } case 'EthConversionProxy': { - await setupETHConversionProxy({ contractAddress, hre }); + await setupETHConversionProxy({ contractAddress, hre, signWithEoa }); break; } case 'Erc20ConversionProxy': { - await setupErc20ConversionProxy({ contractAddress, hre }); + await setupErc20ConversionProxy({ contractAddress, hre, signWithEoa }); break; } case 'ERC20SwapToPay': { - await setupERC20SwapToPay({ contractAddress, hre }); + await setupERC20SwapToPay({ contractAddress, hre, signWithEoa }); break; } case 'ERC20SwapToConversion': { - await setupERC20SwapToConversion({ contractAddress, hre }); + await setupERC20SwapToConversion({ contractAddress, hre, signWithEoa }); break; } case 'BatchConversionPayments': { - await setupBatchConversionPayments({ contractAddress, hre }); + await setupBatchConversionPayments({ contractAddress, hre, signWithEoa }); break; } default: { diff --git a/packages/smart-contracts/scripts-create2/deploy.ts b/packages/smart-contracts/scripts-create2/deploy.ts index b7a0c3754d..4eee974b57 100644 --- a/packages/smart-contracts/scripts-create2/deploy.ts +++ b/packages/smart-contracts/scripts-create2/deploy.ts @@ -58,6 +58,11 @@ export const deployWithCreate2FromList = async ( EvmChains.assertChainSupported(network); const constructorArgs = getConstructorArgs(contract, network); const address = await deployOneWithCreate2({ contract, constructorArgs }, hre); - await setupContract({ contractAddress: address, contractName: contract, hre }); + await setupContract({ + contractAddress: address, + contractName: contract, + hre, + signWithEoa: true, + }); } }; diff --git a/packages/smart-contracts/scripts-create2/update-contracts-setup.ts b/packages/smart-contracts/scripts-create2/update-contracts-setup.ts index 3ba579d198..03133e0c8c 100644 --- a/packages/smart-contracts/scripts-create2/update-contracts-setup.ts +++ b/packages/smart-contracts/scripts-create2/update-contracts-setup.ts @@ -8,11 +8,13 @@ import { setupContract } from './contract-setup/setups'; */ export const updateContractsFromList = async ( hre: HardhatRuntimeEnvironmentExtended, + signWithEoa: boolean, ): Promise => { for (const contract of create2ContractDeploymentList) { await setupContract({ contractName: contract, hre, + signWithEoa, }); } }; diff --git a/packages/smart-contracts/scripts/deploy-payments.ts b/packages/smart-contracts/scripts/deploy-payments.ts deleted file mode 100644 index bffe4b65bc..0000000000 --- a/packages/smart-contracts/scripts/deploy-payments.ts +++ /dev/null @@ -1,386 +0,0 @@ -import '@nomiclabs/hardhat-ethers'; -import { - chainlinkConversionPath as chainlinkConversionPathArtifact, - ContractArtifact, - erc20SwapToPayArtifact, -} from '../src/lib'; -import { deployERC20ConversionProxy, deployEthConversionProxy } from './conversion-proxy'; -import { DeploymentResult, deployOne } from './deploy-one'; -import { uniswapV2RouterAddresses, jumpToNonce } from './utils'; -import { Contract } from 'ethers'; -// eslint-disable-next-line -// @ts-ignore Cannot find module -import { ChainlinkConversionPath } from '../src/types'; -// eslint-disable-next-line -// @ts-ignore Cannot find module -import { EthConversionProxy } from '../src/types'; -import { CurrencyManager } from '@requestnetwork/currency'; -import { RequestLogicTypes } from '@requestnetwork/types'; -import { HardhatRuntimeEnvironmentExtended } from '../scripts-create2/types'; -import { computeCreate2DeploymentAddress } from '../scripts-create2/compute-one-address'; - -/** - * Script ensuring all payment contracts are deployed and usable on a live chain. - * - * For a given chain, in the absence of `args.simulate` and `args.force`, the script is responsible for: - * - Deploying contracts in the exact same sequence on every chain, to keep the same addresses - * - Deploying only contracts which, according to the artifacts in `src/lib/artifacts`, are not yet deployed on the chain - * - Doing the minimum required administration tasks (typically: handover administration to other wallets) - * - Verifying the contract code of deployed contracts on the appropriate explorer, when relevant - * - Switching to simulation mode if any deployment cannot be made (in order to keep the sequence) - * - * `args.force = true` to force deployments even if addresses are found in the artifacts (eg. on private network) - * `args.simulate = true` to prevent deployments and contract verification - * - */ -export async function deployAllPaymentContracts( - args: any, - hre: HardhatRuntimeEnvironmentExtended, -): Promise { - const deploymentResults: (DeploymentResult | undefined)[] = []; - let simulationSuccess: boolean | undefined; - - const logDeploymentMsg = (contractName: string, result?: DeploymentResult, message?: string) => { - const blockMsg = result?.type === 'deployed' ? ` at ${result.block}` : ''; - const resultMsg = result - ? result.address === result.type - ? result.address - : `${result.address}${blockMsg} (${result.type})` - : ''; - const customMsg = message ? `(${message})` : ''; - console.log(`${` ${contractName}:`.padEnd(36, ' ')}${resultMsg}${customMsg}`); - }; - - const addToResult = (deployment?: DeploymentResult) => { - if (deployment) { - deploymentResults.push(deployment); - logDeploymentMsg(deployment.contractName, deployment); - } - }; - - try { - simulationSuccess = args.simulate ? true : undefined; - const [deployer] = await hre.ethers.getSigners(); - - console.log( - `*** Deploying with: ${deployer.address} on ${hre.network.name} (${ - hre.network.config.chainId - }). Nonce = ${await deployer.getTransactionCount()} ***`, - ); - - // #region NATIVE TOKEN - const nativeTokenNetwork = hre.network.name === 'private' ? 'mainnet' : hre.network.name; - const nativeTokenHash = CurrencyManager.getDefault().getNativeCurrency( - RequestLogicTypes.CURRENCY.ETH, - nativeTokenNetwork, - )?.hash; - - if (!nativeTokenHash) { - throw new Error(`Could not guess native token hash for network ${hre.network.name}`); - } - // #endregion - - // #region UTILS - - // Utility to run a straight-forward deployment with deployOne() - const runEasyDeployment = async (deployment: { - contractName: string; - constructorArguments?: string[]; - artifact: ContractArtifact; - nonceCondition?: number; - }): Promise> => { - deployment.constructorArguments = deployment.constructorArguments ?? []; - const result = await deployOne(args, hre, deployment.contractName, { - ...deployment, - }); - addToResult(result); - if (result.type === 'skipped') { - switchToSimulation(); - } - return result; - }; - - const switchToSimulation = () => { - if (!args.simulate) { - console.log('[!] Switching to simulated mode'); - args.simulate = true; - simulationSuccess = simulationSuccess ?? true; - } - }; - - /* Returns true if the nonce is <= targetNonce, and switches to simulation if != targetNonce */ - const nonceReady = async (targetNonce: number) => { - const currentNonce = await deployer.getTransactionCount(); - if (currentNonce !== targetNonce && currentNonce > 17) { - console.warn(`Warning: got nonce ${currentNonce} instead of ${targetNonce}`); - switchToSimulation(); - } - if (currentNonce === targetNonce) { - return true; - } - return false; - }; - // #endregion - - // #region BATCH DEFINITIONS - /* - * Batch 2 - * - ERC20SwapToPay - */ - const runDeploymentBatch_2 = async (erc20FeeProxyAddress: string) => { - const nonceForBatch2 = 5; - await jumpToNonce(args, hre, nonceForBatch2); - - // ERC20SwapToPay - let swapRouterAddress = uniswapV2RouterAddresses[hre.network.name]; - if (!swapRouterAddress) { - logDeploymentMsg( - 'ERC20SwapToPay:', - undefined, - 'swap router missing - can be administrated by deployer', - ); - swapRouterAddress = '0x0000000000000000000000000000000000000000'; - } - const swapToPayResult = await deployOne(args, hre, 'ERC20SwapToPay', { - constructorArguments: [swapRouterAddress, erc20FeeProxyAddress], - artifact: erc20SwapToPayArtifact, - nonceCondition: nonceForBatch2, - }); - addToResult(swapToPayResult); - return deploymentResults; - }; - - /* - * Batch 4 - * - ChainlinkConversionPath (+ addWhitelistAdmin()) - * - EthConversionProxy - */ - const runDeploymentBatch_4 = async (ethFeeProxyAddress: string) => { - const NONCE_BATCH_4 = 10; - await jumpToNonce(args, hre, NONCE_BATCH_4); - - // Deploy ChainlinkConversionPath - const { instance: chainlinkInstance, address: chainlinkConversionPathAddress } = - await runEasyDeployment({ - contractName: 'ChainlinkConversionPath', - constructorArguments: [nativeTokenHash], - artifact: chainlinkConversionPathArtifact, - nonceCondition: NONCE_BATCH_4, - }); - - // Deploy ETH Conversion - const ethConversionResult = await deployEthConversionProxy( - { - ...args, - chainlinkConversionPathAddress, - ethFeeProxyAddress, - nonceCondition: NONCE_BATCH_4 + 1, - version: '0.2.0', - }, - hre, - ); - addToResult(ethConversionResult); - - // Administrate again whitelist admins for nonce consistency (due to 1 failing tx on Fantom) - const chainlinkAdminNonce = NONCE_BATCH_4 + 2; - const currentNonce = await deployer.getTransactionCount(); - if (currentNonce === chainlinkAdminNonce && chainlinkInstance) { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error( - 'Chainlink was deployed but no ADMIN_WALLET_ADDRESS was provided, cannot addWhitelistAdmin.', - ); - } - if (args.simulate === false) { - const tx = await chainlinkInstance.addWhitelistAdmin(process.env.ADMIN_WALLET_ADDRESS); - await tx.wait(1); - } else { - console.log('[i] Simulating addWhitelistAdmin to chainlinkInstance'); - } - } else { - if (currentNonce < chainlinkAdminNonce) { - console.warn(`Warning: got nonce ${currentNonce} instead of ${chainlinkAdminNonce}`); - switchToSimulation(); - } else if (!chainlinkInstance) { - console.warn(`Warning: the Chainlink contract instance is not ready, consider retrying.`); - switchToSimulation(); - } - } - return { chainlinkInstance, ethConversionResult }; - }; - - /* - * Batch 5 - * - 5.a ERC20ConversionProxy - * - 5.b ERC20ConversionProxy.transferOwnership - */ - const runDeploymentBatch_5 = async ( - chainlinkInstance: ChainlinkConversionPath, - erc20FeeProxyAddress: string, - ethConversionResultInstance?: EthConversionProxy, - ) => { - const NONCE_BATCH_5 = 15; - await jumpToNonce(args, hre, NONCE_BATCH_5); - let chainlinkConversionPathAddress = chainlinkInstance?.address; - if (!chainlinkConversionPathAddress) { - switchToSimulation(); - chainlinkConversionPathAddress = 'simulated'; - } - - // 5.a ERC20ConversionProxy - const erc20ConversionResult = await deployERC20ConversionProxy( - { - ...args, - chainlinkConversionPathAddress, - erc20FeeProxyAddress, - nonceCondition: NONCE_BATCH_5, - }, - hre, - ); - addToResult(erc20ConversionResult); - - // 5.b ERC20ConversionProxy.transferOwnership - - if (await nonceReady(NONCE_BATCH_5 + 1)) { - if (erc20ConversionResult) { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error( - 'ADMIN_WALLET_ADDRESS missing for: ERC20ConversionProxy.transferOwnership', - ); - } - if (args.simulate === false) { - await erc20ConversionResult.instance.transferOwnership( - process.env.ADMIN_WALLET_ADDRESS, - ); - } else { - console.log('[i] Simulating transferOwnership to ERC20ConversionProxy'); - } - } else { - console.warn( - `Warning: the ERC20ConversionProxy contract instance is not ready, consider retrying.`, - ); - switchToSimulation(); - } - } - const ethConversionAdminNonce = NONCE_BATCH_5 + 3; - await jumpToNonce(args, hre, ethConversionAdminNonce); - - // 5.d EthConversion.transferOwnership - if (await nonceReady(ethConversionAdminNonce)) { - if (ethConversionResultInstance) { - if (!process.env.ADMIN_WALLET_ADDRESS) { - throw new Error( - 'ADMIN_WALLET_ADDRESS missing, cannot addWhitelistAdmin on EthConversion.', - ); - } - if (args.simulate === false) { - const tx = await ethConversionResultInstance.addWhitelistAdmin( - process.env.ADMIN_WALLET_ADDRESS, - ); - await tx.wait(1); - } else { - console.log( - `[i] Simulating addWhitelistAdmin to EthConversion at ${ethConversionResultInstance.address}`, - ); - } - } else { - if (!ethConversionResultInstance) { - console.warn( - `Warning: the EthConversion contract instance is not ready for EthConversion update, consider retrying.`, - ); - switchToSimulation(); - } - } - } - }; - - // #endregion - - // #region MAIN - Deployments - - // Batch 1 - REMOVED -> Deployment CREATE2 - const erc20FeeProxyAddress = await computeCreate2DeploymentAddress( - { contract: 'ERC20FeeProxy' }, - hre, - ); - - // Batch 2 - await runDeploymentBatch_2(erc20FeeProxyAddress); - - // Batch 3 - REMOVED -> Deployment CREATE2 - - // Compute EthereumFeeProxy address (CREATE2) - const ethFeeProxyAddress = await computeCreate2DeploymentAddress( - { contract: 'EthereumFeeProxy' }, - hre, - ); - - // Batch 4 - const { chainlinkInstance, ethConversionResult } = - await runDeploymentBatch_4(ethFeeProxyAddress); - - // Batch 5 - await runDeploymentBatch_5( - chainlinkInstance, - erc20FeeProxyAddress, - ethConversionResult?.instance as EthConversionProxy, - ); - - // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - // Add future batches above this line - console.log('Done deploying.'); - // #endregion - } catch (e) { - console.error(e); - } - - // #region MAIN - Conclusion and verification - - console.log('Summary:'); - deploymentResults - .filter((x): x is DeploymentResult => !!x) - .forEach((res) => logDeploymentMsg(res.contractName, res)); - const nbDeployments = deploymentResults.filter((val) => val?.type === 'deployed').length; - const verificationPromises = deploymentResults - .map((val) => val?.verificationPromise) - .filter(Boolean); - - if (nbDeployments > 0) { - console.log( - `--- ${nbDeployments} deployements were made. ---`, - hre.network.name === 'private' - ? '' - : [ - ``, - `TODO:`, - `* CRITICAL: update src/lib/artifacts files, and push changes NOW !`, - `* IMPORTANT: execute updateAggregatorsList() on conversionPaths`, - `* : then update the lib with chainlinkPath util in toolbox and push changes`, - `* OTHER: deploy subgraphes where needed`, - ].join('\r\n'), - ); - if (verificationPromises.length > 0) { - let nbSuccessfulVerifications = 0; - console.log('Contracts verifications in progress...'); - await Promise.all( - verificationPromises.map((verificationPromise) => { - return verificationPromise - ? verificationPromise.then((success) => { - nbSuccessfulVerifications += success ? 1 : 0; - console.log(`${nbSuccessfulVerifications} / ${nbDeployments}...`); - }) - : Promise.resolve(); - }), - ); - console.log(`${nbSuccessfulVerifications} verification successes !`); - if (nbSuccessfulVerifications < nbDeployments) { - console.log(`Some verifications failed, check logs and do them manually.`); - } - } - } else { - console.log(`--- No deployment was made. ---`); - } - if (simulationSuccess === false) { - console.log('--- DO NOT PROCEED ---'); - } - // #endregion -} diff --git a/packages/smart-contracts/src/lib/artifacts/Admin/0.1.0.json b/packages/smart-contracts/src/lib/artifacts/Admin/0.1.0.json new file mode 100644 index 0000000000..2b4af666ab --- /dev/null +++ b/packages/smart-contracts/src/lib/artifacts/Admin/0.1.0.json @@ -0,0 +1,10 @@ +{ + "abi": [ + { + "inputs": [{ "internalType": "address", "name": "_singleton", "type": "address" }], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { "stateMutability": "payable", "type": "fallback" } + ] +} diff --git a/packages/smart-contracts/src/lib/artifacts/Admin/index.ts b/packages/smart-contracts/src/lib/artifacts/Admin/index.ts new file mode 100644 index 0000000000..001ac955a6 --- /dev/null +++ b/packages/smart-contracts/src/lib/artifacts/Admin/index.ts @@ -0,0 +1,26 @@ +import { ContractArtifact } from '../../ContractArtifact'; + +import { abi as ABI_0_1_0 } from './0.1.0.json'; + +/** + * Doesn't store the Safe interface. + * Only used to maintain the list of RN Safe administrating the contracts across supported chains + */ +export const safeAdminArtifact = new ContractArtifact( + { + '0.1.0': { + abi: ABI_0_1_0, + deployment: { + mainnet: { + address: '0x8b138Eb490aBbbB11B8AD6Ae127E7ceBff7E848D', + creationBlockNumber: 1, + }, + matic: { + address: '0xC8cBFf73a29a2c7D9280955B266ffe2BA77d77Ba', + creationBlockNumber: 1, + }, + }, + }, + }, + '0.1.0', +); diff --git a/packages/smart-contracts/src/lib/artifacts/index.ts b/packages/smart-contracts/src/lib/artifacts/index.ts index 618e1f25ef..280f1b04a9 100644 --- a/packages/smart-contracts/src/lib/artifacts/index.ts +++ b/packages/smart-contracts/src/lib/artifacts/index.ts @@ -24,3 +24,7 @@ export * from './RequestDeployer'; * ERC20 Transferable Receivable */ export * from './ERC20TransferableReceivable'; +/** + * Admin + */ +export * from './Admin'; diff --git a/packages/smart-contracts/tsconfig.json b/packages/smart-contracts/tsconfig.json index e3110afaea..6630193735 100644 --- a/packages/smart-contracts/tsconfig.json +++ b/packages/smart-contracts/tsconfig.json @@ -1,7 +1,8 @@ { "extends": "../../tsconfig", "compilerOptions": { - "resolveJsonModule": true + "resolveJsonModule": true, + "esModuleInterop": true }, "include": [ "src/", diff --git a/yarn.lock b/yarn.lock index d59a60ce0a..3b16b13676 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1080,6 +1080,14 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" +"@ethereumjs/common@2.6.5", "@ethereumjs/common@^2.6.4": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.5" + "@ethereumjs/common@^2.3.0", "@ethereumjs/common@^2.5.0", "@ethereumjs/common@^2.6.3": version "2.6.3" resolved "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.3.tgz" @@ -1096,6 +1104,19 @@ crc-32 "^1.2.0" ethereumjs-util "^7.1.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/tx@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + "@ethereumjs/tx@^3.2.1": version "3.3.0" resolved "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz" @@ -1112,6 +1133,15 @@ "@ethereumjs/common" "^2.6.3" ethereumjs-util "^7.1.4" +"@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.0.0-beta.153": version "5.0.0-beta.153" resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz" @@ -1187,6 +1217,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@ethersproject/abi@^5.6.3", "@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.4.0", "@ethersproject/abstract-provider@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz" @@ -1226,6 +1271,19 @@ "@ethersproject/transactions" "^5.6.0" "@ethersproject/web" "^5.6.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.4.0", "@ethersproject/abstract-signer@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz" @@ -1259,6 +1317,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.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.4.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz" @@ -1303,6 +1372,17 @@ "@ethersproject/logger" "^5.0.8" "@ethersproject/rlp" "^5.0.7" +"@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.4.0", "@ethersproject/base64@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz" @@ -1324,6 +1404,13 @@ dependencies: "@ethersproject/bytes" "^5.6.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.4.0", "@ethersproject/basex@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz" @@ -1384,6 +1471,15 @@ "@ethersproject/logger" "^5.0.8" bn.js "^4.4.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.4.0", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz" @@ -1412,6 +1508,13 @@ dependencies: "@ethersproject/logger" "^5.0.8" +"@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.4.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.4", "@ethersproject/constants@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz" @@ -1440,6 +1543,13 @@ dependencies: "@ethersproject/bignumber" "^5.0.13" +"@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.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz" @@ -1488,6 +1598,22 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/transactions" "^5.6.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/experimental@5.5.0": version "5.5.0" resolved "https://registry.npmjs.org/@ethersproject/experimental/-/experimental-5.5.0.tgz" @@ -1539,6 +1665,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.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.4.0", "@ethersproject/hdnode@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz" @@ -1682,6 +1823,14 @@ "@ethersproject/bytes" "^5.0.9" js-sha3 "0.5.7" +"@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.4.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.5", "@ethersproject/logger@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz" @@ -1702,6 +1851,11 @@ resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.10.tgz" integrity sha512-0y2T2NqykDrbPM3Zw9RSbPkDOxwChAL8detXaom76CfYoGxsOnRP/zTX8OUAV+x9LdwzgbWvWmeXrc0M7SuDZw== +"@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.4.1": version "5.4.1" resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.1.tgz" @@ -1744,6 +1898,13 @@ dependencies: "@ethersproject/logger" "^5.4.0" +"@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.4.0", "@ethersproject/pbkdf2@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz" @@ -1796,6 +1957,13 @@ dependencies: "@ethersproject/logger" "^5.0.8" +"@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.4.1": version "5.4.1" resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.1.tgz" @@ -1985,6 +2153,14 @@ "@ethersproject/bytes" "^5.0.9" "@ethersproject/logger" "^5.0.8" +"@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.4.0", "@ethersproject/sha2@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz" @@ -2012,6 +2188,15 @@ "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" +"@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.4.0", "@ethersproject/signing-key@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz" @@ -2058,6 +2243,18 @@ "@ethersproject/properties" "^5.0.7" elliptic "6.5.4" +"@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.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz" @@ -2093,6 +2290,18 @@ "@ethersproject/sha2" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@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.4.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.4", "@ethersproject/strings@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz" @@ -2120,6 +2329,15 @@ "@ethersproject/constants" "^5.6.0" "@ethersproject/logger" "^5.6.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.4.0", "@ethersproject/transactions@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz" @@ -2180,6 +2398,21 @@ "@ethersproject/rlp" "^5.0.7" "@ethersproject/signing-key" "^5.0.8" +"@ethersproject/transactions@^5.6.2", "@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.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz" @@ -2314,6 +2547,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.0" +"@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.4.0", "@ethersproject/wordlists@^5.4.0": version "5.4.0" resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz" @@ -4089,11 +4333,28 @@ bn.js "5.2.1" borsh "^0.7.0" +"@noble/curves@1.1.0", "@noble/curves@~1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.1.0.tgz#f13fc667c89184bc04cccb9b11e8e7bae27d8c3d" + integrity sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA== + dependencies: + "@noble/hashes" "1.3.1" + "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== +"@noble/hashes@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.1.tgz#8831ef002114670c603c458ab8b11328406953a9" + integrity sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA== + +"@noble/hashes@~1.3.0", "@noble/hashes@~1.3.1": + 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== + "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" @@ -4729,6 +4990,49 @@ path-browserify "^1.0.0" url "^0.11.0" +"@safe-global/api-kit@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@safe-global/api-kit/-/api-kit-1.3.1.tgz#108f5ba2f3770354abcec91225cc1ae21ee417a8" + integrity sha512-JKvCNs8p+42+N8pV2MIqoXlBLckTe5CKboVT7t9mTluuA66i5W8+Kr+B5j9D//EIU5vO7iSOOIYnJuA2ck4XRQ== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@safe-global/safe-core-sdk-types" "^2.3.0" + node-fetch "^2.6.6" + +"@safe-global/protocol-kit@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@safe-global/protocol-kit/-/protocol-kit-1.3.0.tgz#fb84a3797a4afc74ac7fc218e796037d6e3cc3cc" + integrity sha512-zBhwHpaUggywmnR1Xm5RV22DpyjmVWYP3pnOl4rcf9LAc1k7IVmw6WIt2YVhHRaWGxVYMd4RitJX8Dx2+8eLZQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/solidity" "^5.7.0" + "@safe-global/safe-deployments" "^1.26.0" + ethereumjs-util "^7.1.5" + semver "^7.5.4" + web3 "^1.8.1" + web3-core "^1.8.1" + web3-utils "^1.8.1" + zksync-web3 "^0.14.3" + +"@safe-global/safe-core-sdk-types@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-2.3.0.tgz#e3be109e58a2d224d1b89052563b04f3efed4bec" + integrity sha512-dU0KkDV1KJNf11ajbUjWiSi4ygdyWfhk1M50lTJWUdCn1/2Bsb/hICM8LoEk6DCoFumxaoCet02SmYakXsW2CA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts" "^5.7.0" + "@safe-global/safe-deployments" "^1.26.0" + web3-core "^1.8.1" + web3-utils "^1.8.1" + +"@safe-global/safe-deployments@^1.26.0": + version "1.30.0" + resolved "https://registry.yarnpkg.com/@safe-global/safe-deployments/-/safe-deployments-1.30.0.tgz#c0b0de6b304a044099f532b2c3ee587a686fd550" + integrity sha512-z721O3gsIOpzAu9nYo4fLx88Ql4CZdfO0Eh/F3eC8/pCOoAhJnhOEt+Q7rOyCSuzyt5LPgeV6F4UEIp6txEaKA== + dependencies: + semver "^7.3.7" + "@scure/base@~1.1.0": version "1.1.1" resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz" @@ -4743,6 +5047,15 @@ "@noble/secp256k1" "~1.7.0" "@scure/base" "~1.1.0" +"@scure/bip32@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.3.1.tgz#7248aea723667f98160f593d621c47e208ccbb10" + integrity sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A== + dependencies: + "@noble/curves" "~1.1.0" + "@noble/hashes" "~1.3.1" + "@scure/base" "~1.1.0" + "@scure/bip39@1.1.1": version "1.1.1" resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" @@ -4751,6 +5064,14 @@ "@noble/hashes" "~1.2.0" "@scure/base" "~1.1.0" +"@scure/bip39@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.2.1.tgz#5cee8978656b272a917b7871c981e0541ad6ac2a" + integrity sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg== + dependencies: + "@noble/hashes" "~1.3.0" + "@scure/base" "~1.1.0" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" @@ -4829,6 +5150,11 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sindresorhus/is@^4.6.0": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.6.0.tgz#3c7c9c46e678feefe7a2e5bb609d3dbd665ffb3f" + integrity sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw== + "@sinonjs/commons@^1.7.0": version "1.8.2" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.2.tgz" @@ -4913,6 +5239,13 @@ dependencies: defer-to-connect "^1.0.1" +"@szmarczak/http-timer@^5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + dependencies: + defer-to-connect "^2.0.1" + "@toruslabs/eccrypto@4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-4.0.0.tgz#0b27ed2d1e9483e77f42a7619a2c3c19cb802f44" @@ -5144,6 +5477,13 @@ dependencies: "@types/node" "*" +"@types/bn.js@^5.1.1": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.5.tgz#2e0dacdcce2c0f16b905d20ff87aedbc6f7b4bf0" + integrity sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A== + dependencies: + "@types/node" "*" + "@types/body-parser@*": version "1.19.0" resolved "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz" @@ -5152,6 +5492,16 @@ "@types/connect" "*" "@types/node" "*" +"@types/cacheable-request@^6.0.2": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" + integrity sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "^3.1.4" + "@types/node" "*" + "@types/responselike" "^1.0.0" + "@types/chai@*", "@types/chai@4.2.21": version "4.2.21" resolved "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz" @@ -5229,6 +5579,11 @@ dependencies: "@types/node" "*" +"@types/http-cache-semantics@*": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" + integrity sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA== + "@types/inquirer@8.1.3": version "8.1.3" resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.1.3.tgz" @@ -5294,6 +5649,13 @@ resolved "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/keyv@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.4.tgz#3ccdb1c6751b0c7e52300bcdacd5bcbf8faa75b6" + integrity sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg== + dependencies: + "@types/node" "*" + "@types/lodash@4.14.161": version "4.14.161" resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.161.tgz" @@ -5413,6 +5775,13 @@ dependencies: "@types/node" "*" +"@types/responselike@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.3.tgz#cc29706f0a397cfe6df89debfe4bf5cea159db50" + integrity sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw== + dependencies: + "@types/node" "*" + "@types/secp256k1@^4.0.1": version "4.0.1" resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz" @@ -5823,6 +6192,11 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" +abortcontroller-polyfill@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz#6738495f4e901fbb57b6c0611d0c75f76c485bed" + integrity sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ== + abstract-level@^1.0.0, abstract-level@^1.0.2, abstract-level@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz" @@ -7959,6 +8333,11 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-lookup@^6.0.4: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz#0330a543471c61faa4e9035db583aad753b36385" + integrity sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww== + cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" @@ -7972,6 +8351,19 @@ cacheable-request@^6.0.0: normalize-url "^4.1.0" responselike "^1.0.2" +cacheable-request@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.4.tgz#7a33ebf08613178b403635be7b899d3e69bbe817" + integrity sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" + cached-path-relative@^1.0.0, cached-path-relative@^1.0.2: version "1.1.0" resolved "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.1.0.tgz" @@ -9220,6 +9612,13 @@ cross-fetch@^3.1.5: dependencies: node-fetch "2.6.7" +cross-fetch@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-4.0.0.tgz#f037aef1580bb3a1a35164ea2a848ba81b445983" + integrity sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g== + dependencies: + node-fetch "^2.6.12" + cross-inspect@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cross-inspect/-/cross-inspect-1.0.0.tgz#5fda1af759a148594d2d58394a9e21364f6849af" @@ -9467,6 +9866,13 @@ decompress-response@^3.2.0, decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + dedent@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" @@ -9525,6 +9931,11 @@ defer-to-connect@^1.0.1: resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + deferred-leveldown@~1.2.1: version "1.2.2" resolved "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz" @@ -10237,7 +10648,7 @@ es6-object-assign@^1.0.3: resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= -es6-promise@^4.0.3: +es6-promise@^4.0.3, es6-promise@^4.2.8: version "4.2.8" resolved "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz" integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== @@ -10799,6 +11210,16 @@ ethereum-cryptography@^1.0.3: "@scure/bip32" "1.1.5" "@scure/bip39" "1.1.1" +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.1.2.tgz#18fa7108622e56481157a5cb7c01c0c6a672eb67" + integrity sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug== + dependencies: + "@noble/curves" "1.1.0" + "@noble/hashes" "1.3.1" + "@scure/bip32" "1.3.1" + "@scure/bip39" "1.2.1" + ethereum-waffle@3.4.0: version "3.4.0" resolved "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz" @@ -10998,6 +11419,17 @@ ethereumjs-util@^7.1.4: ethereum-cryptography "^0.1.3" rlp "^2.2.4" +ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + ethereumjs-vm@4.2.0: version "4.2.0" resolved "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz" @@ -11996,6 +12428,11 @@ forever-agent@~0.6.1: resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== + form-data@3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz" @@ -12367,7 +12804,7 @@ get-stream@^5.0.0, get-stream@^5.1.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: +get-stream@^6.0.0, get-stream@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== @@ -12651,6 +13088,25 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +got@12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-12.1.0.tgz#099f3815305c682be4fd6b0ee0726d8e4c6b0af4" + integrity sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig== + dependencies: + "@sindresorhus/is" "^4.6.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.10" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" + got@9.6.0: version "9.6.0" resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" @@ -13212,6 +13668,14 @@ http-status-codes@2.1.4: resolved "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.1.4.tgz" integrity sha512-MZVIsLKGVOVE1KEnldppe6Ij+vmemMuApDfjhVSLzyYP+td0bREEYyAoIw9yFePoBXManCuBqmiNP5FqJS5Xkg== +http2-wrapper@^2.1.10: + version "2.2.1" + resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.2.1.tgz#310968153dcdedb160d8b72114363ef5fce1f64a" + integrity sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ== + dependencies: + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" + https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" @@ -14725,6 +15189,11 @@ json-buffer@3.0.0: resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + json-parse-better-errors@^1.0.0, json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" @@ -14898,6 +15367,13 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +keyv@^4.0.0: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" @@ -15546,6 +16022,11 @@ lowercase-keys@^2.0.0: resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + lru-cache@5.1.1, lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz" @@ -15914,6 +16395,11 @@ methods@1.1.2, methods@^1.1.2, methods@~1.1.2: resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= +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== + micromatch@^2.1.5: version "2.3.11" resolved "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" @@ -16033,6 +16519,11 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + min-document@^2.19.0: version "2.19.0" resolved "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz" @@ -16628,7 +17119,7 @@ node-fetch@2.6.7, node-fetch@^2.5.0, node-fetch@^2.6.1, node-fetch@^2.6.7: dependencies: whatwg-url "^5.0.0" -node-fetch@^2.6.0, node-fetch@^2.6.12: +node-fetch@^2.6.0, node-fetch@^2.6.12, node-fetch@^2.6.6: 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== @@ -16759,6 +17250,11 @@ normalize-url@^4.1.0: resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + npm-bundled@^1.0.1: version "1.1.1" resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz" @@ -17237,6 +17733,11 @@ p-cancelable@^1.0.0: resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz" @@ -18315,6 +18816,11 @@ quick-lru@^4.0.1: resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== + quote-stream@^1.0.1: version "1.0.2" resolved "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz" @@ -18814,6 +19320,11 @@ require-main-filename@^2.0.0: resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== +resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== + resolve-cwd@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz" @@ -18897,6 +19408,13 @@ responselike@^1.0.2: dependencies: lowercase-keys "^1.0.0" +responselike@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.1.tgz#9a0bc8fdc252f3fb1cca68b016591059ba1422bc" + integrity sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw== + dependencies: + lowercase-keys "^2.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" @@ -19185,7 +19703,7 @@ semver@^6.3.1: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.5.1, semver@^7.5.3, semver@^7.5.4: +semver@^7.3.7, semver@^7.5.1, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -21653,6 +22171,17 @@ util@^0.12.0: safe-buffer "^5.1.2" which-typed-array "^1.1.2" +util@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.5.tgz#5f17a6059b73db61a875668781a1c2b136bd6fbc" + integrity sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA== + dependencies: + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + which-typed-array "^1.1.2" + util@~0.12.0: version "0.12.4" resolved "https://registry.npmjs.org/util/-/util-0.12.4.tgz" @@ -21690,6 +22219,11 @@ uuid@^8.3.2: resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" @@ -21780,6 +22314,15 @@ web-streams-polyfill@^3.2.1: resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== +web3-bzz@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.10.3.tgz#13942b37757eb850f3500a8e08bf605448b67566" + integrity sha512-XDIRsTwekdBXtFytMpHBuun4cK4x0ZMIDXSoo1UVYp+oMyZj07c7gf7tNQY5qZ/sN+CJIas4ilhN25VJcjSijQ== + dependencies: + "@types/node" "^12.12.6" + got "12.1.0" + swarm-js "^0.1.40" + web3-bzz@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz" @@ -21808,6 +22351,14 @@ web3-bzz@1.7.3: got "9.6.0" swarm-js "^0.1.40" +web3-core-helpers@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.10.3.tgz#f2db40ea57e888795e46f229b06113b60bcd671c" + integrity sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA== + dependencies: + web3-eth-iban "1.10.3" + web3-utils "1.10.3" + web3-core-helpers@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz" @@ -21842,6 +22393,17 @@ web3-core-helpers@1.7.3: web3-eth-iban "1.7.3" web3-utils "1.7.3" +web3-core-method@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.10.3.tgz#63f16310ccab4eec8eca0a337d534565c2ba8d33" + integrity sha512-VZ/Dmml4NBmb0ep5PTSg9oqKoBtG0/YoMPei/bq/tUdlhB2dMB79sbeJPwx592uaV0Vpk7VltrrrBv5hTM1y4Q== + dependencies: + "@ethersproject/transactions" "^5.6.2" + web3-core-helpers "1.10.3" + web3-core-promievent "1.10.3" + web3-core-subscriptions "1.10.3" + web3-utils "1.10.3" + web3-core-method@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz" @@ -21877,6 +22439,13 @@ web3-core-method@1.7.3: web3-core-subscriptions "1.7.3" web3-utils "1.7.3" +web3-core-promievent@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.10.3.tgz#9765dd42ce6cf2dc0a08eaffee607b855644f290" + integrity sha512-HgjY+TkuLm5uTwUtaAfkTgRx/NzMxvVradCi02gy17NxDVdg/p6svBHcp037vcNpkuGeFznFJgULP+s2hdVgUQ== + dependencies: + eventemitter3 "4.0.4" + web3-core-promievent@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz" @@ -21898,6 +22467,17 @@ web3-core-promievent@1.7.3: dependencies: eventemitter3 "4.0.4" +web3-core-requestmanager@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.10.3.tgz#c34ca8e998a18d6ca3fa7f7a11d4391da401c987" + integrity sha512-VT9sKJfgM2yBOIxOXeXiDuFMP4pxzF6FT+y8KTLqhDFHkbG3XRe42Vm97mB/IvLQCJOmokEjl3ps8yP1kbggyw== + dependencies: + util "^0.12.5" + web3-core-helpers "1.10.3" + web3-providers-http "1.10.3" + web3-providers-ipc "1.10.3" + web3-providers-ws "1.10.3" + web3-core-requestmanager@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz" @@ -21931,6 +22511,14 @@ web3-core-requestmanager@1.7.3: web3-providers-ipc "1.7.3" web3-providers-ws "1.7.3" +web3-core-subscriptions@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.10.3.tgz#58768cd72a9313252ef05dc52c09536f009a9479" + integrity sha512-KW0Mc8sgn70WadZu7RjQ4H5sNDJ5Lx8JMI3BWos+f2rW0foegOCyWhRu33W1s6ntXnqeBUw5rRCXZRlA3z+HNA== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.3" + web3-core-subscriptions@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz" @@ -21956,6 +22544,19 @@ web3-core-subscriptions@1.7.3: eventemitter3 "4.0.4" web3-core-helpers "1.7.3" +web3-core@1.10.3, web3-core@^1.8.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.10.3.tgz#4aeb8f4b0cb5775d9fa4edf1127864743f1c3ae3" + integrity sha512-Vbk0/vUNZxJlz3RFjAhNNt7qTpX8yE3dn3uFxfX5OHbuon5u65YEOd3civ/aQNW745N0vGUlHFNxxmn+sG9DIw== + dependencies: + "@types/bn.js" "^5.1.1" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-core-requestmanager "1.10.3" + web3-utils "1.10.3" + web3-core@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz" @@ -21995,6 +22596,14 @@ web3-core@1.7.3: web3-core-requestmanager "1.7.3" web3-utils "1.7.3" +web3-eth-abi@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.10.3.tgz#7decfffa8fed26410f32cfefdc32d3e76f717ca2" + integrity sha512-O8EvV67uhq0OiCMekqYsDtb6FzfYzMXT7VMHowF8HV6qLZXCGTdB/NH4nJrEh2mFtEwVdS6AmLFJAQd2kVyoMQ== + dependencies: + "@ethersproject/abi" "^5.6.3" + web3-utils "1.10.3" + web3-eth-abi@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz" @@ -22020,6 +22629,22 @@ web3-eth-abi@1.7.3: "@ethersproject/abi" "5.0.7" web3-utils "1.7.3" +web3-eth-accounts@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.10.3.tgz#9ecb816b81cd97333988bfcd0afaee5d13bbb198" + integrity sha512-8MipGgwusDVgn7NwKOmpeo3gxzzd+SmwcWeBdpXknuyDiZSQy9tXe+E9LeFGrmys/8mLLYP79n3jSbiTyv+6pQ== + dependencies: + "@ethereumjs/common" "2.6.5" + "@ethereumjs/tx" "3.5.2" + "@ethereumjs/util" "^8.1.0" + eth-lib "0.2.8" + scrypt-js "^3.0.1" + uuid "^9.0.0" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-utils "1.10.3" + web3-eth-accounts@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz" @@ -22071,6 +22696,20 @@ web3-eth-accounts@1.7.3: web3-core-method "1.7.3" web3-utils "1.7.3" +web3-eth-contract@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.10.3.tgz#8880468e2ba7d8a4791cf714f67d5e1ec1591275" + integrity sha512-Y2CW61dCCyY4IoUMD4JsEQWrILX4FJWDWC/Txx/pr3K/+fGsBGvS9kWQN5EsVXOp4g7HoFOfVh9Lf7BmVVSRmg== + dependencies: + "@types/bn.js" "^5.1.1" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-core-promievent "1.10.3" + web3-core-subscriptions "1.10.3" + web3-eth-abi "1.10.3" + web3-utils "1.10.3" + web3-eth-contract@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz" @@ -22114,6 +22753,20 @@ web3-eth-contract@1.7.3: web3-eth-abi "1.7.3" web3-utils "1.7.3" +web3-eth-ens@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.10.3.tgz#ae5b49bcb9823027e0b28aa6b1de58d726cbaafa" + integrity sha512-hR+odRDXGqKemw1GFniKBEXpjYwLgttTES+bc7BfTeoUyUZXbyDHe5ifC+h+vpzxh4oS0TnfcIoarK0Z9tFSiQ== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-promievent "1.10.3" + web3-eth-abi "1.10.3" + web3-eth-contract "1.10.3" + web3-utils "1.10.3" + web3-eth-ens@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz" @@ -22157,6 +22810,14 @@ web3-eth-ens@1.7.3: web3-eth-contract "1.7.3" web3-utils "1.7.3" +web3-eth-iban@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.10.3.tgz#91d458e5400195edc883a0d4383bf1cecd17240d" + integrity sha512-ZCfOjYKAjaX2TGI8uif5ah+J3BYFuo+47JOIV1RIz2l7kD9VfnxvRH5UiQDRyMALQC7KFd2hUqIEtHklapNyKA== + dependencies: + bn.js "^5.2.1" + web3-utils "1.10.3" + web3-eth-iban@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz" @@ -22189,6 +22850,18 @@ web3-eth-iban@1.7.3: bn.js "^4.11.9" web3-utils "1.7.3" +web3-eth-personal@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.10.3.tgz#4e72008aa211327ccc3bfa7671c510e623368457" + integrity sha512-avrQ6yWdADIvuNQcFZXmGLCEzulQa76hUOuVywN7O3cklB4nFc/Gp3yTvD3bOAaE7DhjLQfhUTCzXL7WMxVTsw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-net "1.10.3" + web3-utils "1.10.3" + web3-eth-personal@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz" @@ -22225,6 +22898,24 @@ web3-eth-personal@1.7.3: web3-net "1.7.3" web3-utils "1.7.3" +web3-eth@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.10.3.tgz#b8c6f37f1aac52422583a5a9c29130983a3fb3b1" + integrity sha512-Uk1U2qGiif2mIG8iKu23/EQJ2ksB1BQXy3wF3RvFuyxt8Ft9OEpmGlO7wOtAyJdoKzD5vcul19bJpPcWSAYZhA== + dependencies: + web3-core "1.10.3" + web3-core-helpers "1.10.3" + web3-core-method "1.10.3" + web3-core-subscriptions "1.10.3" + web3-eth-abi "1.10.3" + web3-eth-accounts "1.10.3" + web3-eth-contract "1.10.3" + web3-eth-ens "1.10.3" + web3-eth-iban "1.10.3" + web3-eth-personal "1.10.3" + web3-net "1.10.3" + web3-utils "1.10.3" + web3-eth@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz" @@ -22280,6 +22971,15 @@ web3-eth@1.7.3: web3-net "1.7.3" web3-utils "1.7.3" +web3-net@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.10.3.tgz#9486c2fe51452cb958e11915db6f90bd6caa5482" + integrity sha512-IoSr33235qVoI1vtKssPUigJU9Fc/Ph0T9CgRi15sx+itysmvtlmXMNoyd6Xrgm9LuM4CIhxz7yDzH93B79IFg== + dependencies: + web3-core "1.10.3" + web3-core-method "1.10.3" + web3-utils "1.10.3" + web3-net@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz" @@ -22333,6 +23033,16 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" +web3-providers-http@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.10.3.tgz#d8166ee89db82d37281ea9e15c5882a2d7928755" + integrity sha512-6dAgsHR3MxJ0Qyu3QLFlQEelTapVfWNTu5F45FYh8t7Y03T1/o+YAkVxsbY5AdmD+y5bXG/XPJ4q8tjL6MgZHw== + dependencies: + abortcontroller-polyfill "^1.7.5" + cross-fetch "^4.0.0" + es6-promise "^4.2.8" + web3-core-helpers "1.10.3" + web3-providers-http@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz" @@ -22365,6 +23075,14 @@ web3-providers-http@1.7.3: web3-core-helpers "1.7.3" xhr2-cookies "1.1.0" +web3-providers-ipc@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.10.3.tgz#a7e015957fc037d8a87bd4b6ae3561c1b1ad1f46" + integrity sha512-vP5WIGT8FLnGRfswTxNs9rMfS1vCbMezj/zHbBe/zB9GauBRTYVrUo2H/hVrhLg8Ut7AbsKZ+tCJ4mAwpKi2hA== + dependencies: + oboe "2.1.5" + web3-core-helpers "1.10.3" + web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz" @@ -22390,6 +23108,15 @@ web3-providers-ipc@1.7.3: oboe "2.1.5" web3-core-helpers "1.7.3" +web3-providers-ws@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.10.3.tgz#03c84958f9da251349cd26fd7a4ae567e3af6caa" + integrity sha512-/filBXRl48INxsh6AuCcsy4v5ndnTZ/p6bl67kmO9aK1wffv7CT++DrtclDtVMeDGCgB3van+hEf9xTAVXur7Q== + dependencies: + eventemitter3 "4.0.4" + web3-core-helpers "1.10.3" + websocket "^1.0.32" + web3-providers-ws@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz" @@ -22418,6 +23145,16 @@ web3-providers-ws@1.7.3: web3-core-helpers "1.7.3" websocket "^1.0.32" +web3-shh@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.10.3.tgz#ee44f760598a65a290d611c443838aac854ee858" + integrity sha512-cAZ60CPvs9azdwMSQ/PSUdyV4PEtaW5edAZhu3rCXf6XxQRliBboic+AvwUvB6j3eswY50VGa5FygfVmJ1JVng== + dependencies: + web3-core "1.10.3" + web3-core-method "1.10.3" + web3-core-subscriptions "1.10.3" + web3-net "1.10.3" + web3-shh@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz" @@ -22448,6 +23185,20 @@ web3-shh@1.7.3: web3-core-subscriptions "1.7.3" web3-net "1.7.3" +web3-utils@1.10.3, web3-utils@^1.8.1: + 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" + web3-utils@1.2.11: version "1.2.11" resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz" @@ -22555,6 +23306,19 @@ web3@1.7.3: web3-shh "1.7.3" web3-utils "1.7.3" +web3@^1.8.1: + version "1.10.3" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.10.3.tgz#5e80ac532dc432b09fde668d570b0ad4e6710897" + integrity sha512-DgUdOOqC/gTqW+VQl1EdPxrVRPB66xVNtuZ5KD4adVBtko87hkgM8BTZ0lZ8IbUfnQk6DyjcDujMiH3oszllAw== + dependencies: + web3-bzz "1.10.3" + web3-core "1.10.3" + web3-eth "1.10.3" + web3-eth-personal "1.10.3" + web3-net "1.10.3" + web3-shh "1.10.3" + web3-utils "1.10.3" + webcrypto-core@^1.7.7: version "1.7.7" resolved "https://registry.yarnpkg.com/webcrypto-core/-/webcrypto-core-1.7.7.tgz#06f24b3498463e570fed64d7cab149e5437b162c" @@ -23282,3 +24046,8 @@ zksync-web3@0.14.3: version "0.14.3" resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ== + +zksync-web3@^0.14.3: + version "0.14.4" + resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.4.tgz#0b70a7e1a9d45cc57c0971736079185746d46b1f" + integrity sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==