diff --git a/.changeset/silly-seahorses-tickle.md b/.changeset/silly-seahorses-tickle.md new file mode 100644 index 00000000..aad8d37d --- /dev/null +++ b/.changeset/silly-seahorses-tickle.md @@ -0,0 +1,30 @@ +--- +'rankify-contracts': minor +--- + +## Addition of Ethereum Distribution System (EDS) + +- **Feature**: Integrated the Ethereum Distribution System (EDS) for distributing Rankify contracts. +- **Description**: Rankify contracts are now distributed via the Ethereum Distribution System, enhancing the efficiency and security of the distribution process. + +## Redesign of Contracts + +- **Feature**: Redesigned contracts to work seamlessly as part of the Ethereum Distribution System. +- **Description**: The contracts have been restructured and optimized to ensure compatibility and smooth operation within the EDS framework. This redesign includes: + - Improved contract architecture for better integration with EDS. + - Enhanced security measures to protect against potential vulnerabilities. + - Optimized performance to handle the distribution process more efficiently. + +## Impact + +- **Users**: + - Can create new subjects that are called Meritocratic Autonomous Organizations (MAOs). + - Will benefit from a more secure and efficient distribution process. +- **Developers**: Developers will need to familiarize themselves with the new contract architecture and EDS integration. +- **Operations**: The distribution process will be streamlined, reducing the potential for errors and improving overall system reliability. + +## Next Steps + +- **Documentation**: Update the documentation to include details on the new EDS integration and contract redesign. +- **Testing**: Conduct thorough testing to ensure the new system operates as expected. +- **Deployment**: Plan and execute the deployment of the updated contracts and distribution system. diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 18bf828e..f0a3638c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,8 +1,11 @@ name: CI -on: +on: pull_request: branches: [main,staging] types: [opened, reopened, labeled, synchronize] +env: + FORK_RPC_URL: ${{ secrets.FORK_RPC_URL }} + NODE_ENV: 'TEST' jobs: lint: runs-on: ubuntu-latest @@ -22,3 +25,4 @@ jobs: - name: Running tests run: pnpm test:parallel + diff --git a/README.md b/README.md index 98ee11b7..875504ef 100644 --- a/README.md +++ b/README.md @@ -1,40 +1,111 @@ -# Rankify smart contracts -![rankToken_resize](https://github.com/rankify-it/contracts/assets/61459744/82d4496e-7e46-47ee-8f2f-2fca6d3c30b8) +### Installation -Welcome to the Rankify Smart Contracts repository. This project contains the smart contracts used for the Rankify platform. +1. Clone the repository: -## Overview + ```sh + git clone https://github.com/rankify-it/contracts.git + cd contracts + ``` -Rankify is a decentralized platform that leverages blockchain technology to provide generic, transparent and sybil resistent rating systems for various applications. The platform allows users to create and participate in rankings, and earn rewards based on their contributions. +2. Install dependencies: + ```sh + pnpm install + ``` -## Getting Started +3. Setup environment variables -To get started with Rankify smart contracts, follow the instructions below. + ```sh + mkdir .secrets + cp dev.env.sample .secrets/dev.env + vi .secrets/dev.env + ``` +4. Compile the smart contracts: -### Installation + ```sh + pnpm hardhat compile + ``` -1. Clone the repository: - ```sh - git clone https://github.com/rankify-it/contracts.git - cd contracts - ``` +5. Deploy the smart contracts: + ```sh + pnpm hardhat deploy --network --tags + ``` -2. Install dependencies: - ```sh - pnpm install - ``` +## Available Distributions + +We are using [Ethereum Distribution System](https://github.com/peeramid-labs/eds) to enable users to deploy their own infrastructure in transparent and decentralized way. + +In order to be out of box compatible with the interfaces & notifications of the Rankify platform, any deployment should should be done from the Peeramid Labs Distributor contract ([PeeramidLabsDistributor.sol](./src/distributors/PeeramidLabsDistributor.sol)). + +Specific address for distributor deployment can be found in the [deployments](./deployments) folder. + +### Meritocratic Autonomous Organization (MAO) + +[MAODistribution.sol](./src/distributions/MAODistribution.sol) is used to create a new Meritocratic Autonomous Organization (MAO). -3. Compile the smart contracts: - ```sh - pnpm hardhat compile - ``` +This deployment will create following infrastructure: -4. Deploy the smart contracts: - ```sh - pnpm hardhat deploy --network --tags - ``` +- [RankToken](./src/tokens/RankToken.sol) - ERC1155 token used to represent the ranks in the MAO. +- [Governance token](./src/tokens/DistributableGovernanceERC20.sol) - ERC20 token used to represent the governance in the MAO. +- [ACID Distribution](./src/distributions/ArguableVotingTournament.sol) - Arguable Voting Tournament contract used to distribute governance tokens. +- [Aragon OSx DAO](https://aragon.org/) - Aragon DAO used as wrapped smart account that represents the MAO. +- [Aragon Token Voting Plugin](https://github.com/aragon/token-voting-plugin) - Aragon plugin used to vote on proposals within the DAO. + +#### How to instantiate + +In order to instantiate the MAO distribution, you don't need to deploy a thing. You just need to call the `instantiate` function of the the [PeeramidLabsDistributor.sol](./src/distributors/PeeramidLabsDistributor.sol) contract and specify proper distribution Id and arguments. + +```ts +import { MAODistribution } from 'rankify-contracts/types'; +const distributorArguments: MAODistribution.DistributorArgumentsStruct = { + DAOSEttings: { + daoURI: 'https://example.com/dao', + subdomain: 'example', + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + tokenName: 'tokenName', + tokenSymbol: 'tokenSymbol', + }, + ACIDSettings: { + RankTokenContractURI: 'https://example.com/rank', + gamePrice: 1, + joinGamePrice: 1, + maxPlayersSize: 16, + maxTurns: 1, + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + minPlayersSize: 4, + paymentToken: rankify.address, + rankTokenURI: 'https://example.com/rank', + timePerTurn: 1, + timeToJoin: 1, + voteCredits: 14, + }, +}; +const data = ethers.utils.defaultAbiCoder.encode( + [ + 'tuple(tuple(string daoURI, string subdomain, bytes metadata, string tokenName, string tokenSymbol) DAOSEttings, tuple(uint256 timePerTurn, uint256 maxPlayersSize, uint256 minPlayersSize, uint256 timeToJoin, uint256 maxTurns, uint256 voteCredits, uint256 gamePrice, address paymentToken, uint256 joinGamePrice, string metadata, string rankTokenURI, string RankTokenContractURI) ACIDSettings)', + ], + [distributorArguments], +); +const distributorsDistId = process.env.DISTRIBUTOR_DIST_ID; +const tx = await distributorContract.instantiate(distributorsDistId, data); +``` + +In order to get `distributorsDistId` you can call `getDistributions` at `PeeramidLabsDistributor` contract and look for. We will host a public API to get the list of distributions soon. + +### ACID distribution + +[ArguableVotingTournament.sol](./src/distributions/ArguableVotingTournament.sol) is used to distribute governance tokens to the participants of the MAO by conducting autonomous competence identification tournaments. + +This distribution deploys the Diamond Proxy that contains the following facets: + +- [EIP712InspectorFacet](./src/facets/EIP712InspectorFacet.sol) - Facet that contains the main logic of the distribution. +- [RankifyInstanceMainFacet](./src/facets//RankifyInstanceMainFacet.sol) - Facet that contains the main logic of the distribution. +- [RankifyGameMastersFacetFacet](./src/facets/RankifyInstanceGameMastersFacet.sol) - Facet that contains the main logic of the distribution. +- [RankifyInstanceGameOwnersFacet](./src/facets/RankifyInstanceGameOwnersFacet.sol) - Facet that contains the ownable logic of the distribution. (NB this will be deprecated) +- [RankifyInstanceRequirementsFacet](./src/facets/RankifyInstanceRequirementsFacet.sol) - Facet that contains the requirements logic of the distribution. + +To understand how it works further please refer to [docs.rankify.it](https://docs.rankify.it/governance) or ask us a question in [Discord](https://discord.gg/EddGgGUuWC) ## Contributing @@ -43,4 +114,3 @@ We welcome contributions to improve the Rankify smart contracts. Please fork the ## License This project is licensed under the MIT License. - diff --git a/deploy/01_deployRankToken.ts b/deploy/01_deployRankToken.ts deleted file mode 100644 index a2b78f8c..00000000 --- a/deploy/01_deployRankToken.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { DeployFunction } from 'hardhat-deploy/types'; -import { ethers } from 'hardhat'; -import path from 'path'; -const ASSETS_PREFIX = 'https://assets.vote4best.app/'; -const contractURI = ASSETS_PREFIX + 'musicRankToken.json'; -const tURI = path.join(ASSETS_PREFIX, 'rank'); - -const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - let URI: string, ContractURI: string; - - URI = tURI; - ContractURI = contractURI; - const owner = process.env.DAO_CONTRACT_ADDRESS || deployer; - - const result = await deploy('RankToken', { - from: deployer, - args: [URI, owner, ContractURI, ethers.BigNumber.from(3), [], []], - skipIfAlreadyDeployed: true, - }); - console.log('deployed rank token at', result.address); -}; - -export default func; -func.tags = ['rank_token', 'rankify']; diff --git a/deploy/02_deployRankify.ts b/deploy/02_deployRankify.ts index c69b5e3b..f4f53396 100644 --- a/deploy/02_deployRankify.ts +++ b/deploy/02_deployRankify.ts @@ -15,4 +15,4 @@ const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { }; export default func; -func.tags = ['rankify_token', 'rankify']; +func.tags = ['rankify']; diff --git a/deploy/03_deployGame.ts b/deploy/03_deployGame.ts deleted file mode 100644 index 5c456e07..00000000 --- a/deploy/03_deployGame.ts +++ /dev/null @@ -1,115 +0,0 @@ -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { DeployFunction } from 'hardhat-deploy/types'; -import { - RANKIFY_INSTANCE_CONTRACT_NAME, - RANKIFY_INSTANCE_CONTRACT_VERSION, - RInstance_TIME_PER_TURN, - RInstance_MAX_PLAYERS, - RInstance_MIN_PLAYERS, - RInstance_MAX_TURNS, - RInstance_TIME_TO_JOIN, - RInstance_GAME_PRICE, - RInstance_JOIN_GAME_PRICE, - RInstance_NUM_WINNERS, - RInstance_VOTE_CREDITS, - RInstance_SUBJECT, -} from '../test/utils'; -import { ethers } from 'hardhat'; -import { RankifyInstanceInit } from '../types/src/initializers/RankifyInstanceInit'; -import { RankToken } from '../types/src/tokens/RankToken'; -import { RankifyDiamondInstance } from '../types/hardhat-diamond-abi/HardhatDiamondABI.sol'; -import { getProcessEnv } from '../scripts/libraries/utils'; -import { Rankify } from '../types'; -const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { - const { deployments, getNamedAccounts } = hre; - const { deploy, diamond, getOrNull } = deployments; - const { deployer, owner } = await getNamedAccounts(); - if (process.env.NODE_ENV !== 'TEST') { - if (!process.env.RANKIFY_INSTANCE_CONTRACT_VERSION || !process.env.RANKIFY_INSTANCE_CONTRACT_NAME) - throw new Error('EIP712 intializer args not set'); - } - - const rankTokenDeployment = await deployments.get('RankToken'); - const rankifyTokenDeployment = await deployments.get('Rankify'); - const rankToken = new ethers.Contract( - rankTokenDeployment.address, - rankTokenDeployment.abi, - hre.ethers.provider.getSigner(deployer), - ) as RankToken; - console.log('rankifyToken', rankifyTokenDeployment.address); - const rankifyToken = new ethers.Contract( - rankifyTokenDeployment.address, - rankifyTokenDeployment.abi, - hre.ethers.provider.getSigner(deployer), - ) as Rankify; - - if (!rankToken) throw new Error('rank token not deployed'); - - console.log('Deploying rankify instance under enviroment', process.env.NODE_ENV === 'TEST' ? 'TEST' : 'PROD'); - - const settings: RankifyInstanceInit.ContractInitializerStruct = - process.env.NODE_ENV === 'TEST' - ? { - timePerTurn: RInstance_TIME_PER_TURN, - maxTurns: RInstance_MAX_TURNS, - maxPlayersSize: RInstance_MAX_PLAYERS, - minPlayersSize: RInstance_MIN_PLAYERS, - rankTokenAddress: rankToken.address, - timeToJoin: RInstance_TIME_TO_JOIN, - gamePrice: RInstance_GAME_PRICE, - joinGamePrice: RInstance_JOIN_GAME_PRICE, - numWinners: RInstance_NUM_WINNERS, - voteCredits: RInstance_VOTE_CREDITS, - subject: RInstance_SUBJECT, - rankifyToken: rankifyToken.address, - } - : { - timePerTurn: getProcessEnv(false, 'TIME_PER_TURN'), - maxTurns: getProcessEnv(false, 'MAX_TURNS'), - maxPlayersSize: getProcessEnv(false, 'MAX_PLAYERS'), - minPlayersSize: getProcessEnv(false, 'MIN_PLAYERS'), - rankTokenAddress: rankToken.address, - timeToJoin: getProcessEnv(false, 'TIME_TO_JOIN'), - gamePrice: ethers.utils.parseEther(getProcessEnv(false, 'GAME_PRICE_ETH')), - joinGamePrice: ethers.utils.parseEther(getProcessEnv(false, 'JOIN_GAME_PRICE_ETH')), - numWinners: getProcessEnv(false, 'NUM_WINNERS'), - voteCredits: getProcessEnv(false, 'VOTE_CREDITS'), - subject: getProcessEnv(false, 'SUBJECT'), - rankifyToken: rankifyToken.address, - }; - - const deployment = await diamond.deploy('RankifyInstance', { - log: true, - from: deployer, - owner: deployer, - - facets: [ - 'RankifyInstanceMainFacet', - 'RankifyInstanceGameMastersFacet', - 'RankifyInstanceRequirementsFacet', - 'EIP712InspectorFacet', - 'RankifyInstanceInit', - 'RankifyInstanceGameOwnersFacet', - ], - execute: { - methodName: 'init', - args: [ - process.env.NODE_ENV === 'TEST' ? RANKIFY_INSTANCE_CONTRACT_NAME : process.env.RANKIFY_INSTANCE_CONTRACT_NAME, - process.env.NODE_ENV === 'TEST' - ? RANKIFY_INSTANCE_CONTRACT_VERSION - : process.env.RANKIFY_INSTANCE_CONTRACT_VERSION, - settings, - ], - }, - }); - const rankifyInstance = (await ethers.getContractAt(deployment.abi, deployment.address)) as RankifyDiamondInstance; - await rankifyInstance.connect(await hre.ethers.getSigner(deployer)).transferOwnership(owner); - const rankingInstance = await rankToken.getRankingInstance(); - if (rankingInstance !== deployment.address) { - await rankToken.updateRankingInstance(deployment.address); - } -}; - -func.tags = ['rankify_game', 'rankify']; -func.dependencies = ['rank_token', 'rankify_token']; -export default func; diff --git a/deploy/04_upgradeGame.ts b/deploy/04_upgradeGame.ts deleted file mode 100644 index cc85c105..00000000 --- a/deploy/04_upgradeGame.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { DeployFunction } from 'hardhat-deploy/types'; - -const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { - const { deployments, getNamedAccounts } = hre; - const { diamond } = deployments; - - const { owner } = await getNamedAccounts(); - - const deployment = await diamond.deploy('RankifyInstance', { - log: true, - from: owner, - owner: owner, - execute: { - methodName: 'init', - args: [], - }, - facets: [ - 'EIP712InspectorFacet', - 'RankifyInstanceMainFacet', - 'RankifyInstanceRequirementsFacet', - 'RankifyInstanceGameMastersFacet', - 'RankifyInstanceGameOwnersFacet', - 'RankifyInstanceMigration', - ], - }); -}; - -func.tags = ['upgrade_game']; -func.skip = () => Promise.resolve(process.env.NODE_ENV === 'TEST'); -export default func; diff --git a/deploy/06_deoployMultipass.ts b/deploy/06_deoployMultipass.ts index 16c33ea7..c0c692d6 100644 --- a/deploy/06_deoployMultipass.ts +++ b/deploy/06_deoployMultipass.ts @@ -6,7 +6,7 @@ import { ethers } from 'hardhat'; import { MultipassDiamond } from '../types'; const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { const { deployments, getNamedAccounts } = hre; - const { deploy, diamond } = deployments; + const { diamond } = deployments; const { deployer, owner } = await getNamedAccounts(); const deployment = await diamond.deploy('Multipass', { diff --git a/deploy/07_codeIndex.ts b/deploy/07_codeIndex.ts deleted file mode 100644 index 5c40f59b..00000000 --- a/deploy/07_codeIndex.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { HardhatRuntimeEnvironment } from 'hardhat/types'; -import { DeployFunction } from 'hardhat-deploy/types'; - - - - -const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { - const { deployments, getNamedAccounts } = hre; - const { deploy } = deployments; - - const { deployer } = await getNamedAccounts(); - const bigIntValue = BigInt('32093041992771041886105036204868453160172577249982933515490170998396430950365'); - // Convert to a hexadecimal string - const hexValue = "0x" + bigIntValue.toString(16); -// console.log(hexValue); - const result = await deploy('CodeIndex', { - deterministicDeployment: hexValue, - from: deployer, - skipIfAlreadyDeployed: true, - }); - console.log('CodeIndex deployed at', result.address); - -}; - -export default func; -func.tags = ['code_index', 'rankify']; diff --git a/deploy/distributor.ts b/deploy/distributor.ts new file mode 100644 index 00000000..641aec82 --- /dev/null +++ b/deploy/distributor.ts @@ -0,0 +1,19 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { DeployFunction } from 'hardhat-deploy/types'; + + +const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { + const { deployments, getNamedAccounts } = hre; + const { deployer, owner } = await getNamedAccounts(); + + const { deploy } = deployments; + + await deploy('PeeramidLabsDistributor', { + from: deployer, + args: [owner], + skipIfAlreadyDeployed: true, + }); +}; + +func.tags = ['distributor']; +export default func; diff --git a/deploy/mao.ts b/deploy/mao.ts new file mode 100644 index 00000000..bcce024f --- /dev/null +++ b/deploy/mao.ts @@ -0,0 +1,164 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { DeployFunction } from 'hardhat-deploy/types'; +import { ethers, hardhatArguments } from 'hardhat'; +import { LibSemver } from '../types/src/distributions/MAO.sol/MAODistribution'; +import { activeContractsList } from '@aragon/osx-ethers'; +import { CodeIndex } from '@peeramid-labs/eds/types'; +import CodeIndexAbi from '@peeramid-labs/eds/abi/src/CodeIndex.sol/CodeIndex.json'; +import { MintSettingsStruct } from '../types/src/tokens/DistributableGovernanceERC20.sol/DistributableGovernanceERC20'; +const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { + + const { deployments, getNamedAccounts } = hre; + const { deploy } = deployments; + const network: keyof typeof activeContractsList = + process.env.NODE_ENV === 'TEST' ? 'arbitrum' : (hardhatArguments.network as keyof typeof activeContractsList); + if (process.env.NODE_ENV !== 'TEST') { + console.log('network', network, process.env.NODE_ENV); + } + if (!network) throw new Error('Network not provided'); + const { deployer } = await getNamedAccounts(); + + const codeIndexContract = (await ethers.getContractAt( + CodeIndexAbi, + '0xc0D31d398c5ee86C5f8a23FA253ee8a586dA03Ce', + )) as CodeIndex; + + let _tokenVotingPluginRepo = activeContractsList[network]['token-voting-repo']; + let _daoFactory = activeContractsList[network].DAOFactory; + // let govBase = activeContractsList[network].g + let _trustedForwarder = ethers.constants.AddressZero; + let _distributionName = ethers.utils.formatBytes32String('MAO'); + let _distributionVersion: LibSemver.VersionStruct = { + major: 0, + minor: 1, + patch: 0, + }; + + const SACMDeployment = await deployments.get('SimpleAccessManager'); + const accessManagerCode = await hre.ethers.provider.getCode(SACMDeployment.address); + const accessManagerId = ethers.utils.keccak256(accessManagerCode); + + const rankTokenDeployment = await deployments.deploy('RankToken', { + from: deployer, + skipIfAlreadyDeployed: true, + args: [ + 'https://assets.vote4best.app/rank', + 'https://assets.vote4best.app/musicRankToken.json', + ethers.constants.AddressZero, + ], + }); + await codeIndexContract.register(rankTokenDeployment.address); + const rankTokenCode = await hre.ethers.provider.getCode(rankTokenDeployment.address); + const rankTokenCodeId = ethers.utils.keccak256(rankTokenCode); + + const initializerDeployment = await deploy('RankifyInstanceInit', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + await (await codeIndexContract.register(initializerDeployment.address)).wait(1); + const initializerAdr = initializerDeployment.address; + const initializerSelector = '0x00000000'; + + const distributionName = ethers.utils.formatBytes32String('ArguableVotingTournament'); + const version = { + major: 1, + minor: 0, + patch: 0, + }; + const loupeFacetDeployment = await deploy('DiamondLoupeFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + gasLimit: 8000000, + }); + + const inspectorFacetDeployment = await deploy('EIP712InspectorFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + + const RankifyMainFacetDeployment = await deploy('RankifyInstanceMainFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + + const RankifyReqsFacetDeployment = await deploy('RankifyInstanceRequirementsFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + + const RankifyGMFacetDeployment = await deploy('RankifyInstanceGameMastersFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + + const RankifyOwnerFacetDeployment = await deploy('RankifyInstanceGameOwnersFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + + const OwnershipFacetDeployment = await deploy('OwnershipFacet', { + from: deployer, + skipIfAlreadyDeployed: true, + }); + + const arguableVotingTournamentDeployment = await deploy('ArguableVotingTournament', { + from: deployer, + gasLimit: 8000000, + estimatedGasLimit: 8000000, + skipIfAlreadyDeployed: true, + args: [ + initializerAdr, + initializerSelector, + distributionName, + version, + loupeFacetDeployment.address, + inspectorFacetDeployment.address, + RankifyMainFacetDeployment.address, + RankifyReqsFacetDeployment.address, + RankifyGMFacetDeployment.address, + RankifyOwnerFacetDeployment.address, + OwnershipFacetDeployment.address, + ], + }); + await codeIndexContract.register(arguableVotingTournamentDeployment.address); + const arguableVotingTournamentCode = await hre.ethers.provider.getCode(arguableVotingTournamentDeployment.address); + const arguableVotingTournamentCodeId = ethers.utils.keccak256(arguableVotingTournamentCode); + + const mintSettings: MintSettingsStruct = { + amounts: [], + receivers: [], + }; + const govTokenDeployment = await deploy('DistributableGovernanceERC20', { + from: deployer, + skipIfAlreadyDeployed: true, + args: [ethers.constants.AddressZero, 'TokenName', 'tkn', mintSettings, ethers.constants.AddressZero], + }); + await codeIndexContract.register(govTokenDeployment.address); + const govTokenCode = await hre.ethers.provider.getCode(govTokenDeployment.address); + const govTokenCodeId = ethers.utils.keccak256(govTokenCode); + + const result = await deploy('MAODistribution', { + from: deployer, + skipIfAlreadyDeployed: true, + args: [ + _tokenVotingPluginRepo, + _daoFactory, + _trustedForwarder, + rankTokenCodeId, + arguableVotingTournamentCodeId, + accessManagerId, + govTokenCodeId, + _distributionName, + _distributionVersion, + ], + }); + await codeIndexContract.register(result.address); + const code = await hre.ethers.provider.getCode(result.address); + const codeId = ethers.utils.keccak256(code); +// console.log('MAO deployed at', result.address, 'codeId', codeId); + return; +}; + +export default func; +func.dependencies = ['sacm', 'distributor', 'rankify']; +func.tags = ['MAO']; diff --git a/deploy/sacm.ts b/deploy/sacm.ts new file mode 100644 index 00000000..880c1f7e --- /dev/null +++ b/deploy/sacm.ts @@ -0,0 +1,30 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { DeployFunction } from 'hardhat-deploy/types'; +import { ethers } from 'hardhat'; +import CodeIndexAbi from '@peeramid-labs/eds/abi/src/CodeIndex.sol/CodeIndex.json'; +import { CodeIndex } from '@peeramid-labs/eds/types'; + +const func: DeployFunction = async (hre: HardhatRuntimeEnvironment) => { + const { deployments, getNamedAccounts } = hre; + const { deploy } = deployments; + const PeeramidLabsDistributor = await deployments.get('PeeramidLabsDistributor'); + + const { deployer } = await getNamedAccounts(); + + const sacmDeployment = await deploy('SimpleAccessManager', { + from: deployer, + args: [], + skipIfAlreadyDeployed: true, + }); + + const codeIndexContract = (await ethers.getContractAt( + CodeIndexAbi, + '0xc0D31d398c5ee86C5f8a23FA253ee8a586dA03Ce', + )) as CodeIndex; + + await codeIndexContract.connect(await hre.ethers.getSigner(deployer)).register(sacmDeployment.address); +}; + +export default func; +func.dependencies = ['distributor']; +func.tags = ['sacm']; diff --git a/dev.env.sample b/dev.env.sample new file mode 100644 index 00000000..270fbc62 --- /dev/null +++ b/dev.env.sample @@ -0,0 +1 @@ +export FORK_RPC_URL="" \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 88a0ff95..184d243b 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,5 +1,4 @@ import { task } from 'hardhat/config'; -import { ethers } from 'hardhat'; import '@nomicfoundation/hardhat-chai-matchers'; import 'hardhat-diamond-abi'; import '@nomicfoundation/hardhat-toolbox'; @@ -11,6 +10,7 @@ import 'hardhat-gas-reporter'; // import fs from "fs"; import 'hardhat-contract-sizer'; import 'hardhat-deploy'; +import 'hardhat-tracer'; import 'solidity-docgen'; import './playbook/initializeDomain'; import './playbook/createGame'; @@ -98,7 +98,10 @@ export default { }, defaultPlayer: { localhost: '0xF52E5dF676f51E410c456CC34360cA6F27959420', - } + }, + }, + mocha: { + timeout: 400000, }, defaultNetwork: 'hardhat', networks: { @@ -106,6 +109,10 @@ export default { accounts: { mnemonic: 'casual vacant letter raw trend tool vacant opera buzz jaguar bridge myself', }, // ONLY LOCAL + forking: { + url: process.env.FORK_RPC_URL ?? '', + blockNumber: 257223284, // works for arbitrum, change for others + }, }, mumbai: { url: 'https://matic-mumbai.chainstacklabs.com', @@ -146,7 +153,16 @@ export default { settings: { optimizer: { enabled: true, - runs: 200000, + runs: 2000, + }, + }, + }, + { + version: '0.8.17', + settings: { + optimizer: { + enabled: true, + runs: 2000, }, }, }, diff --git a/package.json b/package.json index e9e7218c..39a62110 100644 --- a/package.json +++ b/package.json @@ -35,9 +35,8 @@ "@nomiclabs/buidler": "^1.4.8", "@nomiclabs/buidler-web3": "^1.3.4", "@nomiclabs/hardhat-ethers": "^2.0.6", - "@nomiclabs/hardhat-etherscan": "^3.1.0", - "@openzeppelin/test-helpers": "^0.5.10", - "@peeramid-labs/eds": "^1.0.0", + "@nomiclabs/hardhat-etherscan": "^3.1.8", + "@peeramid-labs/eds": "^2.0.0", "@shopify/eslint-plugin": "^43.0.0", "@solidstate/contracts": "^0.0.35", "@typechain/ethers-v5": "^11.1.2", @@ -55,11 +54,12 @@ "eth-create2-calculator": "^1.1.5", "ethers": "^5.6.6", "globals": "^15.9.0", - "hardhat": "^2.18.2", + "hardhat": "2.22.11", "hardhat-abi-exporter": "^2.9.0", "hardhat-contract-sizer": "^2.6.1", "hardhat-deploy": "^0.12.2", "hardhat-diamond-abi": "^3.0.0", + "hardhat-tracer": "^3.1.0", "keccak": "^3.0.1", "mocha": "^10.0.0", "prettier-plugin-solidity": "^1.1.3", @@ -71,10 +71,13 @@ }, "dependencies": { "@aragon/osx": "^1.3.0", + "@aragon/osx-ethers": "^1.3.0", + "@aragon/sdk-client": "^1.26.0", "@ethersproject/abi": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@openzeppelin/contracts": "^5.0.0", "@openzeppelin/contracts-upgradeable": "^5.0.0", + "@safe-global/safe-contracts": "1.4.1-build.0", "@types/chai": "^4.3.1", "@types/mocha": "^9.1.1", "@types/node": "^17.0.36", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f7f16b47..64cd4c52 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,7 +10,13 @@ importers: dependencies: '@aragon/osx': specifier: ^1.3.0 - version: 1.3.0(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 1.3.0(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@aragon/osx-ethers': + specifier: ^1.3.0 + version: 1.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@aragon/sdk-client': + specifier: ^1.26.0 + version: 1.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@ethersproject/abi': specifier: ^5.7.0 version: 5.7.0 @@ -23,9 +29,12 @@ importers: '@openzeppelin/contracts-upgradeable': specifier: ^5.0.0 version: 5.0.2(@openzeppelin/contracts@5.0.2) + '@safe-global/safe-contracts': + specifier: 1.4.1-build.0 + version: 1.4.1-build.0(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@types/chai': specifier: ^4.3.1 - version: 4.3.9 + version: 4.3.20 '@types/mocha': specifier: ^9.1.1 version: 9.1.1 @@ -40,89 +49,86 @@ importers: version: 0.3.11 hardhat-gas-reporter: specifier: ^1.0.9 - version: 1.0.9(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + version: 1.0.10(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) ts-node: specifier: ^10.9.1 - version: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) + version: 10.9.2(@types/node@17.0.45)(typescript@5.6.2) typescript: specifier: ^5.2.2 - version: 5.2.2 + version: 5.6.2 devDependencies: '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 '@changesets/cli': specifier: ^2.26.2 - version: 2.26.2 + version: 2.27.8 '@nomicfoundation/hardhat-chai-matchers': specifier: ^1.0.1 - version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-network-helpers': specifier: ^1.0.9 - version: 1.0.9(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 1.0.12(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) '@nomicfoundation/hardhat-toolbox': specifier: ^2.0.2 - version: 2.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(@typechain/hardhat@7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2)))(@types/chai@4.3.9)(@types/mocha@9.1.1)(@types/node@17.0.45)(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat-gas-reporter@1.0.9(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(solidity-coverage@0.8.5(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2) + version: 2.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-network-helpers@1.0.12(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.8(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(@typechain/hardhat@7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2)))(@types/chai@4.3.20)(@types/mocha@9.1.1)(@types/node@17.0.45)(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat-gas-reporter@1.0.10(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(solidity-coverage@0.8.13(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) '@nomiclabs/buidler': specifier: ^1.4.8 version: 1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@nomiclabs/buidler-web3': specifier: ^1.3.4 - version: 1.3.4(@nomiclabs/buidler@1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 1.3.4(@nomiclabs/buidler@1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@nomiclabs/hardhat-ethers': specifier: ^2.0.6 - version: 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) '@nomiclabs/hardhat-etherscan': - specifier: ^3.1.0 - version: 3.1.7(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - '@openzeppelin/test-helpers': - specifier: ^0.5.10 - version: 0.5.16(bn.js@5.2.1)(bufferutil@4.0.8)(utf-8-validate@5.0.10) + specifier: ^3.1.8 + version: 3.1.8(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) '@peeramid-labs/eds': - specifier: ^1.0.0 - version: 1.0.0(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + specifier: ^2.0.0 + version: 2.0.0(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) '@shopify/eslint-plugin': specifier: ^43.0.0 - version: 43.0.0(@babel/core@7.25.2)(eslint@9.6.0)(prettier@3.0.3)(typescript@5.2.2) + version: 43.0.0(@babel/core@7.25.2)(eslint@9.11.1)(prettier@2.8.8)(typescript@5.6.2) '@solidstate/contracts': specifier: ^0.0.35 version: 0.0.35 '@typechain/ethers-v5': specifier: ^11.1.2 - version: 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2) + version: 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) '@typechain/hardhat': specifier: ^7.0.0 - version: 7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2)) + version: 7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2)) '@typechain/web3-v1': specifier: ^6.0.1 - version: 6.0.7(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2)(web3-core@1.10.3)(web3-eth-contract@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + version: 6.0.7(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2)(web3-core@1.10.4)(web3-eth-contract@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@types/cli-table': specifier: ^0.3.0 - version: 0.3.3 + version: 0.3.4 '@types/crypto-js': specifier: ^4.1.1 - version: 4.1.3 + version: 4.2.2 '@types/node-fetch': specifier: ^2.6.2 - version: 2.6.7 + version: 2.6.11 '@typescript-eslint/parser': specifier: ^7.16.0 - version: 7.16.0(eslint@9.6.0)(typescript@5.2.2) + version: 7.18.0(eslint@9.11.1)(typescript@5.6.2) chai: specifier: ^4.3.6 - version: 4.3.10 + version: 4.5.0 crypto-js: specifier: ^4.1.1 - version: 4.1.1 + version: 4.2.0 eslint: specifier: ^9.6.0 - version: 9.6.0 + version: 9.11.1 eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.6.0) + version: 9.1.0(eslint@9.11.1) eslint-plugin-promise: specifier: ^6.4.0 - version: 6.4.0(eslint@9.6.0) + version: 6.6.0(eslint@9.11.1) eth-create2-calculator: specifier: ^1.1.5 version: 1.1.5(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -133,61 +139,81 @@ importers: specifier: ^15.9.0 version: 15.9.0 hardhat: - specifier: ^2.18.2 - version: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + specifier: 2.22.11 + version: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) hardhat-abi-exporter: specifier: ^2.9.0 - version: 2.10.1(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 2.10.1(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) hardhat-contract-sizer: specifier: ^2.6.1 - version: 2.10.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 2.10.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) hardhat-deploy: specifier: ^0.12.2 version: 0.12.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) hardhat-diamond-abi: specifier: ^3.0.0 - version: 3.0.1(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + version: 3.0.1(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + hardhat-tracer: + specifier: ^3.1.0 + version: 3.1.0(bufferutil@4.0.8)(chai@4.5.0)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) keccak: specifier: ^3.0.1 version: 3.0.4 mocha: specifier: ^10.0.0 - version: 10.2.0 + version: 10.7.3 prettier-plugin-solidity: specifier: ^1.1.3 - version: 1.1.3(prettier@3.0.3) + version: 1.4.1(prettier@2.8.8) solhint: specifier: ^3.6.2 - version: 3.6.2(typescript@5.2.2) + version: 3.6.2(typescript@5.6.2) solidity-coverage: specifier: ^0.8.5 - version: 0.8.5(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 0.8.13(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) solidity-docgen: specifier: ^0.6.0-beta.36 - version: 0.6.0-beta.36(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) + version: 0.6.0-beta.36(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) typechain: specifier: ^8.0.0 - version: 8.3.2(typescript@5.2.2) + version: 8.3.2(typescript@5.6.2) web3: specifier: ^1.8.2 - version: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + version: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@aragon/osx-commons-configs@0.6.0': + resolution: {integrity: sha512-wypaD0epzD+IY0GmgvYlYgJzJuvxkFW+L0nH6e1tzA1jsvgnxfln0Tk4q86xBp6sfuoybh5atKziQyXbRGLHKA==} + engines: {node: '>=16'} + + '@aragon/osx-ethers@1.2.1': + resolution: {integrity: sha512-3Fscq8C9elIktiI6OT7fR5iaAvim+ghU6IUvZF3P/phvWm9roNp/GXAROhA/Vx41NQxeqmfXokgFo6KOWt4drA==} + + '@aragon/osx-ethers@1.3.0': + resolution: {integrity: sha512-zfLAYdgZ3SSifHiyJLkBKmoDw/IEX/yzvw6liUAa/gz7HZOsrwp3JsBJaIwB2epOnGa6vhXyWTKKZ15aJvoMaA==} + + '@aragon/osx-ethers@1.3.1': + resolution: {integrity: sha512-6APDAasHrIVmJ0SxUSmWCxusVe46OF3eGZGp8MVD3j4BDJjJ+FIrrjN9ePkTpPja3X8GL6PD00l1WIzW2GZQMQ==} + '@aragon/osx@1.3.0': resolution: {integrity: sha512-ziLmnhWEoFS/uthxAYfI9tSylesMLTDe69XggKP9LK/tIOKAhyYjfAJ2mbhWZcH558c9o0gzAEErkDhqh/wdog==} - '@babel/code-frame@7.22.13': - resolution: {integrity: sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==} - engines: {node: '>=6.9.0'} + '@aragon/sdk-client-common@1.17.0': + resolution: {integrity: sha512-YZkIyI3LSyQ/Z9iV1O8gdMGHUuM36Vt6Gsc7cSurnhCE+csV1Boir4pseV+0HJStO12/e6a4EW9x1i625TY+iA==} + engines: {node: '>=16'} + + '@aragon/sdk-client@1.26.0': + resolution: {integrity: sha512-yGxPKC2xmT3WeGAf3ryoEm1Mq457Mk/FxfjjTN8bkNgJjIND1H3zaqLexmCnW1ldbo05SvOyNUztnOvUdhYv7A==} + engines: {node: '>=16'} + + '@aragon/sdk-ipfs@1.1.0': + resolution: {integrity: sha512-2uAh/QPcmaita4AfHYV93lESzAhrmGEZ6CL7pvOH86HTkU6j7LnePvD1ly+x0hxRznTb+zgVgSPPKUn0ArPycw==} + engines: {node: '>=16'} '@babel/code-frame@7.24.7': resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} @@ -241,10 +267,6 @@ packages: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.22.20': - resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -257,10 +279,6 @@ packages: resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} engines: {node: '>=6.9.0'} - '@babel/highlight@7.22.20': - resolution: {integrity: sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==} - engines: {node: '>=6.9.0'} - '@babel/highlight@7.24.7': resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} engines: {node: '>=6.9.0'} @@ -270,8 +288,8 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/runtime@7.23.2': - resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} + '@babel/runtime@7.25.6': + resolution: {integrity: sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==} engines: {node: '>=6.9.0'} '@babel/template@7.25.0': @@ -286,69 +304,57 @@ packages: resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} engines: {node: '>=6.9.0'} - '@chainsafe/as-sha256@0.3.1': - resolution: {integrity: sha512-hldFFYuf49ed7DAakWVXSJODuq3pzJEguD8tQ7h+sGkM18vja+OFoJI9krnGmgzyuZC2ETX0NOIcCTy31v2Mtg==} - - '@chainsafe/persistent-merkle-tree@0.4.2': - resolution: {integrity: sha512-lLO3ihKPngXLTus/L7WHKaw9PnNJWizlOF1H9NNzHP6Xvh82vzg9F2bzkXhYIFshMZ2gTCEz8tq6STe7r5NDfQ==} - - '@chainsafe/persistent-merkle-tree@0.5.0': - resolution: {integrity: sha512-l0V1b5clxA3iwQLXP40zYjyZYospQLZXzBVIhhr9kDg/1qHZfzzHw0jj4VPBijfYCArZDlPkRi1wZaV2POKeuw==} - - '@chainsafe/ssz@0.10.2': - resolution: {integrity: sha512-/NL3Lh8K+0q7A3LsiFq09YXS9fPE+ead2rr7vM2QK8PLzrNsw3uqrif9bpRX5UxgeRjM+vYi+boCM3+GM4ovXg==} - - '@chainsafe/ssz@0.9.4': - resolution: {integrity: sha512-77Qtg2N1ayqs4Bg/wvnWfg5Bta7iy7IRh8XqXh7oNMeP2HBbBwx8m6yTpA8p0EHItWPEBkgZd5S5/LSlp3GXuQ==} + '@changesets/apply-release-plan@7.0.5': + resolution: {integrity: sha512-1cWCk+ZshEkSVEZrm2fSj1Gz8sYvxgUL4Q78+1ZZqeqfuevPTPk033/yUZ3df8BKMohkqqHfzj0HOOrG0KtXTw==} - '@changesets/apply-release-plan@6.1.4': - resolution: {integrity: sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==} + '@changesets/assemble-release-plan@6.0.4': + resolution: {integrity: sha512-nqICnvmrwWj4w2x0fOhVj2QEGdlUuwVAwESrUo5HLzWMI1rE5SWfsr9ln+rDqWB6RQ2ZyaMZHUcU7/IRaUJS+Q==} - '@changesets/assemble-release-plan@5.2.4': - resolution: {integrity: sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==} - - '@changesets/changelog-git@0.1.14': - resolution: {integrity: sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==} + '@changesets/changelog-git@0.2.0': + resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==} '@changesets/changelog-github@0.4.8': resolution: {integrity: sha512-jR1DHibkMAb5v/8ym77E4AMNWZKB5NPzw5a5Wtqm1JepAuIF+hrKp2u04NKM14oBZhHglkCfrla9uq8ORnK/dw==} - '@changesets/cli@2.26.2': - resolution: {integrity: sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==} + '@changesets/cli@2.27.8': + resolution: {integrity: sha512-gZNyh+LdSsI82wBSHLQ3QN5J30P4uHKJ4fXgoGwQxfXwYFTJzDdvIJasZn8rYQtmKhyQuiBj4SSnLuKlxKWq4w==} hasBin: true - '@changesets/config@2.3.1': - resolution: {integrity: sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==} + '@changesets/config@3.0.3': + resolution: {integrity: sha512-vqgQZMyIcuIpw9nqFIpTSNyc/wgm/Lu1zKN5vECy74u95Qx/Wa9g27HdgO4NkVAaq+BGA8wUc/qvbvVNs93n6A==} - '@changesets/errors@0.1.4': - resolution: {integrity: sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==} + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@1.3.6': - resolution: {integrity: sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==} + '@changesets/get-dependents-graph@2.1.2': + resolution: {integrity: sha512-sgcHRkiBY9i4zWYBwlVyAjEM9sAzs4wYVwJUdnbDLnVG3QwAaia1Mk5P8M7kraTOZN+vBET7n8KyB0YXCbFRLQ==} '@changesets/get-github-info@0.5.2': resolution: {integrity: sha512-JppheLu7S114aEs157fOZDjFqUDpm7eHdq5E8SSR0gUBTEK0cNSHsrSR5a66xs0z3RWuo46QvA3vawp8BxDHvg==} - '@changesets/get-release-plan@3.0.17': - resolution: {integrity: sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==} + '@changesets/get-release-plan@4.0.4': + resolution: {integrity: sha512-SicG/S67JmPTrdcc9Vpu0wSQt7IiuN0dc8iR5VScnnTVPfIaLvKmEGRvIaF0kcn8u5ZqLbormZNTO77bCEvyWw==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} - '@changesets/get-version-range-type@0.3.2': - resolution: {integrity: sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==} + '@changesets/git@3.0.1': + resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} - '@changesets/git@2.0.0': - resolution: {integrity: sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==} + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/logger@0.0.5': - resolution: {integrity: sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==} + '@changesets/parse@0.4.0': + resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} - '@changesets/parse@0.3.16': - resolution: {integrity: sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==} + '@changesets/pre@2.0.1': + resolution: {integrity: sha512-vvBJ/If4jKM4tPz9JdY2kGOgWmCowUYOi5Ycv8dyLnEE8FgpYYUo1mgJZxcdtGGP3aG8rAQulGLyyXGSLkIMTQ==} - '@changesets/pre@1.0.14': - resolution: {integrity: sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==} + '@changesets/read@0.6.1': + resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} - '@changesets/read@0.5.9': - resolution: {integrity: sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==} + '@changesets/should-skip-package@0.1.1': + resolution: {integrity: sha512-H9LjLbF6mMHLtJIc/eHR9Na+MifJ3VxtgP/Y+XLn4BF7tDTEN1HNYtH6QMcjP1uxp9sjaFYmW8xqloaCi/ckTg==} '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} @@ -356,8 +362,11 @@ packages: '@changesets/types@5.2.1': resolution: {integrity: sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==} - '@changesets/write@0.2.3': - resolution: {integrity: sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==} + '@changesets/types@6.0.0': + resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==} + + '@changesets/write@0.3.2': + resolution: {integrity: sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -396,26 +405,34 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.9.1': - resolution: {integrity: sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA==} + '@eslint-community/regexpp@4.11.1': + resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.17.0': - resolution: {integrity: sha512-A68TBu6/1mHHuc5YJL0U0VVeGNiklLAL6rRmhTCP2B5XjWLMnrX+HkO+IAXyHvks5cyyY1jjK5ITPQ1HGS2EVA==} + '@eslint/config-array@0.18.0': + resolution: {integrity: sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.6.0': + resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/eslintrc@3.1.0': resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.6.0': - resolution: {integrity: sha512-D9B0/3vNg44ZeWbYMpBoXqNP4j6eQD5vNwIlGAuFRRzK/WtT/jvDQW3Bi9kkf3PMDMlM7Yi+73VLUsn5bJcl8A==} + '@eslint/js@9.11.1': + resolution: {integrity: sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@eslint/plugin-kit@0.2.0': + resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@ethereumjs/common@2.5.0': resolution: {integrity: sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==} @@ -527,8 +544,8 @@ packages: '@ethersproject/wordlists@5.7.0': resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} - '@fastify/busboy@2.0.0': - resolution: {integrity: sha512-JUFJad5lv7jxj926GPgymrWQxxjPYuJNiNjNMzqT+HiuP6Vl3dk5xzG+8sTX96np0ZAluvaMzPsjhHZ5rNuNQQ==} + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} engines: {node: '>=14'} '@humanwhocodes/module-importer@1.0.1': @@ -543,16 +560,16 @@ packages: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} - '@jridgewell/resolve-uri@3.1.1': - resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} '@jridgewell/set-array@1.2.1': resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} @@ -576,16 +593,20 @@ packages: '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - '@noble/curves@1.1.0': - resolution: {integrity: sha512-091oBExgENk/kGj3AZmtBDMpxQPDtxQABR2B9lb1JbVTs6ytdzZNwvhxQ4MWasRNEzlbEH8jCWFCwhF/Obj5AA==} + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} '@noble/hashes@1.2.0': resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} - '@noble/hashes@1.3.1': - resolution: {integrity: sha512-EbqwksQwz9xDRGfDST86whPBgM65E0OH/pCgqW0GBVzO22bNE+NuIbeTb714+IfSjU3aRk47EUvXIb5bTsenKA==} + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} engines: {node: '>= 16'} + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + '@noble/secp256k1@1.7.1': resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} @@ -601,48 +622,63 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@nomicfoundation/ethereumjs-block@5.0.2': - resolution: {integrity: sha512-hSe6CuHI4SsSiWWjHDIzWhSiAVpzMUcDRpWYzN0T9l8/Rz7xNn3elwVOJ/tAyS0LqL6vitUD78Uk7lQDXZun7Q==} - engines: {node: '>=14'} + '@nomicfoundation/edr-darwin-arm64@0.5.2': + resolution: {integrity: sha512-Gm4wOPKhbDjGTIRyFA2QUAPfCXA1AHxYOKt3yLSGJkQkdy9a5WW+qtqKeEKHc/+4wpJSLtsGQfpzyIzggFfo/A==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-blockchain@7.0.2': - resolution: {integrity: sha512-8UUsSXJs+MFfIIAKdh3cG16iNmWzWC/91P40sazNvrqhhdR/RtGDlFk2iFTGbBAZPs2+klZVzhRX8m2wvuvz3w==} - engines: {node: '>=14'} + '@nomicfoundation/edr-darwin-x64@0.5.2': + resolution: {integrity: sha512-ClyABq2dFCsrYEED3/UIO0c7p4H1/4vvlswFlqUyBpOkJccr75qIYvahOSJRM62WgUFRhbSS0OJXFRwc/PwmVg==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-common@4.0.2': - resolution: {integrity: sha512-I2WGP3HMGsOoycSdOTSqIaES0ughQTueOsddJ36aYVpI3SN8YSusgRFLwzDJwRFVIYDKx/iJz0sQ5kBHVgdDwg==} + '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': + resolution: {integrity: sha512-HWMTVk1iOabfvU2RvrKLDgtFjJZTC42CpHiw2h6rfpsgRqMahvIlx2jdjWYzFNy1jZKPTN1AStQ/91MRrg5KnA==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-ethash@3.0.2': - resolution: {integrity: sha512-8PfoOQCcIcO9Pylq0Buijuq/O73tmMVURK0OqdjhwqcGHYC2PwhbajDh7GZ55ekB0Px197ajK3PQhpKoiI/UPg==} - engines: {node: '>=14'} + '@nomicfoundation/edr-linux-arm64-musl@0.5.2': + resolution: {integrity: sha512-CwsQ10xFx/QAD5y3/g5alm9+jFVuhc7uYMhrZAu9UVF+KtVjeCvafj0PaVsZ8qyijjqVuVsJ8hD1x5ob7SMcGg==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-evm@2.0.2': - resolution: {integrity: sha512-rBLcUaUfANJxyOx9HIdMX6uXGin6lANCulIm/pjMgRqfiCRMZie3WKYxTSd8ZE/d+qT+zTedBF4+VHTdTSePmQ==} - engines: {node: '>=14'} + '@nomicfoundation/edr-linux-x64-gnu@0.5.2': + resolution: {integrity: sha512-CWVCEdhWJ3fmUpzWHCRnC0/VLBDbqtqTGTR6yyY1Ep3S3BOrHEAvt7h5gx85r2vLcztisu2vlDq51auie4IU1A==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-rlp@5.0.2': - resolution: {integrity: sha512-QwmemBc+MMsHJ1P1QvPl8R8p2aPvvVcKBbvHnQOKBpBztEo0omN0eaob6FeZS/e3y9NSe+mfu3nNFBHszqkjTA==} - engines: {node: '>=14'} - hasBin: true + '@nomicfoundation/edr-linux-x64-musl@0.5.2': + resolution: {integrity: sha512-+aJDfwhkddy2pP5u1ISg3IZVAm0dO836tRlDTFWtvvSMQ5hRGqPcWwlsbobhDQsIxhPJyT7phL0orCg5W3WMeA==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-statemanager@2.0.2': - resolution: {integrity: sha512-dlKy5dIXLuDubx8Z74sipciZnJTRSV/uHG48RSijhgm1V7eXYFC567xgKtsKiVZB1ViTP9iFL4B6Je0xD6X2OA==} + '@nomicfoundation/edr-win32-x64-msvc@0.5.2': + resolution: {integrity: sha512-CcvvuA3sAv7liFNPsIR/68YlH6rrybKzYttLlMr80d4GKJjwJ5OKb3YgE6FdZZnOfP19HEHhsLcE0DPLtY3r0w==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-trie@6.0.2': - resolution: {integrity: sha512-yw8vg9hBeLYk4YNg5MrSJ5H55TLOv2FSWUTROtDtTMMmDGROsAu+0tBjiNGTnKRi400M6cEzoFfa89Fc5k8NTQ==} - engines: {node: '>=14'} + '@nomicfoundation/edr@0.5.2': + resolution: {integrity: sha512-hW/iLvUQZNTVjFyX/I40rtKvvDOqUEyIi96T28YaLfmPL+3LW2lxmYLUXEJ6MI14HzqxDqrLyhf6IbjAa2r3Dw==} + engines: {node: '>= 18'} - '@nomicfoundation/ethereumjs-tx@5.0.2': - resolution: {integrity: sha512-T+l4/MmTp7VhJeNloMkM+lPU3YMUaXdcXgTGCf8+ZFvV9NYZTRLFekRwlG6/JMmVfIfbrW+dRRJ9A6H5Q/Z64g==} - engines: {node: '>=14'} + '@nomicfoundation/ethereumjs-common@4.0.4': + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} - '@nomicfoundation/ethereumjs-util@9.0.2': - resolution: {integrity: sha512-4Wu9D3LykbSBWZo8nJCnzVIYGvGCuyiYLIJa9XXNVt1q1jUzHdB+sJvx95VGCpPkCT+IbLecW6yfzy3E1bQrwQ==} - engines: {node: '>=14'} + '@nomicfoundation/ethereumjs-rlp@5.0.4': + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true - '@nomicfoundation/ethereumjs-vm@7.0.2': - resolution: {integrity: sha512-Bj3KZT64j54Tcwr7Qm/0jkeZXJMfdcAtRBedou+Hx0dPOSIgqaIr0vvLwP65TpHbak2DmAq+KJbW2KNtIoFwvA==} - engines: {node: '>=14'} + '@nomicfoundation/ethereumjs-tx@5.0.4': + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/ethereumjs-util@9.0.4': + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true '@nomicfoundation/hardhat-chai-matchers@1.0.6': resolution: {integrity: sha512-f5ZMNmabZeZegEfuxn/0kW+mm7+yV7VNDxLpMOMGXWFJ2l/Ct3QShujzDRF9cOkK9Ui/hbDeOWGZqyQALDXVCQ==} @@ -652,8 +688,8 @@ packages: ethers: ^5.0.0 hardhat: ^2.9.4 - '@nomicfoundation/hardhat-network-helpers@1.0.9': - resolution: {integrity: sha512-OXWCv0cHpwLUO2u7bFxBna6dQtCC2Gg/aN/KtJLO7gmuuA28vgmVKYFRCDUqrbjujzgfwQ2aKyZ9Y3vSmDqS7Q==} + '@nomicfoundation/hardhat-network-helpers@1.0.12': + resolution: {integrity: sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA==} peerDependencies: hardhat: ^2.9.5 @@ -680,68 +716,36 @@ packages: typechain: ^8.1.0 typescript: '>=4.5.0' - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': - resolution: {integrity: sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} + engines: {node: '>= 12'} - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': - resolution: {integrity: sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + resolution: {integrity: sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + resolution: {integrity: sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + resolution: {integrity: sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + resolution: {integrity: sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + resolution: {integrity: sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + resolution: {integrity: sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==} + engines: {node: '>= 12'} - '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': - resolution: {integrity: sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [freebsd] - - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': - resolution: {integrity: sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': - resolution: {integrity: sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': - resolution: {integrity: sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': - resolution: {integrity: sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': - resolution: {integrity: sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': - resolution: {integrity: sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': - resolution: {integrity: sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - - '@nomicfoundation/solidity-analyzer@0.1.1': - resolution: {integrity: sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==} + '@nomicfoundation/solidity-analyzer@0.1.2': + resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} engines: {node: '>= 12'} '@nomiclabs/buidler-web3@1.3.4': @@ -764,8 +768,9 @@ packages: ethers: ^5.0.0 hardhat: ^2.0.0 - '@nomiclabs/hardhat-etherscan@3.1.7': - resolution: {integrity: sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==} + '@nomiclabs/hardhat-etherscan@3.1.8': + resolution: {integrity: sha512-v5F6IzQhrsjHh6kQz4uNrym49brK9K5bYCq2zQZ729RYRaifI9hHbtmK+KkIVevfhut7huQFEQ77JLRMAzWYjQ==} + deprecated: The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead peerDependencies: hardhat: ^2.0.4 @@ -791,12 +796,12 @@ packages: web3-eth-abi: ^1.2.1 web3-utils: ^1.2.1 - '@openzeppelin/contract-loader@0.6.3': - resolution: {integrity: sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg==} - '@openzeppelin/contracts-upgradeable@4.8.1': resolution: {integrity: sha512-1wTv+20lNiC0R07jyIAbHU7TNHKRwGiTGRfiNnA8jOWjKT98g5OgLpYWOi40Vgpk8SPLA9EvfJAbAeIyVn+7Bw==} + '@openzeppelin/contracts-upgradeable@4.9.6': + resolution: {integrity: sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==} + '@openzeppelin/contracts-upgradeable@5.0.2': resolution: {integrity: sha512-0MmkHSHiW2NRFiT9/r5Lu4eJq5UJ4/tzlOgYXNAIj/ONkQTVnz22pLxDvp4C4uZ9he7ZFvGn3Driptn1/iU7tQ==} peerDependencies: @@ -805,15 +810,14 @@ packages: '@openzeppelin/contracts@4.8.1': resolution: {integrity: sha512-xQ6eUZl+RDyb/FiZe1h+U7qr/f4p/SrTSQcTPH2bjur3C5DbuW/zFgCU/b1P/xcIaEqJep+9ju4xDRi3rmChdQ==} + '@openzeppelin/contracts@4.9.6': + resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} + '@openzeppelin/contracts@5.0.2': resolution: {integrity: sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==} - '@openzeppelin/test-helpers@0.5.16': - resolution: {integrity: sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg==} - deprecated: Package no longer maintained. Consider using @nomicfoundation/hardhat-chai-matchers and @nomicfoundation/hardhat-network-helpers instead. - - '@peeramid-labs/eds@1.0.0': - resolution: {integrity: sha512-Alm/iTPlQErvv6BBXn4Tn+1dcpwMa7uDVh7KuwdAafwXp/YwKxEWKKxYvotBfS1crrcmelkk38qwW5O/t5wPwg==} + '@peeramid-labs/eds@2.0.0': + resolution: {integrity: sha512-RyB/yMuQSH4FmF4J/4LC1rFCt7/oI5GixtUAxy5nnUlDEDjDtrfb6Z24g7rEUB+8UnZ+Hev9SIrn8NMVnaA4wA==} '@pkgr/core@0.1.1': resolution: {integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==} @@ -822,20 +826,25 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@scure/base@1.1.3': - resolution: {integrity: sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==} + '@safe-global/safe-contracts@1.4.1-build.0': + resolution: {integrity: sha512-TIpoKJtMqLcLFoid0cvpxo8YTcnRUj95MHvxzwgPbJPRONOckNS6ebgGyBBRDmnpxFh34IBpPUZ7JD+z2Cfbbg==} + peerDependencies: + ethers: 5.4.0 + + '@scure/base@1.1.9': + resolution: {integrity: sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==} '@scure/bip32@1.1.5': resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} - '@scure/bip32@1.3.1': - resolution: {integrity: sha512-osvveYtyzdEVbt3OfwwXFr4P2iVBL5u1Q3q4ONBfDY/UpOuXmOlbgwc1xECEboY8wIays8Yt6onaWMUdUbfl0A==} + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} '@scure/bip39@1.1.1': resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} - '@scure/bip39@1.2.1': - resolution: {integrity: sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==} + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} '@sentry/core@5.30.0': resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} @@ -881,8 +890,11 @@ packages: '@solidity-parser/parser@0.14.5': resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} - '@solidity-parser/parser@0.16.1': - resolution: {integrity: sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==} + '@solidity-parser/parser@0.16.2': + resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} + + '@solidity-parser/parser@0.18.0': + resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} '@solidity-parser/parser@0.5.2': resolution: {integrity: sha512-uRyvnvVYmgNmTBpWDbBsH/0kPESQhQpEc4KsvMRLVzFJ1o1s0uIv0Y6Y9IB5vI1Dwz2CbS4X/y4Wyw/75cTFnQ==} @@ -901,31 +913,32 @@ packages: '@truffle/abi-utils@1.0.3': resolution: {integrity: sha512-AWhs01HCShaVKjml7Z4AbVREr/u4oiWxCcoR7Cktm0mEvtT04pvnxW5xB/cI4znRkrbPdFQlFt67kgrAjesYkw==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/blockchain-utils@0.1.9': resolution: {integrity: sha512-RHfumgbIVo68Rv9ofDYfynjnYZIfP/f1vZy4RoqkfYAO+fqfc58PDRzB1WAGq2U6GPuOnipOJxQhnqNnffORZg==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/codec@0.17.3': resolution: {integrity: sha512-Ko/+dsnntNyrJa57jUD9u4qx9nQby+H4GsUO6yjiCPSX0TQnEHK08XWqBSg0WdmCH2+h0y1nr2CXSx8gbZapxg==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/compile-common@0.9.8': resolution: {integrity: sha512-DTpiyo32t/YhLI1spn84D3MHYHrnoVqO+Gp7ZHrYNwDs86mAxtNiH5lsVzSb8cPgiqlvNsRCU9nm9R0YmKMTBQ==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/contract-schema@3.4.16': resolution: {integrity: sha512-g0WNYR/J327DqtJPI70ubS19K1Fth/1wxt2jFqLsPmz5cGZVjCwuhiie+LfBde4/Mc9QR8G+L3wtmT5cyoBxAg==} engines: {node: ^16.20 || ^18.16 || >=20} - - '@truffle/contract@4.6.31': - resolution: {integrity: sha512-s+oHDpXASnZosiCdzu+X1Tx5mUJUs1L1CYXIcgRmzMghzqJkaUFmR6NpNo7nJYliYbO+O9/aW8oCKqQ7rCHfmQ==} - engines: {node: ^16.20 || ^18.16 || >=20} deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/debug-utils@6.0.57': resolution: {integrity: sha512-Q6oI7zLaeNLB69ixjwZk2UZEWBY6b2OD1sjLMGDKBGR7GaHYiw96GLR2PFgPH1uwEeLmV4N78LYaQCrDsHbNeA==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/error@0.1.1': resolution: {integrity: sha512-sE7c9IHIGdbK4YayH4BC8i8qMjoAOeg6nUXUDZZp8wlU21/EMpaG+CLx+KqcIPyR+GSWIW3Dm0PXkr2nlggFDA==} @@ -934,16 +947,18 @@ packages: '@truffle/error@0.2.2': resolution: {integrity: sha512-TqbzJ0O8DHh34cu8gDujnYl4dUl6o2DE4PR6iokbybvnIm/L2xl6+Gv1VC+YJS45xfH83Yo3/Zyg/9Oq8/xZWg==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@truffle/interface-adapter@0.5.37': resolution: {integrity: sha512-lPH9MDgU+7sNDlJSClwyOwPCfuOimqsCx0HfGkznL3mcFRymc1pukAR1k17zn7ErHqBwJjiKAZ6Ri72KkS+IWw==} engines: {node: ^16.20 || ^18.16 || >=20} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. '@trufflesuite/chromafi@3.0.0': resolution: {integrity: sha512-oqWcOqn8nT1bwlPPfidfzS55vqcIDdpfzo3HbU9EnUmcSTX+I8z0UyUFI3tZQjByVJulbzxHxUGS3ZJPwK/GPQ==} - '@tsconfig/node10@1.0.9': - resolution: {integrity: sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==} + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} '@tsconfig/node12@1.0.11': resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} @@ -988,26 +1003,29 @@ packages: '@types/bn.js@4.11.6': resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} - '@types/bn.js@5.1.3': - resolution: {integrity: sha512-wT1B4iIO82ecXkdN6waCK8Ou7E71WU+mP1osDA5Q8c6Ur+ozU2vIKUIhSpUr6uE5L2YHocKS1Z2jG2fBC1YVeg==} + '@types/bn.js@5.1.6': + resolution: {integrity: sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==} '@types/cacheable-request@6.0.3': resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} - '@types/chai-as-promised@7.1.7': - resolution: {integrity: sha512-APucaP5rlmTRYKtRA6FE5QPP87x76ejw5t5guRJ4y5OgMnwtsvigw7HHhKZlx2MGXLeZd6R/GNZR/IqDHcbtQw==} + '@types/chai-as-promised@7.1.8': + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} - '@types/chai@4.3.9': - resolution: {integrity: sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==} + '@types/chai@4.3.20': + resolution: {integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==} - '@types/cli-table@0.3.3': - resolution: {integrity: sha512-GJPxeQ/McVnizfipKsCuJg3tEXg6GZvoFjLlohJpWHjDcSIwSAjbCJNuHDVQyrHiRiINXspzrFc/Tt9ztvZCoA==} + '@types/cli-table@0.3.4': + resolution: {integrity: sha512-GsALrTL69mlwbAw/MHF1IPTadSLZQnsxe7a80G8l4inN/iEXCOcVeT/S7aRc6hbhqzL9qZ314kHPDQnQ3ev+HA==} '@types/concat-stream@1.6.1': resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} - '@types/crypto-js@4.1.3': - resolution: {integrity: sha512-YP1sYYayLe7Eg5oXyLLvOLfxBfZ5Fgpz6sVWkpB18wDMywCLPWmqzRz+9gyuOoLF0fzDTTFwlyNbx7koONUwqA==} + '@types/crypto-js@4.2.2': + resolution: {integrity: sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ==} + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/form-data@0.0.33': resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} @@ -1015,11 +1033,8 @@ packages: '@types/glob@7.2.0': resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} - '@types/http-cache-semantics@4.0.3': - resolution: {integrity: sha512-V46MYLFp08Wf2mmaBhvgjStM3tPa+2GAdy/iqoX+noX1//zje2x4XmrIU0cAwyClATsTmahbtoQ2EwP7I5WSiA==} - - '@types/is-ci@3.0.4': - resolution: {integrity: sha512-AkCYCmwlXeuH89DagDCzvCAyltI2v9lh3U3DqSg/GrBYoReAaWwxfXCqMx9UV5MajLZ4ZFwZzV4cABGIxk2XRw==} + '@types/http-cache-semantics@4.0.4': + resolution: {integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==} '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1036,14 +1051,11 @@ packages: '@types/minimatch@5.1.2': resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} - '@types/minimist@1.2.5': - resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} - '@types/mocha@9.1.1': resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} - '@types/node-fetch@2.6.7': - resolution: {integrity: sha512-lX17GZVpJ/fuCjguZ5b3TjEbSENxmEk1B2z02yoXSK9WMEWRivhdSY73wWMn6bpcCDAOh6qAdktpKHIlkDk2lg==} + '@types/node-fetch@2.6.11': + resolution: {integrity: sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==} '@types/node@10.17.60': resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} @@ -1057,29 +1069,23 @@ packages: '@types/node@8.10.66': resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} - '@types/normalize-package-data@2.4.4': - resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - - '@types/pbkdf2@3.1.1': - resolution: {integrity: sha512-4HCoGwR3221nOc7G0Z/6KgTNGgaaFGkbGrtUJsB+zlKX2LBVjFHHIUkieMBgHHXgBH5Gq6dZHJKdBYdtlhBQvw==} + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} '@types/prettier@2.7.3': resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} - '@types/qs@6.9.9': - resolution: {integrity: sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==} - - '@types/readable-stream@2.3.15': - resolution: {integrity: sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==} + '@types/qs@6.9.16': + resolution: {integrity: sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==} - '@types/responselike@1.0.2': - resolution: {integrity: sha512-/4YQT5Kp6HxUDb4yhRkm0bJ7TbjvTddqX7PZ5hz6qV3pxSo72f/6YPRo+Mu2DU307tm9IioO69l7uAwn5XNcFA==} + '@types/responselike@1.0.3': + resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} - '@types/secp256k1@4.0.5': - resolution: {integrity: sha512-aIonTBMErtE3T9MxDvTZRzcrT/mCqpEZBw3CCY/i+oG9n57N/+7obBkhFgavUAIrX21bU0LHg1XRgtaLdelBhA==} + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} - '@types/semver@7.5.4': - resolution: {integrity: sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ==} + '@types/semver@7.5.8': + resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} '@typescript-eslint/eslint-plugin@6.21.0': resolution: {integrity: sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==} @@ -1102,8 +1108,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@7.16.0': - resolution: {integrity: sha512-ar9E+k7CU8rWi2e5ErzQiC93KKEFAXA2Kky0scAlPcxYblLt8+XZuHUZwlyfXILyQa95P6lQg+eZgh/dDs3+Vw==} + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1120,8 +1126,8 @@ packages: resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/scope-manager@7.16.0': - resolution: {integrity: sha512-8gVv3kW6n01Q6TrI1cmTZ9YMFi3ucDT7i7aI5lEikk2ebk1AEjrwX8MDTdaX5D7fPXMBLvnsaa0IFTAu+jcfOw==} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/type-utils@6.21.0': @@ -1142,8 +1148,8 @@ packages: resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/types@7.16.0': - resolution: {integrity: sha512-fecuH15Y+TzlUutvUl9Cc2XJxqdLr7+93SQIbcZfd4XRGGKoxyljK27b+kxKamjRkU7FYC6RrbSCg0ALcZn/xw==} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} '@typescript-eslint/typescript-estree@5.62.0': @@ -1164,8 +1170,8 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@7.16.0': - resolution: {integrity: sha512-a5NTvk51ZndFuOLCh5OaJBELYc2O3Zqxfl3Js78VFE1zE46J2AaVuW+rEbVkQznjkmlzWsUI15BG5tQMixzZLw==} + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -1193,10 +1199,35 @@ packages: resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} engines: {node: ^16.0.0 || >=18.0.0} - '@typescript-eslint/visitor-keys@7.16.0': - resolution: {integrity: sha512-rMo01uPy9C7XxG7AFsxa8zLnWXTF8N3PYclekWSrurvhwiw1eW88mrKiAYe6s53AUY57nTRz8dJsuuXdkAhzCg==} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} + '@web-std/blob@3.0.5': + resolution: {integrity: sha512-Lm03qr0eT3PoLBuhkvFBLf0EFkAsNz/G/AYCzpOdi483aFaVX86b4iQs0OHhzHJfN5C15q17UtDbyABjlzM96A==} + + '@web-std/fetch@4.2.1': + resolution: {integrity: sha512-M6sgHDgKegcjuVsq8J6jb/4XvhPGui8uwp3EIoADGXUnBl9vKzKLk9H9iFzrPJ6fSV6zZzFWXPyziBJp9hxzBA==} + engines: {node: ^10.17 || >=12.3} + + '@web-std/file@3.0.3': + resolution: {integrity: sha512-X7YYyvEERBbaDfJeC9lBKC5Q5lIEWYCP1SNftJNwNH/VbFhdHm+3neKOQP+kWEYJmosbDFq+NEUG7+XIvet/Jw==} + + '@web-std/form-data@3.1.0': + resolution: {integrity: sha512-WkOrB8rnc2hEK2iVhDl9TFiPMptmxJA1HaIzSdc2/qk3XS4Ny4cCt6/V36U3XmoYKz0Md2YyK2uOZecoZWPAcA==} + + '@web-std/stream@1.0.0': + resolution: {integrity: sha512-jyIbdVl+0ZJyKGTV0Ohb9E6UnxP+t7ZzX4Do3AHjZKxUXKMs9EmqnBDQgHF7bEw0EzbQygOjtt/7gvtmi//iCQ==} + + '@web-std/stream@1.0.3': + resolution: {integrity: sha512-5MIngxWyq4rQiGoDAC2WhjLuDraW8+ff2LD2et4NRY933K3gL8CHlUXrh8ZZ3dC9A9Xaub8c9sl5exOJE58D9Q==} + + '@web3-storage/multipart-parser@1.0.0': + resolution: {integrity: sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==} + + '@zxing/text-encoding@0.9.0': + resolution: {integrity: sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==} + abbrev@1.0.9: resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} @@ -1207,10 +1238,6 @@ packages: abortcontroller-polyfill@1.7.5: resolution: {integrity: sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==} - abstract-level@1.0.3: - resolution: {integrity: sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==} - engines: {node: '>=12'} - abstract-leveldown@2.6.3: resolution: {integrity: sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==} @@ -1230,24 +1257,15 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn-walk@8.2.0: - resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==} - engines: {node: '>=0.4.0'} - - acorn@8.10.0: - resolution: {integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==} + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} engines: {node: '>=0.4.0'} - hasBin: true acorn@8.12.1: resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} engines: {node: '>=0.4.0'} hasBin: true - address@1.2.2: - resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} - engines: {node: '>= 10.0.0'} - adm-zip@0.4.16: resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} engines: {node: '>=0.3.0'} @@ -1266,25 +1284,20 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} amdefine@1.0.1: resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} engines: {node: '>=0.4.2'} + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-colors@3.2.3: resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==} engines: {node: '>=6'} - ansi-colors@3.2.4: - resolution: {integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==} - engines: {node: '>=6'} - - ansi-colors@4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1317,8 +1330,8 @@ packages: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} - antlr4@4.13.1: - resolution: {integrity: sha512-kiXTspaRYvnIArgE97z5YVVf/cDVQABr3abFRR6mE7yesLMkgu4ujuyV/sgxafQ8wgve0DJQUJ38Z8tkgA2izA==} + antlr4@4.13.2: + resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} engines: {node: '>=16'} antlr4ts@0.5.0-alpha.4: @@ -1352,9 +1365,6 @@ packages: resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} engines: {node: '>=8'} - array-buffer-byte-length@1.0.0: - resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} - array-buffer-byte-length@1.0.1: resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} engines: {node: '>= 0.4'} @@ -1374,10 +1384,6 @@ packages: resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} engines: {node: '>=0.10.0'} - array.prototype.findlast@1.2.3: - resolution: {integrity: sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==} - engines: {node: '>= 0.4'} - array.prototype.findlast@1.2.5: resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} engines: {node: '>= 0.4'} @@ -1394,26 +1400,18 @@ packages: resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} engines: {node: '>= 0.4'} - array.prototype.reduce@1.0.6: - resolution: {integrity: sha512-UW+Mz8LG/sPSU8jRDCjVr6J/ZKAGpHfwrZ6kWTG5qCxIEiXdVshqGnu5vEZA8S1y6X4aCSbQZ0/EEsfvEvBiSg==} + array.prototype.reduce@1.0.7: + resolution: {integrity: sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==} engines: {node: '>= 0.4'} array.prototype.tosorted@1.1.4: resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.2: - resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} - engines: {node: '>= 0.4'} - arraybuffer.prototype.slice@1.0.3: resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} engines: {node: '>= 0.4'} - arrify@1.0.1: - resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} - engines: {node: '>=0.10.0'} - asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -1456,10 +1454,6 @@ packages: resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} engines: {node: '>= 4.0.0'} - available-typed-arrays@1.0.5: - resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} - engines: {node: '>= 0.4'} - available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -1467,8 +1461,8 @@ packages: aws-sign2@0.7.0: resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} - aws4@1.12.0: - resolution: {integrity: sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==} + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} axe-core@4.10.0: resolution: {integrity: sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==} @@ -1477,8 +1471,8 @@ packages: axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} - axios@1.5.1: - resolution: {integrity: sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==} + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -1487,8 +1481,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - base-x@3.0.9: - resolution: {integrity: sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==} + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} @@ -1507,12 +1501,8 @@ packages: resolution: {integrity: sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==} engines: {node: '>=0.6'} - big.js@6.2.1: - resolution: {integrity: sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==} - - bigint-crypto-utils@3.3.0: - resolution: {integrity: sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==} - engines: {node: '>=14.0.0'} + big.js@6.2.2: + resolution: {integrity: sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==} bignumber.js@7.2.1: resolution: {integrity: sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==} @@ -1520,8 +1510,8 @@ packages: bignumber.js@9.1.2: resolution: {integrity: sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==} - binary-extensions@2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} bl@1.2.3: @@ -1542,36 +1532,30 @@ packages: bn.js@5.2.1: resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} - body-parser@1.20.1: - resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==} - engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - - body-parser@1.20.2: - resolution: {integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==} + body-parser@1.20.3: + resolution: {integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} - braces@3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - breakword@1.0.6: - resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==} - brorand@1.1.0: resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} - browser-level@1.0.1: - resolution: {integrity: sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==} - browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} @@ -1642,9 +1626,6 @@ packages: resolution: {integrity: sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==} engines: {node: '>=8'} - call-bind@1.0.5: - resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} - call-bind@1.0.7: resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} engines: {node: '>= 0.4'} @@ -1659,10 +1640,6 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase-keys@6.2.2: - resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} - engines: {node: '>=8'} - camelcase@3.0.0: resolution: {integrity: sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==} engines: {node: '>=0.10.0'} @@ -1685,17 +1662,9 @@ packages: capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - case@1.6.3: - resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} - engines: {node: '>= 0.8.0'} - caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} - catering@2.1.1: - resolution: {integrity: sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==} - engines: {node: '>=6'} - caw@2.0.1: resolution: {integrity: sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==} engines: {node: '>=4'} @@ -1708,19 +1677,13 @@ packages: resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} engines: {node: '>=12.19'} - chai-as-promised@7.1.1: - resolution: {integrity: sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==} - peerDependencies: - chai: '>= 2.1.2 < 5' - - chai-bn@0.2.2: - resolution: {integrity: sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==} + chai-as-promised@7.1.2: + resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} peerDependencies: - bn.js: ^4.11.0 - chai: ^4.0.0 + chai: '>= 2.1.2 < 6' - chai@4.3.10: - resolution: {integrity: sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==} + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} engines: {node: '>=4'} chalk@2.4.2: @@ -1752,18 +1715,22 @@ packages: cheerio-select@2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} - cheerio@1.0.0-rc.12: - resolution: {integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==} - engines: {node: '>= 6'} + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} chokidar@3.3.0: resolution: {integrity: sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==} engines: {node: '>= 8.10.0'} - chokidar@3.5.3: - resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + chownr@1.1.4: resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} @@ -1785,20 +1752,20 @@ packages: class-is@1.1.0: resolution: {integrity: sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==} - classic-level@1.3.0: - resolution: {integrity: sha512-iwFAJQYtqRTRM0F6L8h4JCt00ZSGdOyqh7yVrhhjrOpFhmBjNlRUey64MCiyo6UmQHMJ+No3c81nujPv+n9yrg==} - engines: {node: '>=12'} - clean-stack@2.2.0: resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} engines: {node: '>=6'} + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + cli-table3@0.5.1: resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} engines: {node: '>=6'} - cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} engines: {node: 10.* || >= 12.*} cli-table@0.3.11: @@ -1811,26 +1778,15 @@ packages: cliui@5.0.0: resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - clone-response@1.0.2: resolution: {integrity: sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==} clone-response@1.0.3: resolution: {integrity: sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - code-point-at@1.1.0: resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==} engines: {node: '>=0.10.0'} @@ -1881,6 +1837,10 @@ packages: commander@3.0.2: resolution: {integrity: sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==} + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + common-tags@1.8.2: resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} engines: {node: '>=4.0.0'} @@ -1922,12 +1882,12 @@ packages: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} - core-js-pure@3.33.1: - resolution: {integrity: sha512-wCXGbLjnsP10PlK/thHSQlOLlLKNEkaWbTzVvHHZ79fZNeN1gUmw2gBlpItxPv/pvqldevEXFh/d5stdNvl6EQ==} + core-js-pure@3.38.1: + resolution: {integrity: sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==} core-util-is@1.0.2: resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} @@ -1981,8 +1941,8 @@ packages: crypto-addr-codec@0.1.8: resolution: {integrity: sha512-GqAK90iLLgP3FvhNmHbpT3wR6dEdaM8hZyZtLX29SPardh3OA13RFLHDR6sntGCgRWOfiHqW6sIyohpNqOtV/g==} - crypto-js@4.1.1: - resolution: {integrity: sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==} + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} css-select@5.1.0: resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} @@ -1991,21 +1951,9 @@ packages: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} - csv-generate@3.4.3: - resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==} - - csv-parse@4.16.3: - resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==} - - csv-stringify@5.6.5: - resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==} - - csv@5.5.3: - resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} - engines: {node: '>= 0.1.90'} - - d@1.0.1: - resolution: {integrity: sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==} + d@1.0.2: + resolution: {integrity: sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==} + engines: {node: '>=0.12'} damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -2014,6 +1962,10 @@ packages: resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} engines: {node: '>=0.10'} + data-uri-to-buffer@3.0.1: + resolution: {integrity: sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==} + engines: {node: '>= 6'} + data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -2057,8 +2009,8 @@ packages: supports-color: optional: true - debug@4.3.4: - resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} engines: {node: '>=6.0'} peerDependencies: supports-color: '*' @@ -2066,10 +2018,6 @@ packages: supports-color: optional: true - decamelize-keys@1.1.1: - resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} - engines: {node: '>=0.10.0'} - decamelize@1.2.0: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} @@ -2110,8 +2058,8 @@ packages: resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} engines: {node: '>=4'} - deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} engines: {node: '>=6'} deep-equal@2.2.3: @@ -2129,9 +2077,6 @@ packages: resolution: {integrity: sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==} engines: {node: '>=0.10.0'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - defer-to-connect@2.0.1: resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} engines: {node: '>=10'} @@ -2143,10 +2088,6 @@ packages: resolution: {integrity: sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==} engines: {node: '>=6'} - define-data-property@1.1.1: - resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} - engines: {node: '>= 0.4'} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -2180,10 +2121,6 @@ packages: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} - detect-port@1.5.1: - resolution: {integrity: sha512-aBzdj76lueB6uUst5iAs7+0H/oOjqI5D16XUWxlWMIMROhcM0rfsNVk93zTngq1dDNpoXRr++Sus7ETAExppAQ==} - hasBin: true - diff@3.5.0: resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} engines: {node: '>=0.3.1'} @@ -2192,8 +2129,8 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} - diff@5.0.0: - resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} engines: {node: '>=0.3.1'} difflib@0.2.4: @@ -2256,6 +2193,9 @@ packages: elliptic@6.5.4: resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + emoji-regex@7.0.3: resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==} @@ -2272,10 +2212,17 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + encoding-down@5.0.4: resolution: {integrity: sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==} engines: {node: '>=6'} + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} @@ -2298,10 +2245,6 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.22.3: - resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} - engines: {node: '>= 0.4'} - es-abstract@1.23.3: resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} engines: {node: '>= 0.4'} @@ -2328,10 +2271,6 @@ packages: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.2: - resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} - engines: {node: '>= 0.4'} - es-set-tostringtag@2.0.3: resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} engines: {node: '>= 0.4'} @@ -2343,8 +2282,8 @@ packages: resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} engines: {node: '>= 0.4'} - es5-ext@0.10.62: - resolution: {integrity: sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==} + es5-ext@0.10.64: + resolution: {integrity: sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==} engines: {node: '>=0.10'} es6-iterator@2.0.3: @@ -2353,12 +2292,9 @@ packages: es6-promise@4.2.8: resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==} - es6-symbol@3.1.3: - resolution: {integrity: sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==} - - escalade@3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} + es6-symbol@3.1.4: + resolution: {integrity: sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==} + engines: {node: '>=0.12'} escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} @@ -2395,8 +2331,8 @@ packages: eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - eslint-module-utils@2.11.1: - resolution: {integrity: sha512-EwcbfLOhwVMAfatfqLecR2yv3dE5+kQ8kx+Rrt0DvDXEVwW86KQ/xbMDQhtp5l42VXukD5SOF8mQQHbaNtO0CQ==} + eslint-module-utils@2.12.0: + resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -2483,8 +2419,8 @@ packages: eslint-config-prettier: optional: true - eslint-plugin-promise@6.4.0: - resolution: {integrity: sha512-/KWWRaD3fGkVCZsdR0RU53PSthFmoHVhZl+y9+6DqeDLSikLdlUVpVEAmI6iCRR5QyOjBYBqHZV/bdv4DJ4Gtw==} + eslint-plugin-promise@6.6.0: + resolution: {integrity: sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -2495,8 +2431,8 @@ packages: peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.36.1: - resolution: {integrity: sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==} + eslint-plugin-react@7.37.0: + resolution: {integrity: sha512-IHBePmfWH5lKhJnJ7WB1V+v/GolbB0rjS8XYVCSQCZKaQCAUhMoVoOEn1Ef8Z8Wf0a7l8KTJvuZg5/e4qrZ6nA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -2515,8 +2451,8 @@ packages: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} - eslint-scope@8.0.1: - resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + eslint-scope@8.0.2: + resolution: {integrity: sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint-utils@2.1.0: @@ -2539,10 +2475,19 @@ packages: resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.6.0: - resolution: {integrity: sha512-ElQkdLMEEqQNM9Njff+2Y4q2afHk7JpkPvrd7Xh7xefwgQynqPxwf55J7di9+MEibWUGdNjFF9ITG9Pck5M84w==} + eslint@9.11.1: + resolution: {integrity: sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + esniff@2.0.1: + resolution: {integrity: sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==} + engines: {node: '>=0.10'} espree@10.1.0: resolution: {integrity: sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==} @@ -2558,8 +2503,8 @@ packages: engines: {node: '>=4'} hasBin: true - esquery@1.5.0: - resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} engines: {node: '>=0.10'} esrecurse@4.3.0: @@ -2614,8 +2559,8 @@ packages: resolution: {integrity: sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==} deprecated: 'New package name format for new versions: @ethereumjs/ethash. Please update.' - ethereum-bloom-filters@1.0.10: - resolution: {integrity: sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==} + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} ethereum-cryptography@0.1.3: resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} @@ -2623,8 +2568,8 @@ packages: ethereum-cryptography@1.2.0: resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} - ethereum-cryptography@2.1.2: - resolution: {integrity: sha512-Z5Ba0T0ImZ8fqXrJbpHcbpAvIswRte2wGNR/KePnu8GbbvgJ47lMxT/ZZPG6i9Jaht4azPDop4HaM00J0J59ug==} + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} ethereum-ens@0.8.0: resolution: {integrity: sha512-a8cBTF4AWw1Q1Y37V1LSCS9pRY4Mh3f8vCg5cbXCCEJ3eno1hbI/+Ccv9SZLISYpqQhaglP3Bxb/34lS4Qf7Bg==} @@ -2668,10 +2613,6 @@ packages: ethers@5.7.2: resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} - ethjs-abi@0.2.1: - resolution: {integrity: sha512-g2AULSDYI6nEJyJaEVEXtTimRY2aPC2fi7ddSy0W+LXvEVL8Fe1y76o43ecbgdUKwZD+xsmEgX1yJr1Ia3r1IA==} - engines: {node: '>=6.5.0', npm: '>=3'} - ethjs-unit@0.1.6: resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} engines: {node: '>=6.5.0', npm: '>=3'} @@ -2680,6 +2621,9 @@ packages: resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} engines: {node: '>=6.5.0', npm: '>=3'} + event-emitter@0.3.5: + resolution: {integrity: sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==} + event-target-shim@5.0.1: resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} engines: {node: '>=6'} @@ -2690,8 +2634,8 @@ packages: evp_bytestokey@1.0.3: resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} - express@4.18.2: - resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} + express@4.21.0: + resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} engines: {node: '>= 0.10.0'} ext-list@2.2.2: @@ -2715,6 +2659,10 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + extract-files@9.0.0: + resolution: {integrity: sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==} + engines: {node: ^10.17.0 || ^12.0.0 || >= 13.7.0} + extsprintf@1.3.0: resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} engines: {'0': node >=0.6.0} @@ -2732,8 +2680,8 @@ packages: fast-diff@1.3.0: resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - fast-glob@3.3.1: - resolution: {integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==} + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} fast-json-stable-stringify@2.1.0: @@ -2742,8 +2690,11 @@ packages: fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - fastq@1.15.0: - resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + fast-uri@3.0.2: + resolution: {integrity: sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} fd-slicer@1.1.0: resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} @@ -2780,12 +2731,12 @@ packages: resolution: {integrity: sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==} engines: {node: '>=4'} - fill-range@7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} - finalhandler@1.2.0: - resolution: {integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==} + finalhandler@1.3.1: + resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} find-replace@3.0.0: @@ -2812,9 +2763,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-yarn-workspace-root2@1.2.16: - resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -2827,8 +2775,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.2.9: - resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} flow-stoplight@1.0.0: resolution: {integrity: sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA==} @@ -2836,8 +2784,8 @@ packages: fmix@0.1.0: resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} - follow-redirects@1.15.3: - resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -2862,6 +2810,10 @@ packages: resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} engines: {node: '>= 0.12'} + form-data@3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==} + engines: {node: '>= 6'} + form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} @@ -2918,7 +2870,6 @@ packages: resolution: {integrity: sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] - deprecated: '"Please update to latest v2.3 or v2.2"' fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} @@ -2952,9 +2903,6 @@ packages: get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} - get-intrinsic@1.2.2: - resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} - get-intrinsic@1.2.4: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} @@ -2983,10 +2931,6 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-symbol-description@1.0.0: - resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} - engines: {node: '>= 0.4'} - get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} @@ -3008,22 +2952,28 @@ packages: glob@5.0.15: resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + deprecated: Glob versions prior to v9 are no longer supported glob@7.1.3: resolution: {integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==} + deprecated: Glob versions prior to v9 are no longer supported glob@7.1.7: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported glob@7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported glob@8.1.0: resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} @@ -3052,8 +3002,8 @@ packages: resolution: {integrity: sha512-SmSKyLLKFbSr6rptvP8izbyxJL4ILwqO9Jg23UA0sDlGlu58V59D1//I3vlc0KJphVdUR7vMjHIplYnzBxorQA==} engines: {node: '>=18'} - globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + globalthis@1.0.4: + resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} engines: {node: '>= 0.4'} globby@10.0.2: @@ -3082,12 +3032,18 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grapheme-splitter@1.0.4: - resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==} - graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + graphql-request@4.3.0: + resolution: {integrity: sha512-2v6hQViJvSsifK606AliqiNiijb1uwWp6Re7o0RTyH+uRTv/u7Uqm2g4Fjq/LgZIzARB38RZEvVBFOQOVdlBow==} + peerDependencies: + graphql: 14 - 16 + + graphql@16.9.0: + resolution: {integrity: sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + growl@1.10.5: resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==} engines: {node: '>=4.x'} @@ -3106,10 +3062,6 @@ packages: engines: {node: '>=6'} deprecated: this library is no longer supported - hard-rejection@2.1.0: - resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} - engines: {node: '>=6'} - hardhat-abi-exporter@2.10.1: resolution: {integrity: sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==} engines: {node: '>=14.14.0'} @@ -3130,13 +3082,19 @@ packages: peerDependencies: hardhat: ^2.0.0 - hardhat-gas-reporter@1.0.9: - resolution: {integrity: sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==} + hardhat-gas-reporter@1.0.10: + resolution: {integrity: sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==} peerDependencies: hardhat: ^2.0.2 - hardhat@2.18.2: - resolution: {integrity: sha512-lUVmJg7DsKcUCDpqv57CJl6vHqo/1PeHSfM3+WIa8UtRKmXyVTj1qQK01TDiuetkZBVg9Dn52qU+ZwaJQynaKA==} + hardhat-tracer@3.1.0: + resolution: {integrity: sha512-Ip16HQAuzbqbNJUIEVfqmbPmOY90bxZSpwu5Q73cwloy+LUYA04BATUM9Gui5H7zcgsgZ1IVy7pSYn6ZMjLmag==} + peerDependencies: + chai: 4.x + hardhat: '>=2.22.5 <3.x' + + hardhat@2.22.11: + resolution: {integrity: sha512-g9xr6BGXbzj2sqG9AjHwqeUOS9v2NwLbuq7rsdjMB2RLWmYp8IFdZnzq8UewwLJisuWgiygB+dwLktjqAbRuOw==} hasBin: true peerDependencies: ts-node: '*' @@ -3162,16 +3120,9 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - has-property-descriptors@1.0.1: - resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} - has-property-descriptors@1.0.2: resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - has-proto@1.0.1: - resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} - engines: {node: '>= 0.4'} - has-proto@1.0.3: resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} engines: {node: '>= 0.4'} @@ -3186,10 +3137,6 @@ packages: has-to-string-tag-x@1.4.1: resolution: {integrity: sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==} - has-tostringtag@1.0.0: - resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} - engines: {node: '>= 0.4'} - has-tostringtag@1.0.2: resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} engines: {node: '>= 0.4'} @@ -3207,10 +3154,6 @@ packages: hash.js@1.1.7: resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} - hasown@2.0.0: - resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} - engines: {node: '>= 0.4'} - hasown@2.0.2: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} @@ -3240,8 +3183,8 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} - htmlparser2@8.0.2: - resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} http-basic@8.1.3: resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} @@ -3271,8 +3214,8 @@ packages: resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} engines: {node: '>=10.19.0'} - http2-wrapper@2.2.0: - resolution: {integrity: sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==} + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} https-proxy-agent@5.0.1: @@ -3286,6 +3229,10 @@ packages: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + idna-uts46-hx@2.3.1: resolution: {integrity: sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==} engines: {node: '>=4.0.0'} @@ -3293,8 +3240,8 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.2.4: - resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} immediate@3.2.3: @@ -3303,8 +3250,8 @@ packages: immediate@3.3.0: resolution: {integrity: sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==} - immutable@4.3.4: - resolution: {integrity: sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==} + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -3324,6 +3271,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -3331,10 +3279,6 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - internal-slot@1.0.6: - resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} - engines: {node: '>= 0.4'} - internal-slot@1.0.7: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} @@ -3362,9 +3306,6 @@ packages: resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==} engines: {node: '>= 0.4'} - is-array-buffer@3.0.2: - resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} - is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -3395,13 +3336,6 @@ packages: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} - is-ci@3.0.1: - resolution: {integrity: sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==} - hasBin: true - - is-core-module@2.13.1: - resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} - is-core-module@2.15.1: resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} engines: {node: '>= 0.4'} @@ -3462,10 +3396,6 @@ packages: is-natural-number@4.0.1: resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} - is-negative-zero@2.0.2: - resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} - engines: {node: '>= 0.4'} - is-negative-zero@2.0.3: resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} engines: {node: '>= 0.4'} @@ -3509,9 +3439,6 @@ packages: resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} engines: {node: '>= 0.4'} - is-shared-array-buffer@1.0.2: - resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} - is-shared-array-buffer@1.0.3: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} @@ -3532,10 +3459,6 @@ packages: resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} engines: {node: '>= 0.4'} - is-typed-array@1.1.12: - resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} - engines: {node: '>= 0.4'} - is-typed-array@1.1.13: resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} engines: {node: '>= 0.4'} @@ -3580,6 +3503,9 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + isstream@0.1.2: resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} @@ -3590,12 +3516,6 @@ packages: iterator.prototype@1.1.2: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - js-sdsl@4.4.2: - resolution: {integrity: sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==} - - js-sha3@0.5.5: - resolution: {integrity: sha512-yLLwn44IVeunwjpDVTDZmQeVbB0h+dZpY2eO68B/Zik8hu6dH+rKeLxwua79GGIvW6xr8NBAcrtiUbYrTjEFTA==} - js-sha3@0.5.7: resolution: {integrity: sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==} @@ -3646,6 +3566,10 @@ packages: json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-stream-stringify@3.1.4: + resolution: {integrity: sha512-oGoz05ft577LolnXFQHD2CjnXDxXVA5b8lHwfEZgRXQUZeCMo6sObQQRq+NXuHQ3oTeMZHHmmPY2rjVwyqR62A==} + engines: {node: '>=7.10.1'} + json-stringify-safe@5.0.1: resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} @@ -3695,10 +3619,6 @@ packages: klaw@1.3.1: resolution: {integrity: sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==} - kleur@4.1.5: - resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} - engines: {node: '>=6'} - language-subtag-registry@0.3.23: resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} @@ -3739,14 +3659,6 @@ packages: resolution: {integrity: sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==} engines: {node: '>=6'} - level-supports@4.0.1: - resolution: {integrity: sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==} - engines: {node: '>=12'} - - level-transcoder@1.0.1: - resolution: {integrity: sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==} - engines: {node: '>=12'} - level-ws@0.0.0: resolution: {integrity: sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==} @@ -3754,10 +3666,6 @@ packages: resolution: {integrity: sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==} engines: {node: '>=6'} - level@8.0.0: - resolution: {integrity: sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==} - engines: {node: '>=12'} - levelup@1.3.9: resolution: {integrity: sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==} @@ -3780,10 +3688,6 @@ packages: resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==} engines: {node: '>=0.10.0'} - load-yaml-file@0.2.0: - resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} - engines: {node: '>=6'} - locate-path@2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} @@ -3806,9 +3710,6 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash.flatten@4.4.0: - resolution: {integrity: sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==} - lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} @@ -3867,10 +3768,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - lru_map@0.3.3: resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} @@ -3884,24 +3781,12 @@ packages: make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - map-obj@1.0.1: - resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} - engines: {node: '>=0.10.0'} - - map-obj@4.3.0: - resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} - engines: {node: '>=8'} - markdown-table@1.1.3: resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} match-all@1.2.6: resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} - mcl-wasm@0.7.9: - resolution: {integrity: sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==} - engines: {node: '>=8.9.0'} - md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} @@ -3916,20 +3801,12 @@ packages: resolution: {integrity: sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==} engines: {node: '>=6'} - memory-level@1.0.0: - resolution: {integrity: sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==} - engines: {node: '>=12'} - memorystream@0.3.1: resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} engines: {node: '>= 0.10.0'} - meow@6.1.1: - resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} - engines: {node: '>=8'} - - merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + merge-descriptors@1.0.3: + resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} @@ -3948,8 +3825,8 @@ packages: micro-ftch@0.3.1: resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} - micromatch@4.0.5: - resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} miller-rabin@4.0.1: @@ -3960,6 +3837,10 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.53.0: + resolution: {integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} @@ -3980,10 +3861,6 @@ packages: min-document@2.19.0: resolution: {integrity: sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==} - min-indent@1.0.1: - resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} - engines: {node: '>=4'} - minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -3996,10 +3873,6 @@ packages: minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} - minimatch@5.0.1: - resolution: {integrity: sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==} - engines: {node: '>=10'} - minimatch@5.1.6: resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} engines: {node: '>=10'} @@ -4012,10 +3885,6 @@ packages: resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} engines: {node: '>=16 || 14 >=14.17'} - minimist-options@4.1.0: - resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} - engines: {node: '>= 6'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4025,10 +3894,6 @@ packages: minizlib@1.3.3: resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==} - mixme@0.5.10: - resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==} - engines: {node: '>= 8.0.0'} - mkdirp-promise@5.0.1: resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==} engines: {node: '>=4'} @@ -4055,8 +3920,8 @@ packages: mnemonist@0.38.5: resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} - mocha@10.2.0: - resolution: {integrity: sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==} + mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} engines: {node: '>= 14.0.0'} hasBin: true @@ -4068,8 +3933,12 @@ packages: mock-fs@4.14.0: resolution: {integrity: sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==} - module-error@1.0.2: - resolution: {integrity: sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==} + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + mrmime@1.0.1: + resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} engines: {node: '>=10'} ms@2.0.0: @@ -4078,9 +3947,6 @@ packages: ms@2.1.1: resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - ms@2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -4112,14 +3978,6 @@ packages: nano-json-stream-parser@0.1.2: resolution: {integrity: sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==} - nanoid@3.3.3: - resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - napi-macros@2.2.2: - resolution: {integrity: sha512-hmEVtAGYzVQpCKdbQea4skABsdXW4RUh5t5mJ2zzqowJS2OyXZTU1KhDVFhx+NlWZ4ap9mqR9TcDO3LTTttd+g==} - natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4157,8 +4015,8 @@ packages: encoding: optional: true - node-gyp-build@4.6.1: - resolution: {integrity: sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==} + node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} hasBin: true node-releases@2.0.18: @@ -4213,8 +4071,9 @@ packages: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} object-is@1.1.6: resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} @@ -4231,10 +4090,6 @@ packages: resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==} engines: {node: '>= 0.4'} - object.assign@4.1.4: - resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} - engines: {node: '>= 0.4'} - object.assign@4.1.5: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} @@ -4247,8 +4102,8 @@ packages: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} - object.getownpropertydescriptors@2.1.7: - resolution: {integrity: sha512-PrJz0C2xJ58FNn11XV2lr4Jt5Gzl94qpy9Lu0JlfEj14z88sqbSBJCBEzdlNUCzY2gburhbrwOZ5BHCmuNUy0g==} + object.getownpropertydescriptors@2.1.8: + resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==} engines: {node: '>= 0.8'} object.groupby@1.0.3: @@ -4276,8 +4131,8 @@ packages: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ordinal@1.0.3: @@ -4370,6 +4225,9 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-manager-detector@0.2.0: + resolution: {integrity: sha512-E385OSk9qDcXhcM9LNSe4sdhx8a9mAPrZ4sMLW+tmxl5ZuGtPUcdFu+MPP2jbgiWAZ6Pfe5soGFMd+0Db5Vrog==} + pako@1.0.11: resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} @@ -4400,6 +4258,9 @@ packages: parse5-htmlparser2-tree-adapter@7.0.0: resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -4449,8 +4310,8 @@ packages: resolution: {integrity: sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==} engines: {node: '>=8'} - path-to-regexp@0.1.7: - resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==} + path-to-regexp@0.1.10: + resolution: {integrity: sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==} path-type@1.1.0: resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==} @@ -4500,10 +4361,6 @@ packages: resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} engines: {node: '>=0.10.0'} - pkg-dir@4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - pkg-dir@5.0.0: resolution: {integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==} engines: {node: '>=10'} @@ -4516,10 +4373,6 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - preferred-pm@3.1.2: - resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} - engines: {node: '>=10'} - prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} engines: {node: '>= 0.8.0'} @@ -4536,22 +4389,17 @@ packages: resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} engines: {node: '>=6.0.0'} - prettier-plugin-solidity@1.1.3: - resolution: {integrity: sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==} - engines: {node: '>=12'} + prettier-plugin-solidity@1.4.1: + resolution: {integrity: sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==} + engines: {node: '>=16'} peerDependencies: - prettier: '>=2.3.0 || >=3.0.0-alpha.0' + prettier: '>=2.3.0' prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} hasBin: true - prettier@3.0.3: - resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} - engines: {node: '>=14'} - hasBin: true - process-nextick-args@2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} @@ -4565,6 +4413,9 @@ packages: prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} + property-expr@2.0.6: + resolution: {integrity: sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -4584,26 +4435,22 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} - pump@3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + pump@3.0.2: + resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} punycode@2.1.0: resolution: {integrity: sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==} engines: {node: '>=6'} - punycode@2.3.0: - resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} pure-rand@5.0.5: resolution: {integrity: sha512-BwQpbqxSCBJVpamI6ydzcKqyFmnd5msMWUGvzXLm1aXvusbbgkbOto/EUPM00hjveJEaJtdbhUjKSzWRhQVkaw==} - qs@6.11.0: - resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==} - engines: {node: '>=0.6'} - - qs@6.11.2: - resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} engines: {node: '>=0.6'} qs@6.5.3: @@ -4617,10 +4464,6 @@ packages: queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - quick-lru@4.0.1: - resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} - engines: {node: '>=8'} - quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -4632,10 +4475,6 @@ packages: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} - raw-body@2.5.1: - resolution: {integrity: sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==} - engines: {node: '>= 0.8'} - raw-body@2.5.2: resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} engines: {node: '>= 0.8'} @@ -4647,18 +4486,10 @@ packages: resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==} engines: {node: '>=0.10.0'} - read-pkg-up@7.0.1: - resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} - engines: {node: '>=8'} - read-pkg@1.1.0: resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==} engines: {node: '>=0.10.0'} - read-pkg@5.2.0: - resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} - engines: {node: '>=8'} - read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} @@ -4684,6 +4515,10 @@ packages: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + readdirp@4.0.1: + resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==} + engines: {node: '>= 14.16.0'} + rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} engines: {node: '>= 0.10'} @@ -4692,10 +4527,6 @@ packages: resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} engines: {node: '>=6.0.0'} - redent@3.0.0: - resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} - engines: {node: '>=8'} - reduce-flatten@2.0.0: resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} engines: {node: '>=6'} @@ -4704,12 +4535,8 @@ packages: resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} - regenerator-runtime@0.14.0: - resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} - - regexp.prototype.flags@1.5.1: - resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} - engines: {node: '>= 0.4'} + regenerator-runtime@0.14.1: + resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} regexp.prototype.flags@1.5.2: resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} @@ -4791,6 +4618,7 @@ packages: rimraf@2.7.1: resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true ripemd160-min@0.0.6: @@ -4804,19 +4632,12 @@ packages: resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} hasBin: true - run-parallel-limit@1.1.0: - resolution: {integrity: sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} rustbn.js@0.2.0: resolution: {integrity: sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==} - safe-array-concat@1.0.1: - resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} - engines: {node: '>=0.4'} - safe-array-concat@1.1.2: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} @@ -4827,9 +4648,6 @@ packages: safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - safe-regex-test@1.0.0: - resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} - safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} @@ -4871,18 +4689,13 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.5.4: - resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.6.2: - resolution: {integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==} + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} engines: {node: '>=10'} hasBin: true - send@0.18.0: - resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} + send@0.19.0: + resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==} engines: {node: '>= 0.8.0'} sentence-case@2.1.1: @@ -4891,11 +4704,11 @@ packages: sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - serialize-javascript@6.0.0: - resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.15.0: - resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} + serve-static@1.16.2: + resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} servify@0.1.12: @@ -4905,18 +4718,10 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.1.1: - resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} - engines: {node: '>= 0.4'} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} - set-function-name@2.0.1: - resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} - engines: {node: '>= 0.4'} - set-function-name@2.0.2: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} @@ -4961,9 +4766,6 @@ packages: engines: {node: '>=4'} hasBin: true - side-channel@1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} @@ -4985,11 +4787,6 @@ packages: resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} engines: {node: '>=10'} - smartwrap@2.0.2: - resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} - engines: {node: '>=6'} - hasBin: true - snake-case@2.1.0: resolution: {integrity: sha512-FMR5YoPFwOLuh4rRz92dywJjyKYZNLpMn1R5ujVpIYkbA9p01fq8RMg0FkO4M+Yobt4MjHeLTJVm5xFFBHSV2Q==} @@ -5005,23 +4802,20 @@ packages: engines: {node: '>=8.0.0'} hasBin: true - solc@0.7.3: - resolution: {integrity: sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==} - engines: {node: '>=8.0.0'} + solc@0.8.26: + resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} + engines: {node: '>=10.0.0'} hasBin: true solhint@3.6.2: resolution: {integrity: sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==} hasBin: true - solidity-ast@0.4.52: - resolution: {integrity: sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==} + solidity-ast@0.4.59: + resolution: {integrity: sha512-I+CX0wrYUN9jDfYtcgWSe+OAowaXy8/1YQy7NS4ni5IBDmIYBq7ZzaP/7QqouLjzZapmQtvGLqCaYgoUWqBo5g==} - solidity-comments-extractor@0.0.7: - resolution: {integrity: sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==} - - solidity-coverage@0.8.5: - resolution: {integrity: sha512-6C6N6OV2O8FQA0FWA95FdzVH+L16HU94iFgg5wAFZ29UpLFkgNI/DRR2HotG1bC0F4gAc/OMs2BJI44Q/DYlKQ==} + solidity-coverage@0.8.13: + resolution: {integrity: sha512-RiBoI+kF94V3Rv0+iwOj3HQVSqNzA9qm/qDP1ZDXK5IX0Cvho1qiz8hAXTsAo6KOIUeP73jfscq0KlLqVxzGWA==} hasBin: true peerDependencies: hardhat: ^2.11.0 @@ -5060,14 +4854,14 @@ packages: spdx-correct@3.2.0: resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} - spdx-exceptions@2.3.0: - resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-license-ids@3.0.16: - resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -5089,9 +4883,6 @@ packages: resolution: {integrity: sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==} engines: {node: '>= 0.4'} - stream-transform@2.1.3: - resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==} - strict-uri-encode@1.1.0: resolution: {integrity: sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==} engines: {node: '>=0.10.0'} @@ -5125,23 +4916,13 @@ packages: string.prototype.repeat@1.0.0: resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - string.prototype.trim@1.2.8: - resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} - engines: {node: '>= 0.4'} - string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} - string.prototype.trimend@1.0.7: - resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} - string.prototype.trimend@1.0.8: resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} - string.prototype.trimstart@1.0.8: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} @@ -5190,10 +4971,6 @@ packages: resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==} engines: {node: '>=4'} - strip-indent@3.0.0: - resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} - engines: {node: '>=8'} - strip-json-comments@2.0.1: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} @@ -5251,8 +5028,8 @@ packages: resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} engines: {node: '>=8.0.0'} - table@6.8.1: - resolution: {integrity: sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==} + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} engines: {node: '>=10.0.0'} tar-stream@1.6.2: @@ -5285,6 +5062,9 @@ packages: resolution: {integrity: sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==} engines: {node: '>=0.10.0'} + tiny-case@1.0.3: + resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} + title-case@2.1.1: resolution: {integrity: sha512-EkJoZ2O3zdCz3zJsYCsxyq2OC5hrxR9mfdd5I+w8h/tmFfeOxJ+vvkxsKxdmN0WtS9zLdHEgfgVOiMVgv+Po4Q==} @@ -5307,6 +5087,9 @@ packages: resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} engines: {node: '>=0.6'} + toposort@2.0.2: + resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} + tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -5314,10 +5097,6 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - trim-newlines@3.0.1: - resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} - engines: {node: '>=8'} - trim-repeated@1.0.0: resolution: {integrity: sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==} engines: {node: '>=0.10.0'} @@ -5340,8 +5119,8 @@ packages: peerDependencies: typescript: '>=3.7.0' - ts-node@10.9.1: - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -5372,11 +5151,6 @@ packages: peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - tty-table@4.2.3: - resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} - engines: {node: '>=8.0.0'} - hasBin: true - tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -5397,39 +5171,32 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} engines: {node: '>=4'} - type-fest@0.13.1: - resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} engines: {node: '>=10'} type-fest@0.21.3: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} - type-fest@0.6.0: - resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} - engines: {node: '>=8'} - type-fest@0.7.1: resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} engines: {node: '>=8'} - type-fest@0.8.1: - resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} - engines: {node: '>=8'} + type-fest@2.19.0: + resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} + engines: {node: '>=12.20'} type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} - type@1.2.0: - resolution: {integrity: sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==} - - type@2.7.2: - resolution: {integrity: sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==} + type@2.7.3: + resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} typechain@8.3.2: resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} @@ -5437,33 +5204,18 @@ packages: peerDependencies: typescript: '>=4.3.0' - typed-array-buffer@1.0.0: - resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} - engines: {node: '>= 0.4'} - typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.0: - resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} - engines: {node: '>= 0.4'} - typed-array-byte-length@1.0.1: resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.0: - resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} - engines: {node: '>= 0.4'} - typed-array-byte-offset@1.0.2: resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} engines: {node: '>= 0.4'} - typed-array-length@1.0.4: - resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} - typed-array-length@1.0.6: resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} @@ -5474,8 +5226,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript@5.2.2: - resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} engines: {node: '>=14.17'} hasBin: true @@ -5487,8 +5239,8 @@ packages: resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} engines: {node: '>=8'} - uglify-js@3.17.4: - resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} engines: {node: '>=0.8.0'} hasBin: true @@ -5501,27 +5253,34 @@ packages: unbzip2-stream@1.4.3: resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} - underscore@1.13.6: - resolution: {integrity: sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==} + underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} - undici@5.26.4: - resolution: {integrity: sha512-OG+QOf0fTLtazL9P9X7yqWxQ+Z0395Wk6DSkyTxtaq3wQEjIroVe7Y4asCX/vcCxYpNGMnwz8F0qbRYUoaQVMw==} + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} + undici@6.19.8: + resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + engines: {node: '>=18.17'} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} - universalify@2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} - update-browserslist-db@1.1.0: - resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + update-browserslist-db@1.1.1: + resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -5606,184 +5365,196 @@ packages: resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} engines: {'0': node >=0.6.0} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-encoding@1.1.5: + resolution: {integrity: sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==} + + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} web3-bzz@1.10.0: resolution: {integrity: sha512-o9IR59io3pDUsXTsps5pO5hW1D5zBmg46iNc2t4j2DkaYHNdDLwk2IP9ukoM2wg47QILfPEJYzhTfkS/CcX0KA==} engines: {node: '>=8.0.0'} - web3-bzz@1.10.3: - resolution: {integrity: sha512-XDIRsTwekdBXtFytMpHBuun4cK4x0ZMIDXSoo1UVYp+oMyZj07c7gf7tNQY5qZ/sN+CJIas4ilhN25VJcjSijQ==} + web3-bzz@1.10.4: + resolution: {integrity: sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==} engines: {node: '>=8.0.0'} web3-core-helpers@1.10.0: resolution: {integrity: sha512-pIxAzFDS5vnbXvfvLSpaA1tfRykAe9adw43YCKsEYQwH0gCLL0kMLkaCX3q+Q8EVmAh+e1jWL/nl9U0de1+++g==} engines: {node: '>=8.0.0'} - web3-core-helpers@1.10.3: - resolution: {integrity: sha512-Yv7dQC3B9ipOc5sWm3VAz1ys70Izfzb8n9rSiQYIPjpqtJM+3V4EeK6ghzNR6CO2es0+Yu9CtCkw0h8gQhrTxA==} + web3-core-helpers@1.10.4: + resolution: {integrity: sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==} engines: {node: '>=8.0.0'} web3-core-method@1.10.0: resolution: {integrity: sha512-4R700jTLAMKDMhQ+nsVfIXvH6IGJlJzGisIfMKWAIswH31h5AZz7uDUW2YctI+HrYd+5uOAlS4OJeeT9bIpvkA==} engines: {node: '>=8.0.0'} - web3-core-method@1.10.3: - resolution: {integrity: sha512-VZ/Dmml4NBmb0ep5PTSg9oqKoBtG0/YoMPei/bq/tUdlhB2dMB79sbeJPwx592uaV0Vpk7VltrrrBv5hTM1y4Q==} + web3-core-method@1.10.4: + resolution: {integrity: sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==} engines: {node: '>=8.0.0'} web3-core-promievent@1.10.0: resolution: {integrity: sha512-68N7k5LWL5R38xRaKFrTFT2pm2jBNFaM4GioS00YjAKXRQ3KjmhijOMG3TICz6Aa5+6GDWYelDNx21YAeZ4YTg==} engines: {node: '>=8.0.0'} - web3-core-promievent@1.10.3: - resolution: {integrity: sha512-HgjY+TkuLm5uTwUtaAfkTgRx/NzMxvVradCi02gy17NxDVdg/p6svBHcp037vcNpkuGeFznFJgULP+s2hdVgUQ==} + web3-core-promievent@1.10.4: + resolution: {integrity: sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==} engines: {node: '>=8.0.0'} web3-core-requestmanager@1.10.0: resolution: {integrity: sha512-3z/JKE++Os62APml4dvBM+GAuId4h3L9ckUrj7ebEtS2AR0ixyQPbrBodgL91Sv7j7cQ3Y+hllaluqjguxvSaQ==} engines: {node: '>=8.0.0'} - web3-core-requestmanager@1.10.3: - resolution: {integrity: sha512-VT9sKJfgM2yBOIxOXeXiDuFMP4pxzF6FT+y8KTLqhDFHkbG3XRe42Vm97mB/IvLQCJOmokEjl3ps8yP1kbggyw==} + web3-core-requestmanager@1.10.4: + resolution: {integrity: sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==} engines: {node: '>=8.0.0'} web3-core-subscriptions@1.10.0: resolution: {integrity: sha512-HGm1PbDqsxejI075gxBc5OSkwymilRWZufIy9zEpnWKNmfbuv5FfHgW1/chtJP6aP3Uq2vHkvTDl3smQBb8l+g==} engines: {node: '>=8.0.0'} - web3-core-subscriptions@1.10.3: - resolution: {integrity: sha512-KW0Mc8sgn70WadZu7RjQ4H5sNDJ5Lx8JMI3BWos+f2rW0foegOCyWhRu33W1s6ntXnqeBUw5rRCXZRlA3z+HNA==} + web3-core-subscriptions@1.10.4: + resolution: {integrity: sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==} engines: {node: '>=8.0.0'} web3-core@1.10.0: resolution: {integrity: sha512-fWySwqy2hn3TL89w5TM8wXF1Z2Q6frQTKHWmP0ppRQorEK8NcHJRfeMiv/mQlSKoTS1F6n/nv2uyZsixFycjYQ==} engines: {node: '>=8.0.0'} - web3-core@1.10.3: - resolution: {integrity: sha512-Vbk0/vUNZxJlz3RFjAhNNt7qTpX8yE3dn3uFxfX5OHbuon5u65YEOd3civ/aQNW745N0vGUlHFNxxmn+sG9DIw==} + web3-core@1.10.4: + resolution: {integrity: sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==} engines: {node: '>=8.0.0'} web3-eth-abi@1.10.0: resolution: {integrity: sha512-cwS+qRBWpJ43aI9L3JS88QYPfFcSJJ3XapxOQ4j40v6mk7ATpA8CVK1vGTzpihNlOfMVRBkR95oAj7oL6aiDOg==} engines: {node: '>=8.0.0'} - web3-eth-abi@1.10.3: - resolution: {integrity: sha512-O8EvV67uhq0OiCMekqYsDtb6FzfYzMXT7VMHowF8HV6qLZXCGTdB/NH4nJrEh2mFtEwVdS6AmLFJAQd2kVyoMQ==} + web3-eth-abi@1.10.4: + resolution: {integrity: sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==} engines: {node: '>=8.0.0'} web3-eth-accounts@1.10.0: resolution: {integrity: sha512-wiq39Uc3mOI8rw24wE2n15hboLE0E9BsQLdlmsL4Zua9diDS6B5abXG0XhFcoNsXIGMWXVZz4TOq3u4EdpXF/Q==} engines: {node: '>=8.0.0'} - web3-eth-accounts@1.10.3: - resolution: {integrity: sha512-8MipGgwusDVgn7NwKOmpeo3gxzzd+SmwcWeBdpXknuyDiZSQy9tXe+E9LeFGrmys/8mLLYP79n3jSbiTyv+6pQ==} + web3-eth-accounts@1.10.4: + resolution: {integrity: sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==} engines: {node: '>=8.0.0'} web3-eth-contract@1.10.0: resolution: {integrity: sha512-MIC5FOzP/+2evDksQQ/dpcXhSqa/2hFNytdl/x61IeWxhh6vlFeSjq0YVTAyIzdjwnL7nEmZpjfI6y6/Ufhy7w==} engines: {node: '>=8.0.0'} - web3-eth-contract@1.10.3: - resolution: {integrity: sha512-Y2CW61dCCyY4IoUMD4JsEQWrILX4FJWDWC/Txx/pr3K/+fGsBGvS9kWQN5EsVXOp4g7HoFOfVh9Lf7BmVVSRmg==} + web3-eth-contract@1.10.4: + resolution: {integrity: sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==} engines: {node: '>=8.0.0'} web3-eth-ens@1.10.0: resolution: {integrity: sha512-3hpGgzX3qjgxNAmqdrC2YUQMTfnZbs4GeLEmy8aCWziVwogbuqQZ+Gzdfrym45eOZodk+lmXyLuAdqkNlvkc1g==} engines: {node: '>=8.0.0'} - web3-eth-ens@1.10.3: - resolution: {integrity: sha512-hR+odRDXGqKemw1GFniKBEXpjYwLgttTES+bc7BfTeoUyUZXbyDHe5ifC+h+vpzxh4oS0TnfcIoarK0Z9tFSiQ==} + web3-eth-ens@1.10.4: + resolution: {integrity: sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==} engines: {node: '>=8.0.0'} web3-eth-iban@1.10.0: resolution: {integrity: sha512-0l+SP3IGhInw7Q20LY3IVafYEuufo4Dn75jAHT7c2aDJsIolvf2Lc6ugHkBajlwUneGfbRQs/ccYPQ9JeMUbrg==} engines: {node: '>=8.0.0'} - web3-eth-iban@1.10.3: - resolution: {integrity: sha512-ZCfOjYKAjaX2TGI8uif5ah+J3BYFuo+47JOIV1RIz2l7kD9VfnxvRH5UiQDRyMALQC7KFd2hUqIEtHklapNyKA==} + web3-eth-iban@1.10.4: + resolution: {integrity: sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==} engines: {node: '>=8.0.0'} web3-eth-personal@1.10.0: resolution: {integrity: sha512-anseKn98w/d703eWq52uNuZi7GhQeVjTC5/svrBWEKob0WZ5kPdo+EZoFN0sp5a5ubbrk/E0xSl1/M5yORMtpg==} engines: {node: '>=8.0.0'} - web3-eth-personal@1.10.3: - resolution: {integrity: sha512-avrQ6yWdADIvuNQcFZXmGLCEzulQa76hUOuVywN7O3cklB4nFc/Gp3yTvD3bOAaE7DhjLQfhUTCzXL7WMxVTsw==} + web3-eth-personal@1.10.4: + resolution: {integrity: sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==} engines: {node: '>=8.0.0'} web3-eth@1.10.0: resolution: {integrity: sha512-Z5vT6slNMLPKuwRyKGbqeGYC87OAy8bOblaqRTgg94CXcn/mmqU7iPIlG4506YdcdK3x6cfEDG7B6w+jRxypKA==} engines: {node: '>=8.0.0'} - web3-eth@1.10.3: - resolution: {integrity: sha512-Uk1U2qGiif2mIG8iKu23/EQJ2ksB1BQXy3wF3RvFuyxt8Ft9OEpmGlO7wOtAyJdoKzD5vcul19bJpPcWSAYZhA==} + web3-eth@1.10.4: + resolution: {integrity: sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==} engines: {node: '>=8.0.0'} web3-net@1.10.0: resolution: {integrity: sha512-NLH/N3IshYWASpxk4/18Ge6n60GEvWBVeM8inx2dmZJVmRI6SJIlUxbL8jySgiTn3MMZlhbdvrGo8fpUW7a1GA==} engines: {node: '>=8.0.0'} - web3-net@1.10.3: - resolution: {integrity: sha512-IoSr33235qVoI1vtKssPUigJU9Fc/Ph0T9CgRi15sx+itysmvtlmXMNoyd6Xrgm9LuM4CIhxz7yDzH93B79IFg==} + web3-net@1.10.4: + resolution: {integrity: sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==} engines: {node: '>=8.0.0'} web3-providers-http@1.10.0: resolution: {integrity: sha512-eNr965YB8a9mLiNrkjAWNAPXgmQWfpBfkkn7tpEFlghfww0u3I0tktMZiaToJVcL2+Xq+81cxbkpeWJ5XQDwOA==} engines: {node: '>=8.0.0'} - web3-providers-http@1.10.3: - resolution: {integrity: sha512-6dAgsHR3MxJ0Qyu3QLFlQEelTapVfWNTu5F45FYh8t7Y03T1/o+YAkVxsbY5AdmD+y5bXG/XPJ4q8tjL6MgZHw==} + web3-providers-http@1.10.4: + resolution: {integrity: sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==} engines: {node: '>=8.0.0'} web3-providers-ipc@1.10.0: resolution: {integrity: sha512-OfXG1aWN8L1OUqppshzq8YISkWrYHaATW9H8eh0p89TlWMc1KZOL9vttBuaBEi96D/n0eYDn2trzt22bqHWfXA==} engines: {node: '>=8.0.0'} - web3-providers-ipc@1.10.3: - resolution: {integrity: sha512-vP5WIGT8FLnGRfswTxNs9rMfS1vCbMezj/zHbBe/zB9GauBRTYVrUo2H/hVrhLg8Ut7AbsKZ+tCJ4mAwpKi2hA==} + web3-providers-ipc@1.10.4: + resolution: {integrity: sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==} engines: {node: '>=8.0.0'} web3-providers-ws@1.10.0: resolution: {integrity: sha512-sK0fNcglW36yD5xjnjtSGBnEtf59cbw4vZzJ+CmOWIKGIR96mP5l684g0WD0Eo+f4NQc2anWWXG74lRc9OVMCQ==} engines: {node: '>=8.0.0'} - web3-providers-ws@1.10.3: - resolution: {integrity: sha512-/filBXRl48INxsh6AuCcsy4v5ndnTZ/p6bl67kmO9aK1wffv7CT++DrtclDtVMeDGCgB3van+hEf9xTAVXur7Q==} + web3-providers-ws@1.10.4: + resolution: {integrity: sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==} engines: {node: '>=8.0.0'} web3-shh@1.10.0: resolution: {integrity: sha512-uNUUuNsO2AjX41GJARV9zJibs11eq6HtOe6Wr0FtRUcj8SN6nHeYIzwstAvJ4fXA53gRqFMTxdntHEt9aXVjpg==} engines: {node: '>=8.0.0'} - web3-shh@1.10.3: - resolution: {integrity: sha512-cAZ60CPvs9azdwMSQ/PSUdyV4PEtaW5edAZhu3rCXf6XxQRliBboic+AvwUvB6j3eswY50VGa5FygfVmJ1JVng==} + web3-shh@1.10.4: + resolution: {integrity: sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==} engines: {node: '>=8.0.0'} web3-utils@1.10.0: resolution: {integrity: sha512-kSaCM0uMcZTNUSmn5vMEhlo02RObGNRRCkdX0V9UTAU0+lrvn0HSaudyCo6CQzuXUsnuY2ERJGCGPfeWmv19Rg==} engines: {node: '>=8.0.0'} - web3-utils@1.10.3: - resolution: {integrity: sha512-OqcUrEE16fDBbGoQtZXWdavsPzbGIDc5v3VrRTZ0XrIpefC/viZ1ZU9bGEemazyS0catk/3rkOOxpzTfY+XsyQ==} + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} engines: {node: '>=8.0.0'} web3@1.10.0: resolution: {integrity: sha512-YfKY9wSkGcM8seO+daR89oVTcbu18NsVfvOngzqMYGUU0pPSQmE57qQDvQzUeoIOHAnXEBNzrhjQJmm8ER0rng==} engines: {node: '>=8.0.0'} - web3@1.10.3: - resolution: {integrity: sha512-DgUdOOqC/gTqW+VQl1EdPxrVRPB66xVNtuZ5KD4adVBtko87hkgM8BTZ0lZ8IbUfnQk6DyjcDujMiH3oszllAw==} + web3@1.10.4: + resolution: {integrity: sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==} engines: {node: '>=8.0.0'} webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} - websocket@1.0.34: - resolution: {integrity: sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==} + websocket@1.0.35: + resolution: {integrity: sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==} engines: {node: '>=4.0.0'} + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -5804,14 +5575,6 @@ packages: which-module@2.0.1: resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-pm@2.0.0: - resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==} - engines: {node: '>=8.15'} - - which-typed-array@1.1.13: - resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} - engines: {node: '>= 0.4'} - which-typed-array@1.1.15: resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} engines: {node: '>= 0.4'} @@ -5828,6 +5591,10 @@ packages: wide-align@1.1.3: resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + window-size@0.2.0: resolution: {integrity: sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==} engines: {node: '>= 0.10.0'} @@ -5844,8 +5611,8 @@ packages: resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} engines: {node: '>=8.0.0'} - workerpool@6.2.1: - resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} wrap-ansi@2.1.0: resolution: {integrity: sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==} @@ -5855,10 +5622,6 @@ packages: resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==} engines: {node: '>=6'} - wrap-ansi@6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} @@ -5889,8 +5652,8 @@ packages: utf-8-validate: optional: true - ws@7.5.9: - resolution: {integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==} + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} engines: {node: '>=8.3.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5942,27 +5705,16 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - yargs-parser@13.1.2: resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==} - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@2.4.1: resolution: {integrity: sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==} - yargs-parser@20.2.4: - resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - yargs-unparser@1.6.0: resolution: {integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==} engines: {node: '>=6'} @@ -5974,18 +5726,10 @@ packages: yargs@13.3.2: resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==} - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} engines: {node: '>=10'} - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - yargs@4.8.1: resolution: {integrity: sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==} @@ -6000,24 +5744,50 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - zksync-ethers@5.8.0: - resolution: {integrity: sha512-/4qI5UElh0lspu0ew2IXBCO+O9kXEzZOM7JqvlfRWWGIUKZ+EDXnjIPgkH0y5/MnMT3FDq9koAAUCyZVWqHUJg==} + yup@1.4.0: + resolution: {integrity: sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==} + + zksync-ethers@5.9.2: + resolution: {integrity: sha512-Y2Mx6ovvxO6UdC2dePLguVzvNToOY8iLWeq5ne+jgGSJxAi/f4He/NF6FNsf6x1aWX0o8dy4Df8RcOQXAkj5qw==} engines: {node: '>=16.0.0'} peerDependencies: ethers: ~5.7.0 snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@ampproject/remapping@2.3.0': dependencies: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@aragon/osx@1.3.0(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@aragon/osx-commons-configs@0.6.0': + dependencies: + tslib: 2.7.0 + + '@aragon/osx-ethers@1.2.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@aragon/osx-ethers@1.3.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@aragon/osx-ethers@1.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@aragon/osx@1.3.0(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: - '@ensdomains/ens-contracts': 0.0.11(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@ensdomains/ens-contracts': 0.0.11(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@openzeppelin/contracts': 4.8.1 '@openzeppelin/contracts-upgradeable': 4.8.1 transitivePeerDependencies: @@ -6033,10 +5803,56 @@ snapshots: - web3-eth-abi - web3-utils - '@babel/code-frame@7.22.13': + '@aragon/sdk-client-common@1.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@babel/highlight': 7.22.20 - chalk: 2.4.2 + '@aragon/osx-commons-configs': 0.6.0 + '@aragon/osx-ethers': 1.3.1(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@aragon/osx-ethers-v1.0.0': '@aragon/osx-ethers@1.2.1(bufferutil@4.0.8)(utf-8-validate@5.0.10)' + '@aragon/sdk-ipfs': 1.1.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@ethersproject/wallet': 5.7.0 + graphql: 16.9.0 + graphql-request: 4.3.0(graphql@16.9.0) + yup: 1.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@aragon/sdk-client@1.26.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + dependencies: + '@aragon/osx-commons-configs': 0.6.0 + '@aragon/osx-ethers': 1.3.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@aragon/sdk-client-common': 1.17.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@aragon/sdk-ipfs': 1.1.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + '@ethersproject/wallet': 5.7.0 + '@openzeppelin/contracts': 4.9.6 + '@openzeppelin/contracts-upgradeable': 4.9.6 + graphql: 16.9.0 + graphql-request: 4.3.0(graphql@16.9.0) + yup: 1.4.0 + transitivePeerDependencies: + - bufferutil + - encoding + - utf-8-validate + + '@aragon/sdk-ipfs@1.1.0': + dependencies: + '@web-std/fetch': 4.2.1 + '@web-std/file': 3.0.3 + '@web-std/form-data': 3.1.0 + isomorphic-unfetch: 3.1.0 + transitivePeerDependencies: + - encoding '@babel/code-frame@7.24.7': dependencies: @@ -6058,25 +5874,25 @@ snapshots: '@babel/traverse': 7.25.6 '@babel/types': 7.25.6 convert-source-map: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.6.0)': + '@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.11.1)': dependencies: '@babel/core': 7.25.2 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.6.0 + eslint: 9.11.1 eslint-visitor-keys: 2.1.0 semver: 6.3.1 - '@babel/eslint-plugin@7.25.1(@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.6.0))(eslint@9.6.0)': + '@babel/eslint-plugin@7.25.1(@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.11.1))(eslint@9.11.1)': dependencies: - '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@9.6.0) - eslint: 9.6.0 + '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@9.11.1) + eslint: 9.11.1 eslint-rule-composer: 0.3.0 '@babel/generator@7.25.6': @@ -6120,8 +5936,6 @@ snapshots: '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.24.8': {} @@ -6131,12 +5945,6 @@ snapshots: '@babel/template': 7.25.0 '@babel/types': 7.25.6 - '@babel/highlight@7.22.20': - dependencies: - '@babel/helper-validator-identifier': 7.22.20 - chalk: 2.4.2 - js-tokens: 4.0.0 - '@babel/highlight@7.24.7': dependencies: '@babel/helper-validator-identifier': 7.24.7 @@ -6148,9 +5956,9 @@ snapshots: dependencies: '@babel/types': 7.25.6 - '@babel/runtime@7.23.2': + '@babel/runtime@7.25.6': dependencies: - regenerator-runtime: 0.14.0 + regenerator-runtime: 0.14.1 '@babel/template@7.25.0': dependencies: @@ -6165,7 +5973,7 @@ snapshots: '@babel/parser': 7.25.6 '@babel/template': 7.25.0 '@babel/types': 7.25.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -6176,34 +5984,13 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 - '@chainsafe/as-sha256@0.3.1': {} - - '@chainsafe/persistent-merkle-tree@0.4.2': - dependencies: - '@chainsafe/as-sha256': 0.3.1 - - '@chainsafe/persistent-merkle-tree@0.5.0': - dependencies: - '@chainsafe/as-sha256': 0.3.1 - - '@chainsafe/ssz@0.10.2': + '@changesets/apply-release-plan@7.0.5': dependencies: - '@chainsafe/as-sha256': 0.3.1 - '@chainsafe/persistent-merkle-tree': 0.5.0 - - '@chainsafe/ssz@0.9.4': - dependencies: - '@chainsafe/as-sha256': 0.3.1 - '@chainsafe/persistent-merkle-tree': 0.4.2 - case: 1.6.3 - - '@changesets/apply-release-plan@6.1.4': - dependencies: - '@babel/runtime': 7.23.2 - '@changesets/config': 2.3.1 - '@changesets/get-version-range-type': 0.3.2 - '@changesets/git': 2.0.0 - '@changesets/types': 5.2.1 + '@changesets/config': 3.0.3 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.1 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 detect-indent: 6.1.0 fs-extra: 7.0.1 @@ -6211,20 +5998,20 @@ snapshots: outdent: 0.5.0 prettier: 2.8.8 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.3 - '@changesets/assemble-release-plan@5.2.4': + '@changesets/assemble-release-plan@6.0.4': dependencies: - '@babel/runtime': 7.23.2 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - semver: 7.5.4 + semver: 7.6.3 - '@changesets/changelog-git@0.1.14': + '@changesets/changelog-git@0.2.0': dependencies: - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 '@changesets/changelog-github@0.4.8': dependencies: @@ -6234,63 +6021,59 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/cli@2.26.2': - dependencies: - '@babel/runtime': 7.23.2 - '@changesets/apply-release-plan': 6.1.4 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/changelog-git': 0.1.14 - '@changesets/config': 2.3.1 - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/get-release-plan': 3.0.17 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 - '@changesets/write': 0.2.3 + '@changesets/cli@2.27.8': + dependencies: + '@changesets/apply-release-plan': 7.0.5 + '@changesets/assemble-release-plan': 6.0.4 + '@changesets/changelog-git': 0.2.0 + '@changesets/config': 3.0.3 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/get-release-plan': 4.0.4 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 + '@changesets/should-skip-package': 0.1.1 + '@changesets/types': 6.0.0 + '@changesets/write': 0.3.2 '@manypkg/get-packages': 1.1.3 - '@types/is-ci': 3.0.4 - '@types/semver': 7.5.4 + '@types/semver': 7.5.8 ansi-colors: 4.1.3 - chalk: 2.4.2 + ci-info: 3.9.0 enquirer: 2.4.1 external-editor: 3.1.0 fs-extra: 7.0.1 - human-id: 1.0.2 - is-ci: 3.0.1 - meow: 6.1.1 + mri: 1.2.0 outdent: 0.5.0 p-limit: 2.3.0 - preferred-pm: 3.1.2 + package-manager-detector: 0.2.0 + picocolors: 1.1.0 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.3 spawndamnit: 2.0.0 term-size: 2.2.1 - tty-table: 4.2.3 - '@changesets/config@2.3.1': + '@changesets/config@3.0.3': dependencies: - '@changesets/errors': 0.1.4 - '@changesets/get-dependents-graph': 1.3.6 - '@changesets/logger': 0.0.5 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.2 + '@changesets/logger': 0.1.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - micromatch: 4.0.5 + micromatch: 4.0.8 - '@changesets/errors@0.1.4': + '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@1.3.6': + '@changesets/get-dependents-graph@2.1.2': dependencies: - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - chalk: 2.4.2 - fs-extra: 7.0.1 - semver: 7.5.4 + picocolors: 1.1.0 + semver: 7.6.3 '@changesets/get-github-info@0.5.2': dependencies: @@ -6299,64 +6082,65 @@ snapshots: transitivePeerDependencies: - encoding - '@changesets/get-release-plan@3.0.17': + '@changesets/get-release-plan@4.0.4': dependencies: - '@babel/runtime': 7.23.2 - '@changesets/assemble-release-plan': 5.2.4 - '@changesets/config': 2.3.1 - '@changesets/pre': 1.0.14 - '@changesets/read': 0.5.9 - '@changesets/types': 5.2.1 + '@changesets/assemble-release-plan': 6.0.4 + '@changesets/config': 3.0.3 + '@changesets/pre': 2.0.1 + '@changesets/read': 0.6.1 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 - '@changesets/get-version-range-type@0.3.2': {} + '@changesets/get-version-range-type@0.4.0': {} - '@changesets/git@2.0.0': + '@changesets/git@3.0.1': dependencies: - '@babel/runtime': 7.23.2 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 '@manypkg/get-packages': 1.1.3 is-subdir: 1.2.0 - micromatch: 4.0.5 + micromatch: 4.0.8 spawndamnit: 2.0.0 - '@changesets/logger@0.0.5': + '@changesets/logger@0.1.1': dependencies: - chalk: 2.4.2 + picocolors: 1.1.0 - '@changesets/parse@0.3.16': + '@changesets/parse@0.4.0': dependencies: - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 js-yaml: 3.14.1 - '@changesets/pre@1.0.14': + '@changesets/pre@2.0.1': dependencies: - '@babel/runtime': 7.23.2 - '@changesets/errors': 0.1.4 - '@changesets/types': 5.2.1 + '@changesets/errors': 0.2.0 + '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.5.9': + '@changesets/read@0.6.1': dependencies: - '@babel/runtime': 7.23.2 - '@changesets/git': 2.0.0 - '@changesets/logger': 0.0.5 - '@changesets/parse': 0.3.16 - '@changesets/types': 5.2.1 - chalk: 2.4.2 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.0 + '@changesets/types': 6.0.0 fs-extra: 7.0.1 p-filter: 2.1.0 + picocolors: 1.1.0 + + '@changesets/should-skip-package@0.1.1': + dependencies: + '@changesets/types': 6.0.0 + '@manypkg/get-packages': 1.1.3 '@changesets/types@4.1.0': {} '@changesets/types@5.2.1': {} - '@changesets/write@0.2.3': + '@changesets/types@6.0.0': {} + + '@changesets/write@0.3.2': dependencies: - '@babel/runtime': 7.23.2 - '@changesets/types': 5.2.1 + '@changesets/types': 6.0.0 fs-extra: 7.0.1 human-id: 1.0.2 prettier: 2.8.8 @@ -6378,9 +6162,9 @@ snapshots: nano-base32: 1.0.1 ripemd160: 2.0.2 - '@ensdomains/buffer@0.0.13(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@ensdomains/buffer@0.0.13(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: - '@nomiclabs/hardhat-truffle5': 2.0.7(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-truffle5': 2.0.7(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) transitivePeerDependencies: - '@nomiclabs/hardhat-web3' - bufferutil @@ -6394,9 +6178,9 @@ snapshots: - web3-eth-abi - web3-utils - '@ensdomains/ens-contracts@0.0.11(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@ensdomains/ens-contracts@0.0.11(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: - '@ensdomains/buffer': 0.0.13(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@ensdomains/buffer': 0.0.13(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) '@ensdomains/solsha1': 0.0.3 '@openzeppelin/contracts': 4.8.1 dns-packet: 5.6.1 @@ -6419,11 +6203,11 @@ snapshots: eth-ens-namehash: 2.0.8 solc: 0.4.26 testrpc: 0.0.1 - web3-utils: 1.10.3 + web3-utils: 1.10.4 '@ensdomains/ensjs@2.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.25.6 '@ensdomains/address-encoder': 0.1.9 '@ensdomains/ens': 0.4.5 '@ensdomains/resolver': 0.2.4 @@ -6441,28 +6225,30 @@ snapshots: dependencies: hash-test-vectors: 1.3.2 - '@eslint-community/eslint-utils@4.4.0(eslint@9.6.0)': + '@eslint-community/eslint-utils@4.4.0(eslint@9.11.1)': dependencies: - eslint: 9.6.0 + eslint: 9.11.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.9.1': {} + '@eslint-community/regexpp@4.11.1': {} - '@eslint/config-array@0.17.0': + '@eslint/config-array@0.18.0': dependencies: '@eslint/object-schema': 2.1.4 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color + '@eslint/core@0.6.0': {} + '@eslint/eslintrc@3.1.0': dependencies: ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) espree: 10.1.0 globals: 14.0.0 - ignore: 5.2.4 + ignore: 5.3.2 import-fresh: 3.3.0 js-yaml: 4.1.0 minimatch: 3.1.2 @@ -6470,10 +6256,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.6.0': {} + '@eslint/js@9.11.1': {} '@eslint/object-schema@2.1.4': {} + '@eslint/plugin-kit@0.2.0': + dependencies: + levn: 0.4.1 + '@ethereumjs/common@2.5.0': dependencies: crc-32: 1.2.2 @@ -6499,7 +6289,7 @@ snapshots: '@ethereumjs/util@8.1.0': dependencies: '@ethereumjs/rlp': 4.0.1 - ethereum-cryptography: 2.1.2 + ethereum-cryptography: 2.2.1 micro-ftch: 0.3.1 '@ethersproject/abi@5.7.0': @@ -6757,7 +6547,7 @@ snapshots: '@ethersproject/properties': 5.7.0 '@ethersproject/strings': 5.7.0 - '@fastify/busboy@2.0.0': {} + '@fastify/busboy@2.1.1': {} '@humanwhocodes/module-importer@1.0.1': {} @@ -6766,37 +6556,37 @@ snapshots: '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 - '@jridgewell/resolve-uri@3.1.1': {} + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping@0.3.9': dependencies: - '@jridgewell/resolve-uri': 3.1.1 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 '@leichtgewicht/ip-codec@2.0.5': {} '@manypkg/find-root@1.1.0': dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.25.6 '@types/node': 12.20.55 find-up: 4.1.0 fs-extra: 8.1.0 '@manypkg/get-packages@1.1.3': dependencies: - '@babel/runtime': 7.23.2 + '@babel/runtime': 7.25.6 '@changesets/types': 4.1.0 '@manypkg/find-root': 1.1.0 fs-extra: 8.1.0 @@ -6815,13 +6605,15 @@ snapshots: dependencies: eslint-scope: 5.1.1 - '@noble/curves@1.1.0': + '@noble/curves@1.4.2': dependencies: - '@noble/hashes': 1.3.1 + '@noble/hashes': 1.4.0 '@noble/hashes@1.2.0': {} - '@noble/hashes@1.3.1': {} + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.5.0': {} '@noble/secp256k1@1.7.1': {} @@ -6835,221 +6627,127 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.15.0 + fastq: 1.17.1 - '@nomicfoundation/ethereumjs-block@5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-util': 9.0.2 - ethereum-cryptography: 0.1.3 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - transitivePeerDependencies: - - bufferutil - - utf-8-validate + '@nomicfoundation/edr-darwin-arm64@0.5.2': {} - '@nomicfoundation/ethereumjs-blockchain@7.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-ethash': 3.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-util': 9.0.2 - abstract-level: 1.0.3 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - level: 8.0.0 - lru-cache: 5.1.1 - memory-level: 1.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + '@nomicfoundation/edr-darwin-x64@0.5.2': {} - '@nomicfoundation/ethereumjs-common@4.0.2': - dependencies: - '@nomicfoundation/ethereumjs-util': 9.0.2 - crc-32: 1.2.2 + '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': {} - '@nomicfoundation/ethereumjs-ethash@3.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - abstract-level: 1.0.3 - bigint-crypto-utils: 3.3.0 - ethereum-cryptography: 0.1.3 - transitivePeerDependencies: - - bufferutil - - utf-8-validate + '@nomicfoundation/edr-linux-arm64-musl@0.5.2': {} - '@nomicfoundation/ethereumjs-evm@2.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-util': 9.0.2 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + '@nomicfoundation/edr-linux-x64-gnu@0.5.2': {} - '@nomicfoundation/ethereumjs-rlp@5.0.2': {} + '@nomicfoundation/edr-linux-x64-musl@0.5.2': {} - '@nomicfoundation/ethereumjs-statemanager@2.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - debug: 4.3.4(supports-color@8.1.1) - ethereum-cryptography: 0.1.3 - ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - js-sdsl: 4.4.2 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate + '@nomicfoundation/edr-win32-x64-msvc@0.5.2': {} - '@nomicfoundation/ethereumjs-trie@6.0.2': + '@nomicfoundation/edr@0.5.2': dependencies: - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - '@types/readable-stream': 2.3.15 - ethereum-cryptography: 0.1.3 - readable-stream: 3.6.2 + '@nomicfoundation/edr-darwin-arm64': 0.5.2 + '@nomicfoundation/edr-darwin-x64': 0.5.2 + '@nomicfoundation/edr-linux-arm64-gnu': 0.5.2 + '@nomicfoundation/edr-linux-arm64-musl': 0.5.2 + '@nomicfoundation/edr-linux-x64-gnu': 0.5.2 + '@nomicfoundation/edr-linux-x64-musl': 0.5.2 + '@nomicfoundation/edr-win32-x64-msvc': 0.5.2 - '@nomicfoundation/ethereumjs-tx@5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': + '@nomicfoundation/ethereumjs-common@4.0.4': dependencies: - '@chainsafe/ssz': 0.9.4 - '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-util': 9.0.2 - ethereum-cryptography: 0.1.3 + '@nomicfoundation/ethereumjs-util': 9.0.4 transitivePeerDependencies: - - bufferutil - - utf-8-validate + - c-kzg + + '@nomicfoundation/ethereumjs-rlp@5.0.4': {} - '@nomicfoundation/ethereumjs-util@9.0.2': + '@nomicfoundation/ethereumjs-tx@5.0.4': dependencies: - '@chainsafe/ssz': 0.10.2 - '@nomicfoundation/ethereumjs-rlp': 5.0.2 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 ethereum-cryptography: 0.1.3 - '@nomicfoundation/ethereumjs-vm@7.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@nomicfoundation/ethereumjs-block': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-blockchain': 7.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-evm': 2.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-statemanager': 2.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-util': 9.0.2 - debug: 4.3.4(supports-color@8.1.1) + '@nomicfoundation/ethereumjs-util@9.0.4': + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 ethereum-cryptography: 0.1.3 - mcl-wasm: 0.7.9 - rustbn.js: 0.2.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': dependencies: '@ethersproject/abi': 5.7.0 - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - '@types/chai-as-promised': 7.1.7 - chai: 4.3.10 - chai-as-promised: 7.1.1(chai@4.3.10) - deep-eql: 4.1.3 + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@types/chai-as-promised': 7.1.8 + chai: 4.5.0 + chai-as-promised: 7.1.2(chai@4.5.0) + deep-eql: 4.1.4 ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) ordinal: 1.0.3 - '@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))': + '@nomicfoundation/hardhat-network-helpers@1.0.12(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': dependencies: ethereumjs-util: 7.1.5 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) - ? '@nomicfoundation/hardhat-toolbox@2.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-network-helpers@1.0.9(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(@typechain/hardhat@7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2)))(@types/chai@4.3.9)(@types/mocha@9.1.1)(@types/node@17.0.45)(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat-gas-reporter@1.0.9(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(solidity-coverage@0.8.5(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2)' + ? '@nomicfoundation/hardhat-toolbox@2.0.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@nomicfoundation/hardhat-chai-matchers@1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomicfoundation/hardhat-network-helpers@1.0.12(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@nomiclabs/hardhat-etherscan@3.1.8(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(@typechain/hardhat@7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2)))(@types/chai@4.3.20)(@types/mocha@9.1.1)(@types/node@17.0.45)(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat-gas-reporter@1.0.10(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(solidity-coverage@0.8.13(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2)' : dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/hardhat-chai-matchers': 1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)))(chai@4.3.10)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - '@nomicfoundation/hardhat-network-helpers': 1.0.9(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - '@nomiclabs/hardhat-etherscan': 3.1.7(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - '@typechain/ethers-v5': 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2) - '@typechain/hardhat': 7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2)) - '@types/chai': 4.3.9 + '@nomicfoundation/hardhat-chai-matchers': 1.0.6(@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)))(chai@4.5.0)(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@nomicfoundation/hardhat-network-helpers': 1.0.12(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-ethers': 2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@nomiclabs/hardhat-etherscan': 3.1.8(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + '@typechain/ethers-v5': 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) + '@typechain/hardhat': 7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2)) + '@types/chai': 4.3.20 '@types/mocha': 9.1.1 '@types/node': 17.0.45 - chai: 4.3.10 + chai: 4.5.0 ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) - hardhat-gas-reporter: 1.0.9(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) - solidity-coverage: 0.8.5(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)) - ts-node: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) - typechain: 8.3.2(typescript@5.2.2) - typescript: 5.2.2 - - '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1': + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) + hardhat-gas-reporter: 1.0.10(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + solidity-coverage: 0.8.13(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)) + ts-node: 10.9.2(@types/node@17.0.45)(typescript@5.6.2) + typechain: 8.3.2(typescript@5.6.2) + typescript: 5.6.2 + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1': + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1': + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.1': + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.1': + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.1': + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.1': + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': optional: true - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.1': - optional: true - - '@nomicfoundation/solidity-analyzer@0.1.1': + '@nomicfoundation/solidity-analyzer@0.1.2': optionalDependencies: - '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.1 - '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.1 - '@nomicfoundation/solidity-analyzer-freebsd-x64': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.1 - '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-arm64-msvc': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-ia32-msvc': 0.1.1 - '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.1 - - '@nomiclabs/buidler-web3@1.3.4(@nomiclabs/buidler@1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.2 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 + + '@nomiclabs/buidler-web3@1.3.4(@nomiclabs/buidler@1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@nomiclabs/buidler': 1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@types/bignumber.js': 5.0.0 - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@nomiclabs/buidler@1.4.8(bufferutil@4.0.8)(utf-8-validate@5.0.10)': dependencies: @@ -7061,9 +6759,9 @@ snapshots: abort-controller: 3.0.0 ansi-escapes: 4.3.2 chalk: 2.4.2 - chokidar: 3.5.3 + chokidar: 3.6.0 ci-info: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) deepmerge: 2.2.1 download: 7.1.0 enquirer: 2.4.1 @@ -7086,7 +6784,7 @@ snapshots: merkle-patricia-tree: 3.0.0 mocha: 7.2.0 node-fetch: 2.7.0 - qs: 6.11.2 + qs: 6.13.0 raw-body: 2.5.2 semver: 6.3.1 slash: 3.0.0 @@ -7095,7 +6793,7 @@ snapshots: ts-essentials: 2.0.12 tsort: 0.0.1 uuid: 3.4.0 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -7106,7 +6804,7 @@ snapshots: dependencies: async: 2.6.4 async-eventemitter: 0.2.4 - core-js-pure: 3.33.1 + core-js-pure: 3.38.1 ethereumjs-account: 3.0.0 ethereumjs-block: 2.2.2 ethereumjs-blockchain: 4.0.4 @@ -7120,37 +6818,37 @@ snapshots: safe-buffer: 5.2.1 util.promisify: 1.1.2 - '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))': + '@nomiclabs/hardhat-ethers@2.2.3(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': dependencies: ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) - '@nomiclabs/hardhat-etherscan@3.1.7(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))': + '@nomiclabs/hardhat-etherscan@3.1.8(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/address': 5.7.0 cbor: 8.1.0 chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 7.0.1 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) lodash: 4.17.21 semver: 6.3.1 - table: 6.8.1 - undici: 5.26.4 + table: 6.8.2 + undici: 5.28.4 transitivePeerDependencies: - supports-color - '@nomiclabs/hardhat-truffle5@2.0.7(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@nomiclabs/hardhat-truffle5@2.0.7(@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)))(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: - '@nomiclabs/hardhat-web3': 2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@nomiclabs/truffle-contract': 4.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10)) - '@types/chai': 4.3.9 - chai: 4.3.10 + '@nomiclabs/hardhat-web3': 2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@nomiclabs/truffle-contract': 4.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + '@types/chai': 4.3.20 + chai: 4.5.0 ethereumjs-util: 7.1.5 fs-extra: 7.0.1 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) + web3: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -7161,13 +6859,13 @@ snapshots: - web3-eth-abi - web3-utils - '@nomiclabs/hardhat-web3@2.0.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@nomiclabs/hardhat-web3@2.0.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@types/bignumber.js': 5.0.0 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) + web3: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomiclabs/truffle-contract@4.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.3)(web3-core-promievent@1.10.3)(web3-eth-abi@1.10.3)(web3-utils@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@nomiclabs/truffle-contract@4.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10)(web3-core-helpers@1.10.4)(web3-core-promievent@1.10.4)(web3-eth-abi@1.10.4)(web3-utils@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: '@ensdomains/ensjs': 2.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) '@truffle/blockchain-utils': 0.1.9 @@ -7179,64 +6877,44 @@ snapshots: ethereum-ens: 0.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) ethers: 4.0.49 source-map-support: 0.5.21 - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core-helpers: 1.10.3 - web3-core-promievent: 1.10.3 - web3-eth-abi: 1.10.3 - web3-utils: 1.10.3 + web3: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-eth-abi: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - bufferutil - encoding - supports-color - utf-8-validate - '@openzeppelin/contract-loader@0.6.3': - dependencies: - find-up: 4.1.0 - fs-extra: 8.1.0 - '@openzeppelin/contracts-upgradeable@4.8.1': {} + '@openzeppelin/contracts-upgradeable@4.9.6': {} + '@openzeppelin/contracts-upgradeable@5.0.2(@openzeppelin/contracts@5.0.2)': dependencies: '@openzeppelin/contracts': 5.0.2 '@openzeppelin/contracts@4.8.1': {} - '@openzeppelin/contracts@5.0.2': {} + '@openzeppelin/contracts@4.9.6': {} - '@openzeppelin/test-helpers@0.5.16(bn.js@5.2.1)(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@openzeppelin/contract-loader': 0.6.3 - '@truffle/contract': 4.6.31(bufferutil@4.0.8)(utf-8-validate@5.0.10) - ansi-colors: 3.2.4 - chai: 4.3.10 - chai-bn: 0.2.2(bn.js@5.2.1)(chai@4.3.10) - ethjs-abi: 0.2.1 - lodash.flatten: 4.4.0 - semver: 5.7.2 - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-utils: 1.10.3 - transitivePeerDependencies: - - bn.js - - bufferutil - - encoding - - supports-color - - utf-8-validate + '@openzeppelin/contracts@5.0.2': {} - '@peeramid-labs/eds@1.0.0(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': + '@peeramid-labs/eds@2.0.0(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10)': dependencies: '@ethersproject/abi': 5.7.0 '@openzeppelin/contracts': 5.0.2 '@openzeppelin/contracts-upgradeable': 5.0.2(@openzeppelin/contracts@5.0.2) - '@types/chai': 4.3.9 + '@types/chai': 4.3.20 '@types/mocha': 9.1.1 '@types/node': 17.0.45 chalk: 4.1.2 cli-table: 0.3.11 - hardhat-gas-reporter: 1.0.9(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) - ts-node: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) - typescript: 5.2.2 + hardhat-gas-reporter: 1.0.10(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10) + ts-node: 10.9.2(@types/node@17.0.45)(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - '@codechecks/client' - '@swc/core' @@ -7250,29 +6928,33 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@scure/base@1.1.3': {} + '@safe-global/safe-contracts@1.4.1-build.0(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + dependencies: + ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + + '@scure/base@1.1.9': {} '@scure/bip32@1.1.5': dependencies: '@noble/hashes': 1.2.0 '@noble/secp256k1': 1.7.1 - '@scure/base': 1.1.3 + '@scure/base': 1.1.9 - '@scure/bip32@1.3.1': + '@scure/bip32@1.4.0': dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.3 + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 '@scure/bip39@1.1.1': dependencies: '@noble/hashes': 1.2.0 - '@scure/base': 1.1.3 + '@scure/base': 1.1.9 - '@scure/bip39@1.2.1': + '@scure/bip39@1.3.0': dependencies: - '@noble/hashes': 1.3.1 - '@scure/base': 1.1.3 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.9 '@sentry/core@5.30.0': dependencies: @@ -7323,29 +7005,29 @@ snapshots: '@sentry/types': 5.30.0 tslib: 1.14.1 - '@shopify/eslint-plugin@43.0.0(@babel/core@7.25.2)(eslint@9.6.0)(prettier@3.0.3)(typescript@5.2.2)': + '@shopify/eslint-plugin@43.0.0(@babel/core@7.25.2)(eslint@9.11.1)(prettier@2.8.8)(typescript@5.6.2)': dependencies: - '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@9.6.0) - '@babel/eslint-plugin': 7.25.1(@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.6.0))(eslint@9.6.0) - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@7.16.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2) - '@typescript-eslint/parser': 6.21.0(eslint@9.6.0)(typescript@5.2.2) + '@babel/eslint-parser': 7.25.1(@babel/core@7.25.2)(eslint@9.11.1) + '@babel/eslint-plugin': 7.25.1(@babel/eslint-parser@7.25.1(@babel/core@7.25.2)(eslint@9.11.1))(eslint@9.11.1) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@7.18.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/parser': 6.21.0(eslint@9.11.1)(typescript@5.6.2) change-case: 4.1.2 common-tags: 1.8.2 doctrine: 2.1.0 - eslint: 9.6.0 - eslint-config-prettier: 8.10.0(eslint@9.6.0) - eslint-module-utils: 2.11.1(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint@9.6.0) - eslint-plugin-eslint-comments: 3.2.0(eslint@9.6.0) - eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0) - eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2) - eslint-plugin-jest-formatting: 3.1.0(eslint@9.6.0) - eslint-plugin-jsx-a11y: 6.10.0(eslint@9.6.0) - eslint-plugin-node: 11.1.0(eslint@9.6.0) - eslint-plugin-prettier: 5.2.1(eslint-config-prettier@8.10.0(eslint@9.6.0))(eslint@9.6.0)(prettier@3.0.3) - eslint-plugin-promise: 6.4.0(eslint@9.6.0) - eslint-plugin-react: 7.36.1(eslint@9.6.0) - eslint-plugin-react-hooks: 4.6.2(eslint@9.6.0) - eslint-plugin-sort-class-members: 1.20.0(eslint@9.6.0) + eslint: 9.11.1 + eslint-config-prettier: 8.10.0(eslint@9.11.1) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1) + eslint-plugin-eslint-comments: 3.2.0(eslint@9.11.1) + eslint-plugin-import: 2.30.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1) + eslint-plugin-jest: 27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2) + eslint-plugin-jest-formatting: 3.1.0(eslint@9.11.1) + eslint-plugin-jsx-a11y: 6.10.0(eslint@9.11.1) + eslint-plugin-node: 11.1.0(eslint@9.11.1) + eslint-plugin-prettier: 5.2.1(eslint-config-prettier@8.10.0(eslint@9.11.1))(eslint@9.11.1)(prettier@2.8.8) + eslint-plugin-promise: 6.6.0(eslint@9.11.1) + eslint-plugin-react: 7.37.0(eslint@9.11.1) + eslint-plugin-react-hooks: 4.6.2(eslint@9.11.1) + eslint-plugin-sort-class-members: 1.20.0(eslint@9.11.1) jsx-ast-utils: 3.3.5 pkg-dir: 5.0.0 pluralize: 8.0.0 @@ -7368,10 +7050,12 @@ snapshots: dependencies: antlr4ts: 0.5.0-alpha.4 - '@solidity-parser/parser@0.16.1': + '@solidity-parser/parser@0.16.2': dependencies: antlr4ts: 0.5.0-alpha.4 + '@solidity-parser/parser@0.18.0': {} + '@solidity-parser/parser@0.5.2': {} '@solidstate/contracts@0.0.35': {} @@ -7396,50 +7080,28 @@ snapshots: dependencies: '@truffle/abi-utils': 1.0.3 '@truffle/compile-common': 0.9.8 - big.js: 6.2.1 + big.js: 6.2.2 bn.js: 5.2.1 cbor: 5.2.0 - debug: 4.3.4(supports-color@8.1.1) - lodash: 4.17.21 - semver: 7.5.4 - utf8: 3.0.0 - web3-utils: 1.10.0 - transitivePeerDependencies: - - supports-color - - '@truffle/compile-common@0.9.8': - dependencies: - '@truffle/error': 0.2.2 - colors: 1.4.0 - - '@truffle/contract-schema@3.4.16': - dependencies: - ajv: 6.12.6 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - - '@truffle/contract@4.6.31(bufferutil@4.0.8)(utf-8-validate@5.0.10)': - dependencies: - '@ensdomains/ensjs': 2.1.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@truffle/blockchain-utils': 0.1.9 - '@truffle/contract-schema': 3.4.16 - '@truffle/debug-utils': 6.0.57 - '@truffle/error': 0.2.2 - '@truffle/interface-adapter': 0.5.37(bufferutil@4.0.8)(utf-8-validate@5.0.10) - bignumber.js: 7.2.1 - debug: 4.3.4(supports-color@8.1.1) - ethers: 4.0.49 - web3: 1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core-helpers: 1.10.0 - web3-core-promievent: 1.10.0 - web3-eth-abi: 1.10.0 + debug: 4.3.7(supports-color@8.1.1) + lodash: 4.17.21 + semver: 7.6.3 + utf8: 3.0.0 web3-utils: 1.10.0 transitivePeerDependencies: - - bufferutil - - encoding - supports-color - - utf-8-validate + + '@truffle/compile-common@0.9.8': + dependencies: + '@truffle/error': 0.2.2 + colors: 1.4.0 + + '@truffle/contract-schema@3.4.16': + dependencies: + ajv: 6.12.6 + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color '@truffle/debug-utils@6.0.57': dependencies: @@ -7447,7 +7109,7 @@ snapshots: '@trufflesuite/chromafi': 3.0.0 bn.js: 5.2.1 chalk: 2.4.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) highlightjs-solidity: 2.0.6 transitivePeerDependencies: - supports-color @@ -7471,14 +7133,14 @@ snapshots: dependencies: camelcase: 4.1.0 chalk: 2.4.2 - cheerio: 1.0.0-rc.12 + cheerio: 1.0.0 detect-indent: 5.0.0 highlight.js: 10.7.3 lodash.merge: 4.6.2 strip-ansi: 4.0.0 strip-indent: 2.0.0 - '@tsconfig/node10@1.0.9': {} + '@tsconfig/node10@1.0.11': {} '@tsconfig/node12@1.0.11': {} @@ -7486,34 +7148,34 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2)': + '@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2)': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) lodash: 4.17.21 - ts-essentials: 7.0.3(typescript@5.2.2) - typechain: 8.3.2(typescript@5.2.2) - typescript: 5.2.2 + ts-essentials: 7.0.3(typescript@5.6.2) + typechain: 8.3.2(typescript@5.6.2) + typescript: 5.6.2 - '@typechain/hardhat@7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))': + '@typechain/hardhat@7.0.0(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))': dependencies: '@ethersproject/abi': 5.7.0 '@ethersproject/providers': 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@typechain/ethers-v5': 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2) + '@typechain/ethers-v5': 11.1.2(@ethersproject/abi@5.7.0)(@ethersproject/providers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) fs-extra: 9.1.0 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) - typechain: 8.3.2(typescript@5.2.2) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) + typechain: 8.3.2(typescript@5.6.2) - '@typechain/web3-v1@6.0.7(typechain@8.3.2(typescript@5.2.2))(typescript@5.2.2)(web3-core@1.10.3)(web3-eth-contract@1.10.3)(web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10))': + '@typechain/web3-v1@6.0.7(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2)(web3-core@1.10.4)(web3-eth-contract@1.10.4)(web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10))': dependencies: lodash: 4.17.21 - ts-essentials: 7.0.3(typescript@5.2.2) - typechain: 8.3.2(typescript@5.2.2) - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - web3-core: 1.10.3 - web3-eth-contract: 1.10.3 + ts-essentials: 7.0.3(typescript@5.6.2) + typechain: 8.3.2(typescript@5.6.2) + web3: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-core: 1.10.4 + web3-eth-contract: 1.10.4 transitivePeerDependencies: - typescript @@ -7525,30 +7187,32 @@ snapshots: dependencies: '@types/node': 17.0.45 - '@types/bn.js@5.1.3': + '@types/bn.js@5.1.6': dependencies: '@types/node': 17.0.45 '@types/cacheable-request@6.0.3': dependencies: - '@types/http-cache-semantics': 4.0.3 + '@types/http-cache-semantics': 4.0.4 '@types/keyv': 3.1.4 '@types/node': 17.0.45 - '@types/responselike': 1.0.2 + '@types/responselike': 1.0.3 - '@types/chai-as-promised@7.1.7': + '@types/chai-as-promised@7.1.8': dependencies: - '@types/chai': 4.3.9 + '@types/chai': 4.3.20 - '@types/chai@4.3.9': {} + '@types/chai@4.3.20': {} - '@types/cli-table@0.3.3': {} + '@types/cli-table@0.3.4': {} '@types/concat-stream@1.6.1': dependencies: '@types/node': 17.0.45 - '@types/crypto-js@4.1.3': {} + '@types/crypto-js@4.2.2': {} + + '@types/estree@1.0.6': {} '@types/form-data@0.0.33': dependencies: @@ -7559,11 +7223,7 @@ snapshots: '@types/minimatch': 5.1.2 '@types/node': 17.0.45 - '@types/http-cache-semantics@4.0.3': {} - - '@types/is-ci@3.0.4': - dependencies: - ci-info: 3.9.0 + '@types/http-cache-semantics@4.0.4': {} '@types/json-schema@7.0.15': {} @@ -7577,11 +7237,9 @@ snapshots: '@types/minimatch@5.1.2': {} - '@types/minimist@1.2.5': {} - '@types/mocha@9.1.1': {} - '@types/node-fetch@2.6.7': + '@types/node-fetch@2.6.11': dependencies: '@types/node': 17.0.45 form-data: 4.0.0 @@ -7594,74 +7252,67 @@ snapshots: '@types/node@8.10.66': {} - '@types/normalize-package-data@2.4.4': {} - - '@types/pbkdf2@3.1.1': + '@types/pbkdf2@3.1.2': dependencies: '@types/node': 17.0.45 '@types/prettier@2.7.3': {} - '@types/qs@6.9.9': {} - - '@types/readable-stream@2.3.15': - dependencies: - '@types/node': 17.0.45 - safe-buffer: 5.1.2 + '@types/qs@6.9.16': {} - '@types/responselike@1.0.2': + '@types/responselike@1.0.3': dependencies: '@types/node': 17.0.45 - '@types/secp256k1@4.0.5': + '@types/secp256k1@4.0.6': dependencies: '@types/node': 17.0.45 - '@types/semver@7.5.4': {} + '@types/semver@7.5.8': {} - '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@7.16.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2)': + '@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@7.18.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2)': dependencies: - '@eslint-community/regexpp': 4.9.1 - '@typescript-eslint/parser': 7.16.0(eslint@9.6.0)(typescript@5.2.2) + '@eslint-community/regexpp': 4.11.1 + '@typescript-eslint/parser': 7.18.0(eslint@9.11.1)(typescript@5.6.2) '@typescript-eslint/scope-manager': 6.21.0 - '@typescript-eslint/type-utils': 6.21.0(eslint@9.6.0)(typescript@5.2.2) - '@typescript-eslint/utils': 6.21.0(eslint@9.6.0)(typescript@5.2.2) + '@typescript-eslint/type-utils': 6.21.0(eslint@9.11.1)(typescript@5.6.2) + '@typescript-eslint/utils': 6.21.0(eslint@9.11.1)(typescript@5.6.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.6.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.11.1 graphemer: 1.4.0 - ignore: 5.2.4 + ignore: 5.3.2 natural-compare: 1.4.0 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.2.2) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2)': + '@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2)': dependencies: '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.6.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.11.1 optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.16.0(eslint@9.6.0)(typescript@5.2.2)': + '@typescript-eslint/parser@7.18.0(eslint@9.11.1)(typescript@5.6.2)': dependencies: - '@typescript-eslint/scope-manager': 7.16.0 - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/typescript-estree': 7.16.0(typescript@5.2.2) - '@typescript-eslint/visitor-keys': 7.16.0 - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.6.0 + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.11.1 optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -7675,20 +7326,20 @@ snapshots: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - '@typescript-eslint/scope-manager@7.16.0': + '@typescript-eslint/scope-manager@7.18.0': dependencies: - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/visitor-keys': 7.16.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/type-utils@6.21.0(eslint@9.6.0)(typescript@5.2.2)': + '@typescript-eslint/type-utils@6.21.0(eslint@9.11.1)(typescript@5.6.2)': dependencies: - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.2.2) - '@typescript-eslint/utils': 6.21.0(eslint@9.6.0)(typescript@5.2.2) - debug: 4.3.4(supports-color@8.1.1) - eslint: 9.6.0 - ts-api-utils: 1.3.0(typescript@5.2.2) + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) + '@typescript-eslint/utils': 6.21.0(eslint@9.11.1)(typescript@5.6.2) + debug: 4.3.7(supports-color@8.1.1) + eslint: 9.11.1 + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color @@ -7696,77 +7347,77 @@ snapshots: '@typescript-eslint/types@6.21.0': {} - '@typescript-eslint/types@7.16.0': {} + '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.2.2)': + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 - tsutils: 3.21.0(typescript@5.2.2) + semver: 7.6.3 + tsutils: 3.21.0(typescript@5.6.2) optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.21.0(typescript@5.2.2)': + '@typescript-eslint/typescript-estree@6.21.0(typescript@5.6.2)': dependencies: '@typescript-eslint/types': 6.21.0 '@typescript-eslint/visitor-keys': 6.21.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.3 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.2.2) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.16.0(typescript@5.2.2)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2)': dependencies: - '@typescript-eslint/types': 7.16.0 - '@typescript-eslint/visitor-keys': 7.16.0 - debug: 4.3.4(supports-color@8.1.1) + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 minimatch: 9.0.5 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.2.2) + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@9.6.0)(typescript@5.2.2)': + '@typescript-eslint/utils@5.62.0(eslint@9.11.1)(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.4 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.2.2) - eslint: 9.6.0 + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.2) + eslint: 9.11.1 eslint-scope: 5.1.1 - semver: 7.6.2 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@6.21.0(eslint@9.6.0)(typescript@5.2.2)': + '@typescript-eslint/utils@6.21.0(eslint@9.11.1)(typescript@5.6.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.4 + '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 6.21.0 '@typescript-eslint/types': 6.21.0 - '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.2.2) - eslint: 9.6.0 - semver: 7.6.2 + '@typescript-eslint/typescript-estree': 6.21.0(typescript@5.6.2) + eslint: 9.11.1 + semver: 7.6.3 transitivePeerDependencies: - supports-color - typescript @@ -7781,11 +7432,48 @@ snapshots: '@typescript-eslint/types': 6.21.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.16.0': + '@typescript-eslint/visitor-keys@7.18.0': dependencies: - '@typescript-eslint/types': 7.16.0 + '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 + '@web-std/blob@3.0.5': + dependencies: + '@web-std/stream': 1.0.0 + web-encoding: 1.1.5 + + '@web-std/fetch@4.2.1': + dependencies: + '@web-std/blob': 3.0.5 + '@web-std/file': 3.0.3 + '@web-std/form-data': 3.1.0 + '@web-std/stream': 1.0.3 + '@web3-storage/multipart-parser': 1.0.0 + abort-controller: 3.0.0 + data-uri-to-buffer: 3.0.1 + mrmime: 1.0.1 + + '@web-std/file@3.0.3': + dependencies: + '@web-std/blob': 3.0.5 + + '@web-std/form-data@3.1.0': + dependencies: + web-encoding: 1.1.5 + + '@web-std/stream@1.0.0': + dependencies: + web-streams-polyfill: 3.3.3 + + '@web-std/stream@1.0.3': + dependencies: + web-streams-polyfill: 3.3.3 + + '@web3-storage/multipart-parser@1.0.0': {} + + '@zxing/text-encoding@0.9.0': + optional: true + abbrev@1.0.9: {} abort-controller@3.0.0: @@ -7794,16 +7482,6 @@ snapshots: abortcontroller-polyfill@1.7.5: {} - abstract-level@1.0.3: - dependencies: - buffer: 6.0.3 - catering: 2.1.1 - is-buffer: 2.0.5 - level-supports: 4.0.1 - level-transcoder: 1.0.1 - module-error: 1.0.2 - queue-microtask: 1.2.3 - abstract-leveldown@2.6.3: dependencies: xtend: 4.0.2 @@ -7825,21 +7503,19 @@ snapshots: dependencies: acorn: 8.12.1 - acorn-walk@8.2.0: {} - - acorn@8.10.0: {} + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 acorn@8.12.1: {} - address@1.2.2: {} - adm-zip@0.4.16: {} aes-js@3.0.0: {} agent-base@6.0.2: dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -7855,21 +7531,21 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.0.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 amdefine@1.0.1: optional: true - ansi-colors@3.2.3: {} - - ansi-colors@3.2.4: {} + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 - ansi-colors@4.1.1: {} + ansi-colors@3.2.3: {} ansi-colors@4.1.3: {} @@ -7893,7 +7569,7 @@ snapshots: dependencies: color-convert: 2.0.1 - antlr4@4.13.1: {} + antlr4@4.13.2: {} antlr4ts@0.5.0-alpha.4: {} @@ -7922,11 +7598,6 @@ snapshots: array-back@4.0.2: {} - array-buffer-byte-length@1.0.0: - dependencies: - call-bind: 1.0.5 - is-array-buffer: 3.0.2 - array-buffer-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -7947,14 +7618,6 @@ snapshots: array-uniq@1.0.3: {} - array.prototype.findlast@1.2.3: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - es-shim-unscopables: 1.0.2 - get-intrinsic: 1.2.2 - array.prototype.findlast@1.2.5: dependencies: call-bind: 1.0.7 @@ -7975,24 +7638,26 @@ snapshots: array.prototype.flat@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 array.prototype.flatmap@1.3.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-shim-unscopables: 1.0.2 - array.prototype.reduce@1.0.6: + array.prototype.reduce@1.0.7: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 es-array-method-boxes-properly: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 is-string: 1.0.7 array.prototype.tosorted@1.1.4: @@ -8003,16 +7668,6 @@ snapshots: es-errors: 1.3.0 es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.2: - dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - get-intrinsic: 1.2.2 - is-array-buffer: 3.0.2 - is-shared-array-buffer: 1.0.2 - arraybuffer.prototype.slice@1.0.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -8024,8 +7679,6 @@ snapshots: is-array-buffer: 3.0.4 is-shared-array-buffer: 1.0.3 - arrify@1.0.1: {} - asap@2.0.6: {} asn1@0.2.6: @@ -8058,27 +7711,25 @@ snapshots: at-least-node@1.0.0: {} - available-typed-arrays@1.0.5: {} - available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 aws-sign2@0.7.0: {} - aws4@1.12.0: {} + aws4@1.13.2: {} axe-core@4.10.0: {} - axios@0.21.4(debug@4.3.4): + axios@0.21.4(debug@4.3.7): dependencies: - follow-redirects: 1.15.3(debug@4.3.4) + follow-redirects: 1.15.9(debug@4.3.7) transitivePeerDependencies: - debug - axios@1.5.1: + axios@1.7.7: dependencies: - follow-redirects: 1.15.3(debug@4.3.4) + follow-redirects: 1.15.9(debug@4.3.7) form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -8088,7 +7739,7 @@ snapshots: balanced-match@1.0.2: {} - base-x@3.0.9: + base-x@3.0.10: dependencies: safe-buffer: 5.2.1 @@ -8106,15 +7757,13 @@ snapshots: big-integer@1.6.36: {} - big.js@6.2.1: {} - - bigint-crypto-utils@3.3.0: {} + big.js@6.2.2: {} bignumber.js@7.2.1: {} bignumber.js@9.1.2: {} - binary-extensions@2.2.0: {} + binary-extensions@2.3.0: {} bl@1.2.3: dependencies: @@ -8131,24 +7780,7 @@ snapshots: bn.js@5.2.1: {} - body-parser@1.20.1: - dependencies: - bytes: 3.1.2 - content-type: 1.0.5 - debug: 2.6.9 - depd: 2.0.0 - destroy: 1.2.0 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - on-finished: 2.4.1 - qs: 6.11.0 - raw-body: 2.5.1 - type-is: 1.6.18 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -8158,7 +7790,7 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 @@ -8167,6 +7799,17 @@ snapshots: boolbase@1.0.0: {} + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 @@ -8176,23 +7819,12 @@ snapshots: dependencies: balanced-match: 1.0.2 - braces@3.0.2: - dependencies: - fill-range: 7.0.1 - - breakword@1.0.6: + braces@3.0.3: dependencies: - wcwidth: 1.0.1 + fill-range: 7.1.1 brorand@1.1.0: {} - browser-level@1.0.1: - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - run-parallel-limit: 1.1.0 - browser-stdout@1.3.1: {} browserify-aes@1.2.0: @@ -8209,11 +7841,11 @@ snapshots: caniuse-lite: 1.0.30001664 electron-to-chromium: 1.5.29 node-releases: 2.0.18 - update-browserslist-db: 1.1.0(browserslist@4.24.0) + update-browserslist-db: 1.1.1(browserslist@4.24.0) bs58@4.0.1: dependencies: - base-x: 3.0.9 + base-x: 3.0.10 bs58check@2.1.2: dependencies: @@ -8254,7 +7886,7 @@ snapshots: bufferutil@4.0.8: dependencies: - node-gyp-build: 4.6.1 + node-gyp-build: 4.8.2 bytes@3.1.2: {} @@ -8282,12 +7914,6 @@ snapshots: normalize-url: 6.1.0 responselike: 2.0.1 - call-bind@1.0.5: - dependencies: - function-bind: 1.1.2 - get-intrinsic: 1.2.2 - set-function-length: 1.1.1 - call-bind@1.0.7: dependencies: es-define-property: 1.0.0 @@ -8308,12 +7934,6 @@ snapshots: pascal-case: 3.1.2 tslib: 2.7.0 - camelcase-keys@6.2.2: - dependencies: - camelcase: 5.3.1 - map-obj: 4.3.0 - quick-lru: 4.0.1 - camelcase@3.0.0: {} camelcase@4.1.0: {} @@ -8330,12 +7950,8 @@ snapshots: tslib: 2.7.0 upper-case-first: 2.0.2 - case@1.6.3: {} - caseless@0.12.0: {} - catering@2.1.1: {} - caw@2.0.1: dependencies: get-proxy: 2.1.0 @@ -8352,25 +7968,20 @@ snapshots: dependencies: nofilter: 3.1.0 - chai-as-promised@7.1.1(chai@4.3.10): + chai-as-promised@7.1.2(chai@4.5.0): dependencies: - chai: 4.3.10 + chai: 4.5.0 check-error: 1.0.3 - chai-bn@0.2.2(bn.js@5.2.1)(chai@4.3.10): - dependencies: - bn.js: 5.2.1 - chai: 4.3.10 - - chai@4.3.10: + chai@4.5.0: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 - type-detect: 4.0.8 + type-detect: 4.1.0 chalk@2.4.2: dependencies: @@ -8440,20 +8051,24 @@ snapshots: domhandler: 5.0.3 domutils: 3.1.0 - cheerio@1.0.0-rc.12: + cheerio@1.0.0: dependencies: cheerio-select: 2.1.0 dom-serializer: 2.0.0 domhandler: 5.0.3 domutils: 3.1.0 - htmlparser2: 8.0.2 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 parse5: 7.1.2 parse5-htmlparser2-tree-adapter: 7.0.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.8 + whatwg-mimetype: 4.0.0 chokidar@3.3.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -8462,10 +8077,10 @@ snapshots: optionalDependencies: fsevents: 2.1.3 - chokidar@3.5.3: + chokidar@3.6.0: dependencies: anymatch: 3.1.3 - braces: 3.0.2 + braces: 3.0.3 glob-parent: 5.1.2 is-binary-path: 2.1.0 is-glob: 4.0.3 @@ -8474,6 +8089,10 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@4.0.1: + dependencies: + readdirp: 4.0.1 + chownr@1.1.4: {} ci-info@2.0.0: {} @@ -8495,16 +8114,10 @@ snapshots: class-is@1.1.0: {} - classic-level@1.3.0: - dependencies: - abstract-level: 1.0.3 - catering: 2.1.1 - module-error: 1.0.2 - napi-macros: 2.2.2 - node-gyp-build: 4.6.1 - clean-stack@2.2.0: {} + cli-boxes@2.2.1: {} + cli-table3@0.5.1: dependencies: object-assign: 4.1.1 @@ -8512,7 +8125,7 @@ snapshots: optionalDependencies: colors: 1.4.0 - cli-table3@0.6.3: + cli-table3@0.6.5: dependencies: string-width: 4.2.3 optionalDependencies: @@ -8534,24 +8147,12 @@ snapshots: strip-ansi: 5.2.0 wrap-ansi: 5.1.0 - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - cliui@7.0.4: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - clone-response@1.0.2: dependencies: mimic-response: 1.0.1 @@ -8560,8 +8161,6 @@ snapshots: dependencies: mimic-response: 1.0.1 - clone@1.0.4: {} - code-point-at@1.1.0: {} color-convert@1.9.3: @@ -8606,6 +8205,8 @@ snapshots: commander@3.0.2: {} + commander@8.3.0: {} + common-tags@1.8.2: {} concat-map@0.0.1: {} @@ -8651,9 +8252,9 @@ snapshots: cookie@0.4.2: {} - cookie@0.5.0: {} + cookie@0.6.0: {} - core-js-pure@3.33.1: {} + core-js-pure@3.38.1: {} core-util-is@1.0.2: {} @@ -8664,14 +8265,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 - cosmiconfig@8.3.6(typescript@5.2.2): + cosmiconfig@8.3.6(typescript@5.6.2): dependencies: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.2.2 + typescript: 5.6.2 crc-32@1.2.2: {} @@ -8722,7 +8323,7 @@ snapshots: crypto-addr-codec@0.1.8: dependencies: - base-x: 3.0.9 + base-x: 3.0.10 big-integer: 1.6.36 blakejs: 1.2.1 bs58: 4.0.1 @@ -8730,7 +8331,7 @@ snapshots: safe-buffer: 5.2.1 sha3: 2.1.4 - crypto-js@4.1.1: {} + crypto-js@4.2.0: {} css-select@5.1.0: dependencies: @@ -8742,23 +8343,10 @@ snapshots: css-what@6.1.0: {} - csv-generate@3.4.3: {} - - csv-parse@4.16.3: {} - - csv-stringify@5.6.5: {} - - csv@5.5.3: - dependencies: - csv-generate: 3.4.3 - csv-parse: 4.16.3 - csv-stringify: 5.6.5 - stream-transform: 2.1.3 - - d@1.0.1: + d@1.0.2: dependencies: - es5-ext: 0.10.62 - type: 1.2.0 + es5-ext: 0.10.64 + type: 2.7.3 damerau-levenshtein@1.0.8: {} @@ -8766,6 +8354,8 @@ snapshots: dependencies: assert-plus: 1.0.0 + data-uri-to-buffer@3.0.1: {} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 @@ -8802,17 +8392,12 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.3.4(supports-color@8.1.1): + debug@4.3.7(supports-color@8.1.1): dependencies: - ms: 2.1.2 + ms: 2.1.3 optionalDependencies: supports-color: 8.1.1 - decamelize-keys@1.1.1: - dependencies: - decamelize: 1.2.0 - map-obj: 1.0.1 - decamelize@1.2.0: {} decamelize@4.0.0: {} @@ -8865,30 +8450,30 @@ snapshots: pify: 2.3.0 strip-dirs: 2.1.0 - deep-eql@4.1.3: + deep-eql@4.1.4: dependencies: - type-detect: 4.0.8 + type-detect: 4.1.0 deep-equal@2.2.3: dependencies: - array-buffer-byte-length: 1.0.0 - call-bind: 1.0.5 + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 es-get-iterator: 1.1.3 - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 is-arguments: 1.1.1 - is-array-buffer: 3.0.2 + is-array-buffer: 3.0.4 is-date-object: 1.0.5 is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 + is-shared-array-buffer: 1.0.3 isarray: 2.0.5 object-is: 1.1.6 object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - side-channel: 1.0.4 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.2 + side-channel: 1.0.6 which-boxed-primitive: 1.0.2 which-collection: 1.0.2 - which-typed-array: 1.1.13 + which-typed-array: 1.1.15 deep-extend@0.6.0: {} @@ -8896,10 +8481,6 @@ snapshots: deepmerge@2.2.1: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - defer-to-connect@2.0.1: {} deferred-leveldown@1.2.2: @@ -8911,12 +8492,6 @@ snapshots: abstract-leveldown: 5.0.0 inherits: 2.0.4 - define-data-property@1.1.1: - dependencies: - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.0 @@ -8925,8 +8500,8 @@ snapshots: define-properties@1.2.1: dependencies: - define-data-property: 1.1.1 - has-property-descriptors: 1.0.1 + define-data-property: 1.1.4 + has-property-descriptors: 1.0.2 object-keys: 1.1.1 delayed-stream@1.0.0: {} @@ -8946,18 +8521,11 @@ snapshots: detect-indent@6.1.0: {} - detect-port@1.5.1: - dependencies: - address: 1.2.2 - debug: 4.3.4(supports-color@8.1.1) - transitivePeerDependencies: - - supports-color - diff@3.5.0: {} diff@4.0.2: {} - diff@5.0.0: {} + diff@5.2.0: {} difflib@0.2.4: dependencies: @@ -9042,6 +8610,16 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + elliptic@6.5.7: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + emoji-regex@7.0.3: {} emoji-regex@8.0.0: {} @@ -9052,6 +8630,8 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + encoding-down@5.0.4: dependencies: abstract-leveldown: 5.0.0 @@ -9060,6 +8640,11 @@ snapshots: level-errors: 2.0.1 xtend: 4.0.2 + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + end-of-stream@1.4.4: dependencies: once: 1.4.0 @@ -9081,48 +8666,6 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.22.3: - dependencies: - array-buffer-byte-length: 1.0.0 - arraybuffer.prototype.slice: 1.0.2 - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - es-set-tostringtag: 2.0.2 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.2 - get-symbol-description: 1.0.0 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - internal-slot: 1.0.6 - is-array-buffer: 3.0.2 - is-callable: 1.2.7 - is-negative-zero: 2.0.2 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.2 - is-string: 1.0.7 - is-typed-array: 1.1.12 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.4 - regexp.prototype.flags: 1.5.1 - safe-array-concat: 1.0.1 - safe-regex-test: 1.0.0 - string.prototype.trim: 1.2.8 - string.prototype.trimend: 1.0.7 - string.prototype.trimstart: 1.0.7 - typed-array-buffer: 1.0.0 - typed-array-byte-length: 1.0.0 - typed-array-byte-offset: 1.0.0 - typed-array-length: 1.0.4 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.13 - es-abstract@1.23.3: dependencies: array-buffer-byte-length: 1.0.1 @@ -9140,7 +8683,7 @@ snapshots: function.prototype.name: 1.1.6 get-intrinsic: 1.2.4 get-symbol-description: 1.0.2 - globalthis: 1.0.3 + globalthis: 1.0.4 gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 @@ -9156,7 +8699,7 @@ snapshots: is-string: 1.0.7 is-typed-array: 1.1.13 is-weakref: 1.0.2 - object-inspect: 1.13.1 + object-inspect: 1.13.2 object-keys: 1.1.1 object.assign: 4.1.5 regexp.prototype.flags: 1.5.2 @@ -9182,8 +8725,8 @@ snapshots: es-get-iterator@1.1.3: dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 + call-bind: 1.0.7 + get-intrinsic: 1.2.4 has-symbols: 1.0.3 is-arguments: 1.1.1 is-map: 2.0.3 @@ -9201,7 +8744,7 @@ snapshots: es-set-tostringtag: 2.0.3 function-bind: 1.1.2 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 @@ -9213,12 +8756,6 @@ snapshots: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.2: - dependencies: - get-intrinsic: 1.2.2 - has-tostringtag: 1.0.0 - hasown: 2.0.0 - es-set-tostringtag@2.0.3: dependencies: get-intrinsic: 1.2.4 @@ -9227,7 +8764,7 @@ snapshots: es-shim-unscopables@1.0.2: dependencies: - hasown: 2.0.0 + hasown: 2.0.2 es-to-primitive@1.2.1: dependencies: @@ -9235,27 +8772,26 @@ snapshots: is-date-object: 1.0.5 is-symbol: 1.0.4 - es5-ext@0.10.62: + es5-ext@0.10.64: dependencies: es6-iterator: 2.0.3 - es6-symbol: 3.1.3 + es6-symbol: 3.1.4 + esniff: 2.0.1 next-tick: 1.1.0 es6-iterator@2.0.3: dependencies: - d: 1.0.1 - es5-ext: 0.10.62 - es6-symbol: 3.1.3 + d: 1.0.2 + es5-ext: 0.10.64 + es6-symbol: 3.1.4 es6-promise@4.2.8: {} - es6-symbol@3.1.3: + es6-symbol@3.1.4: dependencies: - d: 1.0.1 + d: 1.0.2 ext: 1.7.0 - escalade@3.1.1: {} - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -9273,13 +8809,13 @@ snapshots: optionalDependencies: source-map: 0.2.0 - eslint-config-prettier@8.10.0(eslint@9.6.0): + eslint-config-prettier@8.10.0(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 - eslint-config-prettier@9.1.0(eslint@9.6.0): + eslint-config-prettier@9.1.0(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 eslint-import-resolver-node@0.3.9: dependencies: @@ -9289,29 +8825,29 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.11.1(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint@9.6.0): + eslint-module-utils@2.12.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@9.6.0)(typescript@5.2.2) - eslint: 9.6.0 + '@typescript-eslint/parser': 6.21.0(eslint@9.11.1)(typescript@5.6.2) + eslint: 9.11.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-es@3.0.1(eslint@9.6.0): + eslint-plugin-es@3.0.1(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-eslint-comments@3.2.0(eslint@9.6.0): + eslint-plugin-eslint-comments@3.2.0(eslint@9.11.1): dependencies: escape-string-regexp: 1.0.5 - eslint: 9.6.0 - ignore: 5.2.4 + eslint: 9.11.1 + ignore: 5.3.2 - eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0): + eslint-plugin-import@2.30.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -9320,9 +8856,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.6.0 + eslint: 9.11.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.11.1(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint-import-resolver-node@0.3.9)(eslint@9.6.0) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -9333,27 +8869,27 @@ snapshots: semver: 6.3.1 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 6.21.0(eslint@9.6.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.21.0(eslint@9.11.1)(typescript@5.6.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jest-formatting@3.1.0(eslint@9.6.0): + eslint-plugin-jest-formatting@3.1.0(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 - eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2): + eslint-plugin-jest@27.9.0(@typescript-eslint/eslint-plugin@6.21.0(@typescript-eslint/parser@6.21.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2): dependencies: - '@typescript-eslint/utils': 5.62.0(eslint@9.6.0)(typescript@5.2.2) - eslint: 9.6.0 + '@typescript-eslint/utils': 5.62.0(eslint@9.11.1)(typescript@5.6.2) + eslint: 9.11.1 optionalDependencies: - '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@7.16.0(eslint@9.6.0)(typescript@5.2.2))(eslint@9.6.0)(typescript@5.2.2) + '@typescript-eslint/eslint-plugin': 6.21.0(@typescript-eslint/parser@7.18.0(eslint@9.11.1)(typescript@5.6.2))(eslint@9.11.1)(typescript@5.6.2) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-jsx-a11y@6.10.0(eslint@9.6.0): + eslint-plugin-jsx-a11y@6.10.0(eslint@9.11.1): dependencies: aria-query: 5.1.3 array-includes: 3.1.8 @@ -9364,7 +8900,7 @@ snapshots: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.19 - eslint: 9.6.0 + eslint: 9.11.1 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -9373,34 +8909,34 @@ snapshots: safe-regex-test: 1.0.3 string.prototype.includes: 2.0.0 - eslint-plugin-node@11.1.0(eslint@9.6.0): + eslint-plugin-node@11.1.0(eslint@9.11.1): dependencies: - eslint: 9.6.0 - eslint-plugin-es: 3.0.1(eslint@9.6.0) + eslint: 9.11.1 + eslint-plugin-es: 3.0.1(eslint@9.11.1) eslint-utils: 2.1.0 - ignore: 5.2.4 + ignore: 5.3.2 minimatch: 3.1.2 resolve: 1.22.8 semver: 6.3.1 - eslint-plugin-prettier@5.2.1(eslint-config-prettier@8.10.0(eslint@9.6.0))(eslint@9.6.0)(prettier@3.0.3): + eslint-plugin-prettier@5.2.1(eslint-config-prettier@8.10.0(eslint@9.11.1))(eslint@9.11.1)(prettier@2.8.8): dependencies: - eslint: 9.6.0 - prettier: 3.0.3 + eslint: 9.11.1 + prettier: 2.8.8 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@9.6.0) + eslint-config-prettier: 8.10.0(eslint@9.11.1) - eslint-plugin-promise@6.4.0(eslint@9.6.0): + eslint-plugin-promise@6.6.0(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 - eslint-plugin-react-hooks@4.6.2(eslint@9.6.0): + eslint-plugin-react-hooks@4.6.2(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 - eslint-plugin-react@7.36.1(eslint@9.6.0): + eslint-plugin-react@7.37.0(eslint@9.11.1): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -9408,7 +8944,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.0.19 - eslint: 9.6.0 + eslint: 9.11.1 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -9422,9 +8958,9 @@ snapshots: string.prototype.matchall: 4.0.11 string.prototype.repeat: 1.0.0 - eslint-plugin-sort-class-members@1.20.0(eslint@9.6.0): + eslint-plugin-sort-class-members@1.20.0(eslint@9.11.1): dependencies: - eslint: 9.6.0 + eslint: 9.11.1 eslint-rule-composer@0.3.0: {} @@ -9433,7 +8969,7 @@ snapshots: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@8.0.1: + eslint-scope@8.0.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 @@ -9450,45 +8986,55 @@ snapshots: eslint-visitor-keys@4.0.0: {} - eslint@9.6.0: + eslint@9.11.1: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.6.0) - '@eslint-community/regexpp': 4.9.1 - '@eslint/config-array': 0.17.0 + '@eslint-community/eslint-utils': 4.4.0(eslint@9.11.1) + '@eslint-community/regexpp': 4.11.1 + '@eslint/config-array': 0.18.0 + '@eslint/core': 0.6.0 '@eslint/eslintrc': 3.1.0 - '@eslint/js': 9.6.0 + '@eslint/js': 9.11.1 + '@eslint/plugin-kit': 0.2.0 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.0 '@nodelib/fs.walk': 1.2.8 + '@types/estree': 1.0.6 + '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 8.0.1 + eslint-scope: 8.0.2 eslint-visitor-keys: 4.0.0 espree: 10.1.0 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - ignore: 5.2.4 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 json-stable-stringify-without-jsonify: 1.0.1 - levn: 0.4.1 lodash.merge: 4.6.2 minimatch: 3.1.2 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 strip-ansi: 6.0.1 text-table: 0.2.0 transitivePeerDependencies: - supports-color + esniff@2.0.1: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-emitter: 0.3.5 + type: 2.7.3 + espree@10.1.0: dependencies: acorn: 8.12.1 @@ -9499,7 +9045,7 @@ snapshots: esprima@4.0.1: {} - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -9532,7 +9078,7 @@ snapshots: eth-gas-reporter@0.2.27(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@solidity-parser/parser': 0.14.5 - axios: 1.5.1 + axios: 1.7.7 cli-table3: 0.5.1 colors: 1.4.0 ethereum-cryptography: 1.2.0 @@ -9540,7 +9086,7 @@ snapshots: fs-readdir-recursive: 1.1.0 lodash: 4.17.21 markdown-table: 1.1.3 - mocha: 10.2.0 + mocha: 10.7.3 req-cwd: 2.0.0 sha1: 1.1.1 sync-request: 6.1.0 @@ -9552,7 +9098,7 @@ snapshots: eth-lib@0.1.29(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: bn.js: 4.12.0 - elliptic: 6.5.4 + elliptic: 6.5.7 nano-json-stream-parser: 0.1.2 servify: 0.1.12 ws: 3.3.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) @@ -9565,7 +9111,7 @@ snapshots: eth-lib@0.2.8: dependencies: bn.js: 4.12.0 - elliptic: 6.5.4 + elliptic: 6.5.7 xhr-request-promise: 0.1.3 eth-sig-util@2.5.4: @@ -9582,14 +9128,14 @@ snapshots: ethereumjs-util: 7.1.5 miller-rabin: 4.0.1 - ethereum-bloom-filters@1.0.10: + ethereum-bloom-filters@1.2.0: dependencies: - js-sha3: 0.8.0 + '@noble/hashes': 1.5.0 ethereum-cryptography@0.1.3: dependencies: - '@types/pbkdf2': 3.1.1 - '@types/secp256k1': 4.0.5 + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 blakejs: 1.2.1 browserify-aes: 1.2.0 bs58check: 2.1.2 @@ -9611,12 +9157,12 @@ snapshots: '@scure/bip32': 1.1.5 '@scure/bip39': 1.1.1 - ethereum-cryptography@2.1.2: + ethereum-cryptography@2.2.1: dependencies: - '@noble/curves': 1.1.0 - '@noble/hashes': 1.3.1 - '@scure/bip32': 1.3.1 - '@scure/bip39': 1.2.1 + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 ethereum-ens@0.8.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: @@ -9624,8 +9170,8 @@ snapshots: eth-ens-namehash: 2.0.8 js-sha3: 0.5.7 pako: 1.0.11 - underscore: 1.13.6 - web3: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) + underscore: 1.13.7 + web3: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - encoding @@ -9675,7 +9221,7 @@ snapshots: dependencies: bn.js: 4.12.0 create-hash: 1.2.0 - elliptic: 6.5.4 + elliptic: 6.5.7 ethereum-cryptography: 0.1.3 ethjs-util: 0.1.6 rlp: 2.2.7 @@ -9686,14 +9232,14 @@ snapshots: '@types/bn.js': 4.11.6 bn.js: 4.12.0 create-hash: 1.2.0 - elliptic: 6.5.4 + elliptic: 6.5.7 ethereum-cryptography: 0.1.3 ethjs-util: 0.1.6 rlp: 2.2.7 ethereumjs-util@7.1.5: dependencies: - '@types/bn.js': 5.1.3 + '@types/bn.js': 5.1.6 bn.js: 5.2.1 create-hash: 1.2.0 ethereum-cryptography: 0.1.3 @@ -9747,12 +9293,6 @@ snapshots: - bufferutil - utf-8-validate - ethjs-abi@0.2.1: - dependencies: - bn.js: 4.11.6 - js-sha3: 0.5.5 - number-to-bn: 1.7.0 - ethjs-unit@0.1.6: dependencies: bn.js: 4.11.6 @@ -9763,6 +9303,11 @@ snapshots: is-hex-prefixed: 1.0.0 strip-hex-prefix: 1.0.0 + event-emitter@0.3.5: + dependencies: + d: 1.0.2 + es5-ext: 0.10.64 + event-target-shim@5.0.1: {} eventemitter3@4.0.4: {} @@ -9772,34 +9317,34 @@ snapshots: md5.js: 1.3.5 safe-buffer: 5.2.1 - express@4.18.2: + express@4.21.0: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.1 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.5.0 + cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.10 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -9810,7 +9355,7 @@ snapshots: ext-list@2.2.2: dependencies: - mime-db: 1.52.0 + mime-db: 1.53.0 ext-name@5.0.0: dependencies: @@ -9819,7 +9364,7 @@ snapshots: ext@1.7.0: dependencies: - type: 2.7.2 + type: 2.7.3 extend@3.0.2: {} @@ -9831,6 +9376,8 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + extract-files@9.0.0: {} + extsprintf@1.3.0: {} fake-merkle-patricia-tree@1.0.1: @@ -9845,19 +9392,21 @@ snapshots: fast-diff@1.3.0: {} - fast-glob@3.3.1: + fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.5 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fastq@1.15.0: + fast-uri@3.0.2: {} + + fastq@1.17.1: dependencies: reusify: 1.0.4 @@ -9887,14 +9436,14 @@ snapshots: strip-outer: 1.0.1 trim-repeated: 1.0.0 - fill-range@7.0.1: + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -9930,14 +9479,9 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root2@1.2.16: - dependencies: - micromatch: 4.0.5 - pkg-dir: 4.2.0 - flat-cache@4.0.1: dependencies: - flatted: 3.2.9 + flatted: 3.3.1 keyv: 4.5.4 flat@4.1.1: @@ -9946,7 +9490,7 @@ snapshots: flat@5.0.2: {} - flatted@3.2.9: {} + flatted@3.3.1: {} flow-stoplight@1.0.0: {} @@ -9954,9 +9498,9 @@ snapshots: dependencies: imul: 1.0.1 - follow-redirects@1.15.3(debug@4.3.4): + follow-redirects@1.15.9(debug@4.3.7): optionalDependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) for-each@0.3.3: dependencies: @@ -9978,6 +9522,12 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 + form-data@3.0.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + form-data@4.0.0: dependencies: asynckit: 0.4.0 @@ -10009,7 +9559,7 @@ snapshots: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 fs-extra@4.0.3: dependencies: @@ -10034,7 +9584,7 @@ snapshots: at-least-node: 1.0.0 graceful-fs: 4.2.11 jsonfile: 6.1.0 - universalify: 2.0.0 + universalify: 2.0.1 fs-minipass@1.2.7: dependencies: @@ -10054,9 +9604,9 @@ snapshots: function.prototype.name@1.1.6: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 functions-have-names: 1.2.3 functional-red-black-tree@1.0.1: {} @@ -10071,20 +9621,13 @@ snapshots: get-func-name@2.0.2: {} - get-intrinsic@1.2.2: - dependencies: - function-bind: 1.1.2 - has-proto: 1.0.1 - has-symbols: 1.0.3 - hasown: 2.0.0 - get-intrinsic@1.2.4: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - hasown: 2.0.0 + hasown: 2.0.2 get-port@3.2.0: {} @@ -10101,15 +9644,10 @@ snapshots: get-stream@5.2.0: dependencies: - pump: 3.0.0 + pump: 3.0.2 get-stream@6.0.1: {} - get-symbol-description@1.0.0: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 @@ -10210,18 +9748,19 @@ snapshots: globals@15.9.0: {} - globalthis@1.0.3: + globalthis@1.0.4: dependencies: define-properties: 1.2.1 + gopd: 1.0.1 globby@10.0.2: dependencies: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 + fast-glob: 3.3.2 glob: 7.2.3 - ignore: 5.2.4 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -10229,21 +9768,21 @@ snapshots: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.1 - ignore: 5.2.4 + fast-glob: 3.3.2 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 gopd@1.0.1: dependencies: - get-intrinsic: 1.2.2 + get-intrinsic: 1.2.4 got@11.8.6: dependencies: '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 4.0.6 '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.2 + '@types/responselike': 1.0.3 cacheable-lookup: 5.0.4 cacheable-request: 7.0.4 decompress-response: 6.0.0 @@ -10257,13 +9796,13 @@ snapshots: '@sindresorhus/is': 4.6.0 '@szmarczak/http-timer': 5.0.1 '@types/cacheable-request': 6.0.3 - '@types/responselike': 1.0.2 + '@types/responselike': 1.0.3 cacheable-lookup: 6.1.0 cacheable-request: 7.0.4 decompress-response: 6.0.0 form-data-encoder: 1.7.1 get-stream: 6.0.1 - http2-wrapper: 2.2.0 + http2-wrapper: 2.2.1 lowercase-keys: 3.0.0 p-cancelable: 3.0.0 responselike: 2.0.1 @@ -10272,7 +9811,7 @@ snapshots: dependencies: '@sindresorhus/is': 0.7.0 '@types/keyv': 3.1.4 - '@types/responselike': 1.0.2 + '@types/responselike': 1.0.3 cacheable-request: 2.1.4 decompress-response: 3.3.0 duplexer3: 0.1.5 @@ -10292,10 +9831,19 @@ snapshots: graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} - graphemer@1.4.0: {} + graphql-request@4.3.0(graphql@16.9.0): + dependencies: + cross-fetch: 3.1.8 + extract-files: 9.0.0 + form-data: 3.0.1 + graphql: 16.9.0 + transitivePeerDependencies: + - encoding + + graphql@16.9.0: {} + growl@1.10.5: {} handlebars@4.7.8: @@ -10305,7 +9853,7 @@ snapshots: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.4 + uglify-js: 3.19.3 har-schema@2.0.0: {} @@ -10314,19 +9862,17 @@ snapshots: ajv: 6.12.6 har-schema: 2.0.0 - hard-rejection@2.1.0: {} - - hardhat-abi-exporter@2.10.1(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)): + hardhat-abi-exporter@2.10.1(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)): dependencies: '@ethersproject/abi': 5.7.0 delete-empty: 3.0.0 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) - hardhat-contract-sizer@2.10.0(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)): + hardhat-contract-sizer@2.10.0(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)): dependencies: chalk: 4.1.2 - cli-table3: 0.6.3 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + cli-table3: 0.6.5 + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) strip-ansi: 6.0.1 hardhat-deploy@0.12.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): @@ -10342,39 +9888,39 @@ snapshots: '@ethersproject/solidity': 5.7.0 '@ethersproject/transactions': 5.7.0 '@ethersproject/wallet': 5.7.0 - '@types/qs': 6.9.9 - axios: 0.21.4(debug@4.3.4) + '@types/qs': 6.9.16 + axios: 0.21.4(debug@4.3.7) chalk: 4.1.2 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) enquirer: 2.4.1 ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) form-data: 4.0.0 fs-extra: 10.1.0 match-all: 1.2.6 murmur-128: 0.2.1 - qs: 6.11.2 - zksync-ethers: 5.8.0(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)) + qs: 6.13.0 + zksync-ethers: 5.9.2(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - hardhat-diamond-abi@3.0.1(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10): + hardhat-diamond-abi@3.0.1(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10): dependencies: - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - hardhat-gas-reporter@1.0.9(bufferutil@4.0.8)(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10): + hardhat-gas-reporter@1.0.10(bufferutil@4.0.8)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10): dependencies: array-uniq: 1.0.3 eth-gas-reporter: 0.2.27(bufferutil@4.0.8)(utf-8-validate@5.0.10) - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) sha1: 1.1.1 transitivePeerDependencies: - '@codechecks/client' @@ -10382,31 +9928,39 @@ snapshots: - debug - utf-8-validate - hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10): + hardhat-tracer@3.1.0(bufferutil@4.0.8)(chai@4.5.0)(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10))(utf-8-validate@5.0.10): + dependencies: + chai: 4.5.0 + chalk: 4.1.2 + debug: 4.3.7(supports-color@8.1.1) + ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) + semver: 7.6.3 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10): dependencies: '@ethersproject/abi': 5.7.0 '@metamask/eth-sig-util': 4.0.1 - '@nomicfoundation/ethereumjs-block': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-blockchain': 7.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-common': 4.0.2 - '@nomicfoundation/ethereumjs-evm': 2.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-rlp': 5.0.2 - '@nomicfoundation/ethereumjs-statemanager': 2.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-trie': 6.0.2 - '@nomicfoundation/ethereumjs-tx': 5.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/ethereumjs-util': 9.0.2 - '@nomicfoundation/ethereumjs-vm': 7.0.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) - '@nomicfoundation/solidity-analyzer': 0.1.1 + '@nomicfoundation/edr': 0.5.2 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.2 '@sentry/node': 5.30.0 - '@types/bn.js': 5.1.3 + '@types/bn.js': 5.1.6 '@types/lru-cache': 5.1.1 adm-zip: 0.4.16 aggregate-error: 3.1.0 ansi-escapes: 4.3.2 + boxen: 5.1.2 chalk: 2.4.2 - chokidar: 3.5.3 + chokidar: 4.0.1 ci-info: 2.0.0 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) enquirer: 2.4.1 env-paths: 2.2.1 ethereum-cryptography: 1.2.0 @@ -10415,28 +9969,30 @@ snapshots: fp-ts: 1.19.3 fs-extra: 7.0.1 glob: 7.2.0 - immutable: 4.3.4 + immutable: 4.3.7 io-ts: 1.10.4 + json-stream-stringify: 3.1.4 keccak: 3.0.4 lodash: 4.17.21 mnemonist: 0.38.5 - mocha: 10.2.0 + mocha: 10.7.3 p-map: 4.0.0 raw-body: 2.5.2 resolve: 1.17.0 semver: 6.3.1 - solc: 0.7.3(debug@4.3.4) + solc: 0.8.26(debug@4.3.7) source-map-support: 0.5.21 stacktrace-parser: 0.1.10 tsort: 0.0.1 - undici: 5.26.4 + undici: 5.28.4 uuid: 8.3.2 - ws: 7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10) + ws: 7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10) optionalDependencies: - ts-node: 10.9.1(@types/node@17.0.45)(typescript@5.2.2) - typescript: 5.2.2 + ts-node: 10.9.2(@types/node@17.0.45)(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - bufferutil + - c-kzg - supports-color - utf-8-validate @@ -10448,16 +10004,10 @@ snapshots: has-flag@4.0.0: {} - has-property-descriptors@1.0.1: - dependencies: - get-intrinsic: 1.2.2 - has-property-descriptors@1.0.2: dependencies: es-define-property: 1.0.0 - has-proto@1.0.1: {} - has-proto@1.0.3: {} has-symbol-support-x@1.4.2: {} @@ -10468,10 +10018,6 @@ snapshots: dependencies: has-symbol-support-x: 1.4.2 - has-tostringtag@1.0.0: - dependencies: - has-symbols: 1.0.3 - has-tostringtag@1.0.2: dependencies: has-symbols: 1.0.3 @@ -10494,10 +10040,6 @@ snapshots: inherits: 2.0.4 minimalistic-assert: 1.0.1 - hasown@2.0.0: - dependencies: - function-bind: 1.1.2 - hasown@2.0.2: dependencies: function-bind: 1.1.2 @@ -10528,7 +10070,7 @@ snapshots: hosted-git-info@2.8.9: {} - htmlparser2@8.0.2: + htmlparser2@9.1.0: dependencies: domelementtype: 2.3.0 domhandler: 5.0.3 @@ -10571,7 +10113,7 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - http2-wrapper@2.2.0: + http2-wrapper@2.2.1: dependencies: quick-lru: 5.1.1 resolve-alpn: 1.2.1 @@ -10579,7 +10121,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -10589,19 +10131,23 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + idna-uts46-hx@2.3.1: dependencies: punycode: 2.1.0 ieee754@1.2.1: {} - ignore@5.2.4: {} + ignore@5.3.2: {} immediate@3.2.3: {} immediate@3.3.0: {} - immutable@4.3.4: {} + immutable@4.3.7: {} import-fresh@3.3.0: dependencies: @@ -10623,17 +10169,11 @@ snapshots: ini@1.3.8: {} - internal-slot@1.0.6: - dependencies: - get-intrinsic: 1.2.2 - hasown: 2.0.0 - side-channel: 1.0.4 - internal-slot@1.0.7: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.4 + side-channel: 1.0.6 interpret@1.4.0: {} @@ -10652,14 +10192,8 @@ snapshots: is-arguments@1.1.1: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 - - is-array-buffer@3.0.2: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 is-array-buffer@3.0.4: dependencies: @@ -10678,25 +10212,17 @@ snapshots: is-binary-path@2.1.0: dependencies: - binary-extensions: 2.2.0 + binary-extensions: 2.3.0 is-boolean-object@1.1.2: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 is-buffer@2.0.5: {} is-callable@1.2.7: {} - is-ci@3.0.1: - dependencies: - ci-info: 3.9.0 - - is-core-module@2.13.1: - dependencies: - hasown: 2.0.0 - is-core-module@2.15.1: dependencies: hasown: 2.0.2 @@ -10707,7 +10233,7 @@ snapshots: is-date-object@1.0.5: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-extglob@2.1.1: {} @@ -10727,7 +10253,7 @@ snapshots: is-generator-function@1.0.10: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-glob@4.0.3: dependencies: @@ -10748,13 +10274,11 @@ snapshots: is-natural-number@4.0.1: {} - is-negative-zero@2.0.2: {} - is-negative-zero@2.0.3: {} is-number-object@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -10772,17 +10296,13 @@ snapshots: is-regex@1.1.4: dependencies: - call-bind: 1.0.5 - has-tostringtag: 1.0.0 + call-bind: 1.0.7 + has-tostringtag: 1.0.2 is-retry-allowed@1.2.0: {} is-set@2.0.3: {} - is-shared-array-buffer@1.0.2: - dependencies: - call-bind: 1.0.5 - is-shared-array-buffer@1.0.3: dependencies: call-bind: 1.0.7 @@ -10791,7 +10311,7 @@ snapshots: is-string@1.0.7: dependencies: - has-tostringtag: 1.0.0 + has-tostringtag: 1.0.2 is-subdir@1.2.0: dependencies: @@ -10801,10 +10321,6 @@ snapshots: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.12: - dependencies: - which-typed-array: 1.1.13 - is-typed-array@1.1.13: dependencies: which-typed-array: 1.1.15 @@ -10823,7 +10339,7 @@ snapshots: is-weakref@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 is-weakset@2.0.3: dependencies: @@ -10840,6 +10356,13 @@ snapshots: isexe@2.0.0: {} + isomorphic-unfetch@3.1.0: + dependencies: + node-fetch: 2.7.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + isstream@0.1.2: {} isurl@1.0.0: @@ -10853,11 +10376,7 @@ snapshots: get-intrinsic: 1.2.4 has-symbols: 1.0.3 reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.1 - - js-sdsl@4.4.2: {} - - js-sha3@0.5.5: {} + set-function-name: 2.0.2 js-sha3@0.5.7: {} @@ -10897,6 +10416,8 @@ snapshots: json-stable-stringify-without-jsonify@1.0.1: {} + json-stream-stringify@3.1.4: {} + json-stringify-safe@5.0.1: {} json5@1.0.2: @@ -10915,7 +10436,7 @@ snapshots: jsonfile@6.1.0: dependencies: - universalify: 2.0.0 + universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 @@ -10932,13 +10453,13 @@ snapshots: dependencies: array-includes: 3.1.8 array.prototype.flat: 1.3.2 - object.assign: 4.1.4 + object.assign: 4.1.5 object.values: 1.2.0 keccak@3.0.4: dependencies: node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 + node-gyp-build: 4.8.2 readable-stream: 3.6.2 keyv@3.0.0: @@ -10955,8 +10476,6 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 - kleur@4.1.5: {} - language-subtag-registry@0.3.23: {} language-tags@1.0.9: @@ -11004,13 +10523,6 @@ snapshots: encoding-down: 5.0.4 levelup: 3.1.1 - level-supports@4.0.1: {} - - level-transcoder@1.0.1: - dependencies: - buffer: 6.0.3 - module-error: 1.0.2 - level-ws@0.0.0: dependencies: readable-stream: 1.0.34 @@ -11022,11 +10534,6 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 - level@8.0.0: - dependencies: - browser-level: 1.0.1 - classic-level: 1.3.0 - levelup@1.3.9: dependencies: deferred-leveldown: 1.2.2 @@ -11064,13 +10571,6 @@ snapshots: pinkie-promise: 2.0.1 strip-bom: 2.0.0 - load-yaml-file@0.2.0: - dependencies: - graceful-fs: 4.2.11 - js-yaml: 3.14.1 - pify: 4.0.1 - strip-bom: 3.0.0 - locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -11093,8 +10593,6 @@ snapshots: lodash.camelcase@4.3.0: {} - lodash.flatten@4.4.0: {} - lodash.merge@4.6.2: {} lodash.startcase@4.4.0: {} @@ -11147,10 +10645,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: - dependencies: - yallist: 4.0.0 - lru_map@0.3.3: {} ltgt@2.2.1: {} @@ -11161,16 +10655,10 @@ snapshots: make-error@1.3.6: {} - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - markdown-table@1.1.3: {} match-all@1.2.6: {} - mcl-wasm@0.7.9: {} - md5.js@1.3.5: dependencies: hash-base: 3.1.0 @@ -11197,29 +10685,9 @@ snapshots: ltgt: 2.2.1 safe-buffer: 5.1.2 - memory-level@1.0.0: - dependencies: - abstract-level: 1.0.3 - functional-red-black-tree: 1.0.1 - module-error: 1.0.2 - memorystream@0.3.1: {} - meow@6.1.1: - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 2.5.0 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.13.1 - yargs-parser: 18.1.3 - - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge2@1.4.1: {} @@ -11248,9 +10716,9 @@ snapshots: micro-ftch@0.3.1: {} - micromatch@4.0.5: + micromatch@4.0.8: dependencies: - braces: 3.0.2 + braces: 3.0.3 picomatch: 2.3.1 miller-rabin@4.0.1: @@ -11260,6 +10728,8 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.53.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -11274,8 +10744,6 @@ snapshots: dependencies: dom-walk: 0.1.2 - min-indent@1.0.1: {} - minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} @@ -11288,10 +10756,6 @@ snapshots: dependencies: brace-expansion: 1.1.11 - minimatch@5.0.1: - dependencies: - brace-expansion: 2.0.1 - minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 @@ -11304,12 +10768,6 @@ snapshots: dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: - dependencies: - arrify: 1.0.1 - is-plain-obj: 1.1.0 - kind-of: 6.0.3 - minimist@1.2.8: {} minipass@2.9.0: @@ -11321,8 +10779,6 @@ snapshots: dependencies: minipass: 2.9.0 - mixme@0.5.10: {} - mkdirp-promise@5.0.1: dependencies: mkdirp: 3.0.1 @@ -11343,28 +10799,27 @@ snapshots: dependencies: obliterator: 2.0.4 - mocha@10.2.0: + mocha@10.7.3: dependencies: - ansi-colors: 4.1.1 + ansi-colors: 4.1.3 browser-stdout: 1.3.1 - chokidar: 3.5.3 - debug: 4.3.4(supports-color@8.1.1) - diff: 5.0.0 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + diff: 5.2.0 escape-string-regexp: 4.0.0 find-up: 5.0.0 - glob: 7.2.0 + glob: 8.1.0 he: 1.2.0 js-yaml: 4.1.0 log-symbols: 4.1.0 - minimatch: 5.0.1 + minimatch: 5.1.6 ms: 2.1.3 - nanoid: 3.3.3 - serialize-javascript: 6.0.0 + serialize-javascript: 6.0.2 strip-json-comments: 3.1.1 supports-color: 8.1.1 - workerpool: 6.2.1 + workerpool: 6.5.1 yargs: 16.2.0 - yargs-parser: 20.2.4 + yargs-parser: 20.2.9 yargs-unparser: 2.0.0 mocha@7.2.0: @@ -11396,24 +10851,24 @@ snapshots: mock-fs@4.14.0: {} - module-error@1.0.2: {} + mri@1.2.0: {} + + mrmime@1.0.1: {} ms@2.0.0: {} ms@2.1.1: {} - ms@2.1.2: {} - ms@2.1.3: {} multibase@0.6.1: dependencies: - base-x: 3.0.9 + base-x: 3.0.10 buffer: 5.7.1 multibase@0.7.0: dependencies: - base-x: 3.0.9 + base-x: 3.0.10 buffer: 5.7.1 multicodec@0.5.7: @@ -11441,10 +10896,6 @@ snapshots: nano-json-stream-parser@0.1.2: {} - nanoid@3.3.3: {} - - napi-macros@2.2.2: {} - natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -11470,14 +10921,14 @@ snapshots: node-environment-flags@1.0.6: dependencies: - object.getownpropertydescriptors: 2.1.7 + object.getownpropertydescriptors: 2.1.8 semver: 5.7.2 node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 - node-gyp-build@4.6.1: {} + node-gyp-build@4.8.2: {} node-releases@2.0.18: {} @@ -11526,7 +10977,7 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.1: {} + object-inspect@1.13.2: {} object-is@1.1.6: dependencies: @@ -11544,13 +10995,6 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 - object.assign@4.1.4: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - object.assign@4.1.5: dependencies: call-bind: 1.0.7 @@ -11571,13 +11015,15 @@ snapshots: es-abstract: 1.23.3 es-object-atoms: 1.0.0 - object.getownpropertydescriptors@2.1.7: + object.getownpropertydescriptors@2.1.8: dependencies: - array.prototype.reduce: 1.0.6 - call-bind: 1.0.5 + array.prototype.reduce: 1.0.7 + call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.22.3 - safe-array-concat: 1.0.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + gopd: 1.0.1 + safe-array-concat: 1.1.2 object.groupby@1.0.3: dependencies: @@ -11614,14 +11060,14 @@ snapshots: type-check: 0.3.2 word-wrap: 1.2.5 - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 ordinal@1.0.3: {} @@ -11693,6 +11139,8 @@ snapshots: p-try@2.2.0: {} + package-manager-detector@0.2.0: {} + pako@1.0.11: {} param-case@2.1.1: @@ -11718,7 +11166,7 @@ snapshots: parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.24.7 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -11728,6 +11176,10 @@ snapshots: domhandler: 5.0.3 parse5: 7.1.2 + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.1.2 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -11771,7 +11223,7 @@ snapshots: path-starts-with@2.0.1: {} - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.10: {} path-type@1.1.0: dependencies: @@ -11811,10 +11263,6 @@ snapshots: pinkie@2.0.4: {} - pkg-dir@4.2.0: - dependencies: - find-up: 4.1.0 - pkg-dir@5.0.0: dependencies: find-up: 5.0.0 @@ -11823,13 +11271,6 @@ snapshots: possible-typed-array-names@1.0.0: {} - preferred-pm@3.1.2: - dependencies: - find-up: 5.0.0 - find-yarn-workspace-root2: 1.2.16 - path-exists: 4.0.0 - which-pm: 2.0.0 - prelude-ls@1.1.2: {} prelude-ls@1.2.1: {} @@ -11840,17 +11281,14 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-solidity@1.1.3(prettier@3.0.3): + prettier-plugin-solidity@1.4.1(prettier@2.8.8): dependencies: - '@solidity-parser/parser': 0.16.1 - prettier: 3.0.3 - semver: 7.5.4 - solidity-comments-extractor: 0.0.7 + '@solidity-parser/parser': 0.18.0 + prettier: 2.8.8 + semver: 7.6.3 prettier@2.8.8: {} - prettier@3.0.3: {} - process-nextick-args@2.0.1: {} process@0.11.10: {} @@ -11865,6 +11303,8 @@ snapshots: object-assign: 4.1.1 react-is: 16.13.1 + property-expr@2.0.6: {} + proto-list@1.2.4: {} proxy-addr@2.0.7: @@ -11880,24 +11320,20 @@ snapshots: psl@1.9.0: {} - pump@3.0.0: + pump@3.0.2: dependencies: end-of-stream: 1.4.4 once: 1.4.0 punycode@2.1.0: {} - punycode@2.3.0: {} + punycode@2.3.1: {} pure-rand@5.0.5: {} - qs@6.11.0: - dependencies: - side-channel: 1.0.4 - - qs@6.11.2: + qs@6.13.0: dependencies: - side-channel: 1.0.4 + side-channel: 1.0.6 qs@6.5.3: {} @@ -11909,8 +11345,6 @@ snapshots: queue-microtask@1.2.3: {} - quick-lru@4.0.1: {} - quick-lru@5.1.1: {} randombytes@2.1.0: @@ -11919,13 +11353,6 @@ snapshots: range-parser@1.2.1: {} - raw-body@2.5.1: - dependencies: - bytes: 3.1.2 - http-errors: 2.0.0 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -11940,25 +11367,12 @@ snapshots: find-up: 1.1.2 read-pkg: 1.1.0 - read-pkg-up@7.0.1: - dependencies: - find-up: 4.1.0 - read-pkg: 5.2.0 - type-fest: 0.8.1 - read-pkg@1.1.0: dependencies: load-json-file: 1.1.0 normalize-package-data: 2.5.0 path-type: 1.1.0 - read-pkg@5.2.0: - dependencies: - '@types/normalize-package-data': 2.4.4 - normalize-package-data: 2.5.0 - parse-json: 5.2.0 - type-fest: 0.6.0 - read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -12004,6 +11418,8 @@ snapshots: dependencies: picomatch: 2.3.1 + readdirp@4.0.1: {} + rechoir@0.6.2: dependencies: resolve: 1.22.8 @@ -12012,11 +11428,6 @@ snapshots: dependencies: minimatch: 3.1.2 - redent@3.0.0: - dependencies: - indent-string: 4.0.0 - strip-indent: 3.0.0 - reduce-flatten@2.0.0: {} reflect.getprototypeof@1.0.6: @@ -12026,16 +11437,10 @@ snapshots: es-abstract: 1.23.3 es-errors: 1.3.0 get-intrinsic: 1.2.4 - globalthis: 1.0.3 + globalthis: 1.0.4 which-builtin-type: 1.1.4 - regenerator-runtime@0.14.0: {} - - regexp.prototype.flags@1.5.1: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - set-function-name: 2.0.1 + regenerator-runtime@0.14.1: {} regexp.prototype.flags@1.5.2: dependencies: @@ -12057,7 +11462,7 @@ snapshots: request@2.88.2: dependencies: aws-sign2: 0.7.0 - aws4: 1.12.0 + aws4: 1.13.2 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -12103,13 +11508,13 @@ snapshots: resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 resolve@2.0.0-next.5: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.15.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -12138,23 +11543,12 @@ snapshots: dependencies: bn.js: 5.2.1 - run-parallel-limit@1.1.0: - dependencies: - queue-microtask: 1.2.3 - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 rustbn.js@0.2.0: {} - safe-array-concat@1.0.1: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - has-symbols: 1.0.3 - isarray: 2.0.5 - safe-array-concat@1.1.2: dependencies: call-bind: 1.0.7 @@ -12166,12 +11560,6 @@ snapshots: safe-buffer@5.2.1: {} - safe-regex-test@1.0.0: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-regex: 1.1.4 - safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 @@ -12203,9 +11591,9 @@ snapshots: secp256k1@4.0.3: dependencies: - elliptic: 6.5.4 + elliptic: 6.5.7 node-addon-api: 2.0.2 - node-gyp-build: 4.6.1 + node-gyp-build: 4.8.2 seek-bzip@1.0.6: dependencies: @@ -12219,13 +11607,9 @@ snapshots: semver@6.3.1: {} - semver@7.5.4: - dependencies: - lru-cache: 6.0.0 - - semver@7.6.2: {} + semver@7.6.3: {} - send@0.18.0: + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -12254,24 +11638,24 @@ snapshots: tslib: 2.7.0 upper-case-first: 2.0.2 - serialize-javascript@6.0.0: + serialize-javascript@6.0.2: dependencies: randombytes: 2.1.0 - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color servify@0.1.12: dependencies: - body-parser: 1.20.2 + body-parser: 1.20.3 cors: 2.8.5 - express: 4.18.2 + express: 4.21.0 request: 2.88.2 xhr: 2.6.0 transitivePeerDependencies: @@ -12279,13 +11663,6 @@ snapshots: set-blocking@2.0.0: {} - set-function-length@1.1.1: - dependencies: - define-data-property: 1.1.1 - get-intrinsic: 1.2.2 - gopd: 1.0.1 - has-property-descriptors: 1.0.1 - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -12295,12 +11672,6 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.2 - set-function-name@2.0.1: - dependencies: - define-data-property: 1.1.1 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.1 - set-function-name@2.0.2: dependencies: define-data-property: 1.1.4 @@ -12346,18 +11717,12 @@ snapshots: interpret: 1.4.0 rechoir: 0.6.2 - side-channel@1.0.4: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - object-inspect: 1.13.1 - side-channel@1.0.6: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + object-inspect: 1.13.2 signal-exit@3.0.7: {} @@ -12377,15 +11742,6 @@ snapshots: astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - smartwrap@2.0.2: - dependencies: - array.prototype.flat: 1.3.2 - breakword: 1.0.6 - grapheme-splitter: 1.0.4 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 15.4.1 - snake-case@2.1.0: dependencies: no-case: 2.3.2 @@ -12414,81 +11770,72 @@ snapshots: semver: 5.7.2 tmp: 0.0.33 - solc@0.7.3(debug@4.3.4): + solc@0.8.26(debug@4.3.7): dependencies: command-exists: 1.2.9 - commander: 3.0.2 - follow-redirects: 1.15.3(debug@4.3.4) - fs-extra: 0.30.0 + commander: 8.3.0 + follow-redirects: 1.15.9(debug@4.3.7) js-sha3: 0.8.0 memorystream: 0.3.1 - require-from-string: 2.0.2 semver: 5.7.2 tmp: 0.0.33 transitivePeerDependencies: - debug - solhint@3.6.2(typescript@5.2.2): + solhint@3.6.2(typescript@5.6.2): dependencies: - '@solidity-parser/parser': 0.16.1 + '@solidity-parser/parser': 0.16.2 ajv: 6.12.6 - antlr4: 4.13.1 + antlr4: 4.13.2 ast-parents: 0.0.1 chalk: 4.1.2 commander: 10.0.1 - cosmiconfig: 8.3.6(typescript@5.2.2) + cosmiconfig: 8.3.6(typescript@5.6.2) fast-diff: 1.3.0 glob: 8.1.0 - ignore: 5.2.4 + ignore: 5.3.2 js-yaml: 4.1.0 lodash: 4.17.21 pluralize: 8.0.0 - semver: 7.5.4 + semver: 7.6.3 strip-ansi: 6.0.1 - table: 6.8.1 + table: 6.8.2 text-table: 0.2.0 optionalDependencies: prettier: 2.8.8 transitivePeerDependencies: - typescript - solidity-ast@0.4.52: - dependencies: - array.prototype.findlast: 1.2.3 - - solidity-comments-extractor@0.0.7: {} + solidity-ast@0.4.59: {} - solidity-coverage@0.8.5(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)): + solidity-coverage@0.8.13(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)): dependencies: '@ethersproject/abi': 5.7.0 - '@solidity-parser/parser': 0.16.1 + '@solidity-parser/parser': 0.18.0 chalk: 2.4.2 death: 1.1.0 - detect-port: 1.5.1 difflib: 0.2.4 fs-extra: 8.1.0 ghost-testrpc: 0.0.2 global-modules: 2.0.0 globby: 10.0.2 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) jsonschema: 1.4.1 lodash: 4.17.21 - mocha: 10.2.0 + mocha: 10.7.3 node-emoji: 1.11.0 pify: 4.0.1 recursive-readdir: 2.2.3 sc-istanbul: 0.4.6 - semver: 7.5.4 + semver: 7.6.3 shelljs: 0.8.5 - web3-utils: 1.10.3 - transitivePeerDependencies: - - supports-color + web3-utils: 1.10.4 - solidity-docgen@0.6.0-beta.36(hardhat@2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10)): + solidity-docgen@0.6.0-beta.36(hardhat@2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10)): dependencies: handlebars: 4.7.8 - hardhat: 2.18.2(bufferutil@4.0.8)(ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2))(typescript@5.2.2)(utf-8-validate@5.0.10) - solidity-ast: 0.4.52 + hardhat: 2.22.11(bufferutil@4.0.8)(ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2))(typescript@5.6.2)(utf-8-validate@5.0.10) + solidity-ast: 0.4.59 sort-keys-length@1.0.1: dependencies: @@ -12522,16 +11869,16 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.16 + spdx-license-ids: 3.0.20 - spdx-exceptions@2.3.0: {} + spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: - spdx-exceptions: 2.3.0 - spdx-license-ids: 3.0.16 + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 - spdx-license-ids@3.0.16: {} + spdx-license-ids@3.0.20: {} sprintf-js@1.0.3: {} @@ -12555,11 +11902,7 @@ snapshots: stop-iteration-iterator@1.0.0: dependencies: - internal-slot: 1.0.6 - - stream-transform@2.1.3: - dependencies: - mixme: 0.5.10 + internal-slot: 1.0.7 strict-uri-encode@1.1.0: {} @@ -12591,7 +11934,7 @@ snapshots: string.prototype.includes@2.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 string.prototype.matchall@4.0.11: dependencies: @@ -12611,13 +11954,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.22.3 - - string.prototype.trim@1.2.8: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 + es-abstract: 1.23.3 string.prototype.trim@1.2.9: dependencies: @@ -12626,24 +11963,12 @@ snapshots: es-abstract: 1.23.3 es-object-atoms: 1.0.0 - string.prototype.trimend@1.0.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - string.prototype.trimend@1.0.8: dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-object-atoms: 1.0.0 - string.prototype.trimstart@1.0.7: - dependencies: - call-bind: 1.0.5 - define-properties: 1.2.1 - es-abstract: 1.22.3 - string.prototype.trimstart@1.0.8: dependencies: call-bind: 1.0.7 @@ -12692,10 +12017,6 @@ snapshots: strip-indent@2.0.0: {} - strip-indent@3.0.0: - dependencies: - min-indent: 1.0.1 - strip-json-comments@2.0.1: {} strip-json-comments@3.1.1: {} @@ -12771,9 +12092,9 @@ snapshots: typical: 5.2.0 wordwrapjs: 4.0.1 - table@6.8.1: + table@6.8.2: dependencies: - ajv: 8.12.0 + ajv: 8.17.1 lodash.truncate: 4.4.2 slice-ansi: 4.0.0 string-width: 4.2.3 @@ -12810,19 +12131,21 @@ snapshots: '@types/concat-stream': 1.6.1 '@types/form-data': 0.0.33 '@types/node': 8.10.66 - '@types/qs': 6.9.9 + '@types/qs': 6.9.16 caseless: 0.12.0 concat-stream: 1.6.2 form-data: 2.5.1 http-basic: 8.1.3 http-response-object: 3.0.2 promise: 8.3.0 - qs: 6.11.2 + qs: 6.13.0 through@2.3.8: {} timed-out@4.0.1: {} + tiny-case@1.0.3: {} + title-case@2.1.1: dependencies: no-case: 2.3.2 @@ -12842,22 +12165,22 @@ snapshots: toidentifier@1.0.1: {} + toposort@2.0.2: {} + tough-cookie@2.5.0: dependencies: psl: 1.9.0 - punycode: 2.3.0 + punycode: 2.3.1 tr46@0.0.3: {} - trim-newlines@3.0.1: {} - trim-repeated@1.0.0: dependencies: escape-string-regexp: 1.0.5 - ts-api-utils@1.3.0(typescript@5.2.2): + ts-api-utils@1.3.0(typescript@5.6.2): dependencies: - typescript: 5.2.2 + typescript: 5.6.2 ts-command-line-args@2.5.1: dependencies: @@ -12868,25 +12191,25 @@ snapshots: ts-essentials@2.0.12: {} - ts-essentials@7.0.3(typescript@5.2.2): + ts-essentials@7.0.3(typescript@5.6.2): dependencies: - typescript: 5.2.2 + typescript: 5.6.2 - ts-node@10.9.1(@types/node@17.0.45)(typescript@5.2.2): + ts-node@10.9.2(@types/node@17.0.45)(typescript@5.6.2): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.9 + '@tsconfig/node10': 1.0.11 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 '@types/node': 17.0.45 - acorn: 8.10.0 - acorn-walk: 8.2.0 + acorn: 8.12.1 + acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.2.2 + typescript: 5.6.2 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -12903,20 +12226,10 @@ snapshots: tsort@0.0.1: {} - tsutils@3.21.0(typescript@5.2.2): + tsutils@3.21.0(typescript@5.6.2): dependencies: tslib: 1.14.1 - typescript: 5.2.2 - - tty-table@4.2.3: - dependencies: - chalk: 4.1.2 - csv: 5.5.3 - kleur: 4.1.5 - smartwrap: 2.0.2 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - yargs: 17.7.2 + typescript: 5.6.2 tunnel-agent@0.6.0: dependencies: @@ -12936,31 +12249,27 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-detect@4.0.8: {} + type-detect@4.1.0: {} - type-fest@0.13.1: {} + type-fest@0.20.2: {} type-fest@0.21.3: {} - type-fest@0.6.0: {} - type-fest@0.7.1: {} - type-fest@0.8.1: {} + type-fest@2.19.0: {} type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - type@1.2.0: {} - - type@2.7.2: {} + type@2.7.3: {} - typechain@8.3.2(typescript@5.2.2): + typechain@8.3.2(typescript@5.6.2): dependencies: '@types/prettier': 2.7.3 - debug: 4.3.4(supports-color@8.1.1) + debug: 4.3.7(supports-color@8.1.1) fs-extra: 7.0.1 glob: 7.1.7 js-sha3: 0.8.0 @@ -12968,30 +12277,17 @@ snapshots: mkdirp: 1.0.4 prettier: 2.8.8 ts-command-line-args: 2.5.1 - ts-essentials: 7.0.3(typescript@5.2.2) - typescript: 5.2.2 + ts-essentials: 7.0.3(typescript@5.6.2) + typescript: 5.6.2 transitivePeerDependencies: - supports-color - typed-array-buffer@1.0.0: - dependencies: - call-bind: 1.0.5 - get-intrinsic: 1.2.2 - is-typed-array: 1.1.12 - typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-typed-array: 1.1.13 - typed-array-byte-length@1.0.0: - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - typed-array-byte-length@1.0.1: dependencies: call-bind: 1.0.7 @@ -13000,14 +12296,6 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-byte-offset@1.0.0: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - has-proto: 1.0.1 - is-typed-array: 1.1.12 - typed-array-byte-offset@1.0.2: dependencies: available-typed-arrays: 1.0.7 @@ -13017,12 +12305,6 @@ snapshots: has-proto: 1.0.3 is-typed-array: 1.1.13 - typed-array-length@1.0.4: - dependencies: - call-bind: 1.0.5 - for-each: 0.3.3 - is-typed-array: 1.1.12 - typed-array-length@1.0.6: dependencies: call-bind: 1.0.7 @@ -13038,20 +12320,20 @@ snapshots: typedarray@0.0.6: {} - typescript@5.2.2: {} + typescript@5.6.2: {} typical@4.0.0: {} typical@5.2.0: {} - uglify-js@3.17.4: + uglify-js@3.19.3: optional: true ultron@1.1.1: {} unbox-primitive@1.0.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 has-bigints: 1.0.2 has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 @@ -13061,19 +12343,23 @@ snapshots: buffer: 5.7.1 through: 2.3.8 - underscore@1.13.6: {} + underscore@1.13.7: {} - undici@5.26.4: + undici@5.28.4: dependencies: - '@fastify/busboy': 2.0.0 + '@fastify/busboy': 2.1.1 + + undici@6.19.8: {} + + unfetch@4.2.0: {} universalify@0.1.2: {} - universalify@2.0.0: {} + universalify@2.0.1: {} unpipe@1.0.0: {} - update-browserslist-db@1.1.0(browserslist@4.24.0): + update-browserslist-db@1.1.1(browserslist@4.24.0): dependencies: browserslist: 4.24.0 escalade: 3.2.0 @@ -13095,7 +12381,7 @@ snapshots: uri-js@4.4.1: dependencies: - punycode: 2.3.0 + punycode: 2.3.1 url-parse-lax@3.0.0: dependencies: @@ -13107,7 +12393,7 @@ snapshots: utf-8-validate@5.0.10: dependencies: - node-gyp-build: 4.6.1 + node-gyp-build: 4.8.2 utf8@3.0.0: {} @@ -13115,21 +12401,21 @@ snapshots: util.promisify@1.1.2: dependencies: - call-bind: 1.0.5 + call-bind: 1.0.7 define-properties: 1.2.1 for-each: 0.3.3 - has-proto: 1.0.1 + has-proto: 1.0.3 has-symbols: 1.0.3 - object.getownpropertydescriptors: 2.1.7 - safe-array-concat: 1.0.1 + object.getownpropertydescriptors: 2.1.8 + safe-array-concat: 1.1.2 util@0.12.5: dependencies: inherits: 2.0.4 is-arguments: 1.1.1 is-generator-function: 1.0.10 - is-typed-array: 1.1.12 - which-typed-array: 1.1.13 + is-typed-array: 1.1.13 + which-typed-array: 1.1.15 utils-merge@1.0.1: {} @@ -13158,9 +12444,13 @@ snapshots: core-util-is: 1.0.2 extsprintf: 1.3.0 - wcwidth@1.0.1: + web-encoding@1.1.5: dependencies: - defaults: 1.0.4 + util: 0.12.5 + optionalDependencies: + '@zxing/text-encoding': 0.9.0 + + web-streams-polyfill@3.3.3: {} web3-bzz@1.10.0(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: @@ -13172,7 +12462,7 @@ snapshots: - supports-color - utf-8-validate - web3-bzz@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + web3-bzz@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: '@types/node': 12.20.55 got: 12.1.0 @@ -13187,10 +12477,10 @@ snapshots: web3-eth-iban: 1.10.0 web3-utils: 1.10.0 - web3-core-helpers@1.10.3: + web3-core-helpers@1.10.4: dependencies: - web3-eth-iban: 1.10.3 - web3-utils: 1.10.3 + web3-eth-iban: 1.10.4 + web3-utils: 1.10.4 web3-core-method@1.10.0: dependencies: @@ -13200,19 +12490,19 @@ snapshots: web3-core-subscriptions: 1.10.0 web3-utils: 1.10.0 - web3-core-method@1.10.3: + web3-core-method@1.10.4: dependencies: '@ethersproject/transactions': 5.7.0 - 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-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-utils: 1.10.4 web3-core-promievent@1.10.0: dependencies: eventemitter3: 4.0.4 - web3-core-promievent@1.10.3: + web3-core-promievent@1.10.4: dependencies: eventemitter3: 4.0.4 @@ -13227,13 +12517,13 @@ snapshots: - encoding - supports-color - web3-core-requestmanager@1.10.3: + web3-core-requestmanager@1.10.4: 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-helpers: 1.10.4 + web3-providers-http: 1.10.4 + web3-providers-ipc: 1.10.4 + web3-providers-ws: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13243,14 +12533,14 @@ snapshots: eventemitter3: 4.0.4 web3-core-helpers: 1.10.0 - web3-core-subscriptions@1.10.3: + web3-core-subscriptions@1.10.4: dependencies: eventemitter3: 4.0.4 - web3-core-helpers: 1.10.3 + web3-core-helpers: 1.10.4 web3-core@1.10.0: dependencies: - '@types/bn.js': 5.1.3 + '@types/bn.js': 5.1.6 '@types/node': 12.20.55 bignumber.js: 9.1.2 web3-core-helpers: 1.10.0 @@ -13261,15 +12551,15 @@ snapshots: - encoding - supports-color - web3-core@1.10.3: + web3-core@1.10.4: dependencies: - '@types/bn.js': 5.1.3 + '@types/bn.js': 5.1.6 '@types/node': 12.20.55 bignumber.js: 9.1.2 - 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-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-requestmanager: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13279,10 +12569,10 @@ snapshots: '@ethersproject/abi': 5.7.0 web3-utils: 1.10.0 - web3-eth-abi@1.10.3: + web3-eth-abi@1.10.4: dependencies: '@ethersproject/abi': 5.7.0 - web3-utils: 1.10.3 + web3-utils: 1.10.4 web3-eth-accounts@1.10.0: dependencies: @@ -13300,7 +12590,7 @@ snapshots: - encoding - supports-color - web3-eth-accounts@1.10.3: + web3-eth-accounts@1.10.4: dependencies: '@ethereumjs/common': 2.6.5 '@ethereumjs/tx': 3.5.2 @@ -13308,17 +12598,17 @@ snapshots: eth-lib: 0.2.8 scrypt-js: 3.0.1 uuid: 9.0.1 - web3-core: 1.10.3 - web3-core-helpers: 1.10.3 - web3-core-method: 1.10.3 - web3-utils: 1.10.3 + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color web3-eth-contract@1.10.0: dependencies: - '@types/bn.js': 5.1.3 + '@types/bn.js': 5.1.6 web3-core: 1.10.0 web3-core-helpers: 1.10.0 web3-core-method: 1.10.0 @@ -13330,16 +12620,16 @@ snapshots: - encoding - supports-color - web3-eth-contract@1.10.3: + web3-eth-contract@1.10.4: dependencies: - '@types/bn.js': 5.1.3 - 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 + '@types/bn.js': 5.1.6 + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-promievent: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-eth-abi: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13358,16 +12648,16 @@ snapshots: - encoding - supports-color - web3-eth-ens@1.10.3: + web3-eth-ens@1.10.4: 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-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-promievent: 1.10.4 + web3-eth-abi: 1.10.4 + web3-eth-contract: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13377,10 +12667,10 @@ snapshots: bn.js: 5.2.1 web3-utils: 1.10.0 - web3-eth-iban@1.10.3: + web3-eth-iban@1.10.4: dependencies: bn.js: 5.2.1 - web3-utils: 1.10.3 + web3-utils: 1.10.4 web3-eth-personal@1.10.0: dependencies: @@ -13394,14 +12684,14 @@ snapshots: - encoding - supports-color - web3-eth-personal@1.10.3: + web3-eth-personal@1.10.4: dependencies: '@types/node': 12.20.55 - 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-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-net: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13424,20 +12714,20 @@ snapshots: - encoding - supports-color - web3-eth@1.10.3: - 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.10.4: + dependencies: + web3-core: 1.10.4 + web3-core-helpers: 1.10.4 + web3-core-method: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-eth-abi: 1.10.4 + web3-eth-accounts: 1.10.4 + web3-eth-contract: 1.10.4 + web3-eth-ens: 1.10.4 + web3-eth-iban: 1.10.4 + web3-eth-personal: 1.10.4 + web3-net: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13451,11 +12741,11 @@ snapshots: - encoding - supports-color - web3-net@1.10.3: + web3-net@1.10.4: dependencies: - web3-core: 1.10.3 - web3-core-method: 1.10.3 - web3-utils: 1.10.3 + web3-core: 1.10.4 + web3-core-method: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13469,12 +12759,12 @@ snapshots: transitivePeerDependencies: - encoding - web3-providers-http@1.10.3: + web3-providers-http@1.10.4: dependencies: abortcontroller-polyfill: 1.7.5 cross-fetch: 4.0.0 es6-promise: 4.2.8 - web3-core-helpers: 1.10.3 + web3-core-helpers: 1.10.4 transitivePeerDependencies: - encoding @@ -13483,24 +12773,24 @@ snapshots: oboe: 2.1.5 web3-core-helpers: 1.10.0 - web3-providers-ipc@1.10.3: + web3-providers-ipc@1.10.4: dependencies: oboe: 2.1.5 - web3-core-helpers: 1.10.3 + web3-core-helpers: 1.10.4 web3-providers-ws@1.10.0: dependencies: eventemitter3: 4.0.4 web3-core-helpers: 1.10.0 - websocket: 1.0.34 + websocket: 1.0.35 transitivePeerDependencies: - supports-color - web3-providers-ws@1.10.3: + web3-providers-ws@1.10.4: dependencies: eventemitter3: 4.0.4 - web3-core-helpers: 1.10.3 - websocket: 1.0.34 + web3-core-helpers: 1.10.4 + websocket: 1.0.35 transitivePeerDependencies: - supports-color @@ -13514,12 +12804,12 @@ snapshots: - encoding - supports-color - web3-shh@1.10.3: + web3-shh@1.10.4: dependencies: - web3-core: 1.10.3 - web3-core-method: 1.10.3 - web3-core-subscriptions: 1.10.3 - web3-net: 1.10.3 + web3-core: 1.10.4 + web3-core-method: 1.10.4 + web3-core-subscriptions: 1.10.4 + web3-net: 1.10.4 transitivePeerDependencies: - encoding - supports-color @@ -13527,19 +12817,19 @@ snapshots: web3-utils@1.10.0: dependencies: bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 + ethereum-bloom-filters: 1.2.0 ethereumjs-util: 7.1.5 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 utf8: 3.0.0 - web3-utils@1.10.3: + web3-utils@1.10.4: dependencies: '@ethereumjs/util': 8.1.0 bn.js: 5.2.1 - ethereum-bloom-filters: 1.0.10 - ethereum-cryptography: 2.1.2 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 ethjs-unit: 0.1.6 number-to-bn: 1.7.0 randombytes: 2.1.0 @@ -13560,15 +12850,15 @@ snapshots: - supports-color - utf-8-validate - web3@1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10): + web3@1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10): dependencies: - web3-bzz: 1.10.3(bufferutil@4.0.8)(utf-8-validate@5.0.10) - 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 + web3-bzz: 1.10.4(bufferutil@4.0.8)(utf-8-validate@5.0.10) + web3-core: 1.10.4 + web3-eth: 1.10.4 + web3-eth-personal: 1.10.4 + web3-net: 1.10.4 + web3-shh: 1.10.4 + web3-utils: 1.10.4 transitivePeerDependencies: - bufferutil - encoding @@ -13577,17 +12867,23 @@ snapshots: webidl-conversions@3.0.1: {} - websocket@1.0.34: + websocket@1.0.35: dependencies: bufferutil: 4.0.8 debug: 2.6.9 - es5-ext: 0.10.62 + es5-ext: 0.10.64 typedarray-to-buffer: 3.1.5 utf-8-validate: 5.0.10 yaeti: 0.0.6 transitivePeerDependencies: - supports-color + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -13627,19 +12923,6 @@ snapshots: which-module@2.0.1: {} - which-pm@2.0.0: - dependencies: - load-yaml-file: 0.2.0 - path-exists: 4.0.0 - - which-typed-array@1.1.13: - dependencies: - available-typed-arrays: 1.0.5 - call-bind: 1.0.5 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.0 - which-typed-array@1.1.15: dependencies: available-typed-arrays: 1.0.7 @@ -13660,6 +12943,10 @@ snapshots: dependencies: string-width: 2.1.1 + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + window-size@0.2.0: {} word-wrap@1.2.5: {} @@ -13671,7 +12958,7 @@ snapshots: reduce-flatten: 2.0.0 typical: 5.2.0 - workerpool@6.2.1: {} + workerpool@6.5.1: {} wrap-ansi@2.1.0: dependencies: @@ -13684,12 +12971,6 @@ snapshots: string-width: 3.1.0 strip-ansi: 5.2.0 - wrap-ansi@6.2.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 @@ -13712,7 +12993,7 @@ snapshots: bufferutil: 4.0.8 utf-8-validate: 5.0.10 - ws@7.5.9(bufferutil@4.0.8)(utf-8-validate@5.0.10): + ws@7.5.10(bufferutil@4.0.8)(utf-8-validate@5.0.10): optionalDependencies: bufferutil: 4.0.8 utf-8-validate: 5.0.10 @@ -13758,26 +13039,17 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - yargs-parser@13.1.2: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@2.4.1: dependencies: camelcase: 3.0.0 lodash.assign: 4.2.0 - yargs-parser@20.2.4: {} - - yargs-parser@21.1.1: {} + yargs-parser@20.2.9: {} yargs-unparser@1.6.0: dependencies: @@ -13805,39 +13077,15 @@ snapshots: y18n: 4.0.3 yargs-parser: 13.1.2 - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - yargs@16.2.0: dependencies: cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 20.2.4 - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.1.1 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 y18n: 5.0.8 - yargs-parser: 21.1.1 + yargs-parser: 20.2.9 yargs@4.8.1: dependencies: @@ -13865,6 +13113,13 @@ snapshots: yocto-queue@0.1.0: {} - zksync-ethers@5.8.0(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)): + yup@1.4.0: + dependencies: + property-expr: 2.0.6 + tiny-case: 1.0.3 + toposort: 2.0.2 + type-fest: 2.19.0 + + zksync-ethers@5.9.2(ethers@5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10)): dependencies: ethers: 5.7.2(bufferutil@4.0.8)(utf-8-validate@5.0.10) diff --git a/scripts/getCodeId.ts b/scripts/getCodeId.ts new file mode 100644 index 00000000..bfb6d0ac --- /dev/null +++ b/scripts/getCodeId.ts @@ -0,0 +1,15 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; + +const getCodeIdFromAddress = (hre: HardhatRuntimeEnvironment) => async (address: string) => { + return hre.ethers.utils.keccak256(await hre.ethers.provider.getCode(address)); +}; + +export const getCodeIdFromArtifact = (hre: HardhatRuntimeEnvironment) => async (artifactName: string) => { + const address = (await hre.deployments.get(artifactName)).address; + const code = await hre.ethers.provider.getCode(address); + return hre.ethers.utils.keccak256(code); +}; + +export const getCodeIdFromCode = (hre: HardhatRuntimeEnvironment) => (code: string) => hre.ethers.utils.keccak256(code); + +export default { getCodeIdFromAddress, getCodeIdFromArtifact, getCodeIdFromCode }; diff --git a/scripts/libraries/diamond.js b/scripts/libraries/diamond.js index 37918de7..d40b2f3b 100644 --- a/scripts/libraries/diamond.js +++ b/scripts/libraries/diamond.js @@ -150,7 +150,7 @@ async function deployDiamond(FacetNames, signer, initializer, initializerArgs) { console.log('DiamondCutFacet deployed:', diamondCutFacet.address); } - const Diamond = await ethers.getContractFactory('Diamond', signer); + const Diamond = await ethers.getContractFactory('DiamondCloneable', signer); const diamond = await Diamond.deploy(signer.address, diamondCutFacet.address); await diamond.deployed(); if (require.main === module) { diff --git a/scripts/playbooks/addDistribution.ts b/scripts/playbooks/addDistribution.ts new file mode 100644 index 00000000..3642d240 --- /dev/null +++ b/scripts/playbooks/addDistribution.ts @@ -0,0 +1,45 @@ +import { HardhatRuntimeEnvironment } from 'hardhat/types'; +import { ethers } from 'hardhat'; +import { Signer } from '@ethersproject/abstract-signer'; +import { PeeramidLabsDistributor } from '../../types'; + +export const addDistributionNoChecks = + (hre: HardhatRuntimeEnvironment) => async (distrId: string, signer: Signer, initializer?: string) => { + const { deployments } = hre; + const PeeramidLabsDistributor = await deployments.get('PeeramidLabsDistributor'); + const distributorContract = new ethers.Contract( + PeeramidLabsDistributor.address, + PeeramidLabsDistributor.abi, + signer, + ); + return distributorContract.addDistribution(distrId, initializer ?? ethers.constants.AddressZero); + }; + +export const addDistribution = + (hre: HardhatRuntimeEnvironment) => async (distrId: string, signer: Signer, initializer?: string) => { + const { deployments } = hre; + const PeeramidLabsDistributor = await deployments.get('PeeramidLabsDistributor'); + const distributorContract = new ethers.Contract( + PeeramidLabsDistributor.address, + PeeramidLabsDistributor.abi, + signer, + ) as PeeramidLabsDistributor; + const distributionsLengthBefore = (await distributorContract.getDistributions()).length; + const receipt = await distributorContract['addDistribution(bytes32,address)']( + distrId, + initializer ?? ethers.constants.AddressZero, + ); + + const distributorsId = await distributorContract.getDistributions(); + if (distributorsId.length !== distributionsLengthBefore + 1) + throw new Error( + `Unexpected distribution id increment: got ${distributorsId.length}, expected ${distributionsLengthBefore + 1}`, + ); + return { + receipt, + distributor: distributorContract, + distributorsId, + }; + }; + +export default addDistribution; diff --git a/scripts/playbooks/instantiateMAO.ts b/scripts/playbooks/instantiateMAO.ts new file mode 100644 index 00000000..ac94b70d --- /dev/null +++ b/scripts/playbooks/instantiateMAO.ts @@ -0,0 +1,35 @@ +import { Distributor } from '../../types'; +import { BytesLike } from 'ethers'; +import { Signer } from '@ethersproject/abstract-signer'; + +export const instantiateMAO = async ({ + distributor, + distributorsId, + args, + signer, +}: { + distributor: Distributor; + distributorsId: string; + signer: Signer; + args: BytesLike; +}) => { + (await distributor.connect(signer).instantiate(distributorsId, args)).wait(); + + const filter = distributor.filters.Instantiated(distributorsId); + const evts = await distributor.queryFilter(filter); + if (evts.length === 0) throw new Error('No Instantiated event found'); + if (evts.length > 1) throw new Error('Multiple Instantiated events found'); + const instances = evts[0].args.instances; + + return { + daoAddress: instances[0], + govToken: instances[1], + govTokenAccessManager: instances[2], + ACIDInstance: instances[3], + ACIDAccessManager: instances[12], + rankToken: instances[13], + instanceId: evts[0].args.instanceId, + }; +}; + +export default instantiateMAO; diff --git a/src/abstracts/CompositeERC1155.sol b/src/abstracts/CompositeERC1155.sol deleted file mode 100644 index 6418712a..00000000 --- a/src/abstracts/CompositeERC1155.sol +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.8.20; -import "../libraries/LibReentrancyGuard.sol"; -import "./LockableERC1155.sol"; - -/** - * @title CompositeERC1155 - * @dev An abstract contract that extends LockableERC1155 and provides functionality for composite ERC1155 tokens. - * Composite tokens can be "composed" from multiple underlying assets, which however do not change their owner - * and in contrast to that use LockableERC1155 standard, which allows to read locked asset BalanceOf, OwnerOf methods correctly - */ -abstract contract CompositeERC1155 is LockableERC1155 { - address[] private dimensions; - uint256[] private weights; - - constructor(string memory uri_, address[] memory dimensionTokens, uint256[] memory tokenWeights) ERC1155(uri_) { - require(dimensionTokens.length == tokenWeights.length, "Array lengths must be equal"); - dimensions = dimensionTokens; - weights = tokenWeights; - } - - function _update( - address from, - address to, - uint256[] memory ids, - uint256[] memory values - ) internal virtual override { - if (to == address(0)) // let it burn - { - for (uint256 i = 0; i < dimensions.length; i++) { - for (uint256 j = 0; j < ids.length; j++) { - LockableERC1155(dimensions[i]).unlock(from, ids[j], values[j] * weights[i]); - } - } - } else if (from == address(0)) { - // let it rise - for (uint256 i = 0; i < dimensions.length; i++) { - for (uint256 j = 0; j < ids.length; j++) { - LockableERC1155(dimensions[i]).lock(to, ids[j], values[j] * weights[i]); - } - } - } - super._update(from, to, ids, values); - } - - /** - * @dev Decomposes a composite ERC1155 token into its individual components. - * This function unlocks the specified amount of the composite token from each dimension, - * and then burns the specified amount of the composite token from the caller's balance. - * @param from The address from which the composite token is being decomposed. - * @param id The ID of the composite token being decomposed. - * @param amount The amount of the composite token to decompose. - */ - function decompose(address from, uint256 id, uint256 amount) public virtual { - for (uint256 i = 0; i < dimensions.length; i++) { - LockableERC1155(dimensions[i]).unlock(from, id, amount * weights[i]); - } - _burn(from, id, amount); - } - - /** - * @dev Burns a specified amount of tokens from the given account. - * This will burn all underlying (composite) assets - * - * Requirements: - * - `account` must be the token owner or an approved operator. - * - `id` and `value` must be valid token ID and amount to burn. - * - All underlying "composite" assets implement burn as well - * - * @param account The address of the token owner. - * @param id The ID of the token to burn. - * @param value The amount of tokens to burn. - */ - function burn(address account, uint256 id, uint256 value) public virtual { - require( - account == _msgSender() || isApprovedForAll(account, _msgSender()), - "ERC1155: caller is not token owner or approved" - ); - - _burn(account, id, value); - } - - /** - * @dev Retrieves the components of the CompositeERC1155 contract. - * @return An array of component addresses and an array of component weights. - */ - function getComponents() public virtual returns (address[] memory, uint256[] memory) { - return (dimensions, weights); - } -} diff --git a/src/abstracts/LockableERC1155.sol b/src/abstracts/LockableERC1155.sol index 7c78468c..c3b70018 100644 --- a/src/abstracts/LockableERC1155.sol +++ b/src/abstracts/LockableERC1155.sol @@ -1,18 +1,27 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.20; -import "../libraries/LibReentrancyGuard.sol"; -import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol"; import {ILockableERC1155} from "../interfaces/ILockableERC1155.sol"; -error insufficient(uint256 id, uint256 balance, uint256 required); /** * @title LockableERC1155 * @dev This is an abstract contract that extends the ERC1155 token contract and implements the ILockableERC1155 interface. * It provides functionality to lock and unlock token amounts for specific accounts and IDs. */ -abstract contract LockableERC1155 is ERC1155, ILockableERC1155 { - mapping(address => mapping(uint256 => uint256)) lockedAmounts; +abstract contract LockableERC1155 is ERC1155Upgradeable, ILockableERC1155 { + struct LockableERC1155Storage { + mapping(address => mapping(uint256 tokenId => uint256)) lockedAmounts; + } + + bytes32 constant LOCKABLE_TOKEN_STORAGE_POSITION = keccak256("erc1155.lockable.storage.position"); + + function getLockableERC1155Storage() private pure returns (LockableERC1155Storage storage s) { + bytes32 position = LOCKABLE_TOKEN_STORAGE_POSITION; + assembly { + s.slot := position + } + } /** * @dev Locks a specified amount of tokens for a given account and token ID. @@ -24,9 +33,10 @@ abstract contract LockableERC1155 is ERC1155, ILockableERC1155 { * @param amount The amount of tokens to lock. */ function lock(address account, uint256 id, uint256 amount) public virtual { - if (balanceOf(account, id) < lockedAmounts[account][id] + amount) require(false, "insufficient"); - // revert insufficient(id, lockedAmounts[account][id], amount); - lockedAmounts[account][id] += amount; + LockableERC1155Storage storage s = getLockableERC1155Storage(); + if (balanceOf(account, id) < s.lockedAmounts[account][id] + amount) + revert insufficient(id, s.lockedAmounts[account][id], amount); + s.lockedAmounts[account][id] += amount; emit TokensLocked(account, id, amount); } @@ -39,8 +49,9 @@ abstract contract LockableERC1155 is ERC1155, ILockableERC1155 { * @param amount The amount of tokens to unlock. */ function unlock(address account, uint256 id, uint256 amount) public virtual { - if (lockedAmounts[account][id] < amount) require(false, "insufficient"); //revert insufficient(id, lockedAmounts[account][id], amount); - lockedAmounts[account][id] -= amount; + LockableERC1155Storage storage s = getLockableERC1155Storage(); + if (s.lockedAmounts[account][id] < amount) revert insufficient(id, s.lockedAmounts[account][id], amount); + s.lockedAmounts[account][id] -= amount; emit TokensUnlocked(account, id, amount); } @@ -52,7 +63,8 @@ abstract contract LockableERC1155 is ERC1155, ILockableERC1155 { * @return The unlocked balance of the ERC1155 token for the account. */ function unlockedBalanceOf(address account, uint256 id) public view returns (uint256) { - return balanceOf(account, id) - lockedAmounts[account][id]; + LockableERC1155Storage storage s = getLockableERC1155Storage(); + return balanceOf(account, id) - s.lockedAmounts[account][id]; } /** @@ -70,10 +82,14 @@ abstract contract LockableERC1155 is ERC1155, ILockableERC1155 { uint256[] memory ids, uint256[] memory values ) internal virtual override { - for (uint256 i = 0; i < ids.length; i++) { + for (uint256 i = 0; i < ids.length; ++i) { if (from != address(0)) { - if (lockedAmounts[from][ids[i]] + values[i] > balanceOf(from, ids[i])) { - require(false, "insufficient"); + if (getLockableERC1155Storage().lockedAmounts[from][ids[i]] + values[i] > balanceOf(from, ids[i])) { + revert insufficient( + ids[i], + balanceOf(from, ids[i]), + getLockableERC1155Storage().lockedAmounts[from][ids[i]] + values[i] + ); } } } diff --git a/src/distributions/ArguableVotingTournament.sol b/src/distributions/ArguableVotingTournament.sol new file mode 100644 index 00000000..066a8384 --- /dev/null +++ b/src/distributions/ArguableVotingTournament.sol @@ -0,0 +1,218 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "./InitializedDiamondDistribution.sol"; +import "../vendor/diamond/facets/DiamondLoupeFacet.sol"; +import "../facets/EIP712InspectorFacet.sol"; +import "../vendor/diamond/facets/OwnershipFacet.sol"; +import "../facets/RankifyInstanceMainFacet.sol"; +import "../facets/RankifyInstanceRequirementsFacet.sol"; +import "../facets/RankifyInstanceGameMastersFacet.sol"; +import "../facets/RankifyInstanceGameOwnersFacet.sol"; +import "../initializers/RankifyInstanceInit.sol"; +import "../vendor/diamond/interfaces/IDiamondCut.sol"; +import "@peeramid-labs/eds/src/libraries/LibSemver.sol"; + +/** + * @title ArguableVotingTournament Distribution + * @notice This contract implements a diamond distribution for Ethereum Distribution System. It is reponsible to create new instance of ArguableVotingTournament. + * @dev It is expected to be used ONLY by the Distributor contract. + * @author Peeramid Labs, 2024 + */ +contract ArguableVotingTournament is InitializedDiamondDistribution { + DiamondLoupeFacet private immutable _loupeFacet; + EIP712InspectorFacet private immutable _inspectorFacet; + RankifyInstanceMainFacet private immutable _RankifyMainFacet; + RankifyInstanceRequirementsFacet private immutable _RankifyReqsFacet; + RankifyInstanceGameMastersFacet private immutable _RankifyGMFacet; + RankifyInstanceGameOwnersFacet private immutable _RankifyOwnerFacet; + OwnershipFacet private immutable _OwnershipFacet; + address private immutable _initializer; + + bytes32 private immutable distributionName; + uint256 private immutable distributionVersion; + + function stringToSelector(string memory signature) private pure returns (bytes4) { + return bytes4(keccak256(bytes(signature))); + } + + /** + * @dev Constructor for the ArguableVotingTournament contract. + * + * Note Initializer function will be added as a regular facet to the Diamond Proxy, + * Since it is expected that initialization is done by distributor contract, the initializer will not be run, hence + * it is up for distributor to remove this facet upon succesfull initialization. + */ + constructor( + address initializer, + bytes4 initializerSelector, + bytes32 _distributionName, + LibSemver.Version memory version, + address loupeFacet, + address inspectorFacet, + address RankifyMainFacet, + address RankifyReqsFacet, + address RankifyGMFacet, + address RankifyOwnerFacet, + address OwnershipFacetAddr + ) InitializedDiamondDistribution(address(this), bytes32(0), initializerSelector) { + _initializer = initializer; + _loupeFacet = DiamondLoupeFacet(loupeFacet); + _inspectorFacet = EIP712InspectorFacet(inspectorFacet); + _RankifyMainFacet = RankifyInstanceMainFacet(RankifyMainFacet); + _RankifyReqsFacet = RankifyInstanceRequirementsFacet(RankifyReqsFacet); + _RankifyGMFacet = RankifyInstanceGameMastersFacet(RankifyGMFacet); + _RankifyOwnerFacet = RankifyInstanceGameOwnersFacet(RankifyOwnerFacet); + _OwnershipFacet = OwnershipFacet(OwnershipFacetAddr); + + distributionName = _distributionName; + distributionVersion = LibSemver.toUint256(version); + } + + /** + * @dev see Ethereum Distribution System IDistribute for interface specification. + * @return instances Array[9]: [diamond proxy, 8x diamond facets..] + * @return distributionName: bytes32 encoded name to be used in EIP712 signing flow + * @return distributionVersion: uint256 encoded distribution version. Can be parsed to eip712 signature with EDS LibSemver + */ + function instantiate(bytes memory) external override returns (address[] memory instances, bytes32, uint256) { + (address[] memory _instances, , ) = super._instantiate(); + address diamond = _instances[0]; + IDiamondCut.FacetCut[] memory facetCuts = new IDiamondCut.FacetCut[](8); + + bytes4[] memory loupeSelectors = new bytes4[](4); + loupeSelectors[0] = DiamondLoupeFacet.facets.selector; + loupeSelectors[1] = DiamondLoupeFacet.facetFunctionSelectors.selector; + loupeSelectors[2] = DiamondLoupeFacet.facetAddresses.selector; + loupeSelectors[3] = DiamondLoupeFacet.facetAddress.selector; + facetCuts[0] = IDiamondCut.FacetCut({ + facetAddress: address(_loupeFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: loupeSelectors + }); + + bytes4[] memory EIP712InspectorFacetSelectors = new bytes4[](2); + EIP712InspectorFacetSelectors[0] = EIP712InspectorFacet.inspectEIP712Hashes.selector; + EIP712InspectorFacetSelectors[1] = EIP712InspectorFacet.currentChainId.selector; + + facetCuts[1] = IDiamondCut.FacetCut({ + facetAddress: address(_inspectorFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: EIP712InspectorFacetSelectors + }); + bytes4[] memory RankifyInstanceMainFacetSelectors = new bytes4[](28); + RankifyInstanceMainFacetSelectors[0] = RankifyInstanceMainFacet.cancelGame.selector; + RankifyInstanceMainFacetSelectors[1] = RankifyInstanceMainFacet.gameCreator.selector; + RankifyInstanceMainFacetSelectors[2] = stringToSelector("createGame(address,uint256,uint256)"); + RankifyInstanceMainFacetSelectors[3] = stringToSelector("createGame(address,uint256,uint256,address[])"); + RankifyInstanceMainFacetSelectors[4] = stringToSelector("createGame(address,uint256)"); + RankifyInstanceMainFacetSelectors[5] = RankifyInstanceMainFacet.leaveGame.selector; + RankifyInstanceMainFacetSelectors[6] = RankifyInstanceMainFacet.joinGame.selector; + RankifyInstanceMainFacetSelectors[7] = RankifyInstanceMainFacet.openRegistration.selector; + RankifyInstanceMainFacetSelectors[8] = RankifyInstanceMainFacet.startGame.selector; + RankifyInstanceMainFacetSelectors[9] = RankifyInstanceMainFacet.onERC1155BatchReceived.selector; + RankifyInstanceMainFacetSelectors[10] = RankifyInstanceMainFacet.onERC1155Received.selector; + RankifyInstanceMainFacetSelectors[11] = RankifyInstanceMainFacet.onERC721Received.selector; + RankifyInstanceMainFacetSelectors[12] = RankifyInstanceMainFacet.getContractState.selector; + RankifyInstanceMainFacetSelectors[13] = RankifyInstanceMainFacet.getTurn.selector; + RankifyInstanceMainFacetSelectors[14] = RankifyInstanceMainFacet.getGM.selector; + RankifyInstanceMainFacetSelectors[15] = RankifyInstanceMainFacet.getScores.selector; + RankifyInstanceMainFacetSelectors[16] = RankifyInstanceMainFacet.isOvertime.selector; + RankifyInstanceMainFacetSelectors[17] = RankifyInstanceMainFacet.isGameOver.selector; + RankifyInstanceMainFacetSelectors[18] = RankifyInstanceMainFacet.getPlayersGame.selector; + RankifyInstanceMainFacetSelectors[19] = RankifyInstanceMainFacet.isLastTurn.selector; + RankifyInstanceMainFacetSelectors[20] = RankifyInstanceMainFacet.isRegistrationOpen.selector; + RankifyInstanceMainFacetSelectors[21] = RankifyInstanceMainFacet.getGameRank.selector; + RankifyInstanceMainFacetSelectors[22] = RankifyInstanceMainFacet.getPlayers.selector; + RankifyInstanceMainFacetSelectors[23] = RankifyInstanceMainFacet.canStartGame.selector; + RankifyInstanceMainFacetSelectors[24] = RankifyInstanceMainFacet.canEndTurn.selector; + RankifyInstanceMainFacetSelectors[25] = RankifyInstanceMainFacet.isPlayerTurnComplete.selector; + RankifyInstanceMainFacetSelectors[26] = RankifyInstanceMainFacet.getPlayerVotedArray.selector; + RankifyInstanceMainFacetSelectors[27] = RankifyInstanceMainFacet.getPlayersMoved.selector; + + facetCuts[2] = IDiamondCut.FacetCut({ + facetAddress: address(_RankifyMainFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: RankifyInstanceMainFacetSelectors + }); + bytes4[] memory RankifyInstanceRequirementsFacetSelectors = new bytes4[](3); + RankifyInstanceRequirementsFacetSelectors[0] = RankifyInstanceRequirementsFacet.setJoinRequirements.selector; + RankifyInstanceRequirementsFacetSelectors[1] = RankifyInstanceRequirementsFacet.getJoinRequirements.selector; + RankifyInstanceRequirementsFacetSelectors[2] = RankifyInstanceRequirementsFacet + .getJoinRequirementsByToken + .selector; + + facetCuts[3] = IDiamondCut.FacetCut({ + facetAddress: address(_RankifyReqsFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: RankifyInstanceRequirementsFacetSelectors + }); + + bytes4[] memory RankifyInstanceGameMastersFacetSelectors = new bytes4[](3); + RankifyInstanceGameMastersFacetSelectors[0] = RankifyInstanceGameMastersFacet.submitVote.selector; + RankifyInstanceGameMastersFacetSelectors[1] = RankifyInstanceGameMastersFacet.submitProposal.selector; + RankifyInstanceGameMastersFacetSelectors[2] = RankifyInstanceGameMastersFacet.endTurn.selector; + + facetCuts[4] = IDiamondCut.FacetCut({ + facetAddress: address(_RankifyGMFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: RankifyInstanceGameMastersFacetSelectors + }); + + bytes4[] memory RankifyInstanceGameOwnersFacetSelectors = new bytes4[](8); + + RankifyInstanceGameOwnersFacetSelectors[0] = RankifyInstanceGameOwnersFacet.setGamePrice.selector; + RankifyInstanceGameOwnersFacetSelectors[1] = RankifyInstanceGameOwnersFacet.setJoinGamePrice.selector; + RankifyInstanceGameOwnersFacetSelectors[2] = RankifyInstanceGameOwnersFacet.setRankTokenAddress.selector; + RankifyInstanceGameOwnersFacetSelectors[3] = RankifyInstanceGameOwnersFacet.setTimePerTurn.selector; + RankifyInstanceGameOwnersFacetSelectors[4] = RankifyInstanceGameOwnersFacet.setMaxPlayersSize.selector; + RankifyInstanceGameOwnersFacetSelectors[5] = RankifyInstanceGameOwnersFacet.setMinPlayersSize.selector; + RankifyInstanceGameOwnersFacetSelectors[6] = RankifyInstanceGameOwnersFacet.setTimeToJoin.selector; + RankifyInstanceGameOwnersFacetSelectors[7] = RankifyInstanceGameOwnersFacet.setMaxTurns.selector; + facetCuts[5] = IDiamondCut.FacetCut({ + facetAddress: address(_RankifyOwnerFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: RankifyInstanceGameOwnersFacetSelectors + }); + + bytes4[] memory OwnershipFacetSelectors = new bytes4[](2); + OwnershipFacetSelectors[0] = _OwnershipFacet.transferOwnership.selector; + OwnershipFacetSelectors[1] = _OwnershipFacet.owner.selector; + + facetCuts[6] = IDiamondCut.FacetCut({ + facetAddress: address(_OwnershipFacet), + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: OwnershipFacetSelectors + }); + bytes4[] memory initializerSelectors = new bytes4[](1); + initializerSelectors[0] = RankifyInstanceInit.init.selector; + facetCuts[7] = IDiamondCut.FacetCut({ + facetAddress: _initializer, + action: IDiamondCut.FacetCutAction.Add, + functionSelectors: initializerSelectors + }); + + super.initialize(DiamondCutFacet(diamond), facetCuts, ""); + address[] memory returnValue = new address[](9); + returnValue[0] = diamond; + returnValue[1] = facetCuts[0].facetAddress; + returnValue[2] = facetCuts[1].facetAddress; + returnValue[3] = facetCuts[2].facetAddress; + returnValue[4] = facetCuts[3].facetAddress; + returnValue[5] = facetCuts[4].facetAddress; + returnValue[6] = facetCuts[5].facetAddress; + returnValue[7] = facetCuts[6].facetAddress; + returnValue[8] = facetCuts[7].facetAddress; + + return (returnValue, distributionName, distributionVersion); + } + + function contractURI() public pure virtual override returns (string memory) { + return string(abi.encodePacked(super.contractURI(), ";", "ArguableVotingTournament")); + } + + function sources() internal view virtual override returns (address[] memory, bytes32, uint256) { + (address[] memory srcs, , ) = super.sources(); + return (srcs, distributionName, distributionVersion); + } +} diff --git a/src/distributions/DiamondDistribution.sol b/src/distributions/DiamondDistribution.sol new file mode 100644 index 00000000..ce44f752 --- /dev/null +++ b/src/distributions/DiamondDistribution.sol @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@peeramid-labs/eds/src/abstracts/CloneDistribution.sol"; +import "../vendor/diamond/DiamondCloneable.sol"; +import "../vendor/diamond/facets/DiamondCutFacet.sol"; + +/** + * @title Diamond Proxy Distribution + * @notice This contract is EDS compatible factory for diamond proxies + * @dev This uses modified version of Diamond Proxy, which allows proxy itself to cloned + * @author Peeramid Labs, 2024 + */ +contract DiamondDistribution is CloneDistribution { + address private immutable _reference; + + constructor(address owner) { + address diamondCutFacet = address(new DiamondCutFacet()); + // Deploy the diamond proxy contract + address diamondProxy = address(new DiamondCloneable(owner, diamondCutFacet)); + _reference = diamondProxy; + } + + function instantiate(bytes memory) external virtual override returns (address[] memory, bytes32, uint256) { + return super._instantiate(); + } + + function sources() internal view virtual override returns (address[] memory, bytes32 name, uint256 version) { + address[] memory _sources = new address[](1); + _sources[0] = _reference; + return (_sources, bytes32(abi.encodePacked("DiamondDistribution")), uint256(0)); + } + + function contractURI() public pure virtual override returns (string memory) { + return ""; + } +} diff --git a/src/distributions/InitializedDiamondDistribution.sol b/src/distributions/InitializedDiamondDistribution.sol new file mode 100644 index 00000000..86ee41f5 --- /dev/null +++ b/src/distributions/InitializedDiamondDistribution.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "../vendor/diamond/DiamondCloneable.sol"; +import "../vendor/diamond/facets/DiamondCutFacet.sol"; +import "../distributions/DiamondDistribution.sol"; +import "../vendor/diamond/libraries/LibDiamond.sol"; +import "../vendor/diamond/interfaces/IDiamondCut.sol"; + +/** + * @title Initialized Diamond Proxy Distribution + * @notice This contract is EDS compatible factory for diamond proxies + * @dev This allows to store immutable initializer logic for a cloned diamond proxy + * @author Peeramid Labs, 2024 + */ +abstract contract InitializedDiamondDistribution is DiamondDistribution { + address private immutable initializer; + bytes4 private immutable initializerSelector; + + constructor(address owner, bytes32 _initializerId, bytes4 _initializerSelector) DiamondDistribution(owner) { + initializer = getContractsIndex().get(_initializerId); + initializerSelector = _initializerSelector; + } + + function initialize( + DiamondCutFacet instance, + IDiamondCut.FacetCut[] memory _diamondCut, + bytes memory args + ) internal virtual { + bytes memory _calldata = args.length > 0 ? abi.encodeWithSelector(initializerSelector, args) : bytes(""); + instance.diamondCut(_diamondCut, initializer, _calldata); + } + + function get() public view virtual override returns (address[] memory, bytes32 name, uint256 version) { + (address[] memory srcs, , ) = super.sources(); + address[] memory _sources = new address[](2); + assert(srcs.length == 1); + _sources[0] = srcs[0]; + _sources[1] = initializer; + return (srcs, bytes32(abi.encodePacked("InitializedDiamondDistribution")), uint256(0)); + } + + function contractURI() public pure virtual override returns (string memory) { + return string(abi.encodePacked(super.contractURI(), ";", "InitializedDiamondDistribution")); //ToDo: Add IPFS link with readme! + } +} diff --git a/src/distributions/MAODistribution.sol b/src/distributions/MAODistribution.sol new file mode 100644 index 00000000..ca3e503c --- /dev/null +++ b/src/distributions/MAODistribution.sol @@ -0,0 +1,319 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol"; +import "@peeramid-labs/eds/src/interfaces/IDistribution.sol"; +import "@peeramid-labs/eds/src/libraries/LibSemver.sol"; +import {DistributableGovernanceERC20, MintSettings, IDAO} from "../tokens/DistributableGovernanceERC20.sol"; +import {IERC7746} from "@peeramid-labs/eds/src/interfaces/IERC7746.sol"; +import {SimpleAccessManager} from "@peeramid-labs/eds/src/managers/SimpleAccessManager.sol"; +import {IDistributor} from "@peeramid-labs/eds/src/interfaces/IDistributor.sol"; +import {RankToken} from "../tokens/RankToken.sol"; +import "../initializers/RankifyInstanceInit.sol"; +import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; +import "@peeramid-labs/eds/src/abstracts/CodeIndexer.sol"; + +import {TokenSettings, VotingMode, VotingSettings, IPluginRepo, IDAOFactory} from "../vendor/aragon/interfaces.sol"; + +/** + * @title MAODistribution + * @dev This contract implements the IDistribution and CodeIndexer interfaces. It uses the Clones library for address cloning. + * + * @notice The contract is responsible for creating and managing DAOs and ACID distributions. + * @author Peeramid Labs, 2024 + */ +contract MAODistribution is IDistribution, CodeIndexer { + struct UserACIDSettings { + uint256 timePerTurn; + uint256 maxPlayersSize; + uint256 minPlayersSize; + uint256 timeToJoin; + uint256 maxTurns; + uint256 voteCredits; + uint256 gamePrice; + address paymentToken; + uint256 joinGamePrice; + string metadata; + string rankTokenURI; + string RankTokenContractURI; + } + + struct OSxDistributionArguments { + string daoURI; + string subdomain; + bytes metadata; + string tokenName; + string tokenSymbol; + } + + struct DistributorArguments { + OSxDistributionArguments DAOSEttings; + UserACIDSettings ACIDSettings; + } + + using Clones for address; + IPluginRepo private immutable _tokenVotingPluginRepo; + IDAOFactory private immutable _daoFactory; + address private immutable _trustedForwarder; + bytes32 private immutable _distributionName; + uint256 private immutable _distributionVersion; + address private immutable _rankTokenBase; + IDistribution private immutable _ACIDDistributionBase; + address private immutable _governanceERC20Base; + address private immutable _accessManagerBase; + + /** + * @notice Initializes the contract with the provided parameters and performs necessary checks. + * @dev - retrieves contract addresses from a contract index using the provided identifiers. + * - checks if the access manager supports the ERC7746 interface. + * - EIP712 compatible name/version can be extracted with use of LibSemver + * + * + * WARNING: _trustedForwarder functionality hasn't been yet reviewed nor implemented for ACID distribution and if set will affect only OSx DAO setup. + * + * @param tokenVotingPluginRepo Address of the token voting plugin repository. + * @param daoFactory Address of the Aragons DAO factory. + * @param trustedForwarder Address of the trusted forwarder. + * @param rankTokenCodeId Identifier for the rank token code. + * @param ACIDDIistributionId Identifier for the ACID distribution. + * @param accessManagerId Identifier for the access manager. + * @param governanceERC20BaseId Identifier for the governance ERC20 base. + * @param distributionName Name of the distribution. + * @param distributionVersion Version of the distribution as a `LibSemver.Version` struct. + */ + constructor( + address tokenVotingPluginRepo, + address daoFactory, + address trustedForwarder, + bytes32 rankTokenCodeId, + bytes32 ACIDDIistributionId, + bytes32 accessManagerId, + bytes32 governanceERC20BaseId, + bytes32 distributionName, + LibSemver.Version memory distributionVersion + ) { + _governanceERC20Base = getContractsIndex().get(governanceERC20BaseId); + _tokenVotingPluginRepo = IPluginRepo(tokenVotingPluginRepo); + _daoFactory = IDAOFactory(daoFactory); + _trustedForwarder = trustedForwarder; + _distributionName = distributionName; + _distributionVersion = LibSemver.toUint256(distributionVersion); + _rankTokenBase = getContractsIndex().get(rankTokenCodeId); + if (_rankTokenBase == address(0)) { + revert("Rank token base not found"); + } + _ACIDDistributionBase = IDistribution(getContractsIndex().get(ACIDDIistributionId)); + if (address(_ACIDDistributionBase) == address(0)) { + revert("ACID distribution base not found"); + } + + _accessManagerBase = getContractsIndex().get(accessManagerId); + if (_accessManagerBase == address(0)) { + revert("Access manager base not found"); + } + require( + ERC165Checker.supportsInterface(_accessManagerBase, type(IERC7746).interfaceId), + "Access manager does not support IERC7746" + ); + } + + function createOSxDAO( + OSxDistributionArguments memory args + ) internal returns (address[] memory instances, bytes32, uint256) { + MintSettings memory mintSettings = MintSettings(new address[](1), new uint256[](1)); + mintSettings.receivers[0] = address(this); + mintSettings.amounts[0] = 0; + address token = _governanceERC20Base.clone(); + TokenSettings memory tokenSettings = TokenSettings(token, args.tokenName, args.tokenSymbol); + VotingSettings memory votingSettings = VotingSettings({ + votingMode: VotingMode.Standard, + supportThreshold: 666666, + minParticipation: 10 ** 4, + minDuration: 86400, + minProposerVotingPower: 1 + }); + + IDAOFactory.DAOSettings memory daoSettings = IDAOFactory.DAOSettings( + _trustedForwarder, + args.daoURI, + args.subdomain, + args.metadata + ); + + IDAOFactory.PluginSettings memory tokenVotingPluginSetup = IDAOFactory.PluginSettings( + IDAOFactory.PluginSetupRef( + _tokenVotingPluginRepo.getLatestVersion(_tokenVotingPluginRepo.latestRelease()).tag, + _tokenVotingPluginRepo + ), + abi.encode(votingSettings, tokenSettings, mintSettings) + ); + + IDAOFactory.PluginSettings[] memory pluginSettings = new IDAOFactory.PluginSettings[](1); + pluginSettings[0] = tokenVotingPluginSetup; + address createdDao = _daoFactory.createDao(daoSettings, pluginSettings); + + SimpleAccessManager.SimpleAccessManagerInitializer[] + memory govTokenAccessSettings = new SimpleAccessManager.SimpleAccessManagerInitializer[](1); + govTokenAccessSettings[0].selector = DistributableGovernanceERC20.mint.selector; + govTokenAccessSettings[0].dissallowedAddresses = new address[](1); + govTokenAccessSettings[0].dissallowedAddresses[0] = createdDao; + govTokenAccessSettings[0].distributionComponentsOnly = true; + + SimpleAccessManager govTokenAccessManager = SimpleAccessManager(_accessManagerBase.clone()); + + govTokenAccessManager.initialize(govTokenAccessSettings, tokenSettings.addr, IDistributor(msg.sender)); // msg.sender must be IDistributor or it will revert + DistributableGovernanceERC20(tokenSettings.addr).initialize( + IDAO(createdDao), + tokenSettings.name, + tokenSettings.symbol, + mintSettings, + address(govTokenAccessManager) + ); + + address[] memory returnValue = new address[](3); + returnValue[0] = createdDao; + returnValue[1] = token; + returnValue[2] = address(govTokenAccessManager); + + return (returnValue, "OSxDistribution", 1); + } + + function createACID( + UserACIDSettings memory args, + address dao + ) internal returns (address[] memory instances, bytes32, uint256) { + address rankToken = _rankTokenBase.clone(); + + bytes4[] memory rankTokenSelectors = new bytes4[](6); + rankTokenSelectors[0] = RankToken.mint.selector; + rankTokenSelectors[1] = RankToken.lock.selector; + rankTokenSelectors[2] = RankToken.unlock.selector; + rankTokenSelectors[3] = RankToken.batchMint.selector; + rankTokenSelectors[4] = RankToken.setURI.selector; + rankTokenSelectors[5] = RankToken.setContractURI.selector; + + SimpleAccessManager.SimpleAccessManagerInitializer[] + memory RankTokenAccessSettings = new SimpleAccessManager.SimpleAccessManagerInitializer[](6); + + RankTokenAccessSettings[0].selector = RankToken.mint.selector; + RankTokenAccessSettings[0].dissallowedAddresses = new address[](1); + RankTokenAccessSettings[0].dissallowedAddresses[0] = dao; + RankTokenAccessSettings[0].distributionComponentsOnly = true; + + RankTokenAccessSettings[1].selector = RankToken.lock.selector; + RankTokenAccessSettings[1].dissallowedAddresses = new address[](1); + RankTokenAccessSettings[1].dissallowedAddresses[0] = dao; + RankTokenAccessSettings[1].distributionComponentsOnly = true; + + RankTokenAccessSettings[2].selector = RankToken.unlock.selector; + RankTokenAccessSettings[2].dissallowedAddresses = new address[](1); + RankTokenAccessSettings[2].dissallowedAddresses[0] = dao; + RankTokenAccessSettings[2].distributionComponentsOnly = true; + + RankTokenAccessSettings[3].selector = RankToken.batchMint.selector; + RankTokenAccessSettings[3].dissallowedAddresses = new address[](1); + RankTokenAccessSettings[3].dissallowedAddresses[0] = dao; + RankTokenAccessSettings[3].distributionComponentsOnly = true; + + RankTokenAccessSettings[4].selector = RankToken.setURI.selector; + RankTokenAccessSettings[4].distributionComponentsOnly = true; + + RankTokenAccessSettings[5].selector = RankToken.setContractURI.selector; + RankTokenAccessSettings[5].distributionComponentsOnly = true; + + SimpleAccessManager rankTokenAccessManager = SimpleAccessManager(_accessManagerBase.clone()); + + rankTokenAccessManager.initialize(RankTokenAccessSettings, rankToken, IDistributor(msg.sender)); // msg.sender must be IDistributor or it will revert + + RankToken(rankToken).initialize(args.rankTokenURI, args.RankTokenContractURI, address(rankTokenAccessManager)); + ( + address[] memory ACIDDistrAddresses, + bytes32 ACIDDistributionname, + uint256 ACIDDistributionVersion + ) = _ACIDDistributionBase.instantiate(abi.encode(dao, rankToken, args.metadata)); + + RankifyInstanceInit.contractInitializer memory ACIDInit = RankifyInstanceInit.contractInitializer({ + timePerTurn: args.timePerTurn, + maxPlayersSize: args.maxPlayersSize, + minPlayersSize: args.minPlayersSize, + rewardToken: rankToken, + timeToJoin: args.timeToJoin, + gamePrice: args.gamePrice, + joinGamePrice: args.joinGamePrice, + maxTurns: args.maxTurns, + numWinners: 1, + voteCredits: args.voteCredits, + paymentToken: args.paymentToken + }); + + RankifyInstanceInit(ACIDDistrAddresses[0]).init( + string(abi.encodePacked(ACIDDistributionname)), + LibSemver.toString(LibSemver.parse(ACIDDistributionVersion)), + ACIDInit + ); + address[] memory returnValue = new address[](ACIDDistrAddresses.length + 2); + for (uint256 i; i < ACIDDistrAddresses.length; ++i) { + returnValue[i] = ACIDDistrAddresses[i]; + } + returnValue[ACIDDistrAddresses.length] = address(rankTokenAccessManager); + returnValue[ACIDDistrAddresses.length + 1] = rankToken; + + return (returnValue, ACIDDistributionname, ACIDDistributionVersion); + } + + /** + * @notice Instantiates a new instance with the provided data. + * @param data The initialization data for the new instance, typeof {DistributorArguments}. + * @return instances An array of addresses representing the new instances. + * @return distributionName A bytes32 value representing the name of the distribution. + * @return distributionVersion A uint256 value representing the version of the distribution. + * @dev `instances` array contents: DAO, GovernanceToken, Gov Token AccessManager, ACID Diamond, 8x ACID Diamond facets, RankTokenAccessManager, RankToken + */ + function instantiate( + bytes memory data + ) public override returns (address[] memory instances, bytes32 distributionName, uint256 distributionVersion) { + DistributorArguments memory args = abi.decode(data, (DistributorArguments)); + + (address[] memory DAOInstances, , ) = createOSxDAO(args.DAOSEttings); + (address[] memory ACIDInstances, , ) = createACID(args.ACIDSettings, DAOInstances[0]); + + address[] memory returnValue = new address[](DAOInstances.length + ACIDInstances.length); + + for (uint256 i; i < DAOInstances.length; ++i) { + returnValue[i] = DAOInstances[i]; + } + for (uint256 i; i < ACIDInstances.length; ++i) { + returnValue[DAOInstances.length + i] = ACIDInstances[i]; + } + return (returnValue, _distributionName, _distributionVersion); + } + + function contractURI() public pure virtual override returns (string memory) { + return ""; + } + + function get() external view returns (address[] memory sources, bytes32, uint256) { + address[] memory srcs = new address[](8); + srcs[0] = address(_tokenVotingPluginRepo); + srcs[1] = address(_daoFactory); + srcs[2] = address(_trustedForwarder); + srcs[3] = address(_rankTokenBase); + srcs[4] = address(_ACIDDistributionBase); + srcs[6] = address(_governanceERC20Base); + srcs[7] = address(_accessManagerBase); + return (srcs, _distributionName, _distributionVersion); + } + + /** + * @notice Returns the schema of the distribution. + * @dev This is only needed to ensure `DistributorArguments` are provided in ABI, as it would be internal otherwise. + * @return DistributorArguments The schema of the distribution. + */ + function distributionSchema() external pure returns (DistributorArguments memory) { + return + DistributorArguments({ + DAOSEttings: OSxDistributionArguments("", "", "", "", ""), + ACIDSettings: UserACIDSettings(0, 0, 0, 0, 0, 0, 0, address(0), 0, "", "", "") + }); + } +} diff --git a/src/distributors/PeeramidLabsDistributor.sol b/src/distributors/PeeramidLabsDistributor.sol new file mode 100644 index 00000000..c904ef97 --- /dev/null +++ b/src/distributors/PeeramidLabsDistributor.sol @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@peeramid-labs/eds/src/abstracts/Distributor.sol"; +import "@openzeppelin/contracts/access/extensions/AccessControlDefaultAdminRules.sol"; + +/** + * @title PeeramidLabsDistributor + * @notice This contract is a distributor for Peeramid Labs. + * It is designed to handle the distribution logic specific to Peeramid Labs. + * The contract leverages access control mechanisms to ensure that only authorized + * users can perform certain actions. + * @author Peeramid Labs, 2024 + */ +contract PeeramidLabsDistributor is Distributor, AccessControlDefaultAdminRules { + constructor(address defaultAdmin) Distributor() AccessControlDefaultAdminRules(3 days, defaultAdmin) {} + + /** + * @notice Adds a new distribution with the given identifier and initializer address. + * @dev This function can only be called by an account with the `DEFAULT_ADMIN_ROLE`. + * @param id The unique identifier for the distribution. * @param initializer The address that initializes the distribution. + */ + function addDistribution(bytes32 id, address initializer) public onlyRole(DEFAULT_ADMIN_ROLE) { + _addDistribution(id, initializer); + } + + /** + * @notice Instantiates a new contract with the given identifier and arguments. + * @param id The unique identifier for the contract to be instantiated. + * @param args The calldata arguments required for the instantiation process. + * @return srcs An array of instantiated infrastructure + * @return name The name of the instantiated distribution. + * @return version The version number of the instantiated distribution. + */ + function instantiate( + bytes32 id, + bytes calldata args + ) external returns (address[] memory srcs, bytes32 name, uint256 version) { + return _instantiate(id, args); + } + + /** + * @notice Removes a distribution entry identified by the given ID. + * @dev This function can only be called by an account with the `DEFAULT_ADMIN_ROLE`. + * @param id The unique identifier of the distribution entry to be removed. + */ + function removeDistribution(bytes32 id) public onlyRole(DEFAULT_ADMIN_ROLE) { + _removeDistribution(id); + } + + /** + * + * This function checks if the contract implements the interface defined by ERC165 + * + * @param interfaceId The interface identifier, as specified in ERC-165. + * @return `true` if the contract implements `interfaceId` and + * `interfaceId` is not 0xffffffff, `false` otherwise. + */ + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(AccessControlDefaultAdminRules, Distributor) returns (bool) { + return + AccessControlDefaultAdminRules.supportsInterface(interfaceId) || Distributor.supportsInterface(interfaceId); + } + + function changeVersion( + bytes32 distributionId, + LibSemver.VersionRequirement memory newRequirement + ) public override onlyRole(DEFAULT_ADMIN_ROLE) { + super._changeVersion(distributionId, newRequirement); + } + + // @inheritdoc IDistributor + function addDistribution( + IRepository repository, + address initializer, + LibSemver.VersionRequirement memory requirement + ) external override onlyRole(DEFAULT_ADMIN_ROLE) { + super._addDistribution(address(repository), initializer, requirement); + } +} diff --git a/src/facets/DNSFacet.sol b/src/facets/DNSFacet.sol index 7700b666..9d1ca46a 100644 --- a/src/facets/DNSFacet.sol +++ b/src/facets/DNSFacet.sol @@ -7,8 +7,6 @@ import "../abstracts/draft-EIP712Diamond.sol"; import "../interfaces/IMultipass.sol"; import "../libraries/LibMultipass.sol"; import "../modifiers/OnlyOwnerDiamond.sol"; -import "hardhat/console.sol"; -import "../vendor/diamond/facets/OwnershipFacet.sol"; // Consider upgrade for https://eips.ethereum.org/EIPS/eip-4834 diff --git a/src/facets/RankifyInstanceGameMastersFacet.sol b/src/facets/RankifyInstanceGameMastersFacet.sol index 1493b4a0..6abbab7b 100644 --- a/src/facets/RankifyInstanceGameMastersFacet.sol +++ b/src/facets/RankifyInstanceGameMastersFacet.sol @@ -1,7 +1,6 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import {LibArray} from "../libraries/LibArray.sol"; import {LibTBG} from "../libraries/LibTurnBasedGame.sol"; import {LibRankify} from "../libraries/LibRankify.sol"; import {IRankifyInstanceCommons} from "../interfaces/IRankifyInstanceCommons.sol"; @@ -9,7 +8,6 @@ import "../abstracts/DiamondReentrancyGuard.sol"; import "@openzeppelin/contracts/utils/cryptography/SignatureChecker.sol"; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "../abstracts/draft-EIP712Diamond.sol"; -import {RankToken} from "../tokens/RankToken.sol"; import {LibCoinVending} from "../libraries/LibCoinVending.sol"; import "hardhat/console.sol"; import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol"; @@ -139,7 +137,7 @@ contract RankifyInstanceGameMastersFacet is DiamondReentrancyGuard, EIP712 { */ function _afterNextTurn(uint256 gameId, string[] memory newProposals) private { IRankifyInstanceCommons.RInstance storage game = gameId.getGameStorage(); - for (uint256 i = 0; i < newProposals.length; i++) { + for (uint256 i = 0; i < newProposals.length; ++i) { game.ongoingProposals[i] = newProposals[i]; } } @@ -208,10 +206,10 @@ contract RankifyInstanceGameMastersFacet is DiamondReentrancyGuard, EIP712 { address[] memory players = gameId.getPlayers(); if (turn != 1) { uint256[][] memory votesSorted = new uint256[][](players.length); - for (uint256 player = 0; player < players.length; player++) { + for (uint256 player = 0; player < players.length; ++player) { votesSorted[player] = new uint256[](players.length); } - for (uint256 votee = 0; votee < players.length; votee++) { + for (uint256 votee = 0; votee < players.length; ++votee) { uint256 voteesColumn = proposerIndicies[votee]; if (voteesColumn < players.length) { // if index is above length of players array, it means the player did not propose @@ -222,7 +220,7 @@ contract RankifyInstanceGameMastersFacet is DiamondReentrancyGuard, EIP712 { } (, uint256[] memory roundScores) = gameId.calculateScoresQuadratic(votesSorted, proposerIndicies); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { string memory proposal = game.ongoingProposals[proposerIndicies[i]]; emit ProposalScore(gameId, turn, proposal, proposal, roundScores[i]); } @@ -232,7 +230,7 @@ contract RankifyInstanceGameMastersFacet is DiamondReentrancyGuard, EIP712 { // Clean up game instance for upcoming round - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { game.proposalCommitmentHashes[players[i]] = bytes32(0); game.ongoingProposals[i] = ""; game.playerVoted[players[i]] = false; diff --git a/src/facets/RankifyInstanceGameOwnersFacet.sol b/src/facets/RankifyInstanceGameOwnersFacet.sol index 646c7f6f..59ff6c49 100644 --- a/src/facets/RankifyInstanceGameOwnersFacet.sol +++ b/src/facets/RankifyInstanceGameOwnersFacet.sol @@ -7,6 +7,7 @@ import {IRankifyInstanceCommons} from "../interfaces/IRankifyInstanceCommons.sol import "../abstracts/draft-EIP712Diamond.sol"; import "../vendor/diamond/libraries/LibDiamond.sol"; import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import {ERC165Checker} from "@openzeppelin/contracts/utils/introspection/ERC165Checker.sol"; error ZeroValue(); @@ -85,6 +86,27 @@ contract RankifyInstanceGameOwnersFacet { _RInstance.rankTokenAddress = newRankToken; } + /** + * + * @dev Sets the payment token address. + * Requirements: + * + * - The caller must be the contract owner. + * - `newPaymentToken` must not be the zero address. + * - `newRankToken` must support the ERC20 interface. + */ + function setPaymentTokenAddress(address newPaymentToken) external { + LibDiamond.enforceIsContractOwner(); + if (newPaymentToken == address(0)) { + require(false, "zerovalue"); //revert ZeroValue(); + } + if (!ERC165Checker.supportsInterface(newPaymentToken, type(IERC20).interfaceId)) { + require(false, "wrongaddress"); //revert WrongAddress(); + } + IRankifyInstanceCommons.RInstanceSettings storage _RInstance = RInstanceStorage(); + _RInstance.gamePaymentToken = newPaymentToken; + } + /** * @dev Sets the time per turn. `newTimePerTurn` is the new time per turn. * diff --git a/src/facets/RankifyInstanceMainFacet.sol b/src/facets/RankifyInstanceMainFacet.sol index 069b192b..9cadd1f9 100644 --- a/src/facets/RankifyInstanceMainFacet.sol +++ b/src/facets/RankifyInstanceMainFacet.sol @@ -6,7 +6,6 @@ import {IRankifyInstanceCommons} from "../interfaces/IRankifyInstanceCommons.sol import {IERC1155Receiver} from "../interfaces/IERC1155Receiver.sol"; import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; -import {IRankToken} from "../interfaces/IRankToken.sol"; import "../abstracts/DiamondReentrancyGuard.sol"; import {LibRankify} from "../libraries/LibRankify.sol"; import {LibCoinVending} from "../libraries/LibCoinVending.sol"; @@ -57,21 +56,6 @@ contract RankifyInstanceMainFacet is emit gameCreated(gameId, gameMaster, msg.sender, gameRank); } - function createGame(address gameMaster, uint256 gameId, uint256 gameRank, address[] memory additionalRanks) public { - createGame(gameMaster, gameId, gameRank); - RInstance storage game = gameId.getGameStorage(); - if (additionalRanks.length != 0) { - for (uint256 i = 0; i < additionalRanks.length; i++) { - IRankToken additonalRank = IRankToken(additionalRanks[i]); - require(additonalRank.supportsInterface(type(IRankToken).interfaceId), "must support rank interface"); - require(additonalRank.getRankingInstance() == address(this), "must be rankingInstance"); - additonalRank.mint(address(this), 1, gameRank + 1, ""); - additonalRank.mint(address(this), 3, gameRank, ""); - } - game.additionalRanks = additionalRanks; - } - } - function createGame(address gameMaster, uint256 gameRank) public { LibRankify.enforceIsInitialized(); RInstanceSettings storage settings = RInstanceStorage(); @@ -298,7 +282,7 @@ contract RankifyInstanceMainFacet is IRankifyInstanceCommons.RInstance storage game = gameId.getGameStorage(); address[] memory players = gameId.getPlayers(); bool[] memory playerVoted = new bool[](players.length); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { playerVoted[i] = game.playerVoted[players[i]]; } return playerVoted; @@ -308,7 +292,7 @@ contract RankifyInstanceMainFacet is LibTBG.GameInstance storage game = gameId._getGame(); address[] memory players = gameId.getPlayers(); bool[] memory playersMoved = new bool[](players.length); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { playersMoved[i] = game.madeMove[players[i]]; } return (playersMoved, game.numPlayersMadeMove); diff --git a/src/fixtures/MigrationLibFixture.sol b/src/fixtures/MigrationLibFixture.sol deleted file mode 100644 index eee7b33e..00000000 --- a/src/fixtures/MigrationLibFixture.sol +++ /dev/null @@ -1,241 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -// import "./LibDiamondOwner.sol"; -// import { IMultipass } from "../interfaces/sol"; - -library LibMultipass { - /** - * @dev resolves user from any given argument - * Requirements: - * domainName must be given and must be initialized - * id OR username OR address must be given - * This method first tries to resolve by address, then by user id and finally by username - * @param domainName domain name - * @param userAddress adress of user - * @param id user id - * @param username username - * @param targetDomain if this is set to valid domain name, then after sucessfull resolving account at domainName, - * this method will rerun with resolving user properties in targetDomain - */ - struct NameQuery { - string domainName; - address userAddress; - string name; - string id; - string targetDomain; - } - - /** - * @dev The domain name of the registrar. - * @param registrar is the address private key of which is owned by signing server (e.g. Discord bot server) - * @param name is unique string that is used to find this domain within domains. - * @param freeRegistrationsNumber is the number of free registrations for this domain - - * @param fee amount of payment requried to register name in the domain - * @param ttl time to live for changes in the domain properties - * @param isActive when is false domain name will not respond to any changes and will not return any address - **/ - struct Domain { - bytes32 name; //32bytes - uint256 fee; //32bytes - uint256 freeRegistrationsNumber; //32bytes - uint256 referrerReward; //32bytes - uint256 referralDiscount; //32bytes - bool isActive; //1byte - address registrar; //20 bytes - uint24 ttl; //3 bytes (not being used for now) - uint256 registerSize; //32bytes - } - - struct NameQueryBytes32 { - string domainName; - address userAddress; - bytes32 name; - bytes32 id; - string targetDomain; - } - struct Record { - address wallet; - string name; - string id; - uint96 nonce; - } - - struct RecordBytes32 { - address wallet; - bytes32 name; - bytes32 id; - uint96 nonce; - } - - bytes32 constant MULTIPASS_STORAGE_POSITION = keccak256("multipass.diamond.storage.position"); - - /** - * @dev The domain name of the registrar. - * @param properties - domain configuration - * @param idToAddress is mapping from unique identificator to an address - * @param registerSize is number of registered users for this domain - * @param nonce is incremented each time Record changes in addressToId map - * @param nameToId is mapping from names to unique identificator. While each name required to be unique, - names might change on the domain, so we keep records to user identificators as immutable property of user - * @param addressToId is mapping from an address to unique identificator - * @param idToName is mapping from identificator to a name - **/ - struct DomainNameService { - Domain properties; //128 bytes - mapping(bytes32 => address) idToAddress; //N*20bytes - mapping(bytes32 => uint96) nonce; //N*12bytes - mapping(address => bytes32) addressToId; //N*32 bytes - mapping(uint256 => bytes32) TestInTheMiddle; - mapping(bytes32 => bytes32) nameToId; //N*32 bytes - mapping(bytes32 => bytes32) idToName; //N*32 bytes - //Total: 128+N*160 Bytes - } - - struct MultipassStorageStruct { - mapping(uint256 => DomainNameService) s_domains; - mapping(bytes32 => uint256) s_domainNameToIndex; //helper to get domain index by name - string s_version; - uint256 s_numDomains; - } - - function MultipassStorage() internal pure returns (MultipassStorageStruct storage es) { - bytes32 position = MULTIPASS_STORAGE_POSITION; - assembly { - es.slot := position - } - } - - bytes32 internal constant _TYPEHASH = - keccak256("registerName(string name,string id,string domainName,uint256 deadline,uint96 nonce)"); - - function _stringToBytes32(string memory source) internal pure returns (bytes32 result) { - require(bytes(source).length <= 32, "_stringToBytes32->String longer than 32 bytes"); - bytes memory tempEmptyStringTest = bytes(source); - if (tempEmptyStringTest.length == 0) { - return 0x0; - } - - assembly { - result := mload(add(source, 32)) - } - } - - function _checkStringFits32b(string memory value) internal pure returns (bool) { - if (bytes(value).length <= 32) { - return true; - } else { - return false; - } - } - - function _checkStringNotEmpty(string memory value) internal pure returns (bool) { - if (bytes(value).length == 0) { - return false; - } else { - return true; - } - } - - /** - @dev resolves Record of name query in to status and identity */ - function resolveRecord(NameQuery memory query) internal view returns (bool, RecordBytes32 memory) { - NameQueryBytes32 memory query32b; - query32b.name = _stringToBytes32(query.name); - query32b.id = _stringToBytes32(query.id); - query32b.domainName = query.domainName; - query32b.targetDomain = query.targetDomain; - query32b.userAddress = query.userAddress; - return _resolveRecord(query32b); - } - - function _hash(bytes32 value) internal pure returns (bytes32) { - return keccak256(abi.encodePacked(value)); - } - - /** - * @dev This does not check for bytelength. Use only for read operations - */ - function _hash(string memory value) internal pure returns (bytes32) { - require(_checkStringFits32b(value), "_hash-> string too long"); - return keccak256(abi.encodePacked(value)); - } - - function _getDomainStorage(string memory domainName) internal view returns (DomainNameService storage) { - MultipassStorageStruct storage s = MultipassStorage(); - - return s.s_domains[s.s_domainNameToIndex[_hash(domainName)]]; - } - - function _bytes32ToString(bytes32 value) private pure returns (string memory) { - return string(abi.encodePacked(value)); - } - - function _resolveRecord(NameQueryBytes32 memory query) private view returns (bool, RecordBytes32 memory) { - if ((query.userAddress == address(0)) && (query.id.length == 0) && (query.name.length == 0)) { - RecordBytes32 memory rv; - return (false, rv); - } - - MultipassStorageStruct storage s = MultipassStorage(); - DomainNameService storage _domain = s.s_domains[s.s_domainNameToIndex[_hash(query.domainName)]]; - DomainNameService storage _targetDomain = s.s_domains[ - s.s_domainNameToIndex[_hash(bytes(query.targetDomain).length == 0 ? query.domainName : query.targetDomain)] - ]; - - address _wallet; - { - // resolve wallet - if (query.userAddress != address(0)) { - _wallet = query.userAddress; - } else if (query.id.length != 0) { - _wallet = _domain.idToAddress[_hash(query.id)]; - } else if (query.name.length != 0) { - bytes32 _id = _domain.nameToId[_hash(query.name)]; - _wallet = _domain.idToAddress[_hash(_id)]; - } - } - //from wallet find and return record - return _resolveFromAddress(_wallet, _targetDomain); - } - - /** @dev this function bears no security checks, it will ignore nonce in arg and will increment - * nonce value stored in domain instread - */ - function _setRecord(DomainNameService storage domain, RecordBytes32 memory record) private { - domain.addressToId[record.wallet] = record.id; - domain.idToAddress[record.id] = record.wallet; - domain.idToName[record.id] = record.name; - domain.nameToId[record.name] = record.id; - domain.nonce[record.id] += record.nonce; - } - - function _resolveFromAddress( - address _address, - DomainNameService storage _domain - ) private view returns (bool, RecordBytes32 memory) { - RecordBytes32 memory resolved; - - resolved.id = _domain.addressToId[_address]; - resolved.name = _domain.idToName[resolved.id]; - resolved.nonce = _domain.nonce[resolved.id]; - resolved.wallet = _address; - if (resolved.id.length == 0) { - return (false, resolved); - } - return (true, resolved); - } - - function _RecordStringify(RecordBytes32 memory input) internal pure returns (Record memory) { - Record memory retval; - retval.wallet = input.wallet; - retval.name = _bytes32ToString(input.name); - retval.id = _bytes32ToString(input.id); - retval.nonce = input.nonce; - return retval; - } - - using LibMultipass for RecordBytes32; - using LibMultipass for NameQuery; -} diff --git a/src/initializers/RankifyInstanceInit.sol b/src/initializers/RankifyInstanceInit.sol index c2cd78cc..12b75877 100644 --- a/src/initializers/RankifyInstanceInit.sol +++ b/src/initializers/RankifyInstanceInit.sol @@ -19,14 +19,15 @@ import {IRankifyInstanceCommons} from "../interfaces/IRankifyInstanceCommons.sol import {IRankToken} from "../interfaces/IRankToken.sol"; import {LibTBG} from "../libraries/LibTurnBasedGame.sol"; import {LibQuadraticVoting} from "../libraries/LibQuadraticVoting.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; + // import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; -import "hardhat/console.sol"; // It is expected that this contract is customized if you want to deploy your diamond // with data from a deployment script. Use the init function to initialize state variables // of your diamond. Add parameters to the init funciton if you need to. -contract RankifyInstanceInit { +contract RankifyInstanceInit is Initializable { function _buildDomainSeparator( bytes32 typeHash, bytes32 nameHash, @@ -46,21 +47,21 @@ contract RankifyInstanceInit { uint256 timePerTurn; uint256 maxPlayersSize; uint256 minPlayersSize; - address rankTokenAddress; + address rewardToken; uint256 timeToJoin; uint256 gamePrice; uint256 joinGamePrice; uint256 maxTurns; uint256 numWinners; uint256 voteCredits; - address rankifyToken; + address paymentToken; } // You can add parameters to this function in order to pass in // data to set your own state variables - function init(string memory name, string memory version, contractInitializer memory initializer) external { + function init(string memory name, string memory version, contractInitializer memory initData) external initializer { // adding ERC165 data - LibDiamond.enforceIsContractOwner(); + // LibDiamond.enforceIsContractOwner(); LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); ds.supportedInterfaces[type(IERC165).interfaceId] = true; ds.supportedInterfaces[type(IDiamondCut).interfaceId] = true; @@ -80,26 +81,26 @@ contract RankifyInstanceInit { ss._TYPE_HASH = typeHash; IRankifyInstanceCommons.RInstanceSettings storage _RInstance = RInstanceStorage(); - _RInstance.voting = LibQuadraticVoting.precomputeValues(initializer.voteCredits, initializer.minPlayersSize); - _RInstance.gamePrice = initializer.gamePrice; - _RInstance.joinGamePrice = initializer.joinGamePrice; - require(initializer.rankifyToken != address(0), "initializer.rankifyToken not set"); - _RInstance.gamePaymentToken = initializer.rankifyToken; - IRankToken rankContract = IRankToken(initializer.rankTokenAddress); + _RInstance.voting = LibQuadraticVoting.precomputeValues(initData.voteCredits, initData.minPlayersSize); + _RInstance.gamePrice = initData.gamePrice; + _RInstance.joinGamePrice = initData.joinGamePrice; + require(initData.paymentToken != address(0), "initializer.paymentToken not set"); + _RInstance.gamePaymentToken = initData.paymentToken; + IRankToken rankContract = IRankToken(initData.rewardToken); require( rankContract.supportsInterface(type(IRankToken).interfaceId), "RankifyInstance->init: rank token address does not support Rank interface" ); - _RInstance.rankTokenAddress = initializer.rankTokenAddress; + _RInstance.rankTokenAddress = initData.rewardToken; _RInstance.contractInitialized = true; LibTBG.GameSettings memory settings; - settings.timePerTurn = initializer.timePerTurn; - settings.maxPlayersSize = initializer.maxPlayersSize; - settings.minPlayersSize = initializer.minPlayersSize; - settings.timeToJoin = initializer.timeToJoin; - settings.maxTurns = initializer.maxTurns; - settings.numWinners = initializer.numWinners; + settings.timePerTurn = initData.timePerTurn; + settings.maxPlayersSize = initData.maxPlayersSize; + settings.minPlayersSize = initData.minPlayersSize; + settings.timeToJoin = initData.timeToJoin; + settings.maxTurns = initData.maxTurns; + settings.numWinners = initData.numWinners; LibTBG.init(settings); // add your own state variables diff --git a/src/initializers/RankifyInstanceMigration.sol b/src/initializers/RankifyInstanceMigration.sol deleted file mode 100644 index fc8f016c..00000000 --- a/src/initializers/RankifyInstanceMigration.sol +++ /dev/null @@ -1,87 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.20; - -/******************************************************************************\ -* Author: Nick Mudge (https://twitter.com/mudgen) -* EIP-2535 Diamonds: https://eips.ethereum.org/EIPS/eip-2535 -* -* Implementation of a diamond. -/******************************************************************************/ -import {LibRankify} from "../libraries/LibRankify.sol"; -import {LibDiamond} from "../vendor/diamond/libraries/LibDiamond.sol"; -import {IDiamondLoupe} from "../vendor/diamond/interfaces/IDiamondLoupe.sol"; -import {IDiamondCut} from "../vendor/diamond/interfaces/IDiamondCut.sol"; -import {IERC173} from "../vendor/diamond/interfaces/IERC173.sol"; -import {IERC165} from "../vendor/diamond/interfaces/IERC165.sol"; -import {LibEIP712WithStorage} from "../libraries/LibEIP712Storage.sol"; -import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import {IRankifyInstanceCommons} from "../interfaces/IRankifyInstanceCommons.sol"; -import {IRankToken} from "../interfaces/IRankToken.sol"; -import {LibTBG} from "../libraries/LibTurnBasedGame.sol"; -import {LibQuadraticVoting} from "../libraries/LibQuadraticVoting.sol"; -// import {IERC1155} from "@openzeppelin/contracts/token/ERC1155/IERC1155.sol"; -import "hardhat/console.sol"; - -// It is expected that this contract is customized if you want to deploy your diamond -// with data from a deployment script. Use the init function to initialize state variables -// of your diamond. Add parameters to the init funciton if you need to. - -contract RankifyInstanceMigration { - function _buildDomainSeparator( - bytes32 typeHash, - bytes32 nameHash, - bytes32 versionHash - ) private view returns (bytes32) { - return keccak256(abi.encode(typeHash, nameHash, versionHash, block.chainid, address(this))); - } - - function RInstanceStorage() internal pure returns (IRankifyInstanceCommons.RInstanceSettings storage bog) { - bytes32 position = LibTBG.getDataStorage(); - assembly { - bog.slot := position - } - } - - struct contractInitializer { - uint256 timePerTurn; - uint256 maxPlayersSize; - uint256 minPlayersSize; - address rankTokenAddress; - uint256 timeToJoin; - uint256 gamePrice; - uint256 joinGamePrice; - uint256 maxTurns; - uint256 numWinners; - uint256 voteCredits; - string subject; - address rankifyToken; - } - - // You can add parameters to this function in order to pass in - // data to set your own state variables - function init() external { - // adding ERC165 data - LibDiamond.enforceIsContractOwner(); - IRankifyInstanceCommons.RInstanceSettings storage _RInstance = RInstanceStorage(); - _RInstance.voting = LibQuadraticVoting.precomputeValues(25, 5); - - // LibTBG.GameInstance storage _game = LibTBG._getGame(1); - // game.numPrevProposals = 9; - // _game.score[0xadb610B944ff11463f6c7B89F75cf30a9DBF680F] = 8; - // _game.score[0xf2B9aAa289565b681D19471c82ea6373c64b8A7D] = 11; - // _game.score[0xd11F3999B70bb274560a2DF255bF4F1B254716fC] = 4; - // _game.score[0xDe20aC808Bc76C10065dbf1151B1688C10E50A10] = 6; - // _game.score[0xAdFbF123888688e47c7375b99605F4e895C7A17b] = 1; - // _game.score[0x12Bec57153B72Ae3bE893e83aFd2F3978e2460EB] = 9; - // _game.score[0x5bA209688eddf113c0d05F78F72636a00425a234] = 4; - // _game.score[0xc1b09A2c252ed6E446942aD5B80698268ef7C3fe] = 2; - // _game.score[0x00678eB740bC89ef32Eac17F1DafebE67A2BC934] = 17; - - // add your own state variables - // EIP-2535 specifies that the `diamondCut` function takes two optional - // arguments: address _init and bytes calldata _calldata - // These arguments are used to execute an arbitrary function using delegatecall - // in order to set state variables in the diamond during deployment or an upgrade - // More info here: https://eips.ethereum.org/EIPS/eip-2535#diamond-interface - } -} diff --git a/src/initializers/TournamentDistributionInitializer.sol b/src/initializers/TournamentDistributionInitializer.sol new file mode 100644 index 00000000..ce02732e --- /dev/null +++ b/src/initializers/TournamentDistributionInitializer.sol @@ -0,0 +1,64 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@peeramid-labs/eds/src/interfaces/IInitializer.sol"; +import "../initializers/RankifyInstanceInit.sol"; +import "@peeramid-labs/eds/src/abstracts/CodeIndexer.sol"; +import "@peeramid-labs/eds/src/libraries/LibSemver.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +contract TournamentDistributionInitializer is IInitializer, CodeIndexer, Initializable { + address private immutable paymentToken; + address private immutable rewardToken; + + uint256 private immutable gamePrice; + uint256 private immutable joinGamePrice; + + constructor(address _paymentToken, address _rewardToken, uint256 _gamePrice, uint256 _joinGamePrice) { + paymentToken = _paymentToken; + rewardToken = _rewardToken; + gamePrice = _gamePrice; + joinGamePrice = _joinGamePrice; + } + + struct userSettings { + uint256 timePerTurn; + uint256 maxPlayersSize; + uint256 minPlayersSize; + uint256 timeToJoin; + uint256 maxTurns; + uint256 voteCredits; + } + + function initialize( + bytes32, + address[] memory instances, + bytes32 distributionName, + uint256 distributionVersion, + bytes calldata args + ) external override { + if (instances.length < 3) { + revert("This initializer needs an instance, payment and rank tokens in order to work"); + } + + RankifyInstanceInit initializerFacet = RankifyInstanceInit(instances[0]); + userSettings memory userConfig = abi.decode(args, (userSettings)); + RankifyInstanceInit.contractInitializer memory initializer = RankifyInstanceInit.contractInitializer({ + timePerTurn: userConfig.timePerTurn, + maxPlayersSize: userConfig.maxPlayersSize, + minPlayersSize: userConfig.minPlayersSize, + rewardToken: rewardToken, + timeToJoin: userConfig.timeToJoin, + gamePrice: gamePrice, + joinGamePrice: joinGamePrice, + maxTurns: userConfig.maxTurns, + numWinners: 1, + voteCredits: userConfig.voteCredits, + paymentToken: paymentToken + }); + initializerFacet.init( + string(abi.encodePacked(distributionName)), + LibSemver.toString(LibSemver.parse(distributionVersion)), + initializer + ); + } +} diff --git a/src/interfaces/ILockableERC1155.sol b/src/interfaces/ILockableERC1155.sol index 4753a8e3..071320e5 100644 --- a/src/interfaces/ILockableERC1155.sol +++ b/src/interfaces/ILockableERC1155.sol @@ -8,6 +8,8 @@ import {IERC1155} from "@openzeppelin/contracts/interfaces/IERC1155.sol"; * @dev Interface for a lockable ERC1155 token contract. */ interface ILockableERC1155 is IERC1155 { + error insufficient(uint256 id, uint256 balance, uint256 required); + event TokensLocked(address indexed account, uint256 indexed id, uint256 value); event TokensUnlocked(address indexed account, uint256 indexed id, uint256 value); diff --git a/src/interfaces/IRankToken.sol b/src/interfaces/IRankToken.sol index a3adb25d..a15816c6 100644 --- a/src/interfaces/IRankToken.sol +++ b/src/interfaces/IRankToken.sol @@ -32,7 +32,7 @@ interface IRankToken is ILockableERC1155 { * * - The address of the ranking instance. */ - function getRankingInstance() external view returns (address); + // function getRankingInstance() external view returns (address); // /** // * @dev Finds the new rank of an account. `account` is the address of the account. `oldRank` is the old rank of the account. diff --git a/src/interfaces/IRankifyInstanceCommons.sol b/src/interfaces/IRankifyInstanceCommons.sol index 9933abfa..08c66f52 100644 --- a/src/interfaces/IRankifyInstanceCommons.sol +++ b/src/interfaces/IRankifyInstanceCommons.sol @@ -2,15 +2,9 @@ pragma solidity ^0.8.20; import "@openzeppelin/contracts/utils/introspection/ERC165.sol"; import {LibTBG} from "../libraries/LibTurnBasedGame.sol"; -import {LibCoinVending} from "../libraries/LibCoinVending.sol"; import {LibQuadraticVoting} from "../libraries/LibQuadraticVoting.sol"; interface IRankifyInstanceCommons { - struct Score { - address participant; - uint256 score; - } - struct RInstanceSettings { uint256 gamePrice; address gamePaymentToken; diff --git a/src/libraries/LibArray.sol b/src/libraries/LibArray.sol index c06433e2..fefffa44 100644 --- a/src/libraries/LibArray.sol +++ b/src/libraries/LibArray.sol @@ -25,11 +25,11 @@ library LibArray { if (i == j) return; uint256 pivot = arr[uint256(left + (right - left) / 2)]; while (i <= j) { - while (arr[uint256(i)] > pivot) i++; + while (arr[uint256(i)] > pivot) ++i; while (pivot > arr[uint256(j)]) j--; if (i <= j) { (arr[uint256(i)], arr[uint256(j)]) = (arr[uint256(j)], arr[uint256(i)]); - i++; + ++i; j--; } } diff --git a/src/libraries/LibCoinVending.sol b/src/libraries/LibCoinVending.sol index 31dbfab1..0c757f0a 100644 --- a/src/libraries/LibCoinVending.sol +++ b/src/libraries/LibCoinVending.sol @@ -343,7 +343,7 @@ library LibCoinVending { position.ethValues.burn; require(msg.value >= VLReq, "msg.value too low"); } - for (uint256 i = 0; i < position.contractAddresses.length; i++) { + for (uint256 i = 0; i < position.contractAddresses.length; ++i) { address contractAddress = position.contractAddresses[i]; uint256 id = position.contractIds[i]; ContractTypes contractType = position.contractTypes[i]; @@ -419,7 +419,7 @@ library LibCoinVending { */ function batchRefund(bytes32 position, address[] memory returnAddresses) internal { Condition storage reqPos = coinVendingPosition(position); - for (uint256 i = 0; i < returnAddresses.length; i++) { + for (uint256 i = 0; i < returnAddresses.length; ++i) { _refund(reqPos, returnAddresses[i]); } } @@ -466,7 +466,7 @@ library LibCoinVending { address[] memory returnAddresses ) internal { Condition storage reqPos = coinVendingPosition(position); - for (uint256 i = 0; i < returnAddresses.length; i++) { + for (uint256 i = 0; i < returnAddresses.length; ++i) { { _release(reqPos, payee, beneficiary, returnAddresses[i]); } @@ -517,7 +517,7 @@ library LibCoinVending { delete mustDo.contractAddresses; delete mustDo.contractIds; delete mustDo.contractTypes; - for (uint256 i = 0; i < configuration.contracts.length; i++) { + for (uint256 i = 0; i < configuration.contracts.length; ++i) { mustDo.contractAddresses.push(configuration.contracts[i].contractAddress); mustDo.contractIds.push(configuration.contracts[i].contractId); mustDo.contractTypes.push(configuration.contracts[i].contractType); diff --git a/src/libraries/LibRankify.sol b/src/libraries/LibRankify.sol index 3742a531..a42eeb0b 100644 --- a/src/libraries/LibRankify.sol +++ b/src/libraries/LibRankify.sol @@ -219,7 +219,7 @@ library LibRankify { emitRankRewards(gameId, gameId.getLeaderBoard()); (, uint256[] memory finalScores) = gameId.getScores(); address[] memory players = gameId.getPlayers(); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { removeAndUnlockPlayer(gameId, players[i]); playersGameEndedCallback(gameId, players[i]); } @@ -283,7 +283,7 @@ library LibRankify { ) internal { // Cancel the game for each player address[] memory players = gameId.getPlayers(); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { quitGame(gameId, players[i], false, onPlayerLeftCallback); //this will throw if game has started or doesnt exist } @@ -315,7 +315,7 @@ library LibRankify { IRankifyInstanceCommons.RInstance storage game = getGameStorage(gameId); if (game.rank > 1) { _fulfillRankRq(player, game.rank, settings.rankTokenAddress); - for (uint256 i = 0; i < game.additionalRanks.length; i++) { + for (uint256 i = 0; i < game.additionalRanks.length; ++i) { _fulfillRankRq(player, game.rank, game.additionalRanks[i]); } } @@ -347,7 +347,7 @@ library LibRankify { IRankifyInstanceCommons.RInstance storage game = getGameStorage(gameId); IRankifyInstanceCommons.RInstanceSettings storage settings = LibRankify.RInstanceStorage(); emitRankReward(gameId, leaderboard, settings.rankTokenAddress); - for (uint256 i = 0; i < game.additionalRanks.length; i++) { + for (uint256 i = 0; i < game.additionalRanks.length; ++i) { emitRankReward(gameId, leaderboard, game.additionalRanks[i]); } } @@ -383,7 +383,7 @@ library LibRankify { IRankifyInstanceCommons.RInstance storage game = getGameStorage(gameId); if (game.rank > 1) { _releaseRankToken(player, game.rank, settings.rankTokenAddress); - for (uint256 i = 0; i < game.additionalRanks.length; i++) { + for (uint256 i = 0; i < game.additionalRanks.length; ++i) { _releaseRankToken(player, game.rank, game.additionalRanks[i]); } } @@ -433,15 +433,14 @@ library LibRankify { ) internal returns (uint256[] memory, uint256[] memory) { address[] memory players = gameId.getPlayers(); uint256[] memory scores = new uint256[](players.length); - uint256[] memory roundScores = new uint256[](players.length); bool[] memory playerVoted = new bool[](players.length); IRankifyInstanceCommons.RInstanceSettings storage settings = RInstanceStorage(); IRankifyInstanceCommons.RInstance storage game = getGameStorage(gameId); // Convert mappiing to array to pass it to libQuadratic - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { playerVoted[i] = game.playerVoted[players[i]]; } - roundScores = settings.voting.computeScoresByVPIndex( + uint256[] memory roundScores = settings.voting.computeScoresByVPIndex( votesRevealed, playerVoted, settings.voting.maxQuadraticPoints, diff --git a/src/libraries/LibTurnBasedGame.sol b/src/libraries/LibTurnBasedGame.sol index 1a94fee8..9ad93521 100644 --- a/src/libraries/LibTurnBasedGame.sol +++ b/src/libraries/LibTurnBasedGame.sol @@ -156,7 +156,7 @@ library LibTBG { TBGStorageStruct storage tbg = TBGStorage(); GameInstance storage _game = _getGame(gameId); address[] memory players = _game.players.values(); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { tbg.games[gameId].score[players[i]] = 0; tbg.games[gameId].madeMove[players[i]] = false; } @@ -357,7 +357,7 @@ library LibTBG { * - Sets the madeMove of each player in `game` to false. */ function _clearCurrentMoves(GameInstance storage game) internal { - for (uint256 i = 0; i < game.players.length(); i++) { + for (uint256 i = 0; i < game.players.length(); ++i) { address player = game.players.at(i); game.madeMove[player] = false; } @@ -372,7 +372,7 @@ library LibTBG { * - Sets the madeMove and score of each player in `game` to their initial values. */ function _resetPlayerStates(GameInstance storage game) internal { - for (uint256 i = 0; i < game.players.length(); i++) { + for (uint256 i = 0; i < game.players.length(); ++i) { address player = game.players.at(i); game.madeMove[player] = false; game.score[player] = 0; @@ -419,7 +419,7 @@ library LibTBG { function getScores(uint256 gameId) internal view returns (address[] memory, uint256[] memory) { address[] memory players = getPlayers(gameId); uint256[] memory scores = new uint256[](players.length); - for (uint256 i = 0; i < players.length; i++) { + for (uint256 i = 0; i < players.length; ++i) { scores[i] = getScore(gameId, players[i]); } return (players, scores); @@ -848,7 +848,7 @@ library LibTBG { (address[] memory players, uint256[] memory scores) = getScores(gameId); LibArray.quickSort(scores, int256(0), int256(scores.length - 1)); - for (uint256 i = 0; i < players.length - 1; i++) { + for (uint256 i = 0; i < players.length - 1; ++i) { if ((i <= tbg.settings.numWinners - 1)) { if (scores[i] == scores[i + 1]) { return (true); @@ -886,12 +886,12 @@ library LibTBG { if (i == j) return; uint256 pivot = scores[uint256(left + (right - left) / 2)]; while (i <= j) { - while (scores[uint256(i)] > pivot) i++; + while (scores[uint256(i)] > pivot) ++i; while (pivot > scores[uint256(j)]) j--; if (i <= j) { (scores[uint256(i)], scores[uint256(j)]) = (scores[uint256(j)], scores[uint256(i)]); (players[uint256(i)], players[uint256(j)]) = (players[uint256(j)], players[uint256(i)]); - i++; + ++i; j--; } } diff --git a/src/mocks/MockERC20.sol b/src/mocks/MockERC20.sol index 97338fba..10bcc9ea 100644 --- a/src/mocks/MockERC20.sol +++ b/src/mocks/MockERC20.sol @@ -5,8 +5,6 @@ import "@openzeppelin/contracts/access/Ownable.sol"; pragma solidity ^0.8.20; contract MockERC20 is ERC20Burnable, Ownable { - uint256 numTokens; - constructor(string memory name_, string memory symbol_, address owner) ERC20(name_, symbol_) Ownable(owner) { require(owner != address(0), "must specify owner of the contract"); transferOwnership(owner); diff --git a/src/mocks/RankifyInstanceEventMock.sol b/src/mocks/RankifyInstanceEventMock.sol index 5998a20b..7f0eeaed 100644 --- a/src/mocks/RankifyInstanceEventMock.sol +++ b/src/mocks/RankifyInstanceEventMock.sol @@ -42,15 +42,15 @@ contract RankifyInstanceEventMock { constructor() { address[] memory players = new address[](5); - for (uint160 i = 0; i < 5; i++) { + for (uint160 i = 0; i < 5; ++i) { players[i] = (address(i)); } uint256[] memory scores = new uint256[](5); - for (uint160 i = 0; i < 5; i++) { + for (uint160 i = 0; i < 5; ++i) { scores[i] = i; } string[] memory newProposals = new string[](5); - for (uint160 i = 0; i < 5; i++) { + for (uint160 i = 0; i < 5; ++i) { newProposals[i] = "https://www.youtube.com/watch?v=KaOC9danxNo"; } emit TurnEnded(1, 1, players, scores, newProposals, scores, votes); @@ -58,15 +58,15 @@ contract RankifyInstanceEventMock { function fireAll() public { address[] memory players = new address[](5); - for (uint160 i = 0; i < 5; i++) { + for (uint160 i = 0; i < 5; ++i) { players[i] = (address(i)); } uint256[] memory scores = new uint256[](5); - for (uint160 i = 0; i < 5; i++) { + for (uint160 i = 0; i < 5; ++i) { scores[i] = i; } string[] memory newProposals = new string[](5); - for (uint160 i = 0; i < 5; i++) { + for (uint160 i = 0; i < 5; ++i) { newProposals[i] = "https://www.youtube.com/watch?v=KaOC9danxNo"; } diff --git a/src/repos/Repo.sol b/src/repos/Repo.sol new file mode 100644 index 00000000..0f94cea5 --- /dev/null +++ b/src/repos/Repo.sol @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; +import "@peeramid-labs/eds/src/repositories/OwnableRepository.sol"; + +contract Repo is OwnableRepository { + constructor(address owner, bytes32 name, string memory contractURI) OwnableRepository(owner, name, contractURI) {} +} diff --git a/src/tokens/DistributableGovernanceERC20.sol b/src/tokens/DistributableGovernanceERC20.sol new file mode 100644 index 00000000..47789010 --- /dev/null +++ b/src/tokens/DistributableGovernanceERC20.sol @@ -0,0 +1,146 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +pragma solidity 0.8.20; + +// import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20PermitUpgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/token/ERC20/ERC20Upgradeable.sol"; +// import {IERC20MetadataUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20MetadataUpgradeable.sol" +import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import {ERC20VotesUpgradeable} from "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/ERC20VotesUpgradeable.sol"; +import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; +import {ERC165Upgradeable} from "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol"; +import "@openzeppelin/contracts-upgradeable/governance/utils/VotesUpgradeable.sol"; +import {DaoAuthorizableUpgradeable} from "@aragon/osx/core/plugin/dao-authorizable/DaoAuthorizableUpgradeable.sol"; +import "@peeramid-labs/eds/src/abstracts/ERC7746Middleware.sol"; +import "@peeramid-labs/eds/src/libraries/LibMiddleware.sol"; +import {IDAO} from "@aragon/osx/core/dao/IDAO.sol"; +import "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol"; +// import {IERC20MintableUpgradeable} from "@aragon/osx/token/ERC20/IERC20MintableUpgradeable.sol"; + +/// @notice The settings for the initial mint of the token. +/// @param receivers The receivers of the tokens. +/// @param amounts The amounts of tokens to be minted for each receiver. +/// @dev The lengths of `receivers` and `amounts` must match. +struct MintSettings { + address[] receivers; + uint256[] amounts; +} + +/// @title IERC20MintableUpgradeable +/// @notice Interface to allow minting of [ERC-20](https://eips.ethereum.org/EIPS/eip-20) tokens. +interface IERC20MintableUpgradeable { + /// @notice Mints [ERC-20](https://eips.ethereum.org/EIPS/eip-20) tokens for a receiving address. + /// @param _to The receiving address. + /// @param _amount The amount of tokens. + function mint(address _to, uint256 _amount) external; +} + +/// @title GovernanceERC20 +/// @author Aragon Association +/// @notice An [OpenZeppelin `Votes`](https://docs.openzeppelin.com/contracts/4.x/api/governance#Votes) compatible [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token that can be used for voting and is managed by a DAO. +contract DistributableGovernanceERC20 is + IERC20MintableUpgradeable, + Initializable, + ERC165Upgradeable, + ERC20VotesUpgradeable, + DaoAuthorizableUpgradeable, + ERC7746Middleware, + ReentrancyGuardUpgradeable +{ + /// @notice Thrown if the number of receivers and amounts specified in the mint settings do not match. + /// @param receiversArrayLength The length of the `receivers` array. + /// @param amountsArrayLength The length of the `amounts` array. + error MintSettingsArrayLengthMismatch(uint256 receiversArrayLength, uint256 amountsArrayLength); + + /// @notice Calls the initialize function. + /// @param _dao The managing DAO. + /// @param _name The name of the [ERC-20](https://eips.ethereum.org/EIPS/eip-20) governance token. + /// @param _symbol The symbol of the [ERC-20](https://eips.ethereum.org/EIPS/eip-20) governance token. + /// @param _mintSettings The token mint settings struct containing the `receivers` and `amounts`. + constructor( + IDAO _dao, + string memory _name, + string memory _symbol, + MintSettings memory _mintSettings, + address _accessManager + ) { + initialize(_dao, _name, _symbol, _mintSettings, _accessManager); + } + + /// @notice Initializes the contract and mints tokens to a list of receivers. + /// @param _dao The managing DAO. + /// @param _name The name of the [ERC-20](https://eips.ethereum.org/EIPS/eip-20) governance token. + /// @param _symbol The symbol of the [ERC-20](https://eips.ethereum.org/EIPS/eip-20) governance token. + /// @param _mintSettings The token mint settings struct containing the `receivers` and `amounts`. + function initialize( + IDAO _dao, + string memory _name, + string memory _symbol, + MintSettings memory _mintSettings, + address accessManager + ) public initializer { + LibMiddleware.LayerStruct[] memory layers = new LibMiddleware.LayerStruct[](1); + + // Set the layer for the sender + layers[0] = LibMiddleware.LayerStruct({layerAddess: accessManager, layerConfigData: ""}); + LibMiddleware.setLayers(layers); + + // Check mint settings + if (_mintSettings.receivers.length != _mintSettings.amounts.length) { + revert MintSettingsArrayLengthMismatch({ + receiversArrayLength: _mintSettings.receivers.length, + amountsArrayLength: _mintSettings.amounts.length + }); + } + + __ERC20_init(_name, _symbol); + __DaoAuthorizableUpgradeable_init(_dao); + + for (uint256 i; i < _mintSettings.receivers.length; ++i) { + _mint(_mintSettings.receivers[i], _mintSettings.amounts[i]); + } + } + + /// @notice Checks if this or the parent contract supports an interface by its ID. + /// @param interfaceId The ID of the interface. + /// @return Returns `true` if the interface is supported. + function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { + return + interfaceId == type(ERC20Upgradeable).interfaceId || + // interfaceId == type(ERC20PermitUpgradeable).interfaceId || + interfaceId == type(IERC20Metadata).interfaceId || + interfaceId == type(VotesUpgradeable).interfaceId || + interfaceId == type(IERC20MintableUpgradeable).interfaceId || + super.supportsInterface(interfaceId); + } + + /// @notice Mints tokens to an address. + /// @param to The address receiving the tokens. + /// @param amount The amount of tokens to be minted. + function mint( + address to, + uint256 amount + ) external override nonReentrant ERC7746C(msg.sig, msg.sender, msg.data, 0) { + _mint(to, amount); + } + + // https://forum.openzeppelin.com/t/self-delegation-in-erc20votes/17501/12?u=novaknole + /// @inheritdoc ERC20VotesUpgradeable + function _update(address from, address to, uint256 amount) internal override { + super._update(from, to, amount); + + // Automatically turn on delegation on mint/transfer but only for the first time. + if (to != address(0) && numCheckpoints(to) == 0 && delegates(to) == address(0)) { + _delegate(to, to); + } + } + + // event RankExchanged(address indexed account, uint256 rankTokenId, uint256 amount); + // function exchangeRankToGov(IERC1155 rankTokenAddress, uint256 rankTokenId, uint256 amount) external nonReentrant ERC7746C { + // require(rankTokens.contains(address(rankTokenAddress)), "Rank token not supported"); + // rankTokenAddress.safeTransferFrom(msg.sender, address(this), rankTokenId, amount, ""); + // uint256 principal = minimumParticipantCount ** rankTokenId; + // _mint(msg.sender, principal * amount); + // emit RankExchanged(msg.sender, rankTokenId, amount); + // } +} diff --git a/src/tokens/RankToken.sol b/src/tokens/RankToken.sol index 6de08753..a0cd15d8 100644 --- a/src/tokens/RankToken.sol +++ b/src/tokens/RankToken.sol @@ -1,10 +1,12 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.20; -import "@openzeppelin/contracts/access/Ownable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import {IRankToken} from "../interfaces/IRankToken.sol"; -import "../abstracts/CompositeERC1155.sol"; -import "hardhat/console.sol"; +import "../abstracts/LockableERC1155.sol"; +import "@peeramid-labs/eds/src/abstracts/ERC7746Middleware.sol"; +import "@peeramid-labs/eds/src/libraries/LibMiddleware.sol"; +import {IERC1155} from "@openzeppelin/contracts/interfaces/IERC1155.sol"; //ToDo: it was planned to make it track for highest token users hold (their rank), right now it's not implemented. Yet. @@ -13,49 +15,51 @@ import "hardhat/console.sol"; * @author Peersky * @notice RankToken is a composite ERC1155 token that is used to track user ranks */ -contract RankToken is CompositeERC1155, Ownable, IRankToken { - string private _contractURI; - mapping(address => uint256) public rank; - uint256 public topRank; - address private _rankingInstance; - uint256 _levelUpThreshold; - - modifier onlyRankingInstance() { - require(msg.sender == _rankingInstance, "only ranking contract can do that"); - _; +contract RankToken is LockableERC1155, IRankToken, ERC7746Middleware { + struct Storage { + string _contractURI; } - constructor( - string memory uri_, - address owner_, - string memory cURI, - uint256 levelUpThreshold, - address[] memory components, - uint256[] memory componentWeights - ) CompositeERC1155(uri_, components, componentWeights) Ownable(owner_) { - require(owner_ != address(0), "must specify owner of the contract"); - _contractURI = cURI; - _levelUpThreshold = levelUpThreshold; + bytes32 constant RANK_TOKEN_STORAGE_POSITION = keccak256("rank.token.storage.position"); + + function getStorage() private pure returns (Storage storage s) { + bytes32 position = LOCKABLE_TOKEN_STORAGE_POSITION; + assembly { + s.slot := position + } + } + + constructor(string memory uri_, string memory cURI, address accessLayer) { + initialize(uri_, cURI, accessLayer); } - function getRankingInstance() public view returns (address) { - return _rankingInstance; + function initialize(string memory uri_, string memory cURI, address accessLayer) public initializer { + // __Ownable_init(owner_); + _setURI(uri_); + getStorage()._contractURI = cURI; + LibMiddleware.LayerStruct[] memory layers = new LibMiddleware.LayerStruct[](1); + + // Set the layer for the sender + layers[0] = LibMiddleware.LayerStruct({layerAddess: accessLayer, layerConfigData: ""}); + LibMiddleware.setLayers(layers); } + // function getRankingInstance() public view returns (address) { + // return getStorage().rankingInstance; + // } + function contractURI() public view returns (string memory) { - return _contractURI; + return getStorage()._contractURI; } - function setURI(string memory uri_) public onlyOwner { + function setURI(string memory uri_) public ERC7746C(msg.sig, msg.sender, msg.data, 0) { _setURI(uri_); } - function setContractURI(string memory uri_) public onlyOwner { - _contractURI = uri_; + function setContractURI(string memory uri_) public ERC7746C(msg.sig, msg.sender, msg.data, 0) { + getStorage()._contractURI = uri_; } - // event Leader(address indexed account, uint256 indexed rank); - function _mintRank(address to, uint256 amount, uint256 level, bytes memory data) private { require(to != address(0), "RankToken->mint: Address not specified"); require(amount != 0, "RankToken->mint: amount not specified"); @@ -67,21 +71,26 @@ contract RankToken is CompositeERC1155, Ownable, IRankToken { _mint(to, level, amount, data); } - function mint(address to, uint256 amount, uint256 level, bytes memory data) public onlyRankingInstance { + function mint( + address to, + uint256 amount, + uint256 level, + bytes memory data + ) public ERC7746C(msg.sig, msg.sender, msg.data, 0) { _mintRank(to, amount, level, data); } - function updateRankingInstance(address newRankingInstance) public onlyOwner { - require(newRankingInstance != address(0), "must specify ranking instance"); - _rankingInstance = newRankingInstance; - emit RankingInstanceUpdated(newRankingInstance); - } + // function updateRankingInstance(address newRankingInstance) public onlyOwner { + // require(newRankingInstance != address(0), "must specify ranking instance"); + // getStorage()._rankingInstance = newRankingInstance; + // emit RankingInstanceUpdated(newRankingInstance); + // } function lock( address account, uint256 id, uint256 amount - ) public override(LockableERC1155, ILockableERC1155) onlyRankingInstance { + ) public override(LockableERC1155, ILockableERC1155) ERC7746C(msg.sig, msg.sender, msg.data, 0) { super.lock(account, id, amount); } @@ -89,7 +98,7 @@ contract RankToken is CompositeERC1155, Ownable, IRankToken { address account, uint256 id, uint256 amount - ) public override(LockableERC1155, ILockableERC1155) onlyRankingInstance { + ) public override(LockableERC1155, ILockableERC1155) ERC7746C(msg.sig, msg.sender, msg.data, 0) { super.unlock(account, id, amount); } @@ -98,51 +107,20 @@ contract RankToken is CompositeERC1155, Ownable, IRankToken { uint256[] memory ids, uint256[] memory amounts, bytes memory data - ) public onlyRankingInstance { + ) public ERC7746C(msg.sig, msg.sender, msg.data, 0) { require(to != address(0), "RankToken->mint: Address not specified"); require(amounts.length != 0, "RankToken->mint: amount not specified"); require(ids.length != 0, "RankToken->mint: pool id not specified"); _mintBatch(to, ids, amounts, data); } - // function levelUp(address to, uint256 level, bytes memory data) public { - // require(to == msg.sender || msg.sender == _rankingInstance, "levelUp: Not permitted"); - // _burn(to, level, _levelUpThreshold); - // _mintRank(to, 1, level, data); - // emit LevelUp(to, level); - // } - - // function findNewRank(address account, uint256 oldRank) public view returns (uint256) { - // for (uint256 i = oldRank; i > 0; i--) { - // uint256 _balanceTemp = balanceOf(account, i); - // if (_balanceTemp > 0) return i; - // } - // return 0; - // } - - // event RankUpdated(address indexed account, uint256 indexed rank); - function _update(address from, address to, uint256[] memory ids, uint256[] memory values) internal override { - // for (uint256 i = 0; i < ids.length; i++) { - // if (rank[to] < ids[i] && values[i] != 0) { - // rank[to] = ids[i]; - // emit RankUpdated(to, ids[i]); - // } - // if (from != address(0) && (rank[from] != findNewRank(from, rank[from]))) { - // uint256 newRankFrom = findNewRank(from, rank[from]); - // rank[from] = newRankFrom; - // emit RankUpdated(from, newRankFrom); - // } - super._update(from, to, ids, values); } - // //ToDo: Rename in to rankOf(address account) - // function getAccountRank(address account) external view returns (uint256) { - // return rank[account]; - // } - - function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC1155) returns (bool) { + function supportsInterface( + bytes4 interfaceId + ) public view virtual override(IERC165, ERC1155Upgradeable) returns (bool) { return interfaceId == type(IRankToken).interfaceId || super.supportsInterface(interfaceId); } } diff --git a/src/tokens/Rankify.sol b/src/tokens/Rankify.sol index e148a455..e492120e 100644 --- a/src/tokens/Rankify.sol +++ b/src/tokens/Rankify.sol @@ -4,8 +4,6 @@ import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; contract Rankify is ERC20Burnable, Ownable { - uint256 numTokens; - constructor(address owner) ERC20("Rankify", "RFY") Ownable(owner) { require(owner != address(0), "must specify owner of the contract"); } diff --git a/src/vendor/aragon/interfaces.sol b/src/vendor/aragon/interfaces.sol new file mode 100644 index 00000000..9674e76b --- /dev/null +++ b/src/vendor/aragon/interfaces.sol @@ -0,0 +1,91 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +// This is a copy of interfaces and structs from @aragon/osx package +// This had to be done to accomodate difference in solidity version requirements + +struct TokenSettings { + address addr; + string name; + string symbol; +} + +struct Tag { + uint8 release; + uint16 build; +} + +enum VotingMode { + Standard, + EarlyExecution, + VoteReplacement +} + +struct VotingSettings { + VotingMode votingMode; + uint32 supportThreshold; + uint32 minParticipation; + uint64 minDuration; + uint256 minProposerVotingPower; +} + +struct Version { + Tag tag; + address pluginSetup; + bytes buildMetadata; +} + +interface IPluginRepo { + /// @notice Updates the metadata for release with content `@fromHex(_releaseMetadata)`. + /// @param _release The release number. + /// @param _releaseMetadata The release metadata URI. + function updateReleaseMetadata(uint8 _release, bytes calldata _releaseMetadata) external; + + /// @notice Creates a new plugin version as the latest build for an existing release number or the first build for a new release number for the provided `PluginSetup` contract address and metadata. + /// @param _release The release number. + /// @param _pluginSetupAddress The address of the plugin setup contract. + /// @param _buildMetadata The build metadata URI. + /// @param _releaseMetadata The release metadata URI. + function createVersion( + uint8 _release, + address _pluginSetupAddress, + bytes calldata _buildMetadata, + bytes calldata _releaseMetadata + ) external; + + function latestRelease() external view returns (uint8); + + function getLatestVersion(uint8 _release) external view returns (Version memory); +} + +interface IDAOFactory { + struct PluginSetupRef { + Tag versionTag; + IPluginRepo pluginSetupRepo; + } + + /// @notice The container for the DAO settings to be set during the DAO initialization. + /// @param trustedForwarder The address of the trusted forwarder required for meta transactions. + /// @param daoURI The DAO uri used with [EIP-4824](https://eips.ethereum.org/EIPS/eip-4824). + /// @param subdomain The ENS subdomain to be registered for the DAO contract. + /// @param metadata The metadata of the DAO. + struct DAOSettings { + address trustedForwarder; + string daoURI; + string subdomain; + bytes metadata; + } + + /// @notice The container with the information required to install a plugin on the DAO. + /// @param pluginSetupRef The `PluginSetupRepo` address of the plugin and the version tag. + /// @param data The bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file. + struct PluginSettings { + PluginSetupRef pluginSetupRef; + bytes data; + } + + function createDao( + DAOSettings memory daoSettings, + PluginSettings[] memory pluginSettings + ) external returns (address); +} diff --git a/src/vendor/diamond/DiamondClonable.sol b/src/vendor/diamond/DiamondCloneable.sol similarity index 95% rename from src/vendor/diamond/DiamondClonable.sol rename to src/vendor/diamond/DiamondCloneable.sol index 157f0c8f..f10cc6a2 100644 --- a/src/vendor/diamond/DiamondClonable.sol +++ b/src/vendor/diamond/DiamondCloneable.sol @@ -7,9 +7,9 @@ pragma solidity ^0.8.0; import {LibDiamond} from "./libraries/LibDiamond.sol"; import {IDiamondCut} from "./interfaces/IDiamondCut.sol"; -contract DiamondClonable { +contract DiamondCloneable { error fucntionDoesNotExist(bytes4 selector); - address immutable cutFacet; + address private immutable cutFacet; constructor(address _contractOwner, address _diamondCutFacet) payable { cutFacet = _diamondCutFacet; @@ -31,8 +31,6 @@ contract DiamondClonable { LibDiamond.diamondCut(cut, address(0), ""); } - event debuga(address target, bytes data); - // Find facet for function that is called and execute the // function if a facet is found and return any value. fallback() external payable { @@ -50,7 +48,6 @@ contract DiamondClonable { msg.data[4:], (IDiamondCut.FacetCut[], address, bytes) ); - emit debuga(target, data); // diamond was cloned, has no state // Owner is inferred from msg.sender addDiamondCutFacet(msg.sender); diff --git a/src/vendor/diamond/facets/DiamondLoupeFacet.sol b/src/vendor/diamond/facets/DiamondLoupeFacet.sol index c5a2dc1f..2774f27d 100644 --- a/src/vendor/diamond/facets/DiamondLoupeFacet.sol +++ b/src/vendor/diamond/facets/DiamondLoupeFacet.sol @@ -7,7 +7,6 @@ pragma solidity ^0.8.20; /******************************************************************************/ import "../libraries/LibDiamond.sol"; -import "../interfaces/IDiamondCut.sol"; import "../interfaces/IDiamondLoupe.sol"; import "../interfaces/IERC165.sol"; @@ -27,7 +26,7 @@ contract DiamondLoupeFacet is IDiamondLoupe, IERC165 { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); uint256 numFacets = ds.facetAddresses.length; facets_ = new Facet[](numFacets); - for (uint256 i; i < numFacets; i++) { + for (uint256 i; i < numFacets; ++i) { address facetAddress_ = ds.facetAddresses[i]; facets_[i].facetAddress = facetAddress_; facets_[i].functionSelectors = ds.facetFunctionSelectors[facetAddress_].functionSelectors; @@ -61,8 +60,8 @@ contract DiamondLoupeFacet is IDiamondLoupe, IERC165 { } // This implements ERC-165. - function supportsInterface(bytes4 _interfaceId) external view override returns (bool) { + function supportsInterface(bytes4 interfaceId) external view override returns (bool) { LibDiamond.DiamondStorage storage ds = LibDiamond.diamondStorage(); - return ds.supportedInterfaces[_interfaceId]; + return ds.supportedInterfaces[interfaceId]; } } diff --git a/src/vendor/diamond/facets/OwnershipFacet.sol b/src/vendor/diamond/facets/OwnershipFacet.sol index 04073c86..c5ec562e 100644 --- a/src/vendor/diamond/facets/OwnershipFacet.sol +++ b/src/vendor/diamond/facets/OwnershipFacet.sol @@ -10,7 +10,7 @@ contract OwnershipFacet is IERC173 { LibDiamond.setContractOwner(_newOwner); } - function owner() external view override returns (address owner_) { - owner_ = LibDiamond.contractOwner(); + function owner() external view override returns (address) { + return LibDiamond.contractOwner(); } } diff --git a/src/vendor/diamond/facets/Test1Facet.sol b/src/vendor/diamond/facets/Test1Facet.sol index 16ded500..4c8c2237 100644 --- a/src/vendor/diamond/facets/Test1Facet.sol +++ b/src/vendor/diamond/facets/Test1Facet.sol @@ -44,5 +44,5 @@ contract Test1Facet { function test1Func20() external {} - function supportsInterface(bytes4 _interfaceID) external view returns (bool) {} + function supportsInterface(bytes4 interfaceId) external view returns (bool) {} } diff --git a/test/DNSFacet.ts b/test/DNSFacet.ts index a56a8baf..4a3238b2 100644 --- a/test/DNSFacet.ts +++ b/test/DNSFacet.ts @@ -5,6 +5,8 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; import { IMultipass__factory } from '../types'; const path = require('path'); +import hre from 'hardhat'; +const forkBlockNumber = hre.config.networks.hardhat.forking?.blockNumber ?? 0; import { LibMultipass } from '../types/src/facets/DNSFacet'; const scriptName = path.basename(__filename); @@ -98,7 +100,7 @@ describe(scriptName, () => { name: ethers.utils.formatBytes32String(adr.player1.name), id: ethers.utils.formatBytes32String(adr.player1.id), domainName: ethers.utils.formatBytes32String(NEW_DOMAIN_NAME1), - deadline: ethers.BigNumber.from(9999), + deadline: ethers.BigNumber.from(forkBlockNumber + 9999), nonce: ethers.BigNumber.from(0), }; @@ -327,7 +329,7 @@ describe(scriptName, () => { name: ethers.utils.formatBytes32String(adr.player1.name), id: ethers.utils.formatBytes32String(adr.player1.id), domainName: ethers.utils.formatBytes32String(NEW_DOMAIN_NAME1), - deadline: ethers.BigNumber.from(9999), + deadline: ethers.BigNumber.from(forkBlockNumber + 9999), nonce: ethers.BigNumber.from(0), }; @@ -360,7 +362,7 @@ describe(scriptName, () => { name: ethers.utils.formatBytes32String(adr.player1.name), id: ethers.utils.formatBytes32String(adr.player1.id), domainName: ethers.utils.formatBytes32String(NEW_DOMAIN_NAME1), - deadline: ethers.BigNumber.from(9999), + deadline: ethers.BigNumber.from(forkBlockNumber + 9999), nonce: ethers.BigNumber.from(0), }; @@ -436,7 +438,7 @@ describe(scriptName, () => { players[i], adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( @@ -456,7 +458,7 @@ describe(scriptName, () => { players[i], adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( @@ -480,7 +482,7 @@ describe(scriptName, () => { adr.player1, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); @@ -561,7 +563,7 @@ describe(scriptName, () => { adr.player1, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( @@ -608,7 +610,7 @@ describe(scriptName, () => { adr.player2, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, adr.player1, ); @@ -630,7 +632,7 @@ describe(scriptName, () => { name: ethers.utils.formatBytes32String(adr.player1.name + `.` + NEW_DOMAIN_NAME1 + `new`), id: ethers.utils.formatBytes32String(adr.player1.id + `.` + NEW_DOMAIN_NAME1), domainName: ethers.utils.formatBytes32String(NEW_DOMAIN_NAME1), - deadline: ethers.BigNumber.from(99999), + deadline: ethers.BigNumber.from(forkBlockNumber + 99999), nonce: ethers.BigNumber.from(1), }; @@ -708,7 +710,7 @@ describe(scriptName, () => { adr.player2, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await env.multipass @@ -725,7 +727,7 @@ describe(scriptName, () => { adr.player2, adr.registrar1, NEW_DOMAIN_NAME2, - 99999, + forkBlockNumber + 99999, env.multipass.address, adr.player2, NEW_DOMAIN_NAME1, @@ -734,7 +736,7 @@ describe(scriptName, () => { adr.player2, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, adr.player2, ); @@ -757,7 +759,7 @@ describe(scriptName, () => { adr.player1, adr.registrar1, NEW_DOMAIN_NAME2, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( @@ -802,7 +804,7 @@ describe(scriptName, () => { adr.player1, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( @@ -824,7 +826,7 @@ describe(scriptName, () => { adr.player1, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( @@ -849,7 +851,7 @@ describe(scriptName, () => { adr.player1, adr.registrar1, NEW_DOMAIN_NAME1, - 99999, + forkBlockNumber + 99999, env.multipass.address, ); await expect( diff --git a/test/MAODistribution.ts b/test/MAODistribution.ts new file mode 100644 index 00000000..12ed3b23 --- /dev/null +++ b/test/MAODistribution.ts @@ -0,0 +1,97 @@ +/* global ethers */ + +import { deployments, ethers } from 'hardhat'; +import hre from 'hardhat'; +import { expect } from 'chai'; +import { IDAO, MAODistribution, PeeramidLabsDistributor, Rankify, RankifyDiamondInstance } from '../types'; +import utils, { AdrSetupResult, setupTest } from './utils'; +import { getCodeIdFromArtifact } from '../scripts/getCodeId'; +import addDistribution from '../scripts/playbooks/addDistribution'; + +describe('MAODistribution', async function () { + let contract: MAODistribution; + let distributorContract: PeeramidLabsDistributor; + let maoId: string; + let rankify: Rankify; + let addr: AdrSetupResult; + beforeEach(async function () { + const setup = await setupTest(); + addr = setup.adr; + contract = setup.env.maoDistribution; + const maoCode = await hre.ethers.provider.getCode(contract.address); + maoId = ethers.utils.keccak256(maoCode); + distributorContract = setup.env.distributor; + + rankify = setup.env.rankifyToken; + }); + it('only owner can add distribution', async () => { + await expect( + distributorContract['addDistribution(bytes32,address)'](maoId, ethers.constants.AddressZero), + ).to.revertedWithCustomError(distributorContract, 'AccessControlUnauthorizedAccount'); + await expect( + distributorContract + .connect(addr.gameOwner.wallet) + ['addDistribution(bytes32,address)'](maoId, ethers.constants.AddressZero), + ).to.emit(distributorContract, 'DistributionAdded'); + }); + describe('when distribution was added', async () => { + beforeEach(async () => { + const { owner } = await hre.getNamedAccounts(); + const signer = await hre.ethers.getSigner(owner); + await addDistribution(hre)(await getCodeIdFromArtifact(hre)('MAODistribution'), signer); + }); + it('Can instantiate a distribution', async () => { + // Define the arguments for the instantiate function + const distributorArguments: MAODistribution.DistributorArgumentsStruct = { + DAOSEttings: { + daoURI: 'https://example.com/dao', + subdomain: 'example', + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + tokenName: 'tokenName', + tokenSymbol: 'tokenSymbol', + }, + ACIDSettings: { + RankTokenContractURI: 'https://example.com/rank', + gamePrice: 1, + joinGamePrice: 1, + maxPlayersSize: 16, + maxTurns: 1, + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + minPlayersSize: 4, + paymentToken: rankify.address, + rankTokenURI: 'https://example.com/rank', + timePerTurn: 1, + timeToJoin: 1, + voteCredits: 14, + }, + }; + // const abi = import('../abi/src/distributions/MAODistribution.sol/MAODistribution.json'); + // Encode the arguments + const data = ethers.utils.defaultAbiCoder.encode( + [ + 'tuple(tuple(string daoURI, string subdomain, bytes metadata, string tokenName, string tokenSymbol) DAOSEttings, tuple(uint256 timePerTurn, uint256 maxPlayersSize, uint256 minPlayersSize, uint256 timeToJoin, uint256 maxTurns, uint256 voteCredits, uint256 gamePrice, address paymentToken, uint256 joinGamePrice, string metadata, string rankTokenURI, string RankTokenContractURI) ACIDSettings)', + ], + [distributorArguments], + ); + // const tx = contract.instantiate(data); + const distributorsDistId = ethers.utils.keccak256( + ethers.utils.defaultAbiCoder.encode(['bytes32', 'address'], [maoId, ethers.constants.AddressZero]), + ); + const tx = await distributorContract.instantiate(distributorsDistId, data); + // const receipt = await tx.wait(1); + await expect(tx).not.reverted; + expect((await distributorContract.functions.getDistributions()).length).to.equal(1); + const filter = distributorContract.filters.Instantiated(); + const evts = await distributorContract.queryFilter(filter); + expect(evts.length).to.equal(1); + const daoContract = (await ethers.getContractAt('IDAO', evts[0].args.instances[0])) as IDAO; + expect((await daoContract.functions.getTrustedForwarder())[0]).to.equal(ethers.constants.AddressZero); + + const ACIDContract = (await ethers.getContractAt( + 'RankifyDiamondInstance', + evts[0].args.instances[3], + )) as RankifyDiamondInstance; + expect((await ACIDContract.functions['getGM(uint256)'](0))[0]).to.equal(ethers.constants.AddressZero); + }); + }); +}); diff --git a/test/RankToken.ts b/test/RankToken.ts index cdc42faa..28bd4193 100644 --- a/test/RankToken.ts +++ b/test/RankToken.ts @@ -1,144 +1,199 @@ -import { ethers } from 'hardhat'; +import { ethers, network } from 'hardhat'; import { expect } from 'chai'; import hre, { deployments } from 'hardhat'; -import { AdrSetupResult, setupAddresses } from './utils'; -import { RankToken } from '../types'; +import { AdrSetupResult, EnvSetupResult, RInstanceSettings, setupAddresses, setupTest } from './utils'; +import { RankifyDiamondInstance, RankToken } from '../types'; import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; import { Wallet } from 'ethers'; +import addDistribution from '../scripts/playbooks/addDistribution'; +import { getCodeIdFromArtifact } from '../scripts/getCodeId'; +import { DistributorArgumentsStruct } from '../types/src/distributions/MAODistribution.sol/MAODistribution'; let adr: AdrSetupResult; -let env: RankToken; -let deployer: SignerWithAddress; -let rankingInstance: SignerWithAddress | Wallet; - -const setupTest = deployments.createFixture(async ({ deployments, getNamedAccounts, ethers: _eth }, options) => { - const adr = await setupAddresses(getNamedAccounts, _eth); - const { deployer } = await hre.getNamedAccounts(); - - await adr.contractDeployer.wallet.sendTransaction({ - to: deployer, - value: _eth.utils.parseEther('1'), - }); - await deployments.fixture(['rank_token']); - - const deployment = await deployments.get('RankToken'); - env = (await ethers.getContractAt(deployment.abi, deployment.address)) as RankToken; - const rankingInstance = adr.gameCreator1.wallet; - return { adr, env, deployer, rankingInstance }; -}); +let env: EnvSetupResult; +let rankifyInstance: RankifyDiamondInstance; +let rankToken: RankToken; describe('Rank Token Test', async function () { beforeEach(async function () { const setup = await setupTest(); - env = setup.env; adr = setup.adr; - rankingInstance = setup.rankingInstance; - deployer = await hre.ethers.getSigner(await hre.getNamedAccounts().then(acs => acs.deployer)); - }); - it('Allows only owner to set rankingInstance', async () => { - await expect(env.connect(deployer).updateRankingInstance(adr.gameCreator1.wallet.address)) - .to.emit(env, 'RankingInstanceUpdated') - .withArgs(adr.gameCreator1.wallet.address); - await expect(env.connect(adr.maliciousActor1.wallet).updateRankingInstance(adr.gameCreator1.wallet.address)) - .to.emit(env, 'RankingInstanceUpdated') - .revertedWithCustomError(env, 'OwnableUnauthorizedAccount'); + env = setup.env; + + await addDistribution(hre)(await getCodeIdFromArtifact(hre)('MAODistribution'), adr.gameOwner.wallet); + const distributorArguments: DistributorArgumentsStruct = { + DAOSEttings: { + daoURI: 'https://example.com/dao', + subdomain: 'example', + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + tokenName: 'tokenName', + tokenSymbol: 'tokenSymbol', + }, + ACIDSettings: { + RankTokenContractURI: 'https://example.com/rank', + gamePrice: RInstanceSettings.RInstance_GAME_PRICE, + joinGamePrice: RInstanceSettings.RInstance_JOIN_GAME_PRICE, + maxPlayersSize: RInstanceSettings.RInstance_MAX_PLAYERS, + maxTurns: RInstanceSettings.RInstance_MAX_TURNS, + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + minPlayersSize: RInstanceSettings.RInstance_MIN_PLAYERS, + paymentToken: env.rankifyToken.address, + rankTokenURI: 'https://example.com/rank', + timePerTurn: RInstanceSettings.RInstance_TIME_PER_TURN, + timeToJoin: RInstanceSettings.RInstance_TIME_TO_JOIN, + voteCredits: RInstanceSettings.RInstance_VOTE_CREDITS, + }, + }; + // const abi = import('../abi/src/distributions/MAODistribution.sol/MAODistribution.json'); + // Encode the arguments + const data = ethers.utils.defaultAbiCoder.encode( + [ + 'tuple(tuple(string daoURI, string subdomain, bytes metadata, string tokenName, string tokenSymbol) DAOSEttings, tuple(uint256 timePerTurn, uint256 maxPlayersSize, uint256 minPlayersSize, uint256 timeToJoin, uint256 maxTurns, uint256 voteCredits, uint256 gamePrice, address paymentToken, uint256 joinGamePrice, string metadata, string rankTokenURI, string RankTokenContractURI) ACIDSettings)', + ], + [distributorArguments], + ); + const maoCode = await hre.ethers.provider.getCode(env.maoDistribution.address); + const maoId = ethers.utils.keccak256(maoCode); + const distributorsDistId = ethers.utils.keccak256( + ethers.utils.defaultAbiCoder.encode(['bytes32', 'address'], [maoId, ethers.constants.AddressZero]), + ); + await env.distributor.instantiate(distributorsDistId, data); + const filter = env.distributor.filters.Instantiated(); + const evts = await env.distributor.queryFilter(filter); + rankifyInstance = (await ethers.getContractAt( + 'RankifyDiamondInstance', + evts[0].args.instances[3], + )) as RankifyDiamondInstance; + await network.provider.send('hardhat_setBalance', [rankifyInstance.address, '0x9000000000000000000']); + await env.rankifyToken + .connect(adr.gameCreator1.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken + .connect(adr.gameCreator2.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken + .connect(adr.gameCreator3.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player1.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player2.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player3.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player4.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player5.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player6.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player7.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player8.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player9.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player10.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + + rankToken = (await ethers.getContractAt('RankToken', evts[0].args.instances[13])) as RankToken; }); + // it('Allows only owner to set rankingInstance', async () => { + // await expect(rankToken.connect(deployer).updateRankingInstance(adr.gameCreator1.wallet.address)) + // .to.emit(env, 'RankingInstanceUpdated') + // .withArgs(adr.gameCreator1.wallet.address); + // await expect(rankToken.connect(adr.maliciousActor1.wallet).updateRankingInstance(adr.gameCreator1.wallet.address)) + // .to.emit(env, 'RankingInstanceUpdated') + // .revertedWithCustomError(env, 'OwnableUnauthorizedAccount'); + // }); describe('when ranking instance set and tokens are minted to player', async () => { beforeEach(async () => { - await env.connect(deployer).updateRankingInstance(rankingInstance.address); - await env.connect(rankingInstance).mint(adr.player1.wallet.address, 3, 1, '0x'); + // await rankToken.connect(deployer).updateRankingInstance(rankingInstance.address); + const impersonatedSigner = await ethers.getImpersonatedSigner(rankifyInstance.address); + await rankToken.connect(impersonatedSigner).mint(adr.player1.wallet.address, 3, 1, '0x'); }); it('Can be locked only by instance', async () => { - await expect(env.connect(rankingInstance).lock(adr.player1.wallet.address, 1, 1)) - .to.emit(env, 'TokensLocked') + const impersonatedSigner = await ethers.getImpersonatedSigner(rankifyInstance.address); + await expect(rankToken.connect(impersonatedSigner).lock(adr.player1.wallet.address, 1, 1)) + .to.emit(rankToken, 'TokensLocked') .withArgs(adr.player1.wallet.address, 1, 1); - await expect(env.connect(adr.maliciousActor1.wallet).lock(adr.player1.wallet.address, 1, 1)).to.be.revertedWith( - 'only ranking contract can do that', - ); + await expect( + rankToken.connect(adr.maliciousActor1.wallet).lock(adr.player1.wallet.address, 1, 1), + ).to.be.revertedWithCustomError(env.distributor, 'InvalidInstance'); }); it('Cannot lock more then user has', async () => { - await expect(env.connect(rankingInstance).lock(adr.player1.wallet.address, 1, 4)).to.be.revertedWith( - 'insufficient', - ); + const impersonatedSigner = await ethers.getImpersonatedSigner(rankifyInstance.address); + await expect( + rankToken.connect(impersonatedSigner).lock(adr.player1.wallet.address, 1, 4), + ).to.be.revertedWithCustomError(rankToken, 'insufficient'); }); - // it.only('Returns rank of top token', async () => { - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(1); - // await env - // .connect(adr.player1.wallet) - // .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 1, 3, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(0); - // await env.connect(rankingInstance).mint(adr.player1.wallet.address, 1, 30, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(30); - // await env.connect(rankingInstance).mint(adr.player1.wallet.address, 1, 25, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(30); - // await env.connect(rankingInstance).mint(adr.player1.wallet.address, 1, 40, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(40); - // await env.connect(rankingInstance).mint(adr.player1.wallet.address, 1, 50, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(50); - // await env - // .connect(adr.player1.wallet) - // .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 40, 1, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(50); - // await env - // .connect(adr.player1.wallet) - // .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 50, 1, '0x'); - // expect((await env.connect(adr.player1.wallet).rank(adr.player1.wallet.address)).toNumber()).to.be.equal(30); - // }); + describe('When tokens locked', async () => { beforeEach(async () => { - await env.connect(rankingInstance).lock(adr.player1.wallet.address, 1, 1); + await rankToken + .connect(await ethers.getImpersonatedSigner(rankifyInstance.address)) + .lock(adr.player1.wallet.address, 1, 1); }); it('reports correct balance of unlocked', async () => { expect( - (await env.connect(adr.maliciousActor1.wallet).unlockedBalanceOf(adr.player1.wallet.address, 1)).toNumber(), + ( + await rankToken.connect(adr.maliciousActor1.wallet).unlockedBalanceOf(adr.player1.wallet.address, 1) + ).toNumber(), ).to.be.equal(2); }); it('Can be unlocked only by a rankingInstance', async () => { - await expect(env.connect(rankingInstance).unlock(adr.player1.wallet.address, 1, 1)) - .to.emit(env, 'TokensUnlocked') + await expect( + rankToken + .connect(await ethers.getImpersonatedSigner(rankifyInstance.address)) + .unlock(adr.player1.wallet.address, 1, 1), + ) + .to.emit(rankToken, 'TokensUnlocked') .withArgs(adr.player1.wallet.address, 1, 1); await expect( - env.connect(adr.maliciousActor1.wallet).unlock(adr.player1.wallet.address, 1, 1), - ).to.be.revertedWith('only ranking contract can do that'); + rankToken.connect(adr.maliciousActor1.wallet).unlock(adr.player1.wallet.address, 1, 1), + ).to.be.revertedWithCustomError(env.distributor, 'InvalidInstance'); }); it('Can only unlock a locked amount tokens', async () => { - await expect(env.connect(rankingInstance).unlock(adr.player1.wallet.address, 1, 1)) - .to.emit(env, 'TokensUnlocked') + await expect( + rankToken + .connect(await ethers.getImpersonatedSigner(rankifyInstance.address)) + .unlock(adr.player1.wallet.address, 1, 1), + ) + .to.emit(rankToken, 'TokensUnlocked') .withArgs(adr.player1.wallet.address, 1, 1); - await expect(env.connect(rankingInstance).unlock(adr.player1.wallet.address, 2, 1)).to.be.revertedWith( - 'insufficient', - ); + await expect( + rankToken + .connect(await ethers.getImpersonatedSigner(rankifyInstance.address)) + .unlock(adr.player1.wallet.address, 2, 1), + ).to.be.revertedWithCustomError(rankToken, 'insufficient'); }); it('Can transfer only unlocked tokens', async () => { await expect( - env + rankToken .connect(adr.player1.wallet) .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 1, 3, '0x'), - ).to.be.revertedWith('insufficient'); + ).to.be.revertedWithCustomError(rankToken, 'insufficient'); await expect( - env + rankToken .connect(adr.player1.wallet) .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 1, 2, '0x'), - ).to.be.emit(env, 'TransferSingle'); + ).to.be.emit(rankToken, 'TransferSingle'); }); it('Can transfer previously locked tokens', async () => { - await env.connect(rankingInstance).unlock(adr.player1.wallet.address, 1, 1); + await rankToken + .connect(await ethers.getImpersonatedSigner(rankifyInstance.address)) + .unlock(adr.player1.wallet.address, 1, 1); await expect( - env + rankToken .connect(adr.player1.wallet) .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 1, 3, '0x'), - ).to.be.emit(env, 'TransferSingle'); + ).to.be.emit(rankToken, 'TransferSingle'); }); it('Balance still shows same', async () => { - expect((await env.connect(rankingInstance).balanceOf(adr.player1.wallet.address, 1)).toNumber()).to.be.equal(3); + expect( + ( + await rankToken + .connect(await ethers.getImpersonatedSigner(rankifyInstance.address)) + .balanceOf(adr.player1.wallet.address, 1) + ).toNumber(), + ).to.be.equal(3); }); it('Cannot lock more then balance tokens', async () => { await expect( - env + rankToken .connect(adr.player1.wallet) .safeTransferFrom(adr.player1.wallet.address, adr.player2.wallet.address, 1, 4, '0x'), - ).to.be.revertedWith('insufficient'); + ).to.be.revertedWithCustomError(rankToken, 'insufficient'); }); }); }); diff --git a/test/RankifyInstance.ts b/test/RankifyInstance.ts index 186b0133..d1e33684 100644 --- a/test/RankifyInstance.ts +++ b/test/RankifyInstance.ts @@ -1,22 +1,16 @@ import { - AdrSetupResult, - RInstance_MAX_PLAYERS, - RInstance_MIN_PLAYERS, - EnvSetupResult, - getTurnSalt, - mockVote, - MockVotes, - ProposalSubmittion, - setupTest, - SignerIdentity, - ProposalParams, - RInstance_MAX_TURNS, - RInstance_TIME_PER_TURN, + AdrSetupResult, + RInstance_MAX_PLAYERS, + RInstance_MIN_PLAYERS, + EnvSetupResult, MockVotes, + ProposalSubmittion, + setupTest, + SignerIdentity, RInstance_MAX_TURNS } from './utils'; import { RInstanceSettings, mineBlocks, mockProposals, mockVotes, getPlayers } from './utils'; import { expect } from 'chai'; import { time } from '@nomicfoundation/hardhat-network-helpers'; -import { RankifyDiamondInstance } from '../types/'; +import { RankifyDiamondInstance, RankToken } from '../types/'; import { LibCoinVending } from '../types/src/facets/RankifyInstanceRequirementsFacet'; import { IRankifyInstanceCommons } from '../types/src/facets/RankifyInstanceMainFacet'; import { ethers } from 'hardhat'; @@ -24,14 +18,21 @@ const path = require('path'); // import { TokenMust, TokenTypes } from "../types/enums"; import { BigNumber, BigNumberish } from 'ethers'; import { assert } from 'console'; -const scriptName = path.basename(__filename); import { solidityKeccak256 } from 'ethers/lib/utils'; +import addDistribution from '../scripts/playbooks/addDistribution'; +import hre from 'hardhat'; +import { network } from 'hardhat'; +const scriptName = path.basename(__filename); +import { getCodeIdFromArtifact } from '../scripts/getCodeId'; +import { DistributorArgumentsStruct } from '../types/src/distributions/MAODistribution.sol/MAODistribution'; let votes: MockVotes; let proposalsStruct: ProposalSubmittion[]; let adr: AdrSetupResult; let votersAddresses: string[]; let env: EnvSetupResult; +let rankifyInstance: RankifyDiamondInstance; +let rankToken: RankToken; const createGame = async ( gameContract: RankifyDiamondInstance, @@ -40,6 +41,7 @@ const createGame = async ( gameRank: BigNumberish, openNow?: boolean, ) => { + await env.rankifyToken.connect(signer.wallet).approve(gameContract.address, ethers.constants.MaxUint256); await gameContract.connect(signer.wallet)['createGame(address,uint256)'](gameMaster, gameRank); const gameId = await gameContract .getContractState() @@ -55,10 +57,10 @@ const runToTheEnd = async ( distribution?: 'ftw' | 'semiUniform' | 'equal', ) => { // console.log('running to the end'); - // const initialTurn = await env.rankifyInstance.getTurn(gameId); - let isGameOver = await env.rankifyInstance.isGameOver(gameId); + // const initialTurn = await rankifyInstance.getTurn(gameId); + let isGameOver = await rankifyInstance.isGameOver(gameId); while (!isGameOver) { - const turn = await env.rankifyInstance.getTurn(gameId).then(r => r.toNumber()); + const turn = await rankifyInstance.getTurn(gameId).then(r => r.toNumber()); // console.log('running to the end', turn, isLastTurn, isGameOver); if (turn !== 1) { votes = await mockValidVotes(players, gameContract, gameId, gameMaster, true, distribution ?? 'ftw'); @@ -71,7 +73,7 @@ const runToTheEnd = async ( proposals.map(prop => (turn < RInstance_MAX_TURNS ? prop.proposal : '')), proposals.map((p, i) => i), ); - isGameOver = await env.rankifyInstance.isGameOver(gameId); + isGameOver = await rankifyInstance.isGameOver(gameId); } }; const runToLastTurn = async ( @@ -81,7 +83,7 @@ const runToLastTurn = async ( players: [SignerIdentity, SignerIdentity, ...SignerIdentity[]], distribution?: 'ftw' | 'semiUniform' | 'equal', ): Promise => { - const initialTurn = await env.rankifyInstance.getTurn(gameId); + const initialTurn = await rankifyInstance.getTurn(gameId); // console.log("running to last turn, initial: ", initialTurn.toString()); for (let turn = initialTurn.toNumber(); turn < RInstanceSettings.RInstance_MAX_TURNS; turn++) { if (turn !== 1) { @@ -151,8 +153,8 @@ const runToOvertime = async ( // votes.map((vote) => vote.vote) // ); // turn = await gameContract.getTurn(gameId); -// const isOvertime = await env.rankifyInstance.isOvertime(gameId); -// const isGameOver = await env.rankifyInstance.isGameOver(gameId); +// const isOvertime = await rankifyInstance.isOvertime(gameId); +// const isGameOver = await rankifyInstance.isGameOver(gameId); // while (!isGameOver) { // console.log("running isGameOver", isGameOver, isOvertime, turn.toString()); // assert(isOvertime, "should be ovetime, now?"); @@ -198,7 +200,7 @@ const mockValidVotes = async ( if (submitNow) { votersAddresses = players.map(player => player.wallet.address); for (let i = 0; i < players.length; i++) { - await env.rankifyInstance + await rankifyInstance .connect(gameMaster.wallet) .submitVote(gameId, votes[i].voteHidden, players[i].wallet.address); } @@ -213,12 +215,12 @@ const startGame = async ( const currentT = await time.latest(); await time.setNextBlockTimestamp(currentT + Number(RInstanceSettings.RInstance_TIME_TO_JOIN) + 1); await mineBlocks(RInstanceSettings.RInstance_TIME_TO_JOIN + 1); - await env.rankifyInstance.connect(adr.gameMaster1.wallet).startGame(gameId); + await rankifyInstance.connect(adr.gameMaster1.wallet).startGame(gameId); // proposalsStruct = await mockProposals({ // players: players, // gameId: 1, // turn: 1, - // verifierAddress: env.rankifyInstance.address, + // verifierAddress: rankifyInstance.address, // }); }; @@ -257,8 +259,8 @@ const fillParty = async ( ) => { for (let i = 0; i < players.length; i++) { // let name = `player${i}` as any as keyof AdrSetupResult; - if (!env.rankToken.address) throw new Error('Rank token undefined or undeployed'); - await env.rankToken.connect(players[i].wallet).setApprovalForAll(env.rankifyInstance.address, true); + if (!env.rankTokenBase.address) throw new Error('Rank token undefined or undeployed'); + await rankToken.connect(players[i].wallet).setApprovalForAll(rankifyInstance.address, true); await gameContract.connect(players[i].wallet).joinGame(gameId, { value: ethers.utils.parseEther('0.4') }); } if (shiftTime) { @@ -267,7 +269,7 @@ const fillParty = async ( await mineBlocks(1); } if (startGame && gameMaster) { - await env.rankifyInstance.connect(gameMaster.wallet).startGame(gameId); + await rankifyInstance.connect(gameMaster.wallet).startGame(gameId); } }; @@ -286,6 +288,73 @@ describe(scriptName, () => { const setup = await setupTest(); adr = setup.adr; env = setup.env; + await addDistribution(hre)(await getCodeIdFromArtifact(hre)('MAODistribution'), adr.gameOwner.wallet); + const distributorArguments: DistributorArgumentsStruct = { + DAOSEttings: { + daoURI: 'https://example.com/dao', + subdomain: 'example', + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + tokenName: 'tokenName', + tokenSymbol: 'tokenSymbol', + }, + ACIDSettings: { + RankTokenContractURI: 'https://example.com/rank', + gamePrice: RInstanceSettings.RInstance_GAME_PRICE, + joinGamePrice: RInstanceSettings.RInstance_JOIN_GAME_PRICE, + maxPlayersSize: RInstanceSettings.RInstance_MAX_PLAYERS, + maxTurns: RInstanceSettings.RInstance_MAX_TURNS, + metadata: ethers.utils.hexlify(ethers.utils.toUtf8Bytes('metadata')), + minPlayersSize: RInstanceSettings.RInstance_MIN_PLAYERS, + paymentToken: env.rankifyToken.address, + rankTokenURI: 'https://example.com/rank', + timePerTurn: RInstanceSettings.RInstance_TIME_PER_TURN, + timeToJoin: RInstanceSettings.RInstance_TIME_TO_JOIN, + voteCredits: RInstanceSettings.RInstance_VOTE_CREDITS, + }, + }; + // const abi = import('../abi/src/distributions/MAODistribution.sol/MAODistribution.json'); + // Encode the arguments + const data = ethers.utils.defaultAbiCoder.encode( + [ + 'tuple(tuple(string daoURI, string subdomain, bytes metadata, string tokenName, string tokenSymbol) DAOSEttings, tuple(uint256 timePerTurn, uint256 maxPlayersSize, uint256 minPlayersSize, uint256 timeToJoin, uint256 maxTurns, uint256 voteCredits, uint256 gamePrice, address paymentToken, uint256 joinGamePrice, string metadata, string rankTokenURI, string RankTokenContractURI) ACIDSettings)', + ], + [distributorArguments], + ); + const maoCode = await hre.ethers.provider.getCode(env.maoDistribution.address); + const maoId = ethers.utils.keccak256(maoCode); + const distributorsDistId = ethers.utils.keccak256( + ethers.utils.defaultAbiCoder.encode(['bytes32', 'address'], [maoId, ethers.constants.AddressZero]), + ); + await env.distributor.instantiate(distributorsDistId, data); + const filter = env.distributor.filters.Instantiated(); + const evts = await env.distributor.queryFilter(filter); + rankifyInstance = (await ethers.getContractAt( + 'RankifyDiamondInstance', + evts[0].args.instances[3], + )) as RankifyDiamondInstance; + + await env.rankifyToken + .connect(adr.gameCreator1.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken + .connect(adr.gameCreator2.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken + .connect(adr.gameCreator3.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player1.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player2.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player3.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player4.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player5.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player6.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player7.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player8.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player9.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await env.rankifyToken.connect(adr.player10.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + + rankToken = (await ethers.getContractAt('RankToken', evts[0].args.instances[13])) as RankToken; + requirement.contracts = []; requirement.contracts.push({ contractAddress: env.mockERC20.address, @@ -325,15 +394,15 @@ describe(scriptName, () => { }, }); }); - it('Is Owned by contract owner', async () => { - expect(await env.rankifyInstance.owner()).to.be.equal(adr.gameOwner.wallet.address); + it('Is by distributor contract', async () => { + expect(await rankifyInstance.owner()).to.be.equal(env.arguableVotingTournamentDistribution.address); }); it('Has correct initial settings', async () => { - const state = await env.rankifyInstance.connect(adr.gameCreator1.wallet).getContractState(); + const state = await rankifyInstance.connect(adr.gameCreator1.wallet).getContractState(); expect(state.BestOfState.gamePrice).to.be.equal(RInstanceSettings.RInstance_GAME_PRICE); expect(state.BestOfState.joinGamePrice).to.be.equal(RInstanceSettings.RInstance_JOIN_GAME_PRICE); expect(state.BestOfState.numGames).to.be.equal(0); - expect(state.BestOfState.rankTokenAddress).to.be.equal(env.rankToken.address); + expect(state.BestOfState.rankTokenAddress).to.be.equal(rankToken.address); expect(state.TBGSEttings.maxTurns).to.be.equal(RInstanceSettings.RInstance_MAX_TURNS); expect(state.TBGSEttings.timePerTurn).to.be.equal(RInstanceSettings.RInstance_TIME_PER_TURN); expect(state.TBGSEttings.minPlayersSize).to.be.equal(RInstanceSettings.RInstance_MIN_PLAYERS); @@ -341,76 +410,75 @@ describe(scriptName, () => { expect(state.TBGSEttings.maxTurns).to.be.equal(RInstanceSettings.RInstance_MAX_TURNS); }); it('Transfer ownership can be done only by contract owner', async () => { + const impersonatedSigner = await ethers.getImpersonatedSigner(env.arguableVotingTournamentDistribution.address); + await network.provider.send('hardhat_setBalance', [impersonatedSigner.address, '0x9000000000000000000']); + await expect( - env.rankifyInstance.connect(adr.gameOwner.wallet).transferOwnership(adr.gameCreator1.wallet.address), - ).to.emit(env.rankifyInstance, 'OwnershipTransferred(address,address)'); + rankifyInstance.connect(impersonatedSigner).transferOwnership(adr.gameCreator1.wallet.address), + ).to.emit(rankifyInstance, 'OwnershipTransferred(address,address)'); await expect( - env.rankifyInstance.connect(adr.maliciousActor1.wallet).transferOwnership(adr.gameCreator1.wallet.address), + rankifyInstance.connect(adr.maliciousActor1.wallet).transferOwnership(adr.gameCreator1.wallet.address), ).to.revertedWith('LibDiamond: Must be contract owner'); }); it('has rank token assigned', async () => { - const state = await env.rankifyInstance.getContractState(); - expect(state.BestOfState.rankTokenAddress).to.be.equal(env.rankToken.address); - expect(await env.rankToken.getRankingInstance()).to.be.equal(env.rankifyInstance.address); - expect(await env.rankToken.owner()).to.be.equal(adr.contractDeployer.wallet.address); + const state = await rankifyInstance.getContractState(); + expect(state.BestOfState.rankTokenAddress).to.be.equal(rankToken.address); }); it('Can create game only with valid payments', async () => { - await env.rankifyToken.connect(adr.gameCreator1.wallet).approve(env.rankifyInstance.address, 0); + await env.rankifyToken.connect(adr.gameCreator1.wallet).approve(rankifyInstance.address, 0); await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameCreator1.wallet) ['createGame(address,uint256)'](adr.gameMaster1.wallet.address, 1), ).to.revertedWithCustomError(env.rankifyToken, 'ERC20InsufficientAllowance'); await env.rankifyToken .connect(adr.gameCreator1.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + .approve(rankifyInstance.address, ethers.constants.MaxUint256); await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameCreator1.wallet) ['createGame(address,uint256)'](adr.gameMaster1.wallet.address, 1), - ).to.emit(env.rankifyInstance, 'gameCreated'); + ).to.emit(rankifyInstance, 'gameCreated'); await env.rankifyToken .connect(adr.gameCreator1.wallet) .burn(await env.rankifyToken.balanceOf(adr.gameCreator1.wallet.address)); await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameCreator1.wallet) ['createGame(address,uint256)'](adr.gameMaster1.wallet.address, 1), ).to.revertedWithCustomError(env.rankifyToken, 'ERC20InsufficientBalance'); }); it('Cannot perform actions on games that do not exist', async () => { - await expect(env.rankifyInstance.connect(adr.gameCreator1.wallet).joinGame(1)).to.be.revertedWith('no game found'); + await expect(rankifyInstance.connect(adr.gameCreator1.wallet).joinGame(1)).to.be.revertedWith('no game found'); proposalsStruct = await mockProposals({ players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, gm: adr.gameMaster1, }); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), ).to.be.revertedWith('no game found'); votersAddresses = getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS).map(player => player.wallet.address); votes = await mockVotes({ gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gm: adr.gameMaster1, distribution: 'semiUniform', }); await expect( - env.rankifyInstance - .connect(adr.gameMaster1.wallet) - .submitVote(1, votes[0].voteHidden, adr.player1.wallet.address), + rankifyInstance.connect(adr.gameMaster1.wallet).submitVote(1, votes[0].voteHidden, adr.player1.wallet.address), ).to.be.revertedWith('no game found'); - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).openRegistration(1)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).openRegistration(1)).to.be.revertedWith( 'no game found', ); // await expect( - // env.rankifyInstance.connect(adr.gameMaster1.wallet).addJoinRequirements(0, { + // rankifyInstance.connect(adr.gameMaster1.wallet).addJoinRequirements(0, { // token: { tokenAddress: ZERO_ADDRESS, tokenType: 0, tokenId: 1 }, // amount: 1, // must: 0, @@ -418,22 +486,22 @@ describe(scriptName, () => { // }) // ).to.be.revertedWith("no game found"); // await expect( - // env.rankifyInstance.connect(adr.gameMaster1.wallet).removeJoinRequirement(0, 0) + // rankifyInstance.connect(adr.gameMaster1.wallet).removeJoinRequirement(0, 0) // ).to.be.revertedWith("no game found"); // await expect( - // env.rankifyInstance.connect(adr.gameMaster1.wallet).popJoinRequirements(0) + // rankifyInstance.connect(adr.gameMaster1.wallet).popJoinRequirements(0) // ).to.be.revertedWith("no game found"); - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).joinGame(0)).to.be.revertedWith('no game found'); - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).startGame(0)).to.be.revertedWith('no game found'); + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).joinGame(0)).to.be.revertedWith('no game found'); + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).startGame(0)).to.be.revertedWith('no game found'); const proposals = await mockProposals({ players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, gm: adr.gameMaster1, }); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposals.map(prop => prop.proposal), @@ -441,12 +509,12 @@ describe(scriptName, () => { ), ).to.be.revertedWith('no game found'); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), ).to.be.revertedWith('no game found'); }); // it('Succedes to create ranked game only if sender has correspoding tier rank token', async () => { // await expect( - // env.rankifyInstance + // rankifyInstance // .connect(adr.maliciousActor1.wallet) // ['createGame(address,uint256)'](adr.gameMaster1.wallet.address, 2, { // value: RInstanceSettings.RInstance_GAME_PRICE, @@ -455,89 +523,92 @@ describe(scriptName, () => { // }); describe('When a game of first rank was created', () => { beforeEach(async () => { - await createGame(env.rankifyInstance, adr.gameCreator1, adr.gameMaster1.wallet.address, 1); + await createGame(rankifyInstance, adr.gameCreator1, adr.gameMaster1.wallet.address, 1); }); it('GM is correct', async () => { - expect(await env.rankifyInstance.getGM(1)).to.be.equal(adr.gameMaster1.wallet.address); + expect(await rankifyInstance.getGM(1)).to.be.equal(adr.gameMaster1.wallet.address); }); it('Incremented number of games correctly', async () => { - const state = await env.rankifyInstance.connect(adr.gameCreator1.wallet).getContractState(); + const state = await rankifyInstance.connect(adr.gameCreator1.wallet).getContractState(); expect(state.BestOfState.numGames).to.be.equal(1); }); it('Players cannot join until registration is open', async () => { - await expect(env.rankifyInstance.connect(adr.player1.wallet).joinGame(1)).to.be.revertedWith( + await env.rankifyToken.connect(adr.player1.wallet).approve(rankifyInstance.address, ethers.constants.MaxUint256); + await expect(rankifyInstance.connect(adr.player1.wallet).joinGame(1)).to.be.revertedWith( 'addPlayer->cant join now', ); }); it('Allows only game creator to add join requirements', async () => { - await expect(env.rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement)).to.be.emit( - env.rankifyInstance, + await expect(rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement)).to.be.emit( + rankifyInstance, 'RequirementsConfigured', ); await expect( - env.rankifyInstance.connect(adr.maliciousActor1.wallet).setJoinRequirements(1, requirement), + rankifyInstance.connect(adr.maliciousActor1.wallet).setJoinRequirements(1, requirement), ).to.be.revertedWith('Only game creator'); await expect( - env.rankifyInstance.connect(adr.maliciousActor1.wallet).setJoinRequirements(11, requirement), + rankifyInstance.connect(adr.maliciousActor1.wallet).setJoinRequirements(11, requirement), ).to.be.revertedWith('no game found'); }); it('Only game creator can open registration', async () => { - await expect(env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1)).to.be.emit( - env.rankifyInstance, + await expect(rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1)).to.be.emit( + rankifyInstance, 'RegistrationOpen', ); - await expect(env.rankifyInstance.connect(adr.maliciousActor1.wallet).openRegistration(1)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.maliciousActor1.wallet).openRegistration(1)).to.be.revertedWith( 'Only game creator', ); }); describe('When registration was open without any additional requirements', () => { beforeEach(async () => { - await env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1); + await rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1); }); it('Mutating join requirements is no longer possible', async () => { await expect( - env.rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement), + rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement), ).to.be.revertedWith('Cannot do when registration is open'); }); it('Qualified players can join', async () => { - await expect(env.rankifyInstance.connect(adr.player1.wallet).joinGame(1)).to.be.emit( - env.rankifyInstance, + await expect(rankifyInstance.connect(adr.player1.wallet).joinGame(1)).to.be.emit( + rankifyInstance, 'PlayerJoined', ); }); - it('Game cannot be started until join blocktime has passed unless game is full', async () => { - env.rankifyInstance.connect(adr.player1.wallet).joinGame(1); - - await expect(env.rankifyInstance.connect(adr.player1.wallet).startGame(1)).to.be.revertedWith( + it('Game cannot be started until join block time has passed unless game is full', async () => { + await rankifyInstance.connect(adr.player1.wallet).joinGame(1); + await expect(rankifyInstance.connect(adr.player1.wallet).startGame(1)).to.be.revertedWith( 'startGame->Not enough players', ); - env.rankifyInstance.connect(adr.player2.wallet).joinGame(1); - env.rankifyInstance.connect(adr.player3.wallet).joinGame(1); - env.rankifyInstance.connect(adr.player4.wallet).joinGame(1); - env.rankifyInstance.connect(adr.player5.wallet).joinGame(1); - env.rankifyInstance.connect(adr.player6.wallet).joinGame(1); - await expect(env.rankifyInstance.connect(adr.player1.wallet).startGame(1)).to.be.emit( - env.rankifyInstance, + await rankifyInstance.connect(adr.player2.wallet).joinGame(1); + await rankifyInstance.connect(adr.player3.wallet).joinGame(1); + await rankifyInstance.connect(adr.player4.wallet).joinGame(1); + await rankifyInstance.connect(adr.player5.wallet).joinGame(1); + await rankifyInstance.connect(adr.player6.wallet).joinGame(1); + await expect(rankifyInstance.connect(adr.player1.wallet).startGame(1)).to.be.emit( + rankifyInstance, 'GameStarted', ); }); it('No more than max players can join', async () => { for (let i = 1; i < RInstanceSettings.RInstance_MAX_PLAYERS + 1; i++) { let name = `player${i}` as any as keyof AdrSetupResult; - env.rankifyInstance.connect(adr[`${name}`].wallet).joinGame(1); + await rankifyInstance.connect(adr[`${name}`].wallet).joinGame(1); } - await expect(env.rankifyInstance.connect(adr.maliciousActor1.wallet).joinGame(1)).to.be.revertedWith( + await env.rankifyToken + .connect(adr.maliciousActor1.wallet) + .approve(rankifyInstance.address, ethers.constants.MaxUint256); + await expect(rankifyInstance.connect(adr.maliciousActor1.wallet).joinGame(1)).to.be.revertedWith( 'addPlayer->party full', ); }); // it('Game cannot start too early', async () => { - // await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.revertedWith( + // await expect(rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.revertedWith( // 'startGame->Still Can Join', // ); // }); it('Game methods beside join and start are inactive', async () => { await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal({ + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal({ gameId: 1, proposer: adr.player1.wallet.address, commitmentHash: solidityKeccak256(['string'], ['mockString']), @@ -548,20 +619,20 @@ describe(scriptName, () => { players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, gm: adr.gameMaster1, }); votes = await mockVotes({ gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gm: adr.gameMaster1, distribution: 'semiUniform', }); votersAddresses = getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS).map(player => player.wallet.address); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposalsStruct.map(p => p.proposal), @@ -569,19 +640,19 @@ describe(scriptName, () => { ), ).to.be.revertedWith('Game has not yet started'); await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameMaster1.wallet) .submitVote(1, votes[0].voteHidden, adr.player1.wallet.address), ).to.be.revertedWith('Game has not yet started'); - await expect(env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1)).to.be.revertedWith( 'Cannot do when registration is open', ); await expect( - env.rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement), + rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement), ).to.be.revertedWith('Cannot do when registration is open'); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposalsStruct.map(p => p.proposal), @@ -591,23 +662,23 @@ describe(scriptName, () => { }); it('Cannot be started if not enough players', async () => { await mineBlocks(RInstanceSettings.RInstance_TIME_TO_JOIN + 1); - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.revertedWith( 'startGame->Not enough players', ); }); describe('When there is minimal number and below maximum players in game', () => { beforeEach(async () => { - await fillParty(getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), env.rankifyInstance, 1, false); + await fillParty(getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), rankifyInstance, 1, false); }); it('Can start game after joining period is over', async () => { - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.revertedWith( 'startGame->Not enough players', ); const currentT = await time.latest(); await time.setNextBlockTimestamp(currentT + Number(RInstanceSettings.RInstance_TIME_TO_JOIN) + 1); await mineBlocks(1); - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.emit( - env.rankifyInstance, + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).startGame(1)).to.be.emit( + rankifyInstance, 'GameStarted', ); }); @@ -617,16 +688,16 @@ describe(scriptName, () => { players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, gm: adr.gameMaster1, }); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), ).to.be.revertedWith('Game has not yet started'); votes = await mockVotes({ gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gm: adr.gameMaster1, distribution: 'semiUniform', @@ -636,7 +707,7 @@ describe(scriptName, () => { ); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposalsStruct.map(p => p.proposal), @@ -644,7 +715,7 @@ describe(scriptName, () => { ), ).to.be.revertedWith('Game has not yet started'); await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameMaster1.wallet) .submitVote(1, votes[0].voteHidden, adr.player1.wallet.address), ).to.be.revertedWith('Game has not yet started'); @@ -654,23 +725,23 @@ describe(scriptName, () => { await startGame(1); }); it('First turn has started', async () => { - expect(await env.rankifyInstance.connect(adr.player1.wallet).getTurn(1)).to.be.equal(1); + expect(await rankifyInstance.connect(adr.player1.wallet).getTurn(1)).to.be.equal(1); }); it('Accepts only proposals and no votes', async () => { const proposals = await mockProposals({ players: getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, gm: adr.gameMaster1, }); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposals[0].params), - ).to.be.emit(env.rankifyInstance, 'ProposalSubmitted'); + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposals[0].params), + ).to.be.emit(rankifyInstance, 'ProposalSubmitted'); votes = await mockVotes({ gameId: 1, turn: 1, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, players: getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), gm: adr.gameMaster1, distribution: 'semiUniform', @@ -680,23 +751,21 @@ describe(scriptName, () => { ); await expect( - env.rankifyInstance - .connect(adr.gameMaster1.wallet) - .submitVote(1, votes[0].voteHidden, votersAddresses[0]), + rankifyInstance.connect(adr.gameMaster1.wallet).submitVote(1, votes[0].voteHidden, votersAddresses[0]), ).to.be.revertedWith('No proposals exist at turn 1: cannot vote'); }); it('Processes only proposals only from game master', async () => { await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), - ).to.emit(env.rankifyInstance, 'ProposalSubmitted'); + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[0].params), + ).to.emit(rankifyInstance, 'ProposalSubmitted'); await expect( - env.rankifyInstance.connect(adr.maliciousActor1.wallet).submitProposal(proposalsStruct[0].params), + rankifyInstance.connect(adr.maliciousActor1.wallet).submitProposal(proposalsStruct[0].params), ).to.be.revertedWith('Only game master'); }); it('Can end turn if timeout reached with zero scores', async () => { await mineBlocks(RInstanceSettings.RInstance_TIME_PER_TURN + 1); - await expect(env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn(1, [], [], [])) - .to.be.emit(env.rankifyInstance, 'TurnEnded') + await expect(rankifyInstance.connect(adr.gameMaster1.wallet).endTurn(1, [], [], [])) + .to.be.emit(rankifyInstance, 'TurnEnded') .withArgs( 1, 1, @@ -711,7 +780,7 @@ describe(scriptName, () => { beforeEach(async () => { proposalsStruct = await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, true, @@ -719,17 +788,17 @@ describe(scriptName, () => { }); it('Can end turn', async () => { await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, [], proposalsStruct.map(p => p.proposal), proposalsStruct.map((p, idx) => idx), ), - ).to.be.emit(env.rankifyInstance, 'TurnEnded'); + ).to.be.emit(rankifyInstance, 'TurnEnded'); }); describe('When turn is over and there is one proposal missing', async () => { beforeEach(async () => { - await env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + await rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, [], proposalsStruct.map(p => p.proposal).slice(0, -1), @@ -739,21 +808,21 @@ describe(scriptName, () => { it('Can end next turn ', async () => { // ToDo: add "with correct scores" to the end of the test const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS); - await mockValidVotes(players, env.rankifyInstance, 1, adr.gameMaster1, true, 'ftw'); - await mockValidProposals(players, env.rankifyInstance, adr.gameMaster1, 1, true); + await mockValidVotes(players, rankifyInstance, 1, adr.gameMaster1, true, 'ftw'); + await mockValidProposals(players, rankifyInstance, adr.gameMaster1, 1, true); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposalsStruct.map(p => p.proposal), proposalsStruct.map((p, idx) => (idx === players.length - 1 ? players.length : idx)), ), - ).to.be.emit(env.rankifyInstance, 'TurnEnded'); + ).to.be.emit(rankifyInstance, 'TurnEnded'); }); }); describe('When first turn was made', () => { beforeEach(async () => { - await env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + await rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, [], proposalsStruct.map(p => p.proposal), @@ -763,26 +832,26 @@ describe(scriptName, () => { it('throws if player votes twice', async () => { await mockValidVotes( getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, adr.gameMaster1, true, ); await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, true, ); await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameMaster1.wallet) .submitVote(1, votes[0].voteHidden, adr.player1.wallet.address), ).to.be.revertedWith('Already voted'); }); it('shows no players made a turn', async () => { - expect(await env.rankifyInstance.getPlayersMoved(1)).to.deep.equal([ + expect(await rankifyInstance.getPlayersMoved(1)).to.deep.equal([ getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS).map(() => false), ethers.BigNumber.from('0'), ]); @@ -790,14 +859,14 @@ describe(scriptName, () => { it('shows no players made a turn even after player send proposal', async () => { const proposals = await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, false, ); - await env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposals[0].params); - await env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposals[1].params), - expect(await env.rankifyInstance.getPlayersMoved(1)).to.deep.equal([ + await rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposals[0].params); + await rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposals[1].params), + expect(await rankifyInstance.getPlayersMoved(1)).to.deep.equal([ getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS).map(() => false), ethers.BigNumber.from('0'), ]); @@ -805,7 +874,7 @@ describe(scriptName, () => { // it("throws if player voting himself", async () => { // proposalsStruct = await mockValidProposals( // getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), - // env.rankifyInstance, + // rankifyInstance, // adr.gameMaster1, // 1, // true @@ -814,7 +883,7 @@ describe(scriptName, () => { // voter: adr.player1, // gm: adr.gameMaster1, // gameId: 1, - // verifierAddress: env.rankifyInstance.address, + // verifierAddress: rankifyInstance.address, // turn: 2, // vote: [0, 1, 2], // }); @@ -822,7 +891,7 @@ describe(scriptName, () => { // const badVotes = await mockVotes({ // gameId: 1, // turn: 2, - // verifierAddress: env.rankifyInstance.address, + // verifierAddress: rankifyInstance.address, // players: getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), // gm: adr.gameMaster1, // distribution: "semiUniform", @@ -835,7 +904,7 @@ describe(scriptName, () => { // for (let i = 0; i < votersAddresses.length; i++) { // let name = `player${i + 1}` as any as keyof AdrSetupResult; - // await env.rankifyInstance + // await rankifyInstance // .connect(adr[`${name}`].wallet) // .submitVote( // 1, @@ -847,7 +916,7 @@ describe(scriptName, () => { // await mineBlocks(RInstanceSettings.RInstance_TIME_PER_TURN + 1); // await expect( - // env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + // rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( // 1, // badVotes.map((vote) => vote.vote), // proposalsStruct.map((p) => p.proposal), @@ -859,7 +928,7 @@ describe(scriptName, () => { beforeEach(async () => { votes = await mockValidVotes( getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, adr.gameMaster1, true, @@ -870,7 +939,7 @@ describe(scriptName, () => { }); it('cannot end turn because players still have time to propose', async () => { await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposalsStruct.map(p => p.proposal), @@ -882,7 +951,7 @@ describe(scriptName, () => { // await mineBlocks(RInstanceSettings.RInstance_TIME_PER_TURN + 1); const currentT = await time.latest(); await time.setNextBlockTimestamp(currentT + Number(RInstanceSettings.RInstance_TIME_PER_TURN) + 1); - expect(await env.rankifyInstance.getTurn(1)).to.be.equal(2); + expect(await rankifyInstance.getTurn(1)).to.be.equal(2); const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS); const expectedScores: number[] = players.map(v => 0); for (let i = 0; i < players.length; i++) { @@ -900,7 +969,7 @@ describe(scriptName, () => { // expectedScores, // votes.map(vote => vote.vote), // ); - // const tx = await env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + // const tx = await rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( // 1, // votes.map(vote => vote.vote), // [], @@ -908,14 +977,14 @@ describe(scriptName, () => { // ); // console.log((await tx.wait(1)).events?.find(e => e.event === 'TurnEnded').args); await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), [], votersAddresses.map((p, idx) => idx), ), ) - .to.be.emit(env.rankifyInstance, 'TurnEnded') + .to.be.emit(rankifyInstance, 'TurnEnded') .withArgs( 1, 2, @@ -929,7 +998,7 @@ describe(scriptName, () => { it('Returns correct scores in getScores if votes are shuffled', async () => { const currentT = await time.latest(); await time.setNextBlockTimestamp(currentT + Number(RInstanceSettings.RInstance_TIME_PER_TURN) + 1); - expect(await env.rankifyInstance.getTurn(1)).to.be.equal(2); + expect(await rankifyInstance.getTurn(1)).to.be.equal(2); const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS); const expectedScores: number[] = players.map(v => 0); for (let i = 0; i < players.length; i++) { @@ -966,17 +1035,15 @@ describe(scriptName, () => { votesShuffled[i][proposerIndex[votedForIdx]] = points; }); }); - await env.rankifyInstance - .connect(adr.gameMaster1.wallet) - .endTurn(1, votesShuffled, [], proposerIndex); - const scores = await env.rankifyInstance.getScores(1).then(v => v[1].map(i => i.toNumber())); + await rankifyInstance.connect(adr.gameMaster1.wallet).endTurn(1, votesShuffled, [], proposerIndex); + const scores = await rankifyInstance.getScores(1).then(v => v[1].map(i => i.toNumber())); expect(expectedScores).to.be.eql(scores); }); it('Emits correct ProposalScore event values', async () => { // await mineBlocks(RInstanceSettings.RInstance_TIME_PER_TURN + 1); const currentT = await time.latest(); await time.setNextBlockTimestamp(currentT + Number(RInstanceSettings.RInstance_TIME_PER_TURN) + 1); - expect(await env.rankifyInstance.getTurn(1)).to.be.equal(2); + expect(await rankifyInstance.getTurn(1)).to.be.equal(2); const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS); const expectedScores: number[] = players.map(v => 0); for (let i = 0; i < players.length; i++) { @@ -990,14 +1057,14 @@ describe(scriptName, () => { } } await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), [], votersAddresses.map((p, idx) => idx), ), ) - .to.emit(env.rankifyInstance, 'ProposalScore') + .to.emit(rankifyInstance, 'ProposalScore') .withArgs('1', '2', proposalsStruct[0].proposal, proposalsStruct[0].proposal, expectedScores[0]); }); }); @@ -1006,10 +1073,10 @@ describe(scriptName, () => { }); describe('When another game of first rank is created', () => { beforeEach(async () => { - await createGame(env.rankifyInstance, adr.gameCreator1, adr.gameMaster2.wallet.address, 1, true); + await createGame(rankifyInstance, adr.gameCreator1, adr.gameMaster2.wallet.address, 1, true); }); it('Reverts if players from another game tries to join', async () => { - await expect(env.rankifyInstance.connect(adr.player1.wallet).joinGame(2)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.player1.wallet).joinGame(2)).to.be.revertedWith( 'addPlayer->Player in game', ); }); @@ -1017,31 +1084,28 @@ describe(scriptName, () => { }); describe('When there is not enough players and join time is out', () => { beforeEach(async () => { - await fillParty(getPlayers(adr, RInstance_MIN_PLAYERS - 1), env.rankifyInstance, 1, true); + await fillParty(getPlayers(adr, RInstance_MIN_PLAYERS - 1), rankifyInstance, 1, true); }); it('It throws on game start', async () => { - await expect(env.rankifyInstance.connect(adr.gameCreator1.wallet).startGame(1)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.gameCreator1.wallet).startGame(1)).to.be.revertedWith( 'startGame->Not enough players', ); }); it('Allows creator can close the game', async () => { - await expect(env.rankifyInstance.connect(adr.gameCreator1.wallet).cancelGame(1)).to.emit( - env.rankifyInstance, + await expect(rankifyInstance.connect(adr.gameCreator1.wallet).cancelGame(1)).to.emit( + rankifyInstance, 'GameClosed', ); }); it('Allows player to leave the game', async () => { - await expect(env.rankifyInstance.connect(adr.player1.wallet).leaveGame(1)).to.emit( - env.rankifyInstance, - 'PlayerLeft', - ); + await expect(rankifyInstance.connect(adr.player1.wallet).leaveGame(1)).to.emit(rankifyInstance, 'PlayerLeft'); }); }); }); describe('When registration was open with additional join requirements', () => { beforeEach(async () => { - await env.rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement); - await env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1); + await rankifyInstance.connect(adr.gameCreator1.wallet).setJoinRequirements(1, requirement); + await rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1); const players = getPlayers(adr, RInstance_MAX_PLAYERS, 0); for (let i = 0; i < players.length; i++) { await env.mockERC1155 @@ -1053,28 +1117,28 @@ describe(scriptName, () => { await env.mockERC721.connect(adr.contractDeployer.wallet).mint(players[i].wallet.address, i + 1, '0x'); await env.mockERC20 .connect(players[i].wallet) - .approve(env.rankifyInstance.address, ethers.utils.parseEther('100')); - await env.mockERC1155.connect(players[i].wallet).setApprovalForAll(env.rankifyInstance.address, true); - await env.mockERC721.connect(players[i].wallet).setApprovalForAll(env.rankifyInstance.address, true); + .approve(rankifyInstance.address, ethers.utils.parseEther('100')); + await env.mockERC1155.connect(players[i].wallet).setApprovalForAll(rankifyInstance.address, true); + await env.mockERC721.connect(players[i].wallet).setApprovalForAll(rankifyInstance.address, true); } }); it('Fulfills funding requirement on join', async () => { await env.mockERC20 .connect(adr.player1.wallet) - .approve(env.rankifyInstance.address, ethers.utils.parseEther('100')); - const balance1155 = await env.mockERC1155.balanceOf(env.rankifyInstance.address, '1'); - await env.rankifyInstance.connect(adr.player1.wallet).joinGame(1, { value: ethers.utils.parseEther('0.4') }); - expect(await env.mockERC1155.balanceOf(env.rankifyInstance.address, '1')).to.be.equal( + .approve(rankifyInstance.address, ethers.utils.parseEther('100')); + const balance1155 = await env.mockERC1155.balanceOf(rankifyInstance.address, '1'); + await rankifyInstance.connect(adr.player1.wallet).joinGame(1, { value: ethers.utils.parseEther('0.4') }); + expect(await env.mockERC1155.balanceOf(rankifyInstance.address, '1')).to.be.equal( ethers.utils.parseEther('0.4'), ); - expect(await env.mockERC20.balanceOf(env.rankifyInstance.address)).to.be.equal(ethers.utils.parseEther('0.4')); + expect(await env.mockERC20.balanceOf(rankifyInstance.address)).to.be.equal(ethers.utils.parseEther('0.4')); }); it('Returns requirements on leave', async () => { await env.mockERC20 .connect(adr.player1.wallet) - .approve(env.rankifyInstance.address, ethers.utils.parseEther('100')); - await env.rankifyInstance.connect(adr.player1.wallet).joinGame(1, { value: ethers.utils.parseEther('0.4') }); - await env.rankifyInstance.connect(adr.player1.wallet).leaveGame(1); + .approve(rankifyInstance.address, ethers.utils.parseEther('100')); + await rankifyInstance.connect(adr.player1.wallet).joinGame(1, { value: ethers.utils.parseEther('0.4') }); + await rankifyInstance.connect(adr.player1.wallet).leaveGame(1); expect(await env.mockERC1155.balanceOf(adr.player1.wallet.address, '1')).to.be.equal( ethers.utils.parseEther('10'), ); @@ -1083,9 +1147,9 @@ describe(scriptName, () => { it('Returns requirements on game closed', async () => { await env.mockERC20 .connect(adr.player1.wallet) - .approve(env.rankifyInstance.address, ethers.utils.parseEther('100')); - await env.rankifyInstance.connect(adr.player1.wallet).joinGame(1, { value: ethers.utils.parseEther('0.4') }); - expect(await env.rankifyInstance.connect(adr.gameCreator1.wallet).cancelGame(1)).to.changeEtherBalance( + .approve(rankifyInstance.address, ethers.utils.parseEther('100')); + await rankifyInstance.connect(adr.player1.wallet).joinGame(1, { value: ethers.utils.parseEther('0.4') }); + expect(await rankifyInstance.connect(adr.gameCreator1.wallet).cancelGame(1)).to.changeEtherBalance( adr.player1.wallet.address, ethers.utils.parseEther('0.4'), ); @@ -1095,13 +1159,13 @@ describe(scriptName, () => { expect(await env.mockERC20.balanceOf(adr.player1.wallet.address)).to.be.equal(ethers.utils.parseEther('10')); }); it('Distributes rewards correctly when game is over', async () => { - await fillParty(getPlayers(adr, RInstance_MIN_PLAYERS, 0), env.rankifyInstance, 1, true, true, adr.gameMaster1); + await fillParty(getPlayers(adr, RInstance_MIN_PLAYERS, 0), rankifyInstance, 1, true, true, adr.gameMaster1); const balanceBefore1155 = await env.mockERC1155.balanceOf(adr.player1.wallet.address, '1'); const balanceBefore20 = await env.mockERC20.balanceOf(adr.player1.wallet.address); const creatorBalanceBefore20 = await env.mockERC20.balanceOf(adr.gameCreator1.wallet.address); const creatorBalanceBefore1155 = await env.mockERC1155.balanceOf(adr.gameCreator1.wallet.address, '1'); - await runToTheEnd(1, env.rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstance_MIN_PLAYERS, 0), 'ftw'); + await runToTheEnd(1, rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstance_MIN_PLAYERS, 0), 'ftw'); expect(await env.mockERC20.balanceOf(adr.player1.wallet.address)).to.be.equal( balanceBefore20 .add(ethers.utils.parseEther('0.1').mul(RInstance_MIN_PLAYERS)) @@ -1122,10 +1186,10 @@ describe(scriptName, () => { }); describe('When it is last turn and equal scores', () => { beforeEach(async () => { - await env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1); + await rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(1); await fillParty( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, true, true, @@ -1133,39 +1197,39 @@ describe(scriptName, () => { ); await runToLastTurn( 1, - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), 'equal', ); }); it('Next turn without winner brings Game is in overtime conditions', async () => { - let isGameOver = await env.rankifyInstance.isGameOver(1); + let isGameOver = await rankifyInstance.isGameOver(1); expect(isGameOver).to.be.false; await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, true, ); await mockValidVotes( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, adr.gameMaster1, true, 'equal', ); - await endTurn(1, env.rankifyInstance); + await endTurn(1, rankifyInstance); - expect(await env.rankifyInstance.isOvertime(1)).to.be.true; + expect(await rankifyInstance.isOvertime(1)).to.be.true; }); describe('when is ovetime', () => { beforeEach(async () => { await mockValidVotes( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, adr.gameMaster1, true, @@ -1173,17 +1237,17 @@ describe(scriptName, () => { ); await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, true, ); - await endTurn(1, env.rankifyInstance); + await endTurn(1, rankifyInstance); }); it('emits game Over when submited votes result unique leaders', async () => { await mockValidVotes( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, adr.gameMaster1, true, @@ -1191,24 +1255,24 @@ describe(scriptName, () => { ); const proposals = await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, true, ); expect( - await env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + await rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), proposals.map(p => p.proposal), proposalsStruct.map((p, idx) => idx), ), - ).to.emit(env.rankifyInstance, 'GameOver'); + ).to.emit(rankifyInstance, 'GameOver'); }); it("Keeps game in overtime when submited votes don't result unique leaders", async () => { await mockValidVotes( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, 1, adr.gameMaster1, true, @@ -1216,13 +1280,13 @@ describe(scriptName, () => { ); const proposals = await mockValidProposals( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, 1, true, ); - expect(await env.rankifyInstance.connect(adr.gameMaster1.wallet).isOvertime(1)).to.be.true; - expect(await env.rankifyInstance.connect(adr.gameMaster1.wallet).isGameOver(1)).to.be.false; + expect(await rankifyInstance.connect(adr.gameMaster1.wallet).isOvertime(1)).to.be.true; + expect(await rankifyInstance.connect(adr.gameMaster1.wallet).isGameOver(1)).to.be.false; }); }); @@ -1230,17 +1294,17 @@ describe(scriptName, () => { beforeEach(async () => { await runToTheEnd( 1, - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), ); }); it('Throws on attempt to make another turn', async () => { - const currentTurn = await env.rankifyInstance.getTurn(1); + const currentTurn = await rankifyInstance.getTurn(1); votes = await mockVotes({ gameId: 1, turn: currentTurn, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gm: adr.gameMaster1, distribution: 'ftw', @@ -1249,20 +1313,20 @@ describe(scriptName, () => { players: getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), gameId: 1, turn: currentTurn, - verifierAddress: env.rankifyInstance.address, + verifierAddress: rankifyInstance.address, gm: adr.gameMaster1, }); - const isover = await env.rankifyInstance.isGameOver(1); + const isover = await rankifyInstance.isGameOver(1); for (let i = 0; i < RInstanceSettings.RInstance_MAX_PLAYERS; i++) { const proposals = await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[i].params), + rankifyInstance.connect(adr.gameMaster1.wallet).submitProposal(proposalsStruct[i].params), ).to.be.revertedWith('Game over'); let name = `player${i + 1}` as any as keyof AdrSetupResult; await expect( - env.rankifyInstance + rankifyInstance .connect(adr.gameMaster1.wallet) .submitVote( 1, @@ -1272,7 +1336,7 @@ describe(scriptName, () => { ).to.be.revertedWith('Game over'); } await expect( - env.rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( + rankifyInstance.connect(adr.gameMaster1.wallet).endTurn( 1, votes.map(vote => vote.vote), [], @@ -1281,34 +1345,35 @@ describe(scriptName, () => { ).to.be.revertedWith('Game over'); }); it('Gave rewards to winners', async () => { - expect(await env.rankToken.balanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player2.wallet.address, 1)).to.be.equal(2); - expect(await env.rankToken.balanceOf(adr.player2.wallet.address, 2)).to.be.equal(0); - expect(await env.rankToken.balanceOf(adr.player3.wallet.address, 1)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player3.wallet.address, 2)).to.be.equal(0); + expect(await rankToken.balanceOf(adr.player2.wallet.address, 1)).to.be.equal(2); + expect(await rankToken.balanceOf(adr.player2.wallet.address, 2)).to.be.equal(0); + expect(await rankToken.balanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player3.wallet.address, 1)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player3.wallet.address, 2)).to.be.equal(0); }); it('Allows winner to create game of next rank', async () => { await expect( - env.rankifyInstance + rankifyInstance .connect(adr.player1.wallet) ['createGame(address,uint256)'](adr.gameMaster1.wallet.address, 2), - ).to.emit(env.rankifyInstance, 'gameCreated'); + ).to.emit(rankifyInstance, 'gameCreated'); }); describe('When game of next rank is created and opened', () => { beforeEach(async () => { - await env.rankifyInstance + await rankifyInstance .connect(adr.player1.wallet) ['createGame(address,uint256)'](adr.gameMaster1.wallet.address, 2); - await env.rankifyInstance.connect(adr.player1.wallet).openRegistration(2); + await rankifyInstance.connect(adr.player1.wallet).openRegistration(2); }); it('Can be joined only by rank token bearers', async () => { - expect(await env.rankToken.balanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); - await env.rankToken.connect(adr.player1.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await env.rankToken.connect(adr.player2.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await expect(env.rankifyInstance.connect(adr.player1.wallet).joinGame(2)) - .to.emit(env.rankifyInstance, 'PlayerJoined') + expect(await rankToken.balanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); + await rankToken.connect(adr.player1.wallet).setApprovalForAll(rankifyInstance.address, true); + await rankToken.connect(adr.player2.wallet).setApprovalForAll(rankifyInstance.address, true); + await expect(rankifyInstance.connect(adr.player1.wallet).joinGame(2)) + .to.emit(rankifyInstance, 'PlayerJoined') .withArgs(2, adr.player1.wallet.address); - await expect(env.rankifyInstance.connect(adr.player2.wallet).joinGame(2)).to.be.revertedWith( + await expect(rankifyInstance.connect(adr.player2.wallet).joinGame(2)).to.be.revertedWithCustomError( + rankToken, 'insufficient', ); }); @@ -1317,13 +1382,13 @@ describe(scriptName, () => { }); describe('When a game was played till end', () => { beforeEach(async () => { - const gameCreate = await env.rankifyInstance + const gameCreate = await rankifyInstance .connect(adr.gameCreator1.wallet) ['createGame(address,uint256,uint256)'](adr.gameMaster1.wallet.address, 3, 1); - const openRegistration = await env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(3); + const openRegistration = await rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(3); await fillParty( getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), - env.rankifyInstance, + rankifyInstance, 3, true, true, @@ -1331,33 +1396,30 @@ describe(scriptName, () => { ); await runToTheEnd( 3, - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstanceSettings.RInstance_MAX_PLAYERS), ); }); it('Allows players to join another game of same rank if they have rank token', async () => { - const gameCreate = await env.rankifyInstance + const gameCreate = await rankifyInstance .connect(adr.gameCreator1.wallet) ['createGame(address,uint256,uint256)'](adr.gameMaster1.wallet.address, 10, 1); const currentT = await time.latest(); await time.setNextBlockTimestamp(currentT + Number(RInstanceSettings.RInstance_TIME_TO_JOIN) + 1); - const openRegistration = await env.rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(10); - await env.rankToken.connect(adr.player1.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await expect(env.rankifyInstance.connect(adr.player1.wallet).joinGame(10)).to.emit( - env.rankifyInstance, - 'PlayerJoined', - ); + const openRegistration = await rankifyInstance.connect(adr.gameCreator1.wallet).openRegistration(10); + await rankToken.connect(adr.player1.wallet).setApprovalForAll(rankifyInstance.address, true); + await expect(rankifyInstance.connect(adr.player1.wallet).joinGame(10)).to.emit(rankifyInstance, 'PlayerJoined'); }); }); }); describe('When there was multiple first rank games played so higher rank game can be filled', () => { beforeEach(async () => { for (let numGames = 0; numGames < RInstanceSettings.RInstance_MAX_PLAYERS; numGames++) { - const gameId = await createGame(env.rankifyInstance, adr.gameCreator1, adr.gameMaster1.wallet.address, 1, true); + const gameId = await createGame(rankifyInstance, adr.gameCreator1, adr.gameMaster1.wallet.address, 1, true); await fillParty( getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS, numGames), - env.rankifyInstance, + rankifyInstance, gameId, true, true, @@ -1365,7 +1427,7 @@ describe(scriptName, () => { ); await runToTheEnd( gameId, - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS, numGames), ); @@ -1373,80 +1435,78 @@ describe(scriptName, () => { }); it('Winners have reward tokens', async () => { const balances: number[] = []; - balances[0] = await env.rankToken + balances[0] = await rankToken .balanceOf(adr.player1.wallet.address, 2) .then(balance => balances.push(balance.toNumber())); - expect(await env.rankToken.balanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player2.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player3.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player4.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player5.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player6.wallet.address, 2)).to.be.equal(1); - expect(await env.rankToken.balanceOf(adr.player7.wallet.address, 2)).to.be.equal(0); + expect(await rankToken.balanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player2.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player3.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player4.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player5.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player6.wallet.address, 2)).to.be.equal(1); + expect(await rankToken.balanceOf(adr.player7.wallet.address, 2)).to.be.equal(0); assert(RInstanceSettings.RInstance_MAX_PLAYERS == 6); }); describe('When game of next rank is created', () => { beforeEach(async () => { - await createGame(env.rankifyInstance, adr.player1, adr.gameMaster1.wallet.address, 2, true); + await createGame(rankifyInstance, adr.player1, adr.gameMaster1.wallet.address, 2, true); }); it('Can be joined only by bearers of rank token', async () => { - const lastCreatedGameId = await env.rankifyInstance.getContractState().then(r => r.BestOfState.numGames); - await env.rankToken.connect(adr.player2.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await expect(env.rankifyInstance.connect(adr.player2.wallet).joinGame(lastCreatedGameId)).to.emit( - env.rankifyInstance, + const lastCreatedGameId = await rankifyInstance.getContractState().then(r => r.BestOfState.numGames); + await rankToken.connect(adr.player2.wallet).setApprovalForAll(rankifyInstance.address, true); + await expect(rankifyInstance.connect(adr.player2.wallet).joinGame(lastCreatedGameId)).to.emit( + rankifyInstance, 'PlayerJoined', ); - await env.rankToken.connect(adr.maliciousActor1.wallet).setApprovalForAll(env.rankifyInstance.address, true); + await rankToken.connect(adr.maliciousActor1.wallet).setApprovalForAll(rankifyInstance.address, true); await expect( - env.rankifyInstance.connect(adr.maliciousActor1.wallet).joinGame(lastCreatedGameId), - ).to.be.revertedWith('insufficient'); + rankifyInstance.connect(adr.maliciousActor1.wallet).joinGame(lastCreatedGameId), + ).to.be.revertedWithCustomError(rankToken, 'insufficient'); }); it('Locks rank tokens when player joins', async () => { - const balance = await env.rankToken.balanceOf(adr.player1.wallet.address, 2); - const lastCreatedGameId = await env.rankifyInstance.getContractState().then(r => r.BestOfState.numGames); - await env.rankToken.connect(adr.player1.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await env.rankifyInstance.connect(adr.player1.wallet).joinGame(lastCreatedGameId); - const balance2 = await env.rankToken.balanceOf(adr.player1.wallet.address, 2); - expect(await env.rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal( - balance.toNumber() - 1, - ); + const balance = await rankToken.balanceOf(adr.player1.wallet.address, 2); + const lastCreatedGameId = await rankifyInstance.getContractState().then(r => r.BestOfState.numGames); + await rankToken.connect(adr.player1.wallet).setApprovalForAll(rankifyInstance.address, true); + await rankifyInstance.connect(adr.player1.wallet).joinGame(lastCreatedGameId); + const balance2 = await rankToken.balanceOf(adr.player1.wallet.address, 2); + expect(await rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(balance.toNumber() - 1); }); it('Returns rank token if player leaves game', async () => { - const lastCreatedGameId = await env.rankifyInstance.getContractState().then(r => r.BestOfState.numGames); - await env.rankToken.connect(adr.player1.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await env.rankifyInstance.connect(adr.player1.wallet).joinGame(lastCreatedGameId); - expect(await env.rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(0); - await env.rankifyInstance.connect(adr.player1.wallet).leaveGame(lastCreatedGameId); - expect(await env.rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); + const lastCreatedGameId = await rankifyInstance.getContractState().then(r => r.BestOfState.numGames); + await rankToken.connect(adr.player1.wallet).setApprovalForAll(rankifyInstance.address, true); + await rankifyInstance.connect(adr.player1.wallet).joinGame(lastCreatedGameId); + expect(await rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(0); + await rankifyInstance.connect(adr.player1.wallet).leaveGame(lastCreatedGameId); + expect(await rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(1); }); it('Returns rank token if was game closed', async () => { - const lastCreatedGameId = await env.rankifyInstance.getContractState().then(r => r.BestOfState.numGames); - await env.rankToken.connect(adr.player1.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await env.rankToken.connect(adr.player2.wallet).setApprovalForAll(env.rankifyInstance.address, true); - await env.rankifyInstance.connect(adr.player1.wallet).joinGame(lastCreatedGameId); - await env.rankifyInstance.connect(adr.player2.wallet).joinGame(lastCreatedGameId); - let p1balance = await env.rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2); + const lastCreatedGameId = await rankifyInstance.getContractState().then(r => r.BestOfState.numGames); + await rankToken.connect(adr.player1.wallet).setApprovalForAll(rankifyInstance.address, true); + await rankToken.connect(adr.player2.wallet).setApprovalForAll(rankifyInstance.address, true); + await rankifyInstance.connect(adr.player1.wallet).joinGame(lastCreatedGameId); + await rankifyInstance.connect(adr.player2.wallet).joinGame(lastCreatedGameId); + let p1balance = await rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2); p1balance = p1balance.add(1); - let p2balance = await env.rankToken.unlockedBalanceOf(adr.player2.wallet.address, 2); + let p2balance = await rankToken.unlockedBalanceOf(adr.player2.wallet.address, 2); p2balance = p2balance.add(1); - await env.rankifyInstance.connect(adr.player1.wallet).cancelGame(lastCreatedGameId); - expect(await env.rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(p1balance); - expect(await env.rankToken.unlockedBalanceOf(adr.player2.wallet.address, 2)).to.be.equal(p2balance); + await rankifyInstance.connect(adr.player1.wallet).cancelGame(lastCreatedGameId); + expect(await rankToken.unlockedBalanceOf(adr.player1.wallet.address, 2)).to.be.equal(p1balance); + expect(await rankToken.unlockedBalanceOf(adr.player2.wallet.address, 2)).to.be.equal(p2balance); }); describe('when this game is over', () => { const balancesBeforeJoined: BigNumber[] = []; beforeEach(async () => { const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS, 0); - const lastCreatedGameId = await env.rankifyInstance.getContractState().then(r => r.BestOfState.numGames); + const lastCreatedGameId = await rankifyInstance.getContractState().then(r => r.BestOfState.numGames); for (let i = 0; i < players.length; i++) { - balancesBeforeJoined[i] = await env.rankToken.unlockedBalanceOf(players[i].wallet.address, 2); + balancesBeforeJoined[i] = await rankToken.unlockedBalanceOf(players[i].wallet.address, 2); } - await fillParty(players, env.rankifyInstance, lastCreatedGameId, true, true, adr.gameMaster1); + await fillParty(players, rankifyInstance, lastCreatedGameId, true, true, adr.gameMaster1); await runToTheEnd( lastCreatedGameId, - env.rankifyInstance, + rankifyInstance, adr.gameMaster1, getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS), 'ftw', @@ -1456,7 +1516,7 @@ describe(scriptName, () => { const balances: number[] = []; const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS, 0); for (let i = 0; i < players.length; i++) { - balances[i] = await env.rankToken.balanceOf(players[i].wallet.address, 3).then(bn => bn.toNumber()); + balances[i] = await rankToken.balanceOf(players[i].wallet.address, 3).then(bn => bn.toNumber()); } expect(balances[0]).to.be.equal(1); expect(balances[1]).to.be.equal(0); @@ -1466,7 +1526,7 @@ describe(scriptName, () => { const balances: BigNumberish[] = []; const players = getPlayers(adr, RInstanceSettings.RInstance_MIN_PLAYERS, 0); for (let i = 0; i < players.length; i++) { - balances[i] = await env.rankToken.balanceOf(players[i].wallet.address, 2); + balances[i] = await rankToken.balanceOf(players[i].wallet.address, 2); } expect(balances[0]).to.be.equal(balancesBeforeJoined[0]); diff --git a/test/mock.ts b/test/mock.ts index 9e1d32ee..beb5d665 100644 --- a/test/mock.ts +++ b/test/mock.ts @@ -14,7 +14,6 @@ const setupTest = deployments.createFixture(async ({ deployments, getNamedAccoun describe('DiamondTest', async function () { let contract: any; beforeEach(async function () { - console.log('before'); contract = await setupTest(); }); it('emits fire all events', async () => { diff --git a/test/utils.ts b/test/utils.ts index 47ddfed8..c95aca21 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,6 +1,6 @@ - - - + + + // import { time } from "@openzeppelin/test-helpers"; import hre, { deployments, config } from 'hardhat'; import aes from 'crypto-js/aes'; @@ -14,6 +14,9 @@ import { RankToken, RankifyDiamondInstance, MultipassDiamond, + MAODistribution, + PeeramidLabsDistributor, + ArguableVotingTournament, } from '../types'; import { BigNumber, BigNumberish, BytesLike, Wallet } from 'ethers'; // @ts-ignore @@ -70,12 +73,14 @@ export interface AdrSetupResult { export interface EnvSetupResult { rankifyToken: Rankify; - rankifyInstance: RankifyDiamondInstance; + arguableVotingTournamentDistribution: ArguableVotingTournament; multipass: MultipassDiamond; - rankToken: RankToken; + rankTokenBase: RankToken; mockERC20: MockERC20; mockERC1155: MockERC1155; mockERC721: MockERC721; + maoDistribution: MAODistribution; + distributor: PeeramidLabsDistributor; } export const addPlayerNameId = (idx: any) => { return { name: `player-${idx}`, id: `player-${idx}-id` }; @@ -312,7 +317,7 @@ export const setupTest = deployments.createFixture(async ({ deployments, getName to: owner, value: _eth.utils.parseEther('1'), }); - await deployments.fixture(['rankify', 'multipass']); + await deployments.fixture(['MAO', 'multipass']); const MockERC20F = await _eth.getContractFactory('MockERC20', adr.contractDeployer.wallet); const mockERC20 = (await MockERC20F.deploy('Mock ERC20', 'MCK20', adr.contractDeployer.wallet.address)) as MockERC20; await mockERC20.deployed(); @@ -329,10 +334,13 @@ export const setupTest = deployments.createFixture(async ({ deployments, getName )) as MockERC721; await mockERC721.deployed(); const env = await setupEnvironment({ + distributor: await deployments.get('PeeramidLabsDistributor'), + mao: await deployments.get('MAODistribution'), RankifyToken: await deployments.get('Rankify'), - RankToken: await deployments.get('RankToken'), - RankifyInstance: await deployments.get('RankifyInstance'), + RankTokenBase: await deployments.get('RankToken'), + // RankifyInstance: await deployments.get('RankifyInstance'), multipass: await deployments.get('Multipass'), + arguableVotingTournamentDistribution: await deployments.get('ArguableVotingTournament'), mockERC20: mockERC20, mockERC721: mockERC721, mockERC1155: mockERC1155, @@ -386,35 +394,35 @@ export const setupTest = deployments.createFixture(async ({ deployments, getName await env.rankifyToken .connect(adr.gameOwner.wallet) .mint(adr.maliciousActor3.wallet.address, ethers.utils.parseEther('1000000')); - await env.rankifyToken - .connect(adr.gameCreator1.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken - .connect(adr.gameCreator2.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken - .connect(adr.gameCreator3.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player1.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player2.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player3.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player4.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player5.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player6.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player7.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player8.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player9.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken.connect(adr.player10.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - - await env.rankifyToken - .connect(adr.maliciousActor1.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken - .connect(adr.maliciousActor2.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); - await env.rankifyToken - .connect(adr.maliciousActor3.wallet) - .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken + // .connect(adr.gameCreator1.wallet) + // .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken + // .connect(adr.gameCreator2.wallet) + // .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken + // .connect(adr.gameCreator3.wallet) + // .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player1.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player2.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player3.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player4.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player5.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player6.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player7.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player8.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player9.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken.connect(adr.player10.wallet).approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + + // await env.rankifyToken + // .connect(adr.maliciousActor1.wallet) + // .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken + // .connect(adr.maliciousActor2.wallet) + // .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); + // await env.rankifyToken + // .connect(adr.maliciousActor3.wallet) + // .approve(env.rankifyInstance.address, ethers.constants.MaxUint256); return { adr, @@ -423,31 +431,48 @@ export const setupTest = deployments.createFixture(async ({ deployments, getName }); // export const setupTest = () => setupTest(); export const setupEnvironment = async (setup: { + distributor: Deployment; + mao: Deployment; RankifyToken: Deployment; - RankToken: Deployment; - RankifyInstance: Deployment; + RankTokenBase: Deployment; + // RankifyInstance: Deployment; mockERC20: MockERC20; mockERC721: MockERC721; mockERC1155: MockERC1155; multipass: Deployment; adr: AdrSetupResult; + arguableVotingTournamentDistribution: Deployment; }): Promise => { - const rankToken = (await ethers.getContractAt(setup.RankToken.abi, setup.RankToken.address)) as RankToken; + const rankTokenBase = (await ethers.getContractAt(setup.RankTokenBase.abi, setup.RankTokenBase.address)) as RankToken; const rankifyToken = (await ethers.getContractAt(setup.RankifyToken.abi, setup.RankifyToken.address)) as Rankify; - const rankifyInstance = (await ethers.getContractAt( - setup.RankifyInstance.abi, - setup.RankifyInstance.address, - )) as RankifyDiamondInstance; + // const rankifyInstance = (await ethers.getContractAt( + // setup.RankifyInstance.abi, + // setup.RankifyInstance.address, + // )) as RankifyDiamondInstance; const multipass = (await ethers.getContractAt(setup.multipass.abi, setup.multipass.address)) as MultipassDiamond; + const maoDistribution = (await ethers.getContractAt(setup.mao.abi, setup.mao.address)) as MAODistribution; + const distributor = (await ethers.getContractAt( + setup.distributor.abi, + setup.distributor.address, + )) as PeeramidLabsDistributor; + + const arguableVotingTournamentDistribution = (await ethers.getContractAt( + setup.arguableVotingTournamentDistribution.abi, + setup.arguableVotingTournamentDistribution.address, + )) as ArguableVotingTournament; + return { + maoDistribution, + distributor, rankifyToken, - rankifyInstance, + // rankifyInstance, multipass, - rankToken, + rankTokenBase, mockERC1155: setup.mockERC1155, mockERC20: setup.mockERC20, mockERC721: setup.mockERC721, + arguableVotingTournamentDistribution, }; }; @@ -926,29 +951,30 @@ export const signRegistrarMessage = async ( }; const getSuperInterface = () => { - let mergedArray: JsonFragment[] = []; - function readDirectory(directory: string) { - const files = fs.readdirSync(directory); - - files.forEach(file => { - const fullPath = path.join(directory, file); - if (fs.statSync(fullPath).isDirectory()) { - readDirectory(fullPath); // Recurse into subdirectories - } else if (path.extname(file) === '.json') { - const fileContents = require('../' + fullPath); // Load the JSON file - if (Array.isArray(fileContents)) { - mergedArray = mergedArray.concat(fileContents); // Merge the array from the JSON file - } + let mergedArray: JsonFragment[] = []; + function readDirectory(directory: string) { + const files = fs.readdirSync(directory); + + files.forEach(file => { + const fullPath = path.join(directory, file); + if (fs.statSync(fullPath).isDirectory()) { + readDirectory(fullPath); // Recurse into subdirectories + } else if (path.extname(file) === '.json') { + const fileContents = require('../' + fullPath); // Load the JSON file + if (Array.isArray(fileContents)) { + mergedArray = mergedArray.concat(fileContents); // Merge the array from the JSON file } - }); - } - const originalConsoleLog = console.log; - readDirectory('./abi'); - console.log = () => {}; // avoid noisy output - const result = new ethers.utils.Interface(mergedArray); - console.log = originalConsoleLog; - return result; - }; + } + }); + } + const originalConsoleLog = console.log; + readDirectory('./abi'); + readDirectory('./node_modules/@peeramid-labs/eds/abi'); + console.log = () => {}; // avoid noisy output + const result = new ethers.utils.Interface(mergedArray); + console.log = originalConsoleLog; + return result; +}; export default { setupAddresses, @@ -956,5 +982,5 @@ export default { addPlayerNameId, baseFee, signMessage: signRegistrarMessage, - getSuperInterface + getSuperInterface, };