diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 407b0e996..3c8de6ca7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,5 +16,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + with: + submodules: recursive + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 - name: Set up environment uses: ./.github/actions/setup \ No newline at end of file diff --git a/.gitignore b/.gitignore index ecd5f0d2c..55602edb4 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,8 @@ cached/ # Build artifacts dist/ build/ +typechain/ +typechain-types/ deployments/hardhat/ # Ignore solc bin output @@ -45,8 +47,10 @@ addresses-fork.json # Keys .keystore +# Forge artifacts +cache_forge # Graph client .graphclient tx-builder-*.json -!tx-builder-template.json \ No newline at end of file +!tx-builder-template.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..cfee24065 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "packages/subgraph-service/lib/forge-std"] + path = packages/subgraph-service/lib/forge-std + url = https://github.com/foundry-rs/forge-std diff --git a/README.md b/README.md index f9f736fb5..37a68d3d8 100644 --- a/README.md +++ b/README.md @@ -38,9 +38,10 @@ This repository is a Yarn workspaces monorepo containing the following packages: | --- | --- | --- | | [contracts](./packages/contracts) | [![npm version](https://badge.fury.io/js/@graphprotocol%2Fcontracts.svg)](https://badge.fury.io/js/@graphprotocol%2Fcontracts) | Contracts enabling the open and permissionless decentralized network known as The Graph protocol. | | [eslint-graph-config](./packages/eslint-graph-config) | [![npm version]()]() | Shared linting and formatting rules for TypeScript projects. | -| [token-distribution](./packages/token-distribution) | - | Contracts managing token locks for network participants | | [sdk](./packages/sdk) | [![npm version](https://badge.fury.io/js/@graphprotocol%2Fsdk.svg)](https://badge.fury.io/js/@graphprotocol%2Fsdk) | TypeScript based SDK to interact with the protocol contracts | | [solhint-graph-config](./packages/eslint-graph-config) | [![npm version]()]() | Shared linting and formatting rules for Solidity projects. | +| [subgraph-service](./packages/subgraph-service) | [![npm version]()]() | Contracts for the Subgraph data service in Graph Horizon. | +| [token-distribution](./packages/token-distribution) | - | Contracts managing token locks for network participants | ## Development diff --git a/package.json b/package.json index 90821c951..847f2c081 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "packages/eslint-graph-config", "packages/sdk", "packages/solhint-graph-config", + "packages/subgraph-service", "packages/token-distribution" ], "scripts": { diff --git a/packages/subgraph-service/README.md b/packages/subgraph-service/README.md new file mode 100644 index 000000000..7be82e5d6 --- /dev/null +++ b/packages/subgraph-service/README.md @@ -0,0 +1,13 @@ +# Sample Hardhat Project + +This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a script that deploys that contract. + +Try running some of the following tasks: + +```shell +npx hardhat help +npx hardhat test +REPORT_GAS=true npx hardhat test +npx hardhat node +npx hardhat run scripts/deploy.ts +``` diff --git a/packages/subgraph-service/contracts/Lock.sol b/packages/subgraph-service/contracts/Lock.sol new file mode 100644 index 000000000..cd5b72627 --- /dev/null +++ b/packages/subgraph-service/contracts/Lock.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.24; + +// Uncomment this line to use console.log +// import "hardhat/console.sol"; + +contract Lock { + uint256 public unlockTime; + address payable public owner; + + event Withdrawal(uint256 amount, uint256 when); + + constructor(uint256 _unlockTime) payable { + require(block.timestamp < _unlockTime, "Unlock time should be in the future"); + + unlockTime = _unlockTime; + owner = payable(msg.sender); + } + + function withdraw() public { + // Uncomment this line, and the import of "hardhat/console.sol", to print a log in your terminal + // console.log("Unlock time is %o and block timestamp is %o", unlockTime, block.timestamp); + + require(block.timestamp >= unlockTime, "You can't withdraw yet"); + require(msg.sender == owner, "You aren't the owner"); + + emit Withdrawal(address(this).balance, block.timestamp); + + owner.transfer(address(this).balance); + } +} diff --git a/packages/subgraph-service/eslint.config.js b/packages/subgraph-service/eslint.config.js new file mode 100644 index 000000000..db3d69955 --- /dev/null +++ b/packages/subgraph-service/eslint.config.js @@ -0,0 +1,12 @@ +// @ts-check +/* eslint-disable no-undef */ +/* eslint-disable @typescript-eslint/no-var-requires */ +/* eslint-disable @typescript-eslint/no-unsafe-assignment */ + +const eslintGraphConfig = require('eslint-graph-config') +module.exports = [ + ...eslintGraphConfig, + { + ignores: ['typechain-types/*'], + }, +] diff --git a/packages/subgraph-service/foundry.toml b/packages/subgraph-service/foundry.toml new file mode 100644 index 000000000..55f7ffd31 --- /dev/null +++ b/packages/subgraph-service/foundry.toml @@ -0,0 +1,6 @@ +[profile.default] +src = 'contracts' +out = 'build' +libs = ['node_modules', 'lib'] +test = 'test' +cache_path = 'cache_forge' \ No newline at end of file diff --git a/packages/subgraph-service/hardhat.config.ts b/packages/subgraph-service/hardhat.config.ts new file mode 100644 index 000000000..ac596d0aa --- /dev/null +++ b/packages/subgraph-service/hardhat.config.ts @@ -0,0 +1,12 @@ +import '@nomicfoundation/hardhat-foundry' +import '@nomicfoundation/hardhat-toolbox' +import { HardhatUserConfig } from 'hardhat/config' + +const config: HardhatUserConfig = { + solidity: '0.8.24', + paths: { + artifacts: './build/contracts', + }, +} + +export default config diff --git a/packages/subgraph-service/lib/forge-std b/packages/subgraph-service/lib/forge-std new file mode 160000 index 000000000..ae570fec0 --- /dev/null +++ b/packages/subgraph-service/lib/forge-std @@ -0,0 +1 @@ +Subproject commit ae570fec082bfe1c1f45b0acca4a2b4f84d345ce diff --git a/packages/subgraph-service/package.json b/packages/subgraph-service/package.json new file mode 100644 index 000000000..a1d19376e --- /dev/null +++ b/packages/subgraph-service/package.json @@ -0,0 +1,37 @@ +{ + "name": "@graphprotocol/subgraph-service", + "version": "0.0.1", + "description": "", + "author": "The Graph Team", + "license": "GPL-2.0-or-later", + "scripts": { + "lint:ts": "eslint '**/*.{js,ts}' --fix", + "lint:sol": "forge fmt", + "lint": "yarn lint:ts && yarn lint:sol", + "clean": "rm -rf build cache typechain-types", + "build": "hardhat compile" + }, + "devDependencies": { + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-foundry": "^1.1.1", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-toolbox": "^4.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@typechain/ethers-v6": "^0.5.0", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": ">=16.0.0", + "chai": "^4.2.0", + "eslint": "^8.56.0", + "eslint-graph-config": "workspace:^0.0.1", + "ethers": "^6.4.0", + "hardhat": "^2.20.1", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.0", + "ts-node": ">=8.0.0", + "typechain": "^8.3.0", + "typescript": "^5.3.3" + } +} diff --git a/packages/subgraph-service/scripts/deploy.ts b/packages/subgraph-service/scripts/deploy.ts new file mode 100644 index 000000000..cf87ff10f --- /dev/null +++ b/packages/subgraph-service/scripts/deploy.ts @@ -0,0 +1,28 @@ +import { ethers } from 'hardhat' + +async function main() { + const currentTimestampInSeconds = Math.round(Date.now() / 1000) + const unlockTime = currentTimestampInSeconds + 60 + + const lockedAmount = ethers.parseEther('0.001') + const a = 1 + console.log(a) + const lock = await ethers.deployContract('Lock', [unlockTime], { + value: lockedAmount, + }) + + await lock.waitForDeployment() + + console.log( + `Lock with ${ethers.formatEther( + lockedAmount, + )}ETH and unlock timestamp ${unlockTime} deployed to ${typeof lock.target == 'string' ? lock.target : ''}`, + ) +} + +// We recommend this pattern to be able to use async/await everywhere +// and properly handle errors. +main().catch((error) => { + console.error(error) + process.exitCode = 1 +}) diff --git a/packages/subgraph-service/test/Lock.ts b/packages/subgraph-service/test/Lock.ts new file mode 100644 index 000000000..b6ad2a1e3 --- /dev/null +++ b/packages/subgraph-service/test/Lock.ts @@ -0,0 +1,129 @@ +import { + loadFixture, + time, +} from '@nomicfoundation/hardhat-toolbox/network-helpers' +import { anyValue } from '@nomicfoundation/hardhat-chai-matchers/withArgs' +import { expect } from 'chai' +import hardhat from 'hardhat' + +const ethers = hardhat.ethers + +describe('Lock', function () { + // We define a fixture to reuse the same setup in every test. + // We use loadFixture to run this setup once, snapshot that state, + // and reset Hardhat Network to that snapshot in every test. + async function deployOneYearLockFixture() { + const ONE_YEAR_IN_SECS = 365 * 24 * 60 * 60 + const ONE_GWEI = 1_000_000_000 + + const lockedAmount = ONE_GWEI + const unlockTime = (await time.latest()) + ONE_YEAR_IN_SECS + + // Contracts are deployed using the first signer/account by default + const [owner, otherAccount] = await ethers.getSigners() + + const Lock = await ethers.getContractFactory('Lock') + const lock = await Lock.deploy(unlockTime, { value: lockedAmount }) + + return { lock, unlockTime, lockedAmount, owner, otherAccount } + } + + describe('Deployment', function () { + it('Should set the right unlockTime', async function () { + const { lock, unlockTime } = await loadFixture(deployOneYearLockFixture) + + expect(await lock.unlockTime()).to.equal(unlockTime) + }) + + it('Should set the right owner', async function () { + const { lock, owner } = await loadFixture(deployOneYearLockFixture) + + expect(await lock.owner()).to.equal(owner.address) + }) + + it('Should receive and store the funds to lock', async function () { + const { lock, lockedAmount } = await loadFixture( + deployOneYearLockFixture, + ) + + expect(await ethers.provider.getBalance(lock.target)).to.equal( + lockedAmount, + ) + }) + + it('Should fail if the unlockTime is not in the future', async function () { + // We don't use the fixture here because we want a different deployment + const latestTime = await time.latest() + const Lock = await ethers.getContractFactory('Lock') + await expect(Lock.deploy(latestTime, { value: 1 })).to.be.revertedWith( + 'Unlock time should be in the future', + ) + }) + }) + + describe('Withdrawals', function () { + describe('Validations', function () { + it('Should revert with the right error if called too soon', async function () { + const { lock } = await loadFixture(deployOneYearLockFixture) + + await expect(lock.withdraw()).to.be.revertedWith( + 'You can\'t withdraw yet', + ) + }) + + it('Should revert with the right error if called from another account', async function () { + const { lock, unlockTime, otherAccount } = await loadFixture( + deployOneYearLockFixture, + ) + + // We can increase the time in Hardhat Network + await time.increaseTo(unlockTime) + + // We use lock.connect() to send a transaction from another account + await expect(lock.connect(otherAccount).withdraw()).to.be.revertedWith( + 'You aren\'t the owner', + ) + }) + + it('Shouldn\'t fail if the unlockTime has arrived and the owner calls it', async function () { + const { lock, unlockTime } = await loadFixture( + deployOneYearLockFixture, + ) + + // Transactions are sent using the first signer by default + await time.increaseTo(unlockTime) + + await expect(lock.withdraw()).not.to.be.reverted + }) + }) + + describe('Events', function () { + it('Should emit an event on withdrawals', async function () { + const { lock, unlockTime, lockedAmount } = await loadFixture( + deployOneYearLockFixture, + ) + + await time.increaseTo(unlockTime) + + await expect(lock.withdraw()) + .to.emit(lock, 'Withdrawal') + .withArgs(lockedAmount, anyValue) // We accept any value as `when` arg + }) + }) + + describe('Transfers', function () { + it('Should transfer the funds to the owner', async function () { + const { lock, unlockTime, lockedAmount, owner } = await loadFixture( + deployOneYearLockFixture, + ) + + await time.increaseTo(unlockTime) + + await expect(lock.withdraw()).to.changeEtherBalances( + [owner, lock], + [lockedAmount, -lockedAmount], + ) + }) + }) + }) +}) diff --git a/packages/subgraph-service/tsconfig.json b/packages/subgraph-service/tsconfig.json new file mode 100644 index 000000000..eae4d97f2 --- /dev/null +++ b/packages/subgraph-service/tsconfig.json @@ -0,0 +1,17 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "skipLibCheck": true, + "resolveJsonModule": true + }, + "include": [ + "hardhat.config.ts", + "scripts/**/*.ts", + "test/**/*.ts", + "eslint.config.js" + ] +} diff --git a/yarn.lock b/yarn.lock index 14e5dcb52..652e12465 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,6 +24,13 @@ __metadata: languageName: node linkType: hard +"@adraffy/ens-normalize@npm:1.10.1": + version: 1.10.1 + resolution: "@adraffy/ens-normalize@npm:1.10.1" + checksum: fdd647604e8fac6204921888aaf5a6bc65eabf0d2921bc5f93b64d01f4bc33ead167c1445f7de05468d05cd92ac31b74c68d2be840c62b79d73693308f885c06 + languageName: node + linkType: hard + "@ampproject/remapping@npm:^2.2.0": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" @@ -1575,7 +1582,7 @@ __metadata: languageName: node linkType: hard -"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.0, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.5.0, @ethersproject/abi@npm:^5.6.0, @ethersproject/abi@npm:^5.6.3, @ethersproject/abi@npm:^5.7.0": +"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.0, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.5.0, @ethersproject/abi@npm:^5.6.0, @ethersproject/abi@npm:^5.6.3, @ethersproject/abi@npm:^5.7.0": version: 5.7.0 resolution: "@ethersproject/abi@npm:5.7.0" dependencies: @@ -2738,6 +2745,34 @@ __metadata: languageName: unknown linkType: soft +"@graphprotocol/subgraph-service@workspace:packages/subgraph-service": + version: 0.0.0-use.local + resolution: "@graphprotocol/subgraph-service@workspace:packages/subgraph-service" + dependencies: + "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.0" + "@nomicfoundation/hardhat-ethers": "npm:^3.0.0" + "@nomicfoundation/hardhat-foundry": "npm:^1.1.1" + "@nomicfoundation/hardhat-network-helpers": "npm:^1.0.0" + "@nomicfoundation/hardhat-toolbox": "npm:^4.0.0" + "@nomicfoundation/hardhat-verify": "npm:^2.0.0" + "@typechain/ethers-v6": "npm:^0.5.0" + "@typechain/hardhat": "npm:^9.0.0" + "@types/chai": "npm:^4.2.0" + "@types/mocha": "npm:>=9.1.0" + "@types/node": "npm:>=16.0.0" + chai: "npm:^4.2.0" + eslint: "npm:^8.56.0" + eslint-graph-config: "workspace:^0.0.1" + ethers: "npm:^6.4.0" + hardhat: "npm:^2.20.1" + hardhat-gas-reporter: "npm:^1.0.8" + solidity-coverage: "npm:^0.8.0" + ts-node: "npm:>=8.0.0" + typechain: "npm:^8.3.0" + typescript: "npm:^5.3.3" + languageName: unknown + linkType: soft + "@graphprotocol/token-distribution@workspace:packages/token-distribution": version: 0.0.0-use.local resolution: "@graphprotocol/token-distribution@workspace:packages/token-distribution" @@ -3805,6 +3840,15 @@ __metadata: languageName: node linkType: hard +"@noble/curves@npm:1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" + dependencies: + "@noble/hashes": "npm:1.3.2" + checksum: 0bac7d1bbfb3c2286910b02598addd33243cb97c3f36f987ecc927a4be8d7d88e0fcb12b0f0ef8a044e7307d1844dd5c49bb724bfa0a79c8ec50ba60768c97f6 + languageName: node + linkType: hard + "@noble/curves@npm:1.3.0, @noble/curves@npm:~1.3.0": version: 1.3.0 resolution: "@noble/curves@npm:1.3.0" @@ -3821,6 +3865,13 @@ __metadata: languageName: node linkType: hard +"@noble/hashes@npm:1.3.2": + version: 1.3.2 + resolution: "@noble/hashes@npm:1.3.2" + checksum: 2482cce3bce6a596626f94ca296e21378e7a5d4c09597cbc46e65ffacc3d64c8df73111f2265444e36a3168208628258bbbaccba2ef24f65f58b2417638a20e7 + languageName: node + linkType: hard + "@noble/hashes@npm:1.3.3, @noble/hashes@npm:~1.3.2": version: 1.3.3 resolution: "@noble/hashes@npm:1.3.3" @@ -3862,6 +3913,105 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/edr-darwin-arm64@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.2.1" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@nomicfoundation/edr-darwin-x64@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-darwin-x64@npm:0.2.1" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-arm64-gnu@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-linux-arm64-gnu@npm:0.2.1" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-arm64-musl@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-linux-arm64-musl@npm:0.2.1" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-x64-gnu@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-linux-x64-gnu@npm:0.2.1" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@nomicfoundation/edr-linux-x64-musl@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-linux-x64-musl@npm:0.2.1" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@nomicfoundation/edr-win32-arm64-msvc@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-win32-arm64-msvc@npm:0.2.1" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@nomicfoundation/edr-win32-ia32-msvc@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-win32-ia32-msvc@npm:0.2.1" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@nomicfoundation/edr-win32-x64-msvc@npm:0.2.1": + version: 0.2.1 + resolution: "@nomicfoundation/edr-win32-x64-msvc@npm:0.2.1" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"@nomicfoundation/edr@npm:^0.2.0": + version: 0.2.1 + resolution: "@nomicfoundation/edr@npm:0.2.1" + dependencies: + "@nomicfoundation/edr-darwin-arm64": "npm:0.2.1" + "@nomicfoundation/edr-darwin-x64": "npm:0.2.1" + "@nomicfoundation/edr-linux-arm64-gnu": "npm:0.2.1" + "@nomicfoundation/edr-linux-arm64-musl": "npm:0.2.1" + "@nomicfoundation/edr-linux-x64-gnu": "npm:0.2.1" + "@nomicfoundation/edr-linux-x64-musl": "npm:0.2.1" + "@nomicfoundation/edr-win32-arm64-msvc": "npm:0.2.1" + "@nomicfoundation/edr-win32-ia32-msvc": "npm:0.2.1" + "@nomicfoundation/edr-win32-x64-msvc": "npm:0.2.1" + dependenciesMeta: + "@nomicfoundation/edr-darwin-arm64": + optional: true + "@nomicfoundation/edr-darwin-x64": + optional: true + "@nomicfoundation/edr-linux-arm64-gnu": + optional: true + "@nomicfoundation/edr-linux-arm64-musl": + optional: true + "@nomicfoundation/edr-linux-x64-gnu": + optional: true + "@nomicfoundation/edr-linux-x64-musl": + optional: true + "@nomicfoundation/edr-win32-arm64-msvc": + optional: true + "@nomicfoundation/edr-win32-ia32-msvc": + optional: true + "@nomicfoundation/edr-win32-x64-msvc": + optional: true + checksum: e8956284c14fb47662c92368ed17d871a24876a27c2e6525c99fabfe41cadb7d6f403889802216691ba41c38ee055c9cd59befc48f7b8018002ac2d09d2da29b + languageName: node + linkType: hard + "@nomicfoundation/ethereumjs-block@npm:4.2.2": version: 4.2.2 resolution: "@nomicfoundation/ethereumjs-block@npm:4.2.2" @@ -4353,7 +4503,48 @@ __metadata: languageName: node linkType: hard -"@nomicfoundation/hardhat-network-helpers@npm:^1.0.9": +"@nomicfoundation/hardhat-chai-matchers@npm:^2.0.0": + version: 2.0.6 + resolution: "@nomicfoundation/hardhat-chai-matchers@npm:2.0.6" + dependencies: + "@types/chai-as-promised": "npm:^7.1.3" + chai-as-promised: "npm:^7.1.1" + deep-eql: "npm:^4.0.1" + ordinal: "npm:^1.0.3" + peerDependencies: + "@nomicfoundation/hardhat-ethers": ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + checksum: 0d65a0b0a552391ee3b20db9ffc9559138c02bc9c9cdd30106c9b5247d5a9e9b412480772faecab210a8cade0dfcddce3b04f5d3f3371e80085d6883a917dfe5 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-ethers@npm:^3.0.0": + version: 3.0.5 + resolution: "@nomicfoundation/hardhat-ethers@npm:3.0.5" + dependencies: + debug: "npm:^4.1.1" + lodash.isequal: "npm:^4.5.0" + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + checksum: 8253d107f956fbbfcb55b758cfd05159dcc77289bc115418626c3be32efeaced82c7dbfcb9d67ef0d9dccb6851e8588edeb228f325982ac3c61d7f605bcef009 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-foundry@npm:^1.1.1": + version: 1.1.1 + resolution: "@nomicfoundation/hardhat-foundry@npm:1.1.1" + dependencies: + chalk: "npm:^2.4.2" + peerDependencies: + hardhat: ^2.17.2 + checksum: e1f914bd705b93c9efc9f0b30eb178288504aede202ec00a9b03d3fa494baf175d0218ee678a328179b1ecfe18e16184888f671e8a03488e4ebfba0daf93a603 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-network-helpers@npm:^1.0.0, @nomicfoundation/hardhat-network-helpers@npm:^1.0.9": version: 1.0.10 resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.0.10" dependencies: @@ -4364,6 +4555,50 @@ __metadata: languageName: node linkType: hard +"@nomicfoundation/hardhat-toolbox@npm:^4.0.0": + version: 4.0.0 + resolution: "@nomicfoundation/hardhat-toolbox@npm:4.0.0" + peerDependencies: + "@nomicfoundation/hardhat-chai-matchers": ^2.0.0 + "@nomicfoundation/hardhat-ethers": ^3.0.0 + "@nomicfoundation/hardhat-network-helpers": ^1.0.0 + "@nomicfoundation/hardhat-verify": ^2.0.0 + "@typechain/ethers-v6": ^0.5.0 + "@typechain/hardhat": ^9.0.0 + "@types/chai": ^4.2.0 + "@types/mocha": ">=9.1.0" + "@types/node": ">=16.0.0" + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: ">=8.0.0" + typechain: ^8.3.0 + typescript: ">=4.5.0" + checksum: 9de2511cee509754afd4631f5f1497160bf4d3ecea741e9deeb22a6e662e16ce7ba37cffe836d30a958f08719c0c5906decc3c73df6a5d90c248b4654c8b15d1 + languageName: node + linkType: hard + +"@nomicfoundation/hardhat-verify@npm:^2.0.0": + version: 2.0.4 + resolution: "@nomicfoundation/hardhat-verify@npm:2.0.4" + dependencies: + "@ethersproject/abi": "npm:^5.1.2" + "@ethersproject/address": "npm:^5.0.2" + cbor: "npm:^8.1.0" + chalk: "npm:^2.4.2" + debug: "npm:^4.1.1" + lodash.clonedeep: "npm:^4.5.0" + semver: "npm:^6.3.0" + table: "npm:^6.8.0" + undici: "npm:^5.14.0" + peerDependencies: + hardhat: ^2.0.4 + checksum: 9003db2eb06aad8764473240d5ddb0cdef27b9bd7ed4586469aec8997d4556a1b1f11c537b567e3a30af694ac5d756dc9cccc52c14604e92d0dfdc964d12c6e8 + languageName: node + linkType: hard + "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.1": version: 0.1.1 resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.1" @@ -4988,6 +5223,13 @@ __metadata: languageName: node linkType: hard +"@solidity-parser/parser@npm:^0.18.0": + version: 0.18.0 + resolution: "@solidity-parser/parser@npm:0.18.0" + checksum: c54b4c9ba10e1fd1cd45894040135a39b9bc527f0ac40bec732d8628b0c0c7cb7ec2b7e816b408d613ab1d71c04f9555111ccc83b6dbaed2e39ff4ef7d000e25 + languageName: node + linkType: hard + "@stylistic/eslint-plugin-js@npm:1.6.2, @stylistic/eslint-plugin-js@npm:^1.6.2": version: 1.6.2 resolution: "@stylistic/eslint-plugin-js@npm:1.6.2" @@ -5184,6 +5426,20 @@ __metadata: languageName: node linkType: hard +"@typechain/ethers-v6@npm:^0.5.0": + version: 0.5.1 + resolution: "@typechain/ethers-v6@npm:0.5.1" + dependencies: + lodash: "npm:^4.17.15" + ts-essentials: "npm:^7.0.1" + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: ">=4.7.0" + checksum: f3c80151c07e01adbf520e0854426649edb0ee540920569487dd8da7eca2fa8615710f4c0eda008e7afdf255fbb8dfdebf721a5d324a4dffeb087611d9bd64b9 + languageName: node + linkType: hard + "@typechain/hardhat@npm:^2.0.0": version: 2.3.1 resolution: "@typechain/hardhat@npm:2.3.1" @@ -5197,6 +5453,20 @@ __metadata: languageName: node linkType: hard +"@typechain/hardhat@npm:^9.0.0": + version: 9.1.0 + resolution: "@typechain/hardhat@npm:9.1.0" + dependencies: + fs-extra: "npm:^9.1.0" + peerDependencies: + "@typechain/ethers-v6": ^0.5.1 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.2 + checksum: 3a1220efefc7b02ca335696167f6c5332a33ff3fbf9f20552468566a1760f76bc88d330683e97ca6213eb9518a2a901391c31c84c0548006b72bd2ec62d4af9c + languageName: node + linkType: hard + "@types/async-eventemitter@npm:^0.2.1": version: 0.2.4 resolution: "@types/async-eventemitter@npm:0.2.4" @@ -5246,7 +5516,7 @@ __metadata: languageName: node linkType: hard -"@types/chai-as-promised@npm:^7.1.5, @types/chai-as-promised@npm:^7.1.7": +"@types/chai-as-promised@npm:^7.1.3, @types/chai-as-promised@npm:^7.1.5, @types/chai-as-promised@npm:^7.1.7": version: 7.1.8 resolution: "@types/chai-as-promised@npm:7.1.8" dependencies: @@ -5255,7 +5525,7 @@ __metadata: languageName: node linkType: hard -"@types/chai@npm:*, @types/chai@npm:^4.3.9": +"@types/chai@npm:*, @types/chai@npm:^4.2.0, @types/chai@npm:^4.3.9": version: 4.3.12 resolution: "@types/chai@npm:4.3.12" checksum: e5d952726d7f053812579962b07d0e4965c160c6a90bf466580e639cd3a1f1d30da1abbfe782383538a043a07908f9dfb823fa9065b37752a5f27d62234f44d5 @@ -5421,7 +5691,7 @@ __metadata: languageName: node linkType: hard -"@types/mocha@npm:^10.0.3": +"@types/mocha@npm:>=9.1.0, @types/mocha@npm:^10.0.3": version: 10.0.6 resolution: "@types/mocha@npm:10.0.6" checksum: 4526c9e88388f9e1004c6d3937c5488a39908810f26b927173c58d52b43057f3895627dc06538e96706e08b88158885f869ec6311f6b58fd72bdef715f26d6c3 @@ -5468,6 +5738,22 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:18.15.13": + version: 18.15.13 + resolution: "@types/node@npm:18.15.13" + checksum: 6e5f61c559e60670a7a8fb88e31226ecc18a21be103297ca4cf9848f0a99049dae77f04b7ae677205f2af494f3701b113ba8734f4b636b355477a6534dbb8ada + languageName: node + linkType: hard + +"@types/node@npm:>=16.0.0": + version: 20.11.26 + resolution: "@types/node@npm:20.11.26" + dependencies: + undici-types: "npm:~5.26.4" + checksum: 2df81e4f109588c4c490f2c7d616a06d2b3b9298f217468134b80711af810c9a6017a59beb3e6b1c596eb9b6c5a39d33403b99179acb89006badfbc55f2468bb + languageName: node + linkType: hard + "@types/node@npm:^10.0.3": version: 10.17.60 resolution: "@types/node@npm:10.17.60" @@ -6199,6 +6485,13 @@ __metadata: languageName: node linkType: hard +"aes-js@npm:4.0.0-beta.5": + version: 4.0.0-beta.5 + resolution: "aes-js@npm:4.0.0-beta.5" + checksum: 444f4eefa1e602cbc4f2a3c644bc990f93fd982b148425fee17634da510586fc09da940dcf8ace1b2d001453c07ff042e55f7a0482b3cc9372bf1ef75479090c + languageName: node + linkType: hard + "aes-js@npm:^3.1.1": version: 3.1.2 resolution: "aes-js@npm:3.1.2" @@ -6497,6 +6790,20 @@ __metadata: languageName: node linkType: hard +"array-back@npm:^3.0.1, array-back@npm:^3.1.0": + version: 3.1.0 + resolution: "array-back@npm:3.1.0" + checksum: bb1fe86aa8b39c21e73c68c7abf8b05ed939b8951a3b17527217f6a2a84e00e4cfa4fdec823081689c5e216709bf1f214a4f5feeee6726eaff83897fa1a7b8ee + languageName: node + linkType: hard + +"array-back@npm:^4.0.1, array-back@npm:^4.0.2": + version: 4.0.2 + resolution: "array-back@npm:4.0.2" + checksum: 8beb5b4c9535eab2905d4ff7d16c4d90ee5ca080d2b26b1e637434c0fcfadb3585283524aada753bd5d06bb88a5dac9e175c3a236183741d3d795a69b6678c96 + languageName: node + linkType: hard + "array-buffer-byte-length@npm:^1.0.1": version: 1.0.1 resolution: "array-buffer-byte-length@npm:1.0.1" @@ -8930,6 +9237,30 @@ __metadata: languageName: node linkType: hard +"command-line-args@npm:^5.1.1": + version: 5.2.1 + resolution: "command-line-args@npm:5.2.1" + dependencies: + array-back: "npm:^3.1.0" + find-replace: "npm:^3.0.0" + lodash.camelcase: "npm:^4.3.0" + typical: "npm:^4.0.0" + checksum: a4f6a23a1e420441bd1e44dee24efd12d2e49af7efe6e21eb32fca4e843ca3d5501ddebad86a4e9d99aa626dd6dcb64c04a43695388be54e3a803dbc326cc89f + languageName: node + linkType: hard + +"command-line-usage@npm:^6.1.0": + version: 6.1.3 + resolution: "command-line-usage@npm:6.1.3" + dependencies: + array-back: "npm:^4.0.2" + chalk: "npm:^2.4.2" + table-layout: "npm:^1.0.2" + typical: "npm:^5.2.0" + checksum: 23d7577ccb6b6c004e67bb6a9a8cb77282ae7b7507ae92249a9548a39050b7602fef70f124c765000ab23b8f7e0fb7a3352419ab73ea42a2d9ea32f520cdfe9e + languageName: node + linkType: hard + "commander@npm:3.0.2": version: 3.0.2 resolution: "commander@npm:3.0.2" @@ -9567,7 +9898,7 @@ __metadata: languageName: node linkType: hard -"deep-eql@npm:^4.1.3": +"deep-eql@npm:^4.0.1, deep-eql@npm:^4.1.3": version: 4.1.3 resolution: "deep-eql@npm:4.1.3" dependencies: @@ -9590,7 +9921,7 @@ __metadata: languageName: node linkType: hard -"deep-extend@npm:^0.6.0": +"deep-extend@npm:^0.6.0, deep-extend@npm:~0.6.0": version: 0.6.0 resolution: "deep-extend@npm:0.6.0" checksum: 1c6b0abcdb901e13a44c7d699116d3d4279fdb261983122a3783e7273844d5f2537dc2e1c454a23fcf645917f93fbf8d07101c1d03c015a87faa662755212566 @@ -9837,6 +10168,15 @@ __metadata: languageName: node linkType: hard +"difflib@npm:^0.2.4": + version: 0.2.4 + resolution: "difflib@npm:0.2.4" + dependencies: + heap: "npm:>= 0.2.0" + checksum: 4b151f1f6d378b0837ef28f4706d89d05b78f1093253b06c975c621f7ef8b048978588baf9e8f284c64b133d0abb08303b0789519cc91e5180d420cb3bb99c05 + languageName: node + linkType: hard + "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -11213,6 +11553,21 @@ __metadata: languageName: node linkType: hard +"ethers@npm:^6.4.0": + version: 6.11.1 + resolution: "ethers@npm:6.11.1" + dependencies: + "@adraffy/ens-normalize": "npm:1.10.1" + "@noble/curves": "npm:1.2.0" + "@noble/hashes": "npm:1.3.2" + "@types/node": "npm:18.15.13" + aes-js: "npm:4.0.0-beta.5" + tslib: "npm:2.4.0" + ws: "npm:8.5.0" + checksum: 97a920e0244ba6cd1622b58a448c87f26dad20bad242777abb2e583d045bf7752218477bd7367ba6518c2a5e2b16030afff15e87b705526d0ea667498c27ac89 + languageName: node + linkType: hard + "ethjs-unit@npm:0.1.6": version: 0.1.6 resolution: "ethjs-unit@npm:0.1.6" @@ -11763,6 +12118,15 @@ __metadata: languageName: node linkType: hard +"find-replace@npm:^3.0.0": + version: 3.0.0 + resolution: "find-replace@npm:3.0.0" + dependencies: + array-back: "npm:^3.0.1" + checksum: fcd1bf7960388c8193c2861bcdc760c18ac14edb4bde062a961915d9a25727b2e8aabf0229e90cc09c753fd557e5a3e5ae61e49cadbe727be89a9e8e49ce7668 + languageName: node + linkType: hard + "find-up@npm:5.0.0, find-up@npm:^5.0.0": version: 5.0.0 resolution: "find-up@npm:5.0.0" @@ -12379,6 +12743,20 @@ __metadata: languageName: node linkType: hard +"glob@npm:7.1.7": + version: 7.1.7 + resolution: "glob@npm:7.1.7" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.0.4" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 173245e6f9ccf904309eb7ef4a44a11f3bf68e9e341dff5a28b5db0dd7123b7506daf41497f3437a0710f57198187b758c2351eeaabce4d16935e956920da6a4 + languageName: node + linkType: hard + "glob@npm:7.2.0": version: 7.2.0 resolution: "glob@npm:7.2.0" @@ -12843,7 +13221,7 @@ __metadata: languageName: node linkType: hard -"hardhat-gas-reporter@npm:^1.0.1, hardhat-gas-reporter@npm:^1.0.4": +"hardhat-gas-reporter@npm:^1.0.1, hardhat-gas-reporter@npm:^1.0.4, hardhat-gas-reporter@npm:^1.0.8": version: 1.0.10 resolution: "hardhat-gas-reporter@npm:1.0.10" dependencies: @@ -12912,6 +13290,67 @@ __metadata: languageName: node linkType: hard +"hardhat@npm:^2.20.1": + version: 2.21.0 + resolution: "hardhat@npm:2.21.0" + dependencies: + "@ethersproject/abi": "npm:^5.1.2" + "@metamask/eth-sig-util": "npm:^4.0.0" + "@nomicfoundation/edr": "npm:^0.2.0" + "@nomicfoundation/ethereumjs-common": "npm:4.0.4" + "@nomicfoundation/ethereumjs-tx": "npm:5.0.4" + "@nomicfoundation/ethereumjs-util": "npm:9.0.4" + "@nomicfoundation/solidity-analyzer": "npm:^0.1.0" + "@sentry/node": "npm:^5.18.1" + "@types/bn.js": "npm:^5.1.0" + "@types/lru-cache": "npm:^5.1.0" + adm-zip: "npm:^0.4.16" + aggregate-error: "npm:^3.0.0" + ansi-escapes: "npm:^4.3.0" + boxen: "npm:^5.1.2" + chalk: "npm:^2.4.2" + chokidar: "npm:^3.4.0" + ci-info: "npm:^2.0.0" + debug: "npm:^4.1.1" + enquirer: "npm:^2.3.0" + env-paths: "npm:^2.2.0" + ethereum-cryptography: "npm:^1.0.3" + ethereumjs-abi: "npm:^0.6.8" + find-up: "npm:^2.1.0" + fp-ts: "npm:1.19.3" + fs-extra: "npm:^7.0.1" + glob: "npm:7.2.0" + immutable: "npm:^4.0.0-rc.12" + io-ts: "npm:1.10.4" + keccak: "npm:^3.0.2" + lodash: "npm:^4.17.11" + mnemonist: "npm:^0.38.0" + mocha: "npm:^10.0.0" + p-map: "npm:^4.0.0" + raw-body: "npm:^2.4.1" + resolve: "npm:1.17.0" + semver: "npm:^6.3.0" + solc: "npm:0.7.3" + source-map-support: "npm:^0.5.13" + stacktrace-parser: "npm:^0.1.10" + tsort: "npm:0.0.1" + undici: "npm:^5.14.0" + uuid: "npm:^8.3.2" + ws: "npm:^7.4.6" + peerDependencies: + ts-node: "*" + typescript: "*" + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + bin: + hardhat: internal/cli/bootstrap.js + checksum: d7c887d147ddbd0792b5e64abfd8200c233a1815b91af908f68b167067e109f9ab6e0892d130137a745c6139bae691cee62a8e993290d4fc0a2a733e5dcce324 + languageName: node + linkType: hard + "hardhat@npm:^2.6.1, hardhat@npm:^2.6.4": version: 2.20.1 resolution: "hardhat@npm:2.20.1" @@ -13236,6 +13675,13 @@ __metadata: languageName: node linkType: hard +"heap@npm:>= 0.2.0": + version: 0.2.7 + resolution: "heap@npm:0.2.7" + checksum: 341c5d51ae13dc8346c371a8a69c57c972fcb9a3233090d3dd5ba29d483d6b5b4e75492443cbfeacd46608bb30e6680f646ffb7a6205900221735587d07a79b6 + languageName: node + linkType: hard + "helmet@npm:5.0.2": version: 5.0.2 resolution: "helmet@npm:5.0.2" @@ -17201,6 +17647,13 @@ __metadata: languageName: node linkType: hard +"ordinal@npm:^1.0.3": + version: 1.0.3 + resolution: "ordinal@npm:1.0.3" + checksum: faa276fc1b1660477fd5c8749323c9715ae4f482c21fb8e67e57d1eb57845ba1b902796ecdcf6405325a8c3b042360970f5dc3b7f8cc7d79e0b2a756ab09174d + languageName: node + linkType: hard + "os-homedir@npm:^1.0.0": version: 1.0.2 resolution: "os-homedir@npm:1.0.2" @@ -18083,7 +18536,7 @@ __metadata: languageName: node linkType: hard -"prettier@npm:^2.1.2, prettier@npm:^2.7.1, prettier@npm:^2.8.3": +"prettier@npm:^2.1.2, prettier@npm:^2.3.1, prettier@npm:^2.7.1, prettier@npm:^2.8.3": version: 2.8.8 resolution: "prettier@npm:2.8.8" bin: @@ -18758,6 +19211,13 @@ __metadata: languageName: node linkType: hard +"reduce-flatten@npm:^2.0.0": + version: 2.0.0 + resolution: "reduce-flatten@npm:2.0.0" + checksum: 9275064535bc070a787824c835a4f18394942f8a78f08e69fb500920124ce1c46a287c8d9e565a7ffad8104875a6feda14efa8e951e8e4585370b8ff007b0abd + languageName: node + linkType: hard + "regenerate@npm:^1.2.1": version: 1.4.2 resolution: "regenerate@npm:1.4.2" @@ -20215,6 +20675,37 @@ __metadata: languageName: node linkType: hard +"solidity-coverage@npm:^0.8.0": + version: 0.8.11 + resolution: "solidity-coverage@npm:0.8.11" + dependencies: + "@ethersproject/abi": "npm:^5.0.9" + "@solidity-parser/parser": "npm:^0.18.0" + chalk: "npm:^2.4.2" + death: "npm:^1.1.0" + difflib: "npm:^0.2.4" + fs-extra: "npm:^8.1.0" + ghost-testrpc: "npm:^0.0.2" + global-modules: "npm:^2.0.0" + globby: "npm:^10.0.1" + jsonschema: "npm:^1.2.4" + lodash: "npm:^4.17.15" + mocha: "npm:^10.2.0" + node-emoji: "npm:^1.10.0" + pify: "npm:^4.0.1" + recursive-readdir: "npm:^2.2.2" + sc-istanbul: "npm:^0.4.5" + semver: "npm:^7.3.4" + shelljs: "npm:^0.8.3" + web3-utils: "npm:^1.3.6" + peerDependencies: + hardhat: ^2.11.0 + bin: + solidity-coverage: plugins/bin.js + checksum: de26a3bdece5b36005fcf84b4c4e9e0affc2822d69c823d925f439876c3d5c7b1fc83d447745c6aae994ad0e5c02f4c031d4d9b2d5613184d9286116857e6437 + languageName: node + linkType: hard + "sonic-boom@npm:^2.2.1": version: 2.8.0 resolution: "sonic-boom@npm:2.8.0" @@ -20521,6 +21012,13 @@ __metadata: languageName: node linkType: hard +"string-format@npm:^2.0.0": + version: 2.0.0 + resolution: "string-format@npm:2.0.0" + checksum: 7bca13ba9f942f635c74d637da5e9e375435cbd428f35eeef28c3a30f81d4e63b95ff2c6cca907d897dd3951bbf52e03e3b945a0e9681358e33bd67222436538 + languageName: node + linkType: hard + "string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.0.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.2, string-width@npm:^4.2.3": version: 4.2.3 resolution: "string-width@npm:4.2.3" @@ -20841,6 +21339,18 @@ __metadata: languageName: node linkType: hard +"table-layout@npm:^1.0.2": + version: 1.0.2 + resolution: "table-layout@npm:1.0.2" + dependencies: + array-back: "npm:^4.0.1" + deep-extend: "npm:~0.6.0" + typical: "npm:^5.2.0" + wordwrapjs: "npm:^4.0.0" + checksum: c1d16d5ba2199571606ff574a5c91cff77f14e8477746e191e7dfd294da03e61af4e8004f1f6f783da9582e1365f38d3c469980428998750d558bf29462cc6c3 + languageName: node + linkType: hard + "table@npm:^6.8.0, table@npm:^6.8.1": version: 6.8.1 resolution: "table@npm:6.8.1" @@ -21206,6 +21716,20 @@ __metadata: languageName: node linkType: hard +"ts-command-line-args@npm:^2.2.0": + version: 2.5.1 + resolution: "ts-command-line-args@npm:2.5.1" + dependencies: + chalk: "npm:^4.1.0" + command-line-args: "npm:^5.1.1" + command-line-usage: "npm:^6.1.0" + string-format: "npm:^2.0.0" + bin: + write-markdown: dist/write-markdown.js + checksum: affb43fd4e17b496b6fd195888c7a80e6d7fe54f121501926bb2376f2167c238f7fa8f2e2d98bf2498ff883240d9f914e3558701807f40dca882616a8fd763b1 + languageName: node + linkType: hard + "ts-essentials@npm:^1.0.0": version: 1.0.4 resolution: "ts-essentials@npm:1.0.4" @@ -21250,7 +21774,7 @@ __metadata: languageName: node linkType: hard -"ts-node@npm:^10.9.1": +"ts-node@npm:>=8.0.0, ts-node@npm:^10.9.1": version: 10.9.2 resolution: "ts-node@npm:10.9.2" dependencies: @@ -21299,6 +21823,13 @@ __metadata: languageName: node linkType: hard +"tslib@npm:2.4.0": + version: 2.4.0 + resolution: "tslib@npm:2.4.0" + checksum: eb19bda3ae545b03caea6a244b34593468e23d53b26bf8649fbc20fce43e9b21a71127fd6d2b9662c0fe48ee6ff668ead48fd00d3b88b2b716b1c12edae25b5d + languageName: node + linkType: hard + "tslib@npm:^1.11.1, tslib@npm:^1.9.0, tslib@npm:^1.9.3": version: 1.14.1 resolution: "tslib@npm:1.14.1" @@ -21518,6 +22049,28 @@ __metadata: languageName: node linkType: hard +"typechain@npm:^8.3.0": + version: 8.3.2 + resolution: "typechain@npm:8.3.2" + dependencies: + "@types/prettier": "npm:^2.1.1" + debug: "npm:^4.3.1" + fs-extra: "npm:^7.0.0" + glob: "npm:7.1.7" + js-sha3: "npm:^0.8.0" + lodash: "npm:^4.17.15" + mkdirp: "npm:^1.0.4" + prettier: "npm:^2.3.1" + ts-command-line-args: "npm:^2.2.0" + ts-essentials: "npm:^7.0.1" + peerDependencies: + typescript: ">=4.3.0" + bin: + typechain: dist/cli/cli.js + checksum: 1ea660cc7c699c6ac68da67b76454eb4e9395c54666d924ca67f983ae8eb5b5e7dab0a576beb55dbfad75ea784a3f68cb1ca019d332293b7291731c156ead5b5 + languageName: node + linkType: hard + "typed-array-buffer@npm:^1.0.1": version: 1.0.2 resolution: "typed-array-buffer@npm:1.0.2" @@ -21691,6 +22244,20 @@ __metadata: languageName: node linkType: hard +"typical@npm:^4.0.0": + version: 4.0.0 + resolution: "typical@npm:4.0.0" + checksum: f300b198fb9fe743859b75ec761d53c382723dc178bbce4957d9cb754f2878a44ce17dc0b6a5156c52be1065449271f63754ba594dac225b80ce3aa39f9241ed + languageName: node + linkType: hard + +"typical@npm:^5.2.0": + version: 5.2.0 + resolution: "typical@npm:5.2.0" + checksum: 1cceaa20d4b77a02ab8eccfe4a20500729431aecc1e1b7dc70c0e726e7966efdca3bf0b4bee285555b751647e37818fd99154ea73f74b5c29adc95d3c13f5973 + languageName: node + linkType: hard + "ua-parser-js@npm:^1.0.35": version: 1.0.37 resolution: "ua-parser-js@npm:1.0.37" @@ -22962,7 +23529,7 @@ __metadata: languageName: node linkType: hard -"web3-utils@npm:^1.0.0-beta.31, web3-utils@npm:^1.3.0": +"web3-utils@npm:^1.0.0-beta.31, web3-utils@npm:^1.3.0, web3-utils@npm:^1.3.6": version: 1.10.4 resolution: "web3-utils@npm:1.10.4" dependencies: @@ -23263,6 +23830,16 @@ __metadata: languageName: node linkType: hard +"wordwrapjs@npm:^4.0.0": + version: 4.0.1 + resolution: "wordwrapjs@npm:4.0.1" + dependencies: + reduce-flatten: "npm:^2.0.0" + typical: "npm:^5.2.0" + checksum: 4cc43eb0f6adb7214d427e68918357a9df483815efbb4c59beb30972714b1804ede2a551b1dfd2234c0bd413c6f07d6daa6522d1c53f43f89a376d815fbf3c43 + languageName: node + linkType: hard + "workerpool@npm:6.2.1": version: 6.2.1 resolution: "workerpool@npm:6.2.1" @@ -23350,6 +23927,21 @@ __metadata: languageName: node linkType: hard +"ws@npm:8.5.0": + version: 8.5.0 + resolution: "ws@npm:8.5.0" + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + checksum: 0baeee03e97865accda8fad51e8e5fa17d19b8e264529efdf662bbba2acc1c7f1de8316287e6df5cb639231a96009e6d5234b57e6ff36ee2d04e49a0995fec2f + languageName: node + linkType: hard + "ws@npm:^3.0.0": version: 3.3.3 resolution: "ws@npm:3.3.3"