diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index a6736f0..92da946 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -37,18 +37,18 @@ jobs:
changed-files:
runs-on: ubuntu-latest
outputs:
- any_changed: ${{ steps.changed-files.outputs.any_changed }}
- modified_files: ${{ steps.changed-files.outputs.modified_files }}
+ any_sol_changed: ${{ steps.changed-files.outputs.any_changed }}
+ changed_files: ${{ steps.changed-files.outputs.all_changed_and_modified_files }}
steps:
- uses: actions/checkout@v4
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v44
with:
- files: packages/**/*.{sol,json,ts}
+ files: packages/**/*.sol
compile:
- if: needs.changed-files.outputs.any_changed == 'true'
+ if: needs.changed-files.outputs.any_sol_changed == 'true'
needs: [changed-files, deps]
runs-on: ubuntu-latest
steps:
@@ -56,18 +56,20 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 20
+ # forge needs some deps coming from node_modules, so we need to restore it
- uses: actions/cache/restore@v4
with:
path: node_modules
key: ${{ needs.deps.outputs.cache-key }}
-
- - run: yarn compile
-
+ - uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly
+ - run: forge compile
- name: Upload compilation results
uses: actions/upload-artifact@v4
with:
- name: all-artifacts
- path: packages/**/artifacts/**
+ name: out
+ path: out/**
style:
needs: deps
@@ -77,6 +79,9 @@ jobs:
- uses: actions/setup-node@v4
with:
node-version: 20
+ - uses: foundry-rs/foundry-toolchain@v1
+ with:
+ version: nightly
- uses: actions/cache/restore@v4
with:
path: node_modules
@@ -84,43 +89,35 @@ jobs:
- run: yarn format
tests:
- if: needs.changed-files.outputs.any_changed == 'true'
- needs: [changed-files, set-matrix, deps, compile]
+ if: needs.changed-files.outputs.any_sol_changed == 'true'
+ needs: [changed-files, deps, compile]
runs-on: ubuntu-latest
- strategy:
- matrix:
- dir: ${{ fromJson(needs.set-matrix.outputs.matrix) }}
-
steps:
- uses: actions/checkout@v4
- - uses: actions/setup-node@v4
+ - uses: actions/download-artifact@v4
with:
- node-version: 20
+ name: out
+ path: out/
+ # forge needs some deps coming from node_modules, so we need to restore it
- uses: actions/cache/restore@v4
with:
path: node_modules
key: ${{ needs.deps.outputs.cache-key }}
- - uses: actions/download-artifact@v4
+ - uses: foundry-rs/foundry-toolchain@v1
with:
- name: all-artifacts
- path: packages/
+ version: nightly
- - if: contains(needs.changed-files.outputs.modified_files, matrix.dir)
- name: Test
- run: |
- workspace=$(jq -r '.name' packages/${{ matrix.dir }}/package.json)
- yarn workspace "$workspace" run test:coverage
+ - run: forge coverage --report lcov
- - if: contains(needs.changed-files.outputs.modified_files, matrix.dir) && github.event_name == 'push' && github.ref == 'refs/heads/main'
+ - if: github.event_name == 'pull_request' && github.ref == 'refs/pull/32/merge' # TODO: switch back to push & refs/heads/main checks
name: Coveralls
uses: coverallsapp/github-action@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- parallel: true
- flag-name: run ${{ join(matrix.*, '-') }}
+ file: lcov.info
set-matrix:
- if: needs.changed-files.outputs.any_changed == 'true'
+ if: needs.changed-files.outputs.any_sol_changed == 'true'
needs: changed-files
runs-on: ubuntu-latest
outputs:
@@ -134,8 +131,8 @@ jobs:
echo "matrix=$matrix" >> $GITHUB_OUTPUT
slither:
- if: needs.changed-files.outputs.any_changed == 'true'
- needs: [changed-files, set-matrix, deps]
+ if: needs.changed-files.outputs.any_sol_changed == 'true'
+ needs: [changed-files, compile, set-matrix]
runs-on: ubuntu-latest
permissions:
contents: read
@@ -145,27 +142,12 @@ jobs:
dir: ${{ fromJson(needs.set-matrix.outputs.matrix) }}
steps:
- uses: actions/checkout@v4
-
- # FIXME this does not work as a way to restore compilation results for slither job but it does for the compile job ??
- #- uses: actions/download-artifact@v4
- # with:
- # name: all-artifacts
- # path: packages/
-
- - uses: actions/setup-node@v4
- with:
- node-version: 20
- - uses: actions/cache/restore@v4
+ - uses: actions/download-artifact@v4
with:
- path: node_modules
- key: ${{ needs.deps.outputs.cache-key }}
- - if: contains(needs.changed-files.outputs.modified_files, matrix.dir)
- name: Compile contracts
- run: |
- workspace=$(jq -r '.name' packages/${{ matrix.dir }}/package.json)
- yarn workspace "$workspace" run compile
+ name: out
+ path: out/
- - if: contains(needs.changed-files.outputs.modified_files, matrix.dir)
+ - if: contains(needs.changed-files.outputs.changed_files, matrix.dir)
name: Run slither
uses: crytic/slither-action@v0.4.0
id: slither
@@ -177,7 +159,7 @@ jobs:
slither-args: --filter-paths "test" --exclude-dependencies --markdown-root ${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/
target: packages/${{ matrix.dir }}
- - if: contains(needs.changed-files.outputs.modified_files, matrix.dir)
+ - if: contains(needs.changed-files.outputs.changed_files, matrix.dir)
name: Upload SARIF files
uses: github/codeql-action/upload-sarif@v3
with:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8348888..2c34202 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -5,13 +5,10 @@ permissions:
on:
push:
- tags:
- - "*"
-
+ tags: ["*"]
jobs:
- release:
+ npm:
runs-on: ubuntu-latest
-
steps:
- uses: actions/checkout@v4
with:
@@ -34,10 +31,18 @@ jobs:
run: yarn
- name: Publish packages
- run: yarn version:publish
+ run: yarn workspaces foreach -A --no-private npm publish --tolerate-republish --access public
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- - run: yarn version:release
+ - run: yarn changelogithub
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+
+ forge:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - uses: fregante/setup-git-user@v2.0.1
+ - name: Push contracts to forge branch
+ run: scripts/publish-for-forge.sh
diff --git a/.gitignore b/.gitignore
index eac0556..c106522 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,28 +1,14 @@
# Logs
logs
*.log
-npm-debug.log*
yarn-debug.log*
yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
# IDE
.vscode
.idea
-# Cargo
-target
-
# Testing
coverage
coverage.json
@@ -31,27 +17,9 @@ coverage.json
# Dependency directories
node_modules/
-# Parcel cache
-.parcel-cache
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Output of 'npm pack'
-*.tgz
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Yarn Integrity file
-.yarn-integrity
-
-# Generate output
-dist
-build
+# Forge
+out
+lcov.info
# Hardhat
artifacts
@@ -65,8 +33,6 @@ typechain-types
.env.production.local
.env.local
-# Optional npm cache directory
-.npm
.DS_Store
# yarn v3
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..888d42d
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "lib/forge-std"]
+ path = lib/forge-std
+ url = https://github.com/foundry-rs/forge-std
diff --git a/.lintstagedrc.json b/.lintstagedrc.json
index 909fefa..6ffbd5e 100644
--- a/.lintstagedrc.json
+++ b/.lintstagedrc.json
@@ -1,3 +1,4 @@
{
- "**/*.{js,ts,md,json,sol,yml,yaml}": "prettier --write"
+ "**/*.{js,ts,md,json,yml,yaml}": "yarn prettier --write",
+ "**/*.sol": "forge fmt"
}
diff --git a/.prettierignore b/.prettierignore
index 1d5a624..02b5139 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -1,6 +1,5 @@
# dependencies
node_modules
-package-lock.json
yarn.lock
.yarn
@@ -8,13 +7,9 @@ yarn.lock
coverage
coverage.json
-# hardhat
-cache
-typechain-types
-
-# production
-dist
-build
+# forge
+out
+lib
# github
.github/ISSUE_TEMPLATE
@@ -24,9 +19,5 @@ build
*.pem
# debug
-npm-debug.log*
yarn-debug.log*
yarn-error.log*
-
-# others
-target
diff --git a/packages/excubiae/.solhint.json b/.solhint.json
similarity index 100%
rename from packages/excubiae/.solhint.json
rename to .solhint.json
diff --git a/README.md b/README.md
index bcce619..75ac5d0 100644
--- a/README.md
+++ b/README.md
@@ -60,7 +60,15 @@
- Circom: https://github.com/privacy-scaling-explorations/zk-kit.circom
- Noir: https://github.com/privacy-scaling-explorations/zk-kit.noir
-## 📦 Packages
+## Install
+
+### ⚒️ [Forge](https://book.getfoundry.sh/)
+
+```commandline
+forge install privacy-scaling-explorations/zk-kit.solidity@forge
+```
+
+### 📦 Node Packages
@@ -146,7 +176,7 @@
- 🚀 Share ideas for new [features](https://github.com/privacy-scaling-explorations/zk-kit.solidity/issues/new?assignees=&labels=feature+%3Arocket%3A&template=---feature.md&title=)
- 🐛 Create a report if you find any [bugs](https://github.com/privacy-scaling-explorations/zk-kit.solidity/issues/new?assignees=&labels=bug+%F0%9F%90%9B&template=---bug.md&title=) in the code
-## 🛠 Install
+## 🛠 Develop
Clone this repository:
@@ -160,9 +190,9 @@ and install the dependencies:
cd zk-kit.solidity && yarn
```
-## 📜 Usage
+### 📜 Usage
-### Code formatting
+#### Code formatting
Run [Prettier](https://prettier.io/) to check formatting rules:
@@ -176,7 +206,7 @@ or to automatically format the code:
yarn format:write
```
-### Conventional commits
+#### Conventional commits
Semaphore uses [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/). A [command line utility](https://github.com/commitizen/cz-cli) to commit using the correct syntax can be used by running:
@@ -186,7 +216,7 @@ yarn commit
It will also automatically check that the modified files comply with ESLint and Prettier rules.
-### Testing
+#### Testing
Test the code:
@@ -194,7 +224,7 @@ Test the code:
yarn test
```
-### Build
+#### Build
Compile all contracts:
@@ -202,7 +232,7 @@ Compile all contracts:
yarn compile
```
-### Releases
+#### Releases
1. Bump a new version of the package with:
diff --git a/foundry.toml b/foundry.toml
new file mode 100644
index 0000000..9d0e2a3
--- /dev/null
+++ b/foundry.toml
@@ -0,0 +1,6 @@
+[profile.default]
+src = 'packages'
+test = 'packages'
+
+# TODO: update, temporarily ignoring all except lean-imt
+no_match_coverage = "^packages/(excubiae|imt|lazy-imt|lazytower)"
diff --git a/lib/forge-std b/lib/forge-std
new file mode 160000
index 0000000..07263d1
--- /dev/null
+++ b/lib/forge-std
@@ -0,0 +1 @@
+Subproject commit 07263d193d621c4b2b0ce8b4d54af58f6957d97d
diff --git a/package.json b/package.json
index 952df05..eaa846d 100644
--- a/package.json
+++ b/package.json
@@ -7,14 +7,10 @@
"bugs": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/issues",
"private": true,
"scripts": {
- "compile": "yarn workspaces foreach -Ap run compile",
- "test": "yarn workspaces foreach -Ap run test:coverage",
- "version:bump": "yarn workspace @zk-kit/${0}.sol version ${1} && yarn remove:stable-version-field ${0} && NO_HOOK=1 git commit -am \"chore(${0}): v${1}\" && git tag ${0}.sol-v${1}",
- "version:publish": "yarn workspaces foreach -A --no-private npm publish --tolerate-republish --access public",
- "version:release": "changelogithub",
- "format": "prettier -c .",
- "format:write": "prettier -w .",
- "remove:stable-version-field": "ts-node scripts/remove-stable-version-field.ts ${0} && yarn format:write",
+ "test": "forge test",
+ "version:bump": "scripts/version-bump.sh",
+ "format": "prettier -c . && forge fmt --check",
+ "format:write": "prettier -w . && forge fmt",
"postinstall": "husky && git config --local core.editor cat"
},
"keywords": [
@@ -31,14 +27,10 @@
"devDependencies": {
"@commitlint/cli": "^18.6.1",
"@commitlint/config-conventional": "^18.6.2",
- "@types/glob": "^7.2.0",
- "@types/node": "^20",
"changelogithub": "patch:changelogithub@npm%3A0.13.3#~/.yarn/patches/changelogithub-npm-0.13.3-1783949906.patch",
"czg": "^1.9.1",
"husky": "^9.0.11",
"lint-staged": "^15.2.2",
- "prettier": "^3.2.5",
- "ts-node": "^10.9.2",
- "typescript": "^5.3.3"
+ "prettier": "^3.2.5"
}
}
diff --git a/packages/excubiae/.prettierrc.json b/packages/excubiae/.prettierrc.json
deleted file mode 100644
index 717fb52..0000000
--- a/packages/excubiae/.prettierrc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "semi": false,
- "arrowParens": "always",
- "trailingComma": "none",
- "plugins": ["prettier-plugin-solidity"]
-}
diff --git a/packages/excubiae/LICENSE b/packages/excubiae/LICENSE
index 89a15f7..30cff74 120000
--- a/packages/excubiae/LICENSE
+++ b/packages/excubiae/LICENSE
@@ -1 +1 @@
-contracts/LICENSE
\ No newline at end of file
+../../LICENSE
\ No newline at end of file
diff --git a/packages/excubiae/README.md b/packages/excubiae/README.md
deleted file mode 120000
index 1ee0442..0000000
--- a/packages/excubiae/README.md
+++ /dev/null
@@ -1 +0,0 @@
-contracts/README.md
\ No newline at end of file
diff --git a/packages/excubiae/README.md b/packages/excubiae/README.md
new file mode 100644
index 0000000..71a4bac
--- /dev/null
+++ b/packages/excubiae/README.md
@@ -0,0 +1,85 @@
+
+
+ Excubiae
+
+ A flexible and modular framework for general-purpose on-chain gatekeepers.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> [!NOTE]
+> This library is experimental and untested yet - use at your own discretion...
+
+Excubiae is a generalized framework for on-chain gatekeepers that allows developers to define custom access control mechanisms using different on-chain credentials. By abstracting the gatekeeper logic, excubiae provides a reusable and composable solution for securing decentralised applications. This package provides a pre-defined set of specific excubia (_extensions_) for credentials based on different protocols.
+
+## 🛠 Install
+
+### npm or yarn
+
+Install the ` @zk-kit/excubiae` package with npm:
+
+```bash
+npm i @zk-kit/excubiae --save
+```
+
+or yarn:
+
+```bash
+yarn add @zk-kit/excubiae
+```
+
+## 📜 Usage
+
+To build your own Excubia:
+
+1. Inherit from the [Excubia](./Excubia.sol) abstract contract that conforms to the [IExcubia](./IExcubia.sol) interface.
+2. Implement the `_check()` and `_pass()` methods logic defining your own checks to prevent unwanted access as sybils or avoid to pass the gate twice with the same data / identity.
+
+```solidity
+// SPDX-License-Identifier: MIT
+pragma solidity >=0.8.0;
+
+import { Excubia } from "excubiae/contracts/Excubia.sol";
+
+contract MyExcubia is Excubia {
+ // ...
+
+ function _pass(address passerby, bytes calldata data) internal override {
+ // Implement your logic to prevent unwanted access here.
+ }
+
+ function _check(address passerby, bytes calldata data) internal view override returns (bool) {
+ // Implement custom access control logic here.
+
+ return true;
+ }
+
+ // ...
+}
+```
+
+Please see the [extensions](./extensions/) folder for more complex reference implementations and the [test contracts](./test) folder for guidance on using the libraries.
diff --git a/packages/excubiae/contracts/README.md b/packages/excubiae/contracts/README.md
deleted file mode 100644
index 71a4bac..0000000
--- a/packages/excubiae/contracts/README.md
+++ /dev/null
@@ -1,85 +0,0 @@
-
-
- Excubiae
-
- A flexible and modular framework for general-purpose on-chain gatekeepers.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [!NOTE]
-> This library is experimental and untested yet - use at your own discretion...
-
-Excubiae is a generalized framework for on-chain gatekeepers that allows developers to define custom access control mechanisms using different on-chain credentials. By abstracting the gatekeeper logic, excubiae provides a reusable and composable solution for securing decentralised applications. This package provides a pre-defined set of specific excubia (_extensions_) for credentials based on different protocols.
-
-## 🛠 Install
-
-### npm or yarn
-
-Install the ` @zk-kit/excubiae` package with npm:
-
-```bash
-npm i @zk-kit/excubiae --save
-```
-
-or yarn:
-
-```bash
-yarn add @zk-kit/excubiae
-```
-
-## 📜 Usage
-
-To build your own Excubia:
-
-1. Inherit from the [Excubia](./Excubia.sol) abstract contract that conforms to the [IExcubia](./IExcubia.sol) interface.
-2. Implement the `_check()` and `_pass()` methods logic defining your own checks to prevent unwanted access as sybils or avoid to pass the gate twice with the same data / identity.
-
-```solidity
-// SPDX-License-Identifier: MIT
-pragma solidity >=0.8.0;
-
-import { Excubia } from "excubiae/contracts/Excubia.sol";
-
-contract MyExcubia is Excubia {
- // ...
-
- function _pass(address passerby, bytes calldata data) internal override {
- // Implement your logic to prevent unwanted access here.
- }
-
- function _check(address passerby, bytes calldata data) internal view override returns (bool) {
- // Implement custom access control logic here.
-
- return true;
- }
-
- // ...
-}
-```
-
-Please see the [extensions](./extensions/) folder for more complex reference implementations and the [test contracts](./test) folder for guidance on using the libraries.
diff --git a/packages/excubiae/contracts/package.json b/packages/excubiae/contracts/package.json
deleted file mode 100644
index cf72aea..0000000
--- a/packages/excubiae/contracts/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "@zk-kit/excubiae",
- "version": "0.0.1",
- "description": "A general purpose on-chain gatekeeping smart contract framework.",
- "license": "MIT",
- "files": [
- "*.sol",
- "!test/*",
- "README.md",
- "LICENSE"
- ],
- "keywords": [
- "blockchain",
- "ethereum",
- "hardhat",
- "smart-contracts",
- "solidity",
- "libraries",
- "gatekeepers",
- "credentials"
- ],
- "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
- "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/gatekeepers",
- "publishConfig": {
- "access": "public"
- },
- "dependencies": {
- "@ethereum-attestation-service/eas-contracts": "1.7.1",
- "@openzeppelin/contracts": "5.0.2",
- "@semaphore-protocol/contracts": "4.0.0-beta.16"
- }
-}
diff --git a/packages/excubiae/hardhat.config.ts b/packages/excubiae/hardhat.config.ts
deleted file mode 100644
index 955f613..0000000
--- a/packages/excubiae/hardhat.config.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import "@nomicfoundation/hardhat-toolbox"
-import { HardhatUserConfig } from "hardhat/config"
-
-const hardhatConfig: HardhatUserConfig = {
- solidity: {
- version: "0.8.23",
- settings: {
- optimizer: {
- enabled: true
- }
- }
- },
- gasReporter: {
- currency: "USD",
- enabled: process.env.REPORT_GAS === "true"
- },
- typechain: {
- target: "ethers-v6"
- }
-}
-
-export default hardhatConfig
diff --git a/packages/excubiae/package.json b/packages/excubiae/package.json
index e4b83ce..1388c18 100644
--- a/packages/excubiae/package.json
+++ b/packages/excubiae/package.json
@@ -1,37 +1,29 @@
{
- "name": "excubiae",
- "description": "a flexible & modular framework for general purpose on-chain gatekeepers.",
- "private": true,
- "scripts": {
- "start": "hardhat node",
- "compile": "hardhat compile",
- "test": "hardhat test",
- "test:report-gas": "REPORT_GAS=true hardhat test",
- "test:coverage": "hardhat coverage",
- "typechain": "hardhat typechain",
- "lint": "solhint 'contracts/**/*.sol'"
+ "name": "@zk-kit/excubiae",
+ "version": "0.0.1",
+ "description": "A general purpose on-chain gatekeeping smart contract framework.",
+ "license": "MIT",
+ "files": [
+ "src"
+ ],
+ "keywords": [
+ "blockchain",
+ "ethereum",
+ "forge",
+ "smart-contracts",
+ "solidity",
+ "libraries",
+ "excubiae",
+ "credentials"
+ ],
+ "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
+ "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/excubiae",
+ "publishConfig": {
+ "access": "public"
},
- "devDependencies": {
- "@nomicfoundation/hardhat-chai-matchers": "^2.0.3",
- "@nomicfoundation/hardhat-ethers": "^3.0.0",
- "@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": "^10.0.6",
- "@types/node": "^20.10.7",
- "chai": "^4.2.0",
- "ethers": "^6.4.0",
- "hardhat": "^2.19.4",
- "hardhat-gas-reporter": "^1.0.8",
- "prettier-plugin-solidity": "^1.3.1",
- "solhint": "^3.3.6",
- "solhint-plugin-prettier": "^0.1.0",
- "solidity-coverage": "^0.8.0",
- "ts-node": "^10.9.2",
- "typechain": "^8.3.0",
- "typescript": "^5.3.3"
+ "dependencies": {
+ "@ethereum-attestation-service/eas-contracts": "1.7.1",
+ "@openzeppelin/contracts": "5.0.2",
+ "@semaphore-protocol/contracts": "4.0.0-beta.16"
}
}
diff --git a/packages/excubiae/contracts/Excubia.sol b/packages/excubiae/src/Excubia.sol
similarity index 100%
rename from packages/excubiae/contracts/Excubia.sol
rename to packages/excubiae/src/Excubia.sol
diff --git a/packages/excubiae/contracts/IExcubia.sol b/packages/excubiae/src/IExcubia.sol
similarity index 100%
rename from packages/excubiae/contracts/IExcubia.sol
rename to packages/excubiae/src/IExcubia.sol
diff --git a/packages/excubiae/contracts/extensions/EASExcubia.sol b/packages/excubiae/src/extensions/EASExcubia.sol
similarity index 100%
rename from packages/excubiae/contracts/extensions/EASExcubia.sol
rename to packages/excubiae/src/extensions/EASExcubia.sol
diff --git a/packages/excubiae/contracts/extensions/ERC721Excubia.sol b/packages/excubiae/src/extensions/ERC721Excubia.sol
similarity index 100%
rename from packages/excubiae/contracts/extensions/ERC721Excubia.sol
rename to packages/excubiae/src/extensions/ERC721Excubia.sol
diff --git a/packages/excubiae/contracts/extensions/FreeForAllExcubia.sol b/packages/excubiae/src/extensions/FreeForAllExcubia.sol
similarity index 100%
rename from packages/excubiae/contracts/extensions/FreeForAllExcubia.sol
rename to packages/excubiae/src/extensions/FreeForAllExcubia.sol
diff --git a/packages/excubiae/contracts/extensions/SemaphoreExcubia.sol b/packages/excubiae/src/extensions/SemaphoreExcubia.sol
similarity index 100%
rename from packages/excubiae/contracts/extensions/SemaphoreExcubia.sol
rename to packages/excubiae/src/extensions/SemaphoreExcubia.sol
diff --git a/packages/excubiae/tasks/.gitkeep b/packages/excubiae/tasks/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/packages/excubiae/test/EASExcubia.test.ts b/packages/excubiae/test/EASExcubia.test.ts
deleted file mode 100644
index a74a8f1..0000000
--- a/packages/excubiae/test/EASExcubia.test.ts
+++ /dev/null
@@ -1,190 +0,0 @@
-import { expect } from "chai"
-import { ethers } from "hardhat"
-import { AbiCoder, Signer, ZeroAddress, toBeHex, zeroPadBytes } from "ethers"
-import { EASExcubia, EASExcubia__factory, MockEAS, MockEAS__factory } from "../typechain-types"
-
-describe("EASExcubia", function () {
- let MockEASContract: MockEAS__factory
- let EASExcubiaContract: EASExcubia__factory
- let easExcubia: EASExcubia
-
- let signer: Signer
- let signerAddress: string
-
- let gate: Signer
- let gateAddress: string
-
- let mockEAS: MockEAS
- let mockEASAddress: string
-
- const schemaId = "0xfdcfdad2dbe7489e0ce56b260348b7f14e8365a8a325aef9834818c00d46b31b"
- const validAttestationId = AbiCoder.defaultAbiCoder().encode(["bytes32"], [zeroPadBytes(toBeHex(1), 32)])
- const revokedAttestationId = AbiCoder.defaultAbiCoder().encode(["bytes32"], [zeroPadBytes(toBeHex(2), 32)])
- const invalidSchemaAttestationId = AbiCoder.defaultAbiCoder().encode(["bytes32"], [zeroPadBytes(toBeHex(3), 32)])
- const invalidRecipientAttestationId = AbiCoder.defaultAbiCoder().encode(["bytes32"], [zeroPadBytes(toBeHex(4), 32)])
- const invalidAttesterAttestationId = AbiCoder.defaultAbiCoder().encode(["bytes32"], [zeroPadBytes(toBeHex(5), 32)])
-
- before(async function () {
- ;[signer, gate] = await ethers.getSigners()
- signerAddress = await signer.getAddress()
- gateAddress = await gate.getAddress()
-
- MockEASContract = await ethers.getContractFactory("MockEAS")
- mockEAS = await MockEASContract.deploy(signerAddress, signerAddress, schemaId)
- mockEASAddress = await mockEAS.getAddress()
-
- EASExcubiaContract = await ethers.getContractFactory("EASExcubia")
- easExcubia = await EASExcubiaContract.deploy(mockEASAddress, signerAddress, schemaId)
- })
-
- describe("constructor()", function () {
- it("Should deploy the EASExcubia contract correctly", async function () {
- expect(easExcubia).to.not.eq(undefined)
- })
-
- it("Should deploy the MockEAS contract correctly", async function () {
- expect(mockEAS).to.not.eq(undefined)
- })
-
- it("Should fail to deploy EASExcubia when eas parameter is not valid", async () => {
- await expect(EASExcubiaContract.deploy(ZeroAddress, ZeroAddress, schemaId)).to.be.revertedWithCustomError(
- easExcubia,
- "ZeroAddress"
- )
- })
-
- it("Should fail to deploy EASExcubia when attester parameter is not valid", async () => {
- await expect(
- EASExcubiaContract.deploy(await easExcubia.getAddress(), ZeroAddress, schemaId)
- ).to.be.revertedWithCustomError(easExcubia, "ZeroAddress")
- })
- })
-
- describe("setGate()", function () {
- it("should fail to set the gate when the caller is not the owner", async () => {
- const [, notOwnerSigner] = await ethers.getSigners()
-
- await expect(easExcubia.connect(notOwnerSigner).setGate(gateAddress)).to.be.revertedWithCustomError(
- easExcubia,
- "OwnableUnauthorizedAccount"
- )
- })
-
- it("should fail to set the gate when the gate address is zero", async () => {
- await expect(easExcubia.setGate(ZeroAddress)).to.be.revertedWithCustomError(easExcubia, "ZeroAddress")
- })
-
- it("Should set the gate contract address correctly", async function () {
- const tx = await easExcubia.setGate(gateAddress)
- const receipt = await tx.wait()
- const event = EASExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await easExcubia.gate()).to.eq(gateAddress)
- })
-
- it("Should fail to set the gate if already set", async function () {
- await expect(easExcubia.setGate(gateAddress)).to.be.revertedWithCustomError(easExcubia, "GateAlreadySet")
- })
- })
-
- describe("check()", function () {
- it("should throw when the attestation is not owned by the correct recipient", async () => {
- await expect(easExcubia.check(signerAddress, invalidRecipientAttestationId)).to.be.revertedWithCustomError(
- easExcubia,
- "UnexpectedRecipient"
- )
- })
-
- it("should throw when the attestation has been revoked", async () => {
- await expect(easExcubia.check(signerAddress, revokedAttestationId)).to.be.revertedWithCustomError(
- easExcubia,
- "RevokedAttestation"
- )
- })
-
- it("should throw when the attestation schema is not the one expected", async () => {
- await expect(easExcubia.check(signerAddress, invalidSchemaAttestationId)).to.be.revertedWithCustomError(
- easExcubia,
- "UnexpectedSchema"
- )
- })
-
- it("should throw when the attestation is not signed by the attestation owner", async () => {
- await expect(easExcubia.check(signerAddress, invalidAttesterAttestationId)).to.be.revertedWithCustomError(
- easExcubia,
- "UnexpectedAttester"
- )
- })
-
- it("should pass the check", async () => {
- await expect(easExcubia.check(signerAddress, validAttestationId)).to.not.be.reverted
-
- // check does NOT change the state of the contract (see pass()).
- expect(await easExcubia.registeredAttestations(validAttestationId)).to.be.false
- })
- })
-
- describe("pass()", function () {
- it("should throw when the callee is not the gate", async () => {
- await expect(
- easExcubia.connect(signer).pass(signerAddress, invalidRecipientAttestationId)
- ).to.be.revertedWithCustomError(easExcubia, "GateOnly")
- })
-
- it("should throw when the attestation is not owned by the correct recipient", async () => {
- await expect(
- easExcubia.connect(gate).pass(signerAddress, invalidRecipientAttestationId)
- ).to.be.revertedWithCustomError(easExcubia, "UnexpectedRecipient")
- })
-
- it("should throw when the attestation has been revoked", async () => {
- await expect(
- easExcubia.connect(gate).pass(signerAddress, revokedAttestationId)
- ).to.be.revertedWithCustomError(easExcubia, "RevokedAttestation")
- })
-
- it("should throw when the attestation schema is not the one expected", async () => {
- await expect(
- easExcubia.connect(gate).pass(signerAddress, invalidSchemaAttestationId)
- ).to.be.revertedWithCustomError(easExcubia, "UnexpectedSchema")
- })
-
- it("should throw when the attestation is not signed by the attestation owner", async () => {
- await expect(
- easExcubia.connect(gate).pass(signerAddress, invalidAttesterAttestationId)
- ).to.be.revertedWithCustomError(easExcubia, "UnexpectedAttester")
- })
-
- it("should pass the check", async () => {
- const tx = await easExcubia.connect(gate).pass(signerAddress, validAttestationId)
- const receipt = await tx.wait()
- const event = EASExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- passerby: string
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.passerby).to.eq(signerAddress)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await easExcubia.registeredAttestations(validAttestationId)).to.be.true
- })
-
- it("should prevent to pass twice", async () => {
- await expect(
- easExcubia.connect(gate).pass(signerAddress, validAttestationId)
- ).to.be.revertedWithCustomError(easExcubia, "AlreadyPassed")
- })
- })
-})
diff --git a/packages/excubiae/test/ERC721Excubia.test.ts b/packages/excubiae/test/ERC721Excubia.test.ts
deleted file mode 100644
index f527e0b..0000000
--- a/packages/excubiae/test/ERC721Excubia.test.ts
+++ /dev/null
@@ -1,157 +0,0 @@
-import { expect } from "chai"
-import { ethers } from "hardhat"
-import { AbiCoder, Signer, ZeroAddress } from "ethers"
-import { ERC721Excubia, ERC721Excubia__factory, MockERC721, MockERC721__factory } from "../typechain-types"
-
-describe("ERC721Excubia", function () {
- let MockERC721Contract: MockERC721__factory
- let ERC721ExcubiaContract: ERC721Excubia__factory
- let erc721Excubia: ERC721Excubia
-
- let signer: Signer
- let signerAddress: string
-
- let gate: Signer
- let gateAddress: string
-
- let anotherTokenOwner: Signer
- let anotherTokenOwnerAddress: string
-
- let mockERC721: MockERC721
- let mockERC721Address: string
-
- const rawValidTokenId = 0
- const rawInvalidOwnerTokenId = 1
-
- const encodedValidTokenId = AbiCoder.defaultAbiCoder().encode(["uint256"], [rawValidTokenId])
- const encodedInvalidOwnerTokenId = AbiCoder.defaultAbiCoder().encode(["uint256"], [rawInvalidOwnerTokenId])
-
- before(async function () {
- ;[signer, gate, anotherTokenOwner] = await ethers.getSigners()
- signerAddress = await signer.getAddress()
- gateAddress = await gate.getAddress()
- anotherTokenOwnerAddress = await anotherTokenOwner.getAddress()
-
- MockERC721Contract = await ethers.getContractFactory("MockERC721")
- mockERC721 = await MockERC721Contract.deploy()
- mockERC721Address = await mockERC721.getAddress()
-
- // assign to `signerAddress` token with id equal to `1`.
- await mockERC721.mintAndGiveToken(signerAddress)
- await mockERC721.mintAndGiveToken(anotherTokenOwnerAddress)
-
- ERC721ExcubiaContract = await ethers.getContractFactory("ERC721Excubia")
- erc721Excubia = await ERC721ExcubiaContract.deploy(mockERC721Address)
- })
-
- describe("constructor()", function () {
- it("Should deploy the ERC721Excubia contract correctly", async function () {
- expect(erc721Excubia).to.not.eq(undefined)
- })
-
- it("Should deploy the MockERC721 contract correctly", async function () {
- expect(mockERC721).to.not.eq(undefined)
- })
-
- it("Should fail to deploy ERC721Excubia when erc721 parameter is not valid", async () => {
- await expect(ERC721ExcubiaContract.deploy(ZeroAddress)).to.be.revertedWithCustomError(
- erc721Excubia,
- "ZeroAddress"
- )
- })
- })
-
- describe("setGate()", function () {
- it("should fail to set the gate when the caller is not the owner", async () => {
- const [, notOwnerSigner] = await ethers.getSigners()
-
- await expect(erc721Excubia.connect(notOwnerSigner).setGate(gateAddress)).to.be.revertedWithCustomError(
- erc721Excubia,
- "OwnableUnauthorizedAccount"
- )
- })
-
- it("should fail to set the gate when the gate address is zero", async () => {
- await expect(erc721Excubia.setGate(ZeroAddress)).to.be.revertedWithCustomError(erc721Excubia, "ZeroAddress")
- })
-
- it("Should set the gate contract address correctly", async function () {
- const tx = await erc721Excubia.setGate(gateAddress)
- const receipt = await tx.wait()
- const event = ERC721ExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await erc721Excubia.gate()).to.eq(gateAddress)
- })
-
- it("Should fail to set the gate if already set", async function () {
- await expect(erc721Excubia.setGate(gateAddress)).to.be.revertedWithCustomError(
- erc721Excubia,
- "GateAlreadySet"
- )
- })
- })
-
- describe("check()", function () {
- it("should throw when the token id is not owned by the correct recipient", async () => {
- expect(await mockERC721.ownerOf(encodedInvalidOwnerTokenId)).to.be.equal(anotherTokenOwnerAddress)
-
- await expect(erc721Excubia.check(signerAddress, encodedInvalidOwnerTokenId)).to.be.revertedWithCustomError(
- erc721Excubia,
- "UnexpectedTokenOwner"
- )
- })
-
- it("should check", async () => {
- await expect(erc721Excubia.check(signerAddress, encodedValidTokenId)).to.not.be.reverted
-
- // check does NOT change the state of the contract (see pass()).
- expect(await erc721Excubia.registeredTokenIds(rawValidTokenId)).to.be.false
- })
- })
-
- describe("pass()", function () {
- it("should throw when the callee is not the gate", async () => {
- await expect(
- erc721Excubia.connect(signer).pass(signerAddress, encodedInvalidOwnerTokenId)
- ).to.be.revertedWithCustomError(erc721Excubia, "GateOnly")
- })
-
- it("should throw when the token id is not owned by the correct recipient", async () => {
- await expect(
- erc721Excubia.connect(gate).pass(signerAddress, encodedInvalidOwnerTokenId)
- ).to.be.revertedWithCustomError(erc721Excubia, "UnexpectedTokenOwner")
- })
-
- it("should pass", async () => {
- const tx = await erc721Excubia.connect(gate).pass(signerAddress, encodedValidTokenId)
- const receipt = await tx.wait()
- const event = ERC721ExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- passerby: string
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.passerby).to.eq(signerAddress)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await erc721Excubia.registeredTokenIds(rawValidTokenId)).to.be.true
- })
-
- it("should prevent to pass twice", async () => {
- await expect(
- erc721Excubia.connect(gate).pass(signerAddress, encodedValidTokenId)
- ).to.be.revertedWithCustomError(erc721Excubia, "AlreadyPassed")
- })
- })
-})
diff --git a/packages/excubiae/test/FreeForAllExcubia.test.ts b/packages/excubiae/test/FreeForAllExcubia.test.ts
deleted file mode 100644
index e6ccfac..0000000
--- a/packages/excubiae/test/FreeForAllExcubia.test.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import { expect } from "chai"
-import { ethers } from "hardhat"
-import { Signer, ZeroAddress, ZeroHash } from "ethers"
-import { FreeForAllExcubia, FreeForAllExcubia__factory } from "../typechain-types"
-
-describe("FreeForAllExcubia", function () {
- let FreeForAllExcubiaContract: FreeForAllExcubia__factory
- let freeForAllExcubia: FreeForAllExcubia
-
- let signer: Signer
- let signerAddress: string
-
- let gate: Signer
- let gateAddress: string
-
- before(async function () {
- ;[signer, gate] = await ethers.getSigners()
- signerAddress = await signer.getAddress()
- gateAddress = await gate.getAddress()
-
- FreeForAllExcubiaContract = await ethers.getContractFactory("FreeForAllExcubia")
- freeForAllExcubia = await FreeForAllExcubiaContract.deploy()
- })
-
- describe("constructor()", function () {
- it("Should deploy the FreeForAllExcubia contract correctly", async function () {
- expect(freeForAllExcubia).to.not.eq(undefined)
- })
- })
-
- describe("setGate()", function () {
- it("should fail to set the gate when the caller is not the owner", async () => {
- const [, notOwnerSigner] = await ethers.getSigners()
-
- await expect(freeForAllExcubia.connect(notOwnerSigner).setGate(gateAddress)).to.be.revertedWithCustomError(
- freeForAllExcubia,
- "OwnableUnauthorizedAccount"
- )
- })
-
- it("should fail to set the gate when the gate address is zero", async () => {
- await expect(freeForAllExcubia.setGate(ZeroAddress)).to.be.revertedWithCustomError(
- freeForAllExcubia,
- "ZeroAddress"
- )
- })
-
- it("Should set the gate contract address correctly", async function () {
- const tx = await freeForAllExcubia.setGate(gateAddress)
- const receipt = await tx.wait()
- const event = FreeForAllExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await freeForAllExcubia.gate()).to.eq(gateAddress)
- })
-
- it("Should fail to set the gate if already set", async function () {
- await expect(freeForAllExcubia.setGate(gateAddress)).to.be.revertedWithCustomError(
- freeForAllExcubia,
- "GateAlreadySet"
- )
- })
- })
-
- describe("check()", function () {
- it("should check", async () => {
- // `data` parameter value can be whatever (e.g., ZeroHash default).
- await expect(freeForAllExcubia.check(signerAddress, ZeroHash)).to.not.be.reverted
-
- // check does NOT change the state of the contract (see pass()).
- expect(await freeForAllExcubia.registeredPassersby(signerAddress)).to.be.false
- })
- })
-
- describe("pass()", function () {
- it("should throw when the callee is not the gate", async () => {
- await expect(
- // `data` parameter value can be whatever (e.g., ZeroHash default).
- freeForAllExcubia.connect(signer).pass(signerAddress, ZeroHash)
- ).to.be.revertedWithCustomError(freeForAllExcubia, "GateOnly")
- })
-
- it("should pass", async () => {
- // `data` parameter value can be whatever (e.g., ZeroHash default).
- const tx = await freeForAllExcubia.connect(gate).pass(signerAddress, ZeroHash)
- const receipt = await tx.wait()
- const event = FreeForAllExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- passerby: string
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.passerby).to.eq(signerAddress)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await freeForAllExcubia.registeredPassersby(signerAddress)).to.be.true
- })
-
- it("should prevent to pass twice", async () => {
- await expect(
- // `data` parameter value can be whatever (e.g., ZeroHash default).
- freeForAllExcubia.connect(gate).pass(signerAddress, ZeroHash)
- ).to.be.revertedWithCustomError(freeForAllExcubia, "AlreadyPassed")
- })
- })
-})
diff --git a/packages/excubiae/contracts/test/MockEAS.sol b/packages/excubiae/test/MockEAS.sol
similarity index 72%
rename from packages/excubiae/contracts/test/MockEAS.sol
rename to packages/excubiae/test/MockEAS.sol
index bbd536a..b2fc754 100644
--- a/packages/excubiae/contracts/test/MockEAS.sol
+++ b/packages/excubiae/test/MockEAS.sol
@@ -2,7 +2,18 @@
pragma solidity >=0.8.0;
/* solhint-disable max-line-length */
-import {IEAS, ISchemaRegistry, AttestationRequest, MultiAttestationRequest, DelegatedAttestationRequest, MultiDelegatedAttestationRequest, DelegatedRevocationRequest, RevocationRequest, MultiRevocationRequest, MultiDelegatedRevocationRequest} from "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol";
+import {
+ IEAS,
+ ISchemaRegistry,
+ AttestationRequest,
+ MultiAttestationRequest,
+ DelegatedAttestationRequest,
+ MultiDelegatedAttestationRequest,
+ DelegatedRevocationRequest,
+ RevocationRequest,
+ MultiRevocationRequest,
+ MultiDelegatedRevocationRequest
+} from "@ethereum-attestation-service/eas-contracts/contracts/IEAS.sol";
import {Attestation} from "@ethereum-attestation-service/eas-contracts/contracts/Common.sol";
/// @title Mock Ethereum Attestation Service (EAS) Contract.
@@ -91,15 +102,12 @@ contract MockEAS is IEAS {
mockedAttestations[bytes32(hex"0100000000000000000000000000000000000000000000000000000000000000")] = valid;
mockedAttestations[bytes32(hex"0200000000000000000000000000000000000000000000000000000000000000")] = revoked;
- mockedAttestations[
- bytes32(hex"0300000000000000000000000000000000000000000000000000000000000000")
- ] = invalidSchema;
- mockedAttestations[
- bytes32(hex"0400000000000000000000000000000000000000000000000000000000000000")
- ] = invalidRecipient;
- mockedAttestations[
- bytes32(hex"0500000000000000000000000000000000000000000000000000000000000000")
- ] = invalidAttester;
+ mockedAttestations[bytes32(hex"0300000000000000000000000000000000000000000000000000000000000000")] =
+ invalidSchema;
+ mockedAttestations[bytes32(hex"0400000000000000000000000000000000000000000000000000000000000000")] =
+ invalidRecipient;
+ mockedAttestations[bytes32(hex"0500000000000000000000000000000000000000000000000000000000000000")] =
+ invalidAttester;
}
/// @notice Retrieves a mocked attestation by its unique identifier.
@@ -112,25 +120,34 @@ contract MockEAS is IEAS {
/// STUBS ///
// The following functions are stubs and do not perform any meaningful operations.
// They are placeholders to comply with the IEAS interface.
- function attest(AttestationRequest calldata /*request*/) external payable override returns (bytes32) {
+ function attest(AttestationRequest calldata /*request*/ ) external payable override returns (bytes32) {
return bytes32(0);
}
- function attestByDelegation(
- DelegatedAttestationRequest calldata /*delegatedRequest*/
- ) external payable override returns (bytes32) {
+ function attestByDelegation(DelegatedAttestationRequest calldata /*delegatedRequest*/ )
+ external
+ payable
+ override
+ returns (bytes32)
+ {
return bytes32(0);
}
- function multiAttest(
- MultiAttestationRequest[] calldata multiRequests
- ) external payable override returns (bytes32[] memory) {
+ function multiAttest(MultiAttestationRequest[] calldata multiRequests)
+ external
+ payable
+ override
+ returns (bytes32[] memory)
+ {
return new bytes32[](multiRequests.length);
}
- function multiAttestByDelegation(
- MultiDelegatedAttestationRequest[] calldata multiDelegatedRequests
- ) external payable override returns (bytes32[] memory) {
+ function multiAttestByDelegation(MultiDelegatedAttestationRequest[] calldata multiDelegatedRequests)
+ external
+ payable
+ override
+ returns (bytes32[] memory)
+ {
return new bytes32[](multiDelegatedRequests.length);
}
@@ -140,23 +157,25 @@ contract MockEAS is IEAS {
function multiRevoke(MultiRevocationRequest[] calldata multiRequests) external payable override {}
- function multiRevokeByDelegation(
- MultiDelegatedRevocationRequest[] calldata multiDelegatedRequests
- ) external payable override {}
+ function multiRevokeByDelegation(MultiDelegatedRevocationRequest[] calldata multiDelegatedRequests)
+ external
+ payable
+ override
+ {}
- function timestamp(bytes32 /*data*/) external view override returns (uint64) {
+ function timestamp(bytes32 /*data*/ ) external view override returns (uint64) {
return uint64(block.timestamp);
}
- function multiTimestamp(bytes32[] calldata /*data*/) external view override returns (uint64) {
+ function multiTimestamp(bytes32[] calldata /*data*/ ) external view override returns (uint64) {
return uint64(block.timestamp);
}
- function revokeOffchain(bytes32 /*data*/) external view override returns (uint64) {
+ function revokeOffchain(bytes32 /*data*/ ) external view override returns (uint64) {
return uint64(block.timestamp);
}
- function multiRevokeOffchain(bytes32[] calldata /*data*/) external view override returns (uint64) {
+ function multiRevokeOffchain(bytes32[] calldata /*data*/ ) external view override returns (uint64) {
return uint64(block.timestamp);
}
@@ -164,11 +183,11 @@ contract MockEAS is IEAS {
return mockedAttestations[uid].uid != bytes32(0);
}
- function getTimestamp(bytes32 /*data*/) external view override returns (uint64) {
+ function getTimestamp(bytes32 /*data*/ ) external view override returns (uint64) {
return uint64(block.timestamp);
}
- function getRevokeOffchain(address /*revoker*/, bytes32 /*data*/) external view override returns (uint64) {
+ function getRevokeOffchain(address, /*revoker*/ bytes32 /*data*/ ) external view override returns (uint64) {
return uint64(block.timestamp);
}
diff --git a/packages/excubiae/contracts/test/MockERC721.sol b/packages/excubiae/test/MockERC721.sol
similarity index 100%
rename from packages/excubiae/contracts/test/MockERC721.sol
rename to packages/excubiae/test/MockERC721.sol
diff --git a/packages/excubiae/contracts/test/MockSemaphore.sol b/packages/excubiae/test/MockSemaphore.sol
similarity index 76%
rename from packages/excubiae/contracts/test/MockSemaphore.sol
rename to packages/excubiae/test/MockSemaphore.sol
index 1e845c1..e2288df 100644
--- a/packages/excubiae/contracts/test/MockSemaphore.sol
+++ b/packages/excubiae/test/MockSemaphore.sol
@@ -45,36 +45,36 @@ contract MockSemaphore is ISemaphore {
return 0;
}
- function createGroup(address /*admin*/) external pure override returns (uint256) {
+ function createGroup(address /*admin*/ ) external pure override returns (uint256) {
return 0;
}
- function createGroup(address /*admin*/, uint256 /*merkleTreeDuration*/) external pure override returns (uint256) {
+ function createGroup(address, /*admin*/ uint256 /*merkleTreeDuration*/ ) external pure override returns (uint256) {
return 0;
}
- function updateGroupAdmin(uint256 /*groupId*/, address /*newAdmin*/) external override {}
+ function updateGroupAdmin(uint256, /*groupId*/ address /*newAdmin*/ ) external override {}
- function acceptGroupAdmin(uint256 /*groupId*/) external override {}
+ function acceptGroupAdmin(uint256 /*groupId*/ ) external override {}
- function updateGroupMerkleTreeDuration(uint256 /*groupId*/, uint256 /*newMerkleTreeDuration*/) external override {}
+ function updateGroupMerkleTreeDuration(uint256, /*groupId*/ uint256 /*newMerkleTreeDuration*/ ) external override {}
function addMember(uint256 groupId, uint256 identityCommitment) external override {}
function addMembers(uint256 groupId, uint256[] calldata identityCommitments) external override {}
function updateMember(
- uint256 /*groupId*/,
- uint256 /*oldIdentityCommitment*/,
- uint256 /*newIdentityCommitment*/,
+ uint256, /*groupId*/
+ uint256, /*oldIdentityCommitment*/
+ uint256, /*newIdentityCommitment*/
uint256[] calldata /*merkleProofSiblings*/
) external override {}
function removeMember(
- uint256 /*groupId*/,
- uint256 /*identityCommitment*/,
+ uint256, /*groupId*/
+ uint256, /*identityCommitment*/
uint256[] calldata /*merkleProofSiblings*/
) external override {}
- function validateProof(uint256 /*groupId*/, SemaphoreProof calldata /*proof*/) external override {}
+ function validateProof(uint256, /*groupId*/ SemaphoreProof calldata /*proof*/ ) external override {}
}
diff --git a/packages/excubiae/test/SemaphoreExcubia.test.ts b/packages/excubiae/test/SemaphoreExcubia.test.ts
deleted file mode 100644
index e457895..0000000
--- a/packages/excubiae/test/SemaphoreExcubia.test.ts
+++ /dev/null
@@ -1,222 +0,0 @@
-import { expect } from "chai"
-import { ethers } from "hardhat"
-import { AbiCoder, Signer, ZeroAddress, toBeHex, zeroPadBytes } from "ethers"
-import { SemaphoreExcubia, SemaphoreExcubia__factory, MockSemaphore, MockSemaphore__factory } from "../typechain-types"
-
-describe("SemaphoreExcubia", function () {
- let MockSemaphoreContract: MockSemaphore__factory
- let SemaphoreExcubiaContract: SemaphoreExcubia__factory
- let semaphoreExcubia: SemaphoreExcubia
-
- let signer: Signer
- let signerAddress: string
-
- let gate: Signer
- let gateAddress: string
-
- let mockSemaphore: MockSemaphore
- let mockSemaphoreAddress: string
-
- const validGroupId = 0n
- const invalidGroupId = 1n
-
- const validProof = {
- merkleTreeDepth: 1n,
- merkleTreeRoot: 0n,
- nullifier: 0n,
- message: 0n,
- scope: validGroupId,
- points: [0n, 0n, 0n, 0n, 0n, 0n, 0n, 0n]
- }
- const invalidProof = {
- merkleTreeDepth: 1n,
- merkleTreeRoot: 0n,
- nullifier: 1n,
- message: 0n,
- scope: invalidGroupId,
- points: [1n, 0n, 0n, 0n, 0n, 0n, 0n, 0n]
- }
-
- const encodedValidProof = AbiCoder.defaultAbiCoder().encode(
- ["uint256", "uint256", "uint256", "uint256", "uint256", "uint256[8]"],
- [
- validProof.merkleTreeDepth,
- validProof.merkleTreeRoot,
- validProof.nullifier,
- validProof.message,
- validProof.scope,
- validProof.points
- ]
- )
-
- const encodedInvalidScopeProof = AbiCoder.defaultAbiCoder().encode(
- ["uint256", "uint256", "uint256", "uint256", "uint256", "uint256[8]"],
- [
- validProof.merkleTreeDepth,
- validProof.merkleTreeRoot,
- validProof.nullifier,
- validProof.message,
- invalidProof.scope,
- validProof.points
- ]
- )
-
- const encodedInvalidProof = AbiCoder.defaultAbiCoder().encode(
- ["uint256", "uint256", "uint256", "uint256", "uint256", "uint256[8]"],
- [
- invalidProof.merkleTreeDepth,
- invalidProof.merkleTreeRoot,
- invalidProof.nullifier,
- invalidProof.message,
- validProof.scope,
- invalidProof.points
- ]
- )
-
- before(async function () {
- ;[signer, gate] = await ethers.getSigners()
- signerAddress = await signer.getAddress()
- gateAddress = await gate.getAddress()
-
- MockSemaphoreContract = await ethers.getContractFactory("MockSemaphore")
- mockSemaphore = await MockSemaphoreContract.deploy(
- [validGroupId],
- [validProof.nullifier, invalidProof.nullifier],
- [true, false]
- )
- mockSemaphoreAddress = await mockSemaphore.getAddress()
-
- SemaphoreExcubiaContract = await ethers.getContractFactory("SemaphoreExcubia")
- semaphoreExcubia = await SemaphoreExcubiaContract.deploy(mockSemaphore, validGroupId)
- })
-
- describe("constructor()", function () {
- it("Should deploy the SemaphoreExcubia contract correctly", async function () {
- expect(semaphoreExcubia).to.not.eq(undefined)
- })
-
- it("Should deploy the MockSemaphore contract correctly", async function () {
- expect(mockSemaphore).to.not.eq(undefined)
- })
-
- it("Should fail to deploy SemaphoreExcubia when semaphore parameter is not valid", async () => {
- await expect(SemaphoreExcubiaContract.deploy(ZeroAddress, validGroupId)).to.be.revertedWithCustomError(
- semaphoreExcubia,
- "ZeroAddress"
- )
- })
-
- it("Should fail to deploy SemaphoreExcubia when groupId parameter is not valid", async () => {
- await expect(
- SemaphoreExcubiaContract.deploy(mockSemaphoreAddress, invalidGroupId)
- ).to.be.revertedWithCustomError(semaphoreExcubia, "InvalidGroup")
- })
- })
-
- describe("setGate()", function () {
- it("should fail to set the gate when the caller is not the owner", async () => {
- const [, notOwnerSigner] = await ethers.getSigners()
-
- await expect(semaphoreExcubia.connect(notOwnerSigner).setGate(gateAddress)).to.be.revertedWithCustomError(
- semaphoreExcubia,
- "OwnableUnauthorizedAccount"
- )
- })
-
- it("should fail to set the gate when the gate address is zero", async () => {
- await expect(semaphoreExcubia.setGate(ZeroAddress)).to.be.revertedWithCustomError(
- semaphoreExcubia,
- "ZeroAddress"
- )
- })
-
- it("Should set the gate contract address correctly", async function () {
- const tx = await semaphoreExcubia.setGate(gateAddress)
- const receipt = await tx.wait()
- const event = SemaphoreExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await semaphoreExcubia.gate()).to.eq(gateAddress)
- })
-
- it("Should fail to set the gate if already set", async function () {
- await expect(semaphoreExcubia.setGate(gateAddress)).to.be.revertedWithCustomError(
- semaphoreExcubia,
- "GateAlreadySet"
- )
- })
- })
-
- describe("check()", function () {
- it("should throw when the scope is not the one expected", async () => {
- await expect(semaphoreExcubia.check(signerAddress, encodedInvalidScopeProof)).to.be.revertedWithCustomError(
- semaphoreExcubia,
- "UnexpectedScope"
- )
- })
-
- it("should throw when the proof is invalid", async () => {
- await expect(semaphoreExcubia.check(signerAddress, encodedInvalidProof)).to.be.revertedWithCustomError(
- semaphoreExcubia,
- "InvalidProof"
- )
- })
-
- it("should check", async () => {
- await expect(semaphoreExcubia.check(signerAddress, encodedValidProof)).to.not.be.reverted
-
- // check does NOT change the state of the contract (see pass()).
- expect(await semaphoreExcubia.passedNullifiers(validProof.nullifier)).to.be.false
- })
- })
-
- describe("pass()", function () {
- it("should throw when the callee is not the gate", async () => {
- await expect(
- semaphoreExcubia.connect(signer).pass(signerAddress, encodedValidProof)
- ).to.be.revertedWithCustomError(semaphoreExcubia, "GateOnly")
- })
-
- it("should throw when the scope is not the one expected", async () => {
- await expect(
- semaphoreExcubia.connect(gate).pass(signerAddress, encodedInvalidScopeProof)
- ).to.be.revertedWithCustomError(semaphoreExcubia, "UnexpectedScope")
- })
-
- it("should throw when the proof is invalid", async () => {
- await expect(
- semaphoreExcubia.connect(gate).pass(signerAddress, encodedInvalidProof)
- ).to.be.revertedWithCustomError(semaphoreExcubia, "InvalidProof")
- })
- it("should pass the check", async () => {
- const tx = await semaphoreExcubia.connect(gate).pass(signerAddress, encodedValidProof)
- const receipt = await tx.wait()
- const event = SemaphoreExcubiaContract.interface.parseLog(
- receipt?.logs[0] as unknown as { topics: string[]; data: string }
- ) as unknown as {
- args: {
- passerby: string
- gate: string
- }
- }
-
- expect(receipt?.status).to.eq(1)
- expect(event.args.passerby).to.eq(signerAddress)
- expect(event.args.gate).to.eq(gateAddress)
- expect(await semaphoreExcubia.passedNullifiers(validProof.nullifier)).to.be.true
- })
-
- it("should prevent to pass twice", async () => {
- await expect(
- semaphoreExcubia.connect(gate).pass(signerAddress, encodedValidProof)
- ).to.be.revertedWithCustomError(semaphoreExcubia, "AlreadyPassed")
- })
- })
-})
diff --git a/packages/excubiae/tsconfig.json b/packages/excubiae/tsconfig.json
deleted file mode 100644
index 0a513ff..0000000
--- a/packages/excubiae/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2020",
- "module": "commonjs",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "skipLibCheck": true,
- "resolveJsonModule": true
- },
- "include": ["scripts/**/*", "tasks/**/*", "test/**/*", "typechain-types/**/*"],
- "files": ["hardhat.config.ts"]
-}
diff --git a/packages/imt/.prettierrc.json b/packages/imt/.prettierrc.json
deleted file mode 100644
index 717fb52..0000000
--- a/packages/imt/.prettierrc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "semi": false,
- "arrowParens": "always",
- "trailingComma": "none",
- "plugins": ["prettier-plugin-solidity"]
-}
diff --git a/packages/imt/.solhint.json b/packages/imt/.solhint.json
deleted file mode 100644
index bfc727d..0000000
--- a/packages/imt/.solhint.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "solhint:recommended",
- "plugins": ["prettier"],
- "rules": {
- "compiler-version": ["error", ">=0.8.0"],
- "const-name-snakecase": "off",
- "no-empty-blocks": "off",
- "constructor-syntax": "error",
- "func-visibility": ["error", { "ignoreConstructors": true }],
- "max-line-length": ["error", 120],
- "not-rely-on-time": "off",
- "prettier/prettier": [
- "error",
- {
- "endOfLine": "auto"
- }
- ],
- "reason-string": ["warn", { "maxLength": 80 }]
- }
-}
diff --git a/packages/imt/LICENSE b/packages/imt/LICENSE
index 89a15f7..30cff74 120000
--- a/packages/imt/LICENSE
+++ b/packages/imt/LICENSE
@@ -1 +1 @@
-contracts/LICENSE
\ No newline at end of file
+../../LICENSE
\ No newline at end of file
diff --git a/packages/imt/README.md b/packages/imt/README.md
deleted file mode 120000
index 1ee0442..0000000
--- a/packages/imt/README.md
+++ /dev/null
@@ -1 +0,0 @@
-contracts/README.md
\ No newline at end of file
diff --git a/packages/imt/README.md b/packages/imt/README.md
new file mode 100644
index 0000000..737ec58
--- /dev/null
+++ b/packages/imt/README.md
@@ -0,0 +1,60 @@
+
+
+ Incremental Merkle Tree (Solidity)
+
+ Incremental Merkle tree implementation in Solidity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> [!WARNING]
+> These library has **not** been audited.
+
+> [!WARNING]
+> If you are looking for the first version of this package, please visit this [link](https://github.com/privacy-scaling-explorations/zk-kit/tree/imt-v1/packages/incremental-merkle-tree.sol).
+
+---
+
+## 🛠 Install
+
+### npm or yarn
+
+Install the `@zk-kit/imt.sol` package with npm:
+
+```bash
+npm i @zk-kit/imt.sol --save
+```
+
+or yarn:
+
+```bash
+yarn add @zk-kit/imt.sol
+```
+
+## 📜 Usage
+
+Please, see the [test contracts](./test) for guidance on utilizing the libraries.
diff --git a/packages/imt/contracts/LICENSE b/packages/imt/contracts/LICENSE
deleted file mode 100644
index 8ef16f7..0000000
--- a/packages/imt/contracts/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Ethereum Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/packages/imt/contracts/README.md b/packages/imt/contracts/README.md
deleted file mode 100644
index 737ec58..0000000
--- a/packages/imt/contracts/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
- Incremental Merkle Tree (Solidity)
-
- Incremental Merkle tree implementation in Solidity.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [!WARNING]
-> These library has **not** been audited.
-
-> [!WARNING]
-> If you are looking for the first version of this package, please visit this [link](https://github.com/privacy-scaling-explorations/zk-kit/tree/imt-v1/packages/incremental-merkle-tree.sol).
-
----
-
-## 🛠 Install
-
-### npm or yarn
-
-Install the `@zk-kit/imt.sol` package with npm:
-
-```bash
-npm i @zk-kit/imt.sol --save
-```
-
-or yarn:
-
-```bash
-yarn add @zk-kit/imt.sol
-```
-
-## 📜 Usage
-
-Please, see the [test contracts](./test) for guidance on utilizing the libraries.
diff --git a/packages/imt/contracts/package.json b/packages/imt/contracts/package.json
deleted file mode 100644
index f20c231..0000000
--- a/packages/imt/contracts/package.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
- "name": "@zk-kit/imt.sol",
- "version": "2.0.0-beta.12",
- "description": "Incremental Merkle tree implementation in Solidity.",
- "license": "MIT",
- "files": [
- "*.sol",
- "internal/*",
- "!test/*",
- "README.md",
- "LICENSE"
- ],
- "keywords": [
- "blockchain",
- "ethereum",
- "hardhat",
- "smart-contracts",
- "solidity",
- "libraries",
- "merkle-tree",
- "incremental-merkle-tree"
- ],
- "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
- "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/imt.sol",
- "publishConfig": {
- "access": "public"
- },
- "dependencies": {
- "poseidon-solidity": "0.0.5"
- }
-}
diff --git a/packages/imt/hardhat.config.ts b/packages/imt/hardhat.config.ts
deleted file mode 100644
index d652e05..0000000
--- a/packages/imt/hardhat.config.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import "@nomicfoundation/hardhat-toolbox"
-import { HardhatUserConfig } from "hardhat/config"
-import "./tasks/deploy-imt-test"
-
-const hardhatConfig: HardhatUserConfig = {
- solidity: {
- version: "0.8.23",
- settings: {
- optimizer: {
- enabled: true
- }
- }
- },
- gasReporter: {
- currency: "USD",
- enabled: process.env.REPORT_GAS === "true"
- },
- typechain: {
- target: "ethers-v6"
- }
-}
-
-export default hardhatConfig
diff --git a/packages/imt/package.json b/packages/imt/package.json
index a827be4..cd8d499 100644
--- a/packages/imt/package.json
+++ b/packages/imt/package.json
@@ -1,39 +1,25 @@
{
- "name": "imt.sol",
- "private": true,
- "scripts": {
- "start": "hardhat node",
- "compile": "hardhat compile",
- "test": "hardhat test",
- "test:report-gas": "REPORT_GAS=true hardhat test",
- "test:coverage": "hardhat coverage",
- "typechain": "hardhat typechain",
- "lint": "solhint 'contracts/**/*.sol'"
- },
- "devDependencies": {
- "@nomicfoundation/hardhat-chai-matchers": "^2.0.3",
- "@nomicfoundation/hardhat-ethers": "^3.0.0",
- "@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": "^10.0.6",
- "@types/node": "^20.10.7",
- "@zk-kit/imt": "^2.0.0-beta.5",
- "chai": "^4.2.0",
- "ethers": "^6.4.0",
- "hardhat": "^2.19.4",
- "hardhat-gas-reporter": "^1.0.8",
- "poseidon-lite": "^0.2.0",
- "prettier-plugin-solidity": "^1.3.1",
- "solhint": "^3.3.6",
- "solhint-plugin-prettier": "^0.1.0",
- "solidity-coverage": "^0.8.0",
- "ts-node": "^10.9.2",
- "typechain": "^8.3.0",
- "typescript": "^5.3.3"
+ "name": "@zk-kit/imt.sol",
+ "version": "2.0.0-beta.12",
+ "description": "Incremental Merkle tree implementation in Solidity.",
+ "license": "MIT",
+ "files": [
+ "src"
+ ],
+ "keywords": [
+ "blockchain",
+ "ethereum",
+ "forge",
+ "smart-contracts",
+ "solidity",
+ "libraries",
+ "merkle-tree",
+ "incremental-merkle-tree"
+ ],
+ "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
+ "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/imt.sol",
+ "publishConfig": {
+ "access": "public"
},
"dependencies": {
"poseidon-solidity": "0.0.5"
diff --git a/packages/imt/contracts/BinaryIMT.sol b/packages/imt/src/BinaryIMT.sol
similarity index 100%
rename from packages/imt/contracts/BinaryIMT.sol
rename to packages/imt/src/BinaryIMT.sol
diff --git a/packages/imt/contracts/Constants.sol b/packages/imt/src/Constants.sol
similarity index 100%
rename from packages/imt/contracts/Constants.sol
rename to packages/imt/src/Constants.sol
diff --git a/packages/imt/contracts/InternalBinaryIMT.sol b/packages/imt/src/InternalBinaryIMT.sol
similarity index 98%
rename from packages/imt/contracts/InternalBinaryIMT.sol
rename to packages/imt/src/InternalBinaryIMT.sol
index 1b2ff8f..98f4512 100644
--- a/packages/imt/contracts/InternalBinaryIMT.sol
+++ b/packages/imt/src/InternalBinaryIMT.sol
@@ -113,7 +113,7 @@ library InternalBinaryIMT {
self.depth = depth;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
self.zeroes[i] = zero;
zero = PoseidonT3.hash([zero, zero]);
@@ -152,7 +152,7 @@ library InternalBinaryIMT {
uint256 hash = leaf;
bool useDefaultZeroes = self.useDefaultZeroes;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
if (index & 1 == 0) {
self.lastSubtrees[i] = [hash, useDefaultZeroes ? _defaultZero(i) : self.zeroes[i]];
} else {
@@ -197,7 +197,7 @@ library InternalBinaryIMT {
uint256 hash = newLeaf;
uint256 updateIndex;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
updateIndex |= uint256(proofPathIndices[i]) << uint256(i);
if (proofPathIndices[i] == 0) {
@@ -262,7 +262,7 @@ library InternalBinaryIMT {
uint256 hash = leaf;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
if (proofSiblings[i] >= SNARK_SCALAR_FIELD) {
revert ValueGreaterThanSnarkScalarField();
} else if (proofPathIndices[i] != 1 && proofPathIndices[i] != 0) {
diff --git a/packages/imt/contracts/InternalQuinaryIMT.sol b/packages/imt/src/InternalQuinaryIMT.sol
similarity index 95%
rename from packages/imt/contracts/InternalQuinaryIMT.sol
rename to packages/imt/src/InternalQuinaryIMT.sol
index 44522cc..5376702 100644
--- a/packages/imt/contracts/InternalQuinaryIMT.sol
+++ b/packages/imt/src/InternalQuinaryIMT.sol
@@ -40,11 +40,11 @@ library InternalQuinaryIMT {
self.depth = depth;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
self.zeroes[i] = zero;
uint256[5] memory zeroChildren;
- for (uint8 j = 0; j < 5; ) {
+ for (uint8 j = 0; j < 5;) {
zeroChildren[j] = zero;
unchecked {
++j;
@@ -76,13 +76,13 @@ library InternalQuinaryIMT {
uint256 index = self.numberOfLeaves;
uint256 hash = leaf;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
uint8 position = uint8(index % 5);
self.lastSubtrees[i][position] = hash;
if (position == 0) {
- for (uint8 j = 1; j < 5; ) {
+ for (uint8 j = 1; j < 5;) {
self.lastSubtrees[i][j] = self.zeroes[i];
unchecked {
++j;
@@ -127,11 +127,11 @@ library InternalQuinaryIMT {
uint256 hash = newLeaf;
uint256 updateIndex;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
uint256[5] memory nodes;
updateIndex += proofPathIndices[i] * 5 ** i;
- for (uint8 j = 0; j < 5; ) {
+ for (uint8 j = 0; j < 5;) {
if (j < proofPathIndices[i]) {
nodes[j] = proofSiblings[i][j];
} else if (j == proofPathIndices[i]) {
@@ -198,14 +198,14 @@ library InternalQuinaryIMT {
uint256 hash = leaf;
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
uint256[5] memory nodes;
if (proofPathIndices[i] < 0 || proofPathIndices[i] >= 5) {
revert WrongMerkleProofPath();
}
- for (uint8 j = 0; j < 5; ) {
+ for (uint8 j = 0; j < 5;) {
if (j < proofPathIndices[i]) {
require(
proofSiblings[i][j] < SNARK_SCALAR_FIELD,
diff --git a/packages/excubiae/contracts/LICENSE b/packages/imt/src/LICENSE
similarity index 100%
rename from packages/excubiae/contracts/LICENSE
rename to packages/imt/src/LICENSE
diff --git a/packages/imt/contracts/QuinaryIMT.sol b/packages/imt/src/QuinaryIMT.sol
similarity index 100%
rename from packages/imt/contracts/QuinaryIMT.sol
rename to packages/imt/src/QuinaryIMT.sol
diff --git a/packages/imt/tasks/deploy-imt-test.ts b/packages/imt/tasks/deploy-imt-test.ts
deleted file mode 100644
index d9dc6f7..0000000
--- a/packages/imt/tasks/deploy-imt-test.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { task, types } from "hardhat/config"
-
-task("deploy:imt-test", "Deploy an IMT contract for testing a library")
- .addParam("library", "The name of the library", undefined, types.string)
- .addOptionalParam("logs", "Print the logs", true, types.boolean)
- .addOptionalParam("arity", "The arity of the tree", 2, types.int)
- .setAction(async ({ logs, library: libraryName, arity }, { ethers }): Promise => {
- const PoseidonFactory = await ethers.getContractFactory(`PoseidonT${arity + 1}`)
-
- const poseidon = await PoseidonFactory.deploy()
- const poseidonAddress = await poseidon.getAddress()
-
- if (logs) {
- console.info(`PoseidonT${arity + 1} library has been deployed to: ${poseidonAddress}`)
- }
-
- const LibraryFactory = await ethers.getContractFactory(libraryName, {
- libraries: {
- [`PoseidonT${arity + 1}`]: poseidonAddress
- }
- })
-
- const library = await LibraryFactory.deploy()
- const libraryAddress = await library.getAddress()
-
- if (logs) {
- console.info(`${libraryName} library has been deployed to: ${libraryAddress}`)
- }
-
- const ContractFactory = await ethers.getContractFactory(`${libraryName}Test`, {
- libraries: {
- [libraryName]: libraryAddress
- }
- })
-
- const contract = await ContractFactory.deploy()
- const contractAddress = await contract.getAddress()
-
- if (logs) {
- console.info(`${libraryName}Test contract has been deployed to: ${contractAddress}`)
- }
-
- return { library, contract }
- })
diff --git a/packages/imt/test/BinaryIMT.ts b/packages/imt/test/BinaryIMT.ts
deleted file mode 100644
index ecef3be..0000000
--- a/packages/imt/test/BinaryIMT.ts
+++ /dev/null
@@ -1,367 +0,0 @@
-import { IMT as JSBinaryIMT } from "@zk-kit/imt"
-import { expect } from "chai"
-import { run } from "hardhat"
-import { poseidon2 } from "poseidon-lite"
-import { BinaryIMT, BinaryIMTTest } from "../typechain-types"
-
-describe("BinaryIMT", () => {
- const SNARK_SCALAR_FIELD = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")
- let binaryIMT: BinaryIMT
- let binaryIMTTest: BinaryIMTTest
- let jsBinaryIMT: JSBinaryIMT
-
- beforeEach(async () => {
- const { library, contract } = await run("deploy:imt-test", { library: "BinaryIMT", logs: false })
-
- binaryIMT = library
- binaryIMTTest = contract
- jsBinaryIMT = new JSBinaryIMT(poseidon2, 6, 0, 2)
- })
-
- describe("# init", () => {
- it("Should not create a tree with a depth > 32", async () => {
- const transaction = binaryIMTTest.init(33)
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "DepthNotSupported")
- })
-
- it("Should create a tree", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
-
- const { depth } = await binaryIMTTest.data()
-
- expect(depth).to.equal(jsBinaryIMT.depth)
- })
-
- it("Should create a tree with default zeroes", async () => {
- await binaryIMTTest.initWithDefaultZeroes(jsBinaryIMT.depth)
-
- const { depth, useDefaultZeroes } = await binaryIMTTest.data()
-
- expect(depth).to.equal(jsBinaryIMT.depth)
- expect(useDefaultZeroes).to.equal(true)
- })
- })
-
- describe("# insert", () => {
- it("Should not insert a leaf if its value is > SNARK_SCALAR_FIELD", async () => {
- const transaction = binaryIMTTest.insert(SNARK_SCALAR_FIELD)
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should insert a leaf in a tree", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
-
- jsBinaryIMT.insert(1)
-
- await binaryIMTTest.insert(1)
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
-
- it("Should insert a leaf in a tree with default zeroes", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
-
- jsBinaryIMT.insert(1)
-
- await binaryIMTTest.insert(1)
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
-
- it("Should insert 4 leaves in a tree", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
-
- for (let i = 0; i < 4; i += 1) {
- const leaf = i + 1
-
- jsBinaryIMT.insert(leaf)
- await binaryIMTTest.insert(leaf)
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- }
- })
-
- it("Should insert 4 leaves in a default zeroes tree", async () => {
- const jsBinaryIMT = new JSBinaryIMT(poseidon2, 32, 0)
-
- await binaryIMTTest.initWithDefaultZeroes(jsBinaryIMT.depth)
-
- for (let x = 0; x < 4; x += 1) {
- const leaf = (x + 10) ** 2
-
- jsBinaryIMT.insert(leaf)
- await binaryIMTTest.insert(leaf)
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- }
- })
-
- it("Should not insert a leaf if the tree is full", async () => {
- await binaryIMTTest.init(1)
- await binaryIMTTest.insert(1)
- await binaryIMTTest.insert(2)
-
- const transaction = binaryIMTTest.insert(3)
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "TreeIsFull")
- })
- })
-
- describe("# update", () => {
- it("Should not update a leaf if the new value is the same as the old one", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- const transaction = binaryIMTTest.update(1, 1, [0, 1], [0, 1])
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "NewLeafCannotEqualOldLeaf")
- })
-
- it("Should not update a leaf if its new value is > SNARK_SCALAR_FIELD", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- const transaction = binaryIMTTest.update(1, SNARK_SCALAR_FIELD, [0, 1], [0, 1])
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should not update a leaf if its original value is > SNARK_SCALAR_FIELD", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- const transaction = binaryIMTTest.update(SNARK_SCALAR_FIELD, 2, [0, 1], [0, 1])
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should not update a leaf if the path indices are wrong", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.update(0, 2)
-
- const { pathIndices, siblings } = jsBinaryIMT.createProof(0)
-
- pathIndices[0] = 2
-
- const transaction = binaryIMTTest.update(
- 1,
- 2,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "WrongMerkleProofPath")
- })
-
- it("Should not update a leaf if the old leaf is wrong", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.update(0, 2)
-
- const { pathIndices, siblings } = jsBinaryIMT.createProof(0)
-
- const transaction = binaryIMTTest.update(
- 2,
- 3,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "LeafDoesNotExist")
- })
-
- it("Should update a leaf", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.update(0, 2)
-
- const { pathIndices, siblings } = jsBinaryIMT.createProof(0)
-
- await binaryIMTTest.update(
- 1,
- 2,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
-
- it("Should not update a leaf that hasn't been inserted yet", async () => {
- binaryIMTTest.init(jsBinaryIMT.depth)
-
- for (let i = 0; i < 4; i += 1) {
- const leaf = i + 1
-
- jsBinaryIMT.insert(leaf)
- await binaryIMTTest.insert(leaf)
- }
-
- // We're going to try to update leaf 7, despite there only being 4 leaves in the tree.
- const leaf = 42069
-
- // Note that we can insert zeros into the js library tree and the root won't change!
- // that's because we use the zeros optimization to calculate the roots efficiently.
- // technically speaking, there isn't an "empty" tree, there is only a tree that is
- // entirely full of the zero value at every index. Therefore inserting the zero value
- // at any point into an incremental merkle tree doesn't change it's root, because
- // that is already the data the root was calculated from previously. In principle,
- // we can update any leaf that hasn't been inserted yet using this method.
- const rootBeforeZeros = jsBinaryIMT.root
-
- jsBinaryIMT.insert(0)
- jsBinaryIMT.insert(0)
- jsBinaryIMT.insert(0)
-
- // The root doesn't change because the tree started full with 0s!
- expect(jsBinaryIMT.root).to.be.equal(rootBeforeZeros)
-
- // Now we can make a merkle proof of zero being included at the uninitialized index.
- const { pathIndices, siblings } = jsBinaryIMT.createProof(6)
-
- const transaction = binaryIMTTest.update(
- 0,
- leaf,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "LeafIndexOutOfRange")
- })
- })
-
- describe("# remove", () => {
- it("Should not remove a leaf if its value is > SNARK_SCALAR_FIELD", async () => {
- const transaction = binaryIMTTest.remove(SNARK_SCALAR_FIELD, [0, 1], [0, 1])
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should not remove a leaf that does not exist", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.delete(0)
-
- const { siblings, pathIndices } = jsBinaryIMT.createProof(0)
-
- const transaction = binaryIMTTest.remove(
- 2,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- await expect(transaction).to.be.revertedWithCustomError(binaryIMT, "LeafDoesNotExist")
- })
-
- it("Should remove a leaf", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.delete(0)
-
- const { pathIndices, siblings } = jsBinaryIMT.createProof(0)
-
- await binaryIMTTest.remove(
- 1,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
-
- it("Should remove a leaf in a tree with default zeroes", async () => {
- await binaryIMTTest.initWithDefaultZeroes(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.delete(0)
-
- const { siblings, pathIndices } = jsBinaryIMT.createProof(0)
-
- await binaryIMTTest.remove(
- 1,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
-
- it("Should insert a leaf in a tree after a removal", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
- await binaryIMTTest.insert(1)
-
- jsBinaryIMT.insert(1)
- jsBinaryIMT.delete(0)
-
- const { pathIndices, siblings } = jsBinaryIMT.createProof(0)
-
- await binaryIMTTest.remove(
- 1,
- siblings.map((s) => s[0]),
- pathIndices
- )
-
- jsBinaryIMT.insert(2)
- await binaryIMTTest.insert(2)
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
-
- it("Should insert 4 leaves and remove them all", async () => {
- await binaryIMTTest.init(jsBinaryIMT.depth)
-
- for (let i = 0; i < 4; i += 1) {
- const leaf = i + 1
-
- jsBinaryIMT.insert(leaf)
- await binaryIMTTest.insert(leaf)
- }
-
- for (let i = 0; i < 4; i += 1) {
- jsBinaryIMT.delete(i)
-
- const { siblings, pathIndices } = jsBinaryIMT.createProof(i)
-
- await binaryIMTTest.remove(
- i + 1,
- siblings.map((s) => s[0]),
- pathIndices
- )
- }
-
- const { root } = await binaryIMTTest.data()
-
- expect(root).to.equal(jsBinaryIMT.root)
- })
- })
-})
diff --git a/packages/imt/contracts/test/BinaryIMTTest.sol b/packages/imt/test/BinaryIMTTest.sol
similarity index 75%
rename from packages/imt/contracts/test/BinaryIMTTest.sol
rename to packages/imt/test/BinaryIMTTest.sol
index b7a8057..38a05ab 100644
--- a/packages/imt/contracts/test/BinaryIMTTest.sol
+++ b/packages/imt/test/BinaryIMTTest.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.4;
-import {BinaryIMT, BinaryIMTData} from "../BinaryIMT.sol";
+import {BinaryIMT, BinaryIMTData} from "../src/BinaryIMT.sol";
contract BinaryIMTTest {
BinaryIMTData public data;
@@ -19,12 +19,9 @@ contract BinaryIMTTest {
BinaryIMT.insert(data, leaf);
}
- function update(
- uint256 leaf,
- uint256 newLeaf,
- uint256[] calldata proofSiblings,
- uint8[] calldata proofPathIndices
- ) external {
+ function update(uint256 leaf, uint256 newLeaf, uint256[] calldata proofSiblings, uint8[] calldata proofPathIndices)
+ external
+ {
BinaryIMT.update(data, leaf, newLeaf, proofSiblings, proofPathIndices);
}
diff --git a/packages/imt/test/QuinaryIMT.ts b/packages/imt/test/QuinaryIMT.ts
deleted file mode 100644
index 842b6a1..0000000
--- a/packages/imt/test/QuinaryIMT.ts
+++ /dev/null
@@ -1,275 +0,0 @@
-import { IMT as JSQuinaryIMT } from "@zk-kit/imt"
-import { expect } from "chai"
-import { run } from "hardhat"
-import { poseidon5 } from "poseidon-lite"
-import { QuinaryIMT, QuinaryIMTTest } from "../typechain-types"
-
-describe("QuinaryIMT", () => {
- const SNARK_SCALAR_FIELD = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")
- let quinaryIMT: QuinaryIMT
- let quinaryIMTTest: QuinaryIMTTest
- let jsQuinaryIMT: JSQuinaryIMT
-
- beforeEach(async () => {
- const { library, contract } = await run("deploy:imt-test", { library: "QuinaryIMT", arity: 5, logs: false })
-
- quinaryIMT = library
- quinaryIMTTest = contract
- jsQuinaryIMT = new JSQuinaryIMT(poseidon5, 6, 0, 5)
- })
-
- describe("# init", () => {
- it("Should not create a tree with a depth > 32", async () => {
- const transaction = quinaryIMTTest.init(33)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "DepthNotSupported")
- })
-
- it("Should create a tree", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
-
- const { depth } = await quinaryIMTTest.data()
-
- expect(depth).to.equal(jsQuinaryIMT.depth)
- })
- })
-
- describe("# insert", () => {
- it("Should not insert a leaf if its value is > SNARK_SCALAR_FIELD", async () => {
- const transaction = quinaryIMTTest.insert(SNARK_SCALAR_FIELD)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should insert a leaf in a tree", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
-
- jsQuinaryIMT.insert(1)
-
- await quinaryIMTTest.insert(1)
-
- const { root } = await quinaryIMTTest.data()
-
- expect(root).to.equal(jsQuinaryIMT.root)
- })
-
- it("Should insert 6 leaves in a tree", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
-
- for (let i = 0; i < 6; i += 1) {
- const leaf = i + 1
-
- jsQuinaryIMT.insert(leaf)
- await quinaryIMTTest.insert(leaf)
-
- const { root } = await quinaryIMTTest.data()
-
- expect(root).to.equal(jsQuinaryIMT.root)
- }
- })
-
- it("Should not insert a leaf if the tree is full", async () => {
- await quinaryIMTTest.init(1)
-
- for (let i = 0; i < 5; i += 1) {
- await quinaryIMTTest.insert(i + 1)
- }
-
- const transaction = quinaryIMTTest.insert(3)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "TreeIsFull")
- })
- })
-
- describe("# update", () => {
- it("Should not update a leaf if the new value is the same as the old one", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- const transaction = quinaryIMTTest.update(1, 1, [[0, 1, 2, 3]], [0])
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "NewLeafCannotEqualOldLeaf")
- })
-
- it("Should not update a leaf if its new value is > SNARK_SCALAR_FIELD", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- const transaction = quinaryIMTTest.update(1, SNARK_SCALAR_FIELD, [[0, 1, 2, 3]], [0])
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should not update a leaf if its original value is > SNARK_SCALAR_FIELD", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- const transaction = quinaryIMTTest.update(SNARK_SCALAR_FIELD, 2, [[0, 1, 2, 3]], [0])
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should not update a leaf if the path indices are wrong", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- jsQuinaryIMT.insert(1)
- jsQuinaryIMT.update(0, 2)
-
- const { pathIndices, siblings } = jsQuinaryIMT.createProof(0)
-
- pathIndices[0] = 5
-
- const transaction = quinaryIMTTest.update(1, 2, siblings, pathIndices)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "WrongMerkleProofPath")
- })
-
- it("Should not update a leaf if the old leaf is wrong", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- jsQuinaryIMT.insert(1)
- jsQuinaryIMT.update(0, 2)
-
- const { pathIndices, siblings } = jsQuinaryIMT.createProof(0)
-
- const transaction = quinaryIMTTest.update(2, 3, siblings, pathIndices)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "LeafDoesNotExist")
- })
-
- it("Should update a leaf", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- jsQuinaryIMT.insert(1)
- jsQuinaryIMT.update(0, 2)
-
- const { pathIndices, siblings } = jsQuinaryIMT.createProof(0)
-
- await quinaryIMTTest.update(1, 2, siblings, pathIndices)
-
- const { root } = await quinaryIMTTest.data()
-
- expect(root).to.equal(jsQuinaryIMT.root)
- })
-
- it("Should not update a leaf that hasn't been inserted yet", async () => {
- quinaryIMTTest.init(jsQuinaryIMT.depth)
-
- for (let i = 0; i < 4; i += 1) {
- const leaf = i + 1
-
- jsQuinaryIMT.insert(leaf)
- await quinaryIMTTest.insert(leaf)
- }
-
- // We're going to try to update leaf 7, despite there only being 4 leaves in the tree.
- const leaf = 42069
-
- // Note that we can insert zeros into the js library tree and the root won't change!
- // that's because we use the zeros optimization to calculate the roots efficiently.
- // technically speaking, there isn't an "empty" tree, there is only a tree that is
- // entirely full of the zero value at every index. Therefore inserting the zero value
- // at any point into an incremental merkle tree doesn't change it's root, because
- // that is already the data the root was calculated from previously. In principle,
- // we can update any leaf that hasn't been inserted yet using this method.
- const rootBeforeZeros = jsQuinaryIMT.root
-
- jsQuinaryIMT.insert(0)
- jsQuinaryIMT.insert(0)
- jsQuinaryIMT.insert(0)
-
- // The root doesn't change because the tree started full with 0s!
- expect(jsQuinaryIMT.root).to.be.equal(rootBeforeZeros)
-
- // Now we can make a merkle proof of zero being included at the uninitialized index.
- const { pathIndices, siblings } = jsQuinaryIMT.createProof(6)
-
- const transaction = quinaryIMTTest.update(0, leaf, siblings, pathIndices)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "LeafIndexOutOfRange")
- })
- })
-
- describe("# remove", () => {
- it("Should not remove a leaf if its value is > SNARK_SCALAR_FIELD", async () => {
- const transaction = quinaryIMTTest.remove(SNARK_SCALAR_FIELD, [[0, 1, 2, 3]], [0])
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "ValueGreaterThanSnarkScalarField")
- })
-
- it("Should not remove a leaf that does not exist", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- jsQuinaryIMT.insert(1)
- jsQuinaryIMT.delete(0)
-
- const { siblings, pathIndices } = jsQuinaryIMT.createProof(0)
-
- const transaction = quinaryIMTTest.remove(2, siblings, pathIndices)
-
- await expect(transaction).to.be.revertedWithCustomError(quinaryIMT, "LeafDoesNotExist")
- })
-
- it("Should remove a leaf", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- jsQuinaryIMT.insert(1)
- jsQuinaryIMT.delete(0)
-
- const { pathIndices, siblings } = jsQuinaryIMT.createProof(0)
-
- await quinaryIMTTest.remove(1, siblings, pathIndices)
-
- const { root } = await quinaryIMTTest.data()
-
- expect(root).to.equal(jsQuinaryIMT.root)
- })
-
- it("Should insert a leaf in a tree after a removal", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
- await quinaryIMTTest.insert(1)
-
- jsQuinaryIMT.insert(1)
- jsQuinaryIMT.delete(0)
-
- const { pathIndices, siblings } = jsQuinaryIMT.createProof(0)
-
- await quinaryIMTTest.remove(1, siblings, pathIndices)
-
- jsQuinaryIMT.insert(2)
- await quinaryIMTTest.insert(2)
-
- const { root } = await quinaryIMTTest.data()
-
- expect(root).to.equal(jsQuinaryIMT.root)
- })
-
- it("Should insert 4 leaves and remove them all", async () => {
- await quinaryIMTTest.init(jsQuinaryIMT.depth)
-
- for (let i = 0; i < 4; i += 1) {
- const leaf = i + 1
-
- jsQuinaryIMT.insert(leaf)
- await quinaryIMTTest.insert(leaf)
- }
-
- for (let i = 0; i < 4; i += 1) {
- jsQuinaryIMT.delete(i)
-
- const { siblings, pathIndices } = jsQuinaryIMT.createProof(i)
-
- await quinaryIMTTest.remove(i + 1, siblings, pathIndices)
- }
-
- const { root } = await quinaryIMTTest.data()
-
- expect(root).to.equal(jsQuinaryIMT.root)
- })
- })
-})
diff --git a/packages/imt/contracts/test/QuinaryIMTTest.sol b/packages/imt/test/QuinaryIMTTest.sol
similarity index 91%
rename from packages/imt/contracts/test/QuinaryIMTTest.sol
rename to packages/imt/test/QuinaryIMTTest.sol
index 6094c5e..97dbb35 100644
--- a/packages/imt/contracts/test/QuinaryIMTTest.sol
+++ b/packages/imt/test/QuinaryIMTTest.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.4;
-import {QuinaryIMT, QuinaryIMTData} from "../QuinaryIMT.sol";
+import {QuinaryIMT, QuinaryIMTData} from "../src/QuinaryIMT.sol";
contract QuinaryIMTTest {
QuinaryIMTData public data;
diff --git a/packages/imt/tsconfig.json b/packages/imt/tsconfig.json
deleted file mode 100644
index 0a513ff..0000000
--- a/packages/imt/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2020",
- "module": "commonjs",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "skipLibCheck": true,
- "resolveJsonModule": true
- },
- "include": ["scripts/**/*", "tasks/**/*", "test/**/*", "typechain-types/**/*"],
- "files": ["hardhat.config.ts"]
-}
diff --git a/packages/lazy-imt/.prettierrc.json b/packages/lazy-imt/.prettierrc.json
deleted file mode 100644
index 717fb52..0000000
--- a/packages/lazy-imt/.prettierrc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "semi": false,
- "arrowParens": "always",
- "trailingComma": "none",
- "plugins": ["prettier-plugin-solidity"]
-}
diff --git a/packages/lazy-imt/.solhint.json b/packages/lazy-imt/.solhint.json
deleted file mode 100644
index bfc727d..0000000
--- a/packages/lazy-imt/.solhint.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "solhint:recommended",
- "plugins": ["prettier"],
- "rules": {
- "compiler-version": ["error", ">=0.8.0"],
- "const-name-snakecase": "off",
- "no-empty-blocks": "off",
- "constructor-syntax": "error",
- "func-visibility": ["error", { "ignoreConstructors": true }],
- "max-line-length": ["error", 120],
- "not-rely-on-time": "off",
- "prettier/prettier": [
- "error",
- {
- "endOfLine": "auto"
- }
- ],
- "reason-string": ["warn", { "maxLength": 80 }]
- }
-}
diff --git a/packages/lazy-imt/LICENSE b/packages/lazy-imt/LICENSE
index 89a15f7..30cff74 120000
--- a/packages/lazy-imt/LICENSE
+++ b/packages/lazy-imt/LICENSE
@@ -1 +1 @@
-contracts/LICENSE
\ No newline at end of file
+../../LICENSE
\ No newline at end of file
diff --git a/packages/lazy-imt/README.md b/packages/lazy-imt/README.md
deleted file mode 120000
index 1ee0442..0000000
--- a/packages/lazy-imt/README.md
+++ /dev/null
@@ -1 +0,0 @@
-contracts/README.md
\ No newline at end of file
diff --git a/packages/lazy-imt/README.md b/packages/lazy-imt/README.md
new file mode 100644
index 0000000..8073eaa
--- /dev/null
+++ b/packages/lazy-imt/README.md
@@ -0,0 +1,60 @@
+
+
+ Lazy Incremental Merkle Tree (Solidity)
+
+ Lazy Incremental Merkle tree implementation in Solidity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> [!WARNING]
+> These library has **not** been audited.
+
+> [!WARNING]
+> If you are looking for the first version of this package, please visit this [link](https://github.com/privacy-scaling-explorations/zk-kit/tree/imt-v1/packages/incremental-merkle-tree.sol).
+
+---
+
+## 🛠 Install
+
+### npm or yarn
+
+Install the `@zk-kit/lazy-imt.sol` package with npm:
+
+```bash
+npm i @zk-kit/lazy-imt.sol --save
+```
+
+or yarn:
+
+```bash
+yarn add @zk-kit/lazy-imt.sol
+```
+
+## 📜 Usage
+
+Please, see the [test contracts](./test) for guidance on utilizing the libraries.
diff --git a/packages/lazy-imt/contracts/LICENSE b/packages/lazy-imt/contracts/LICENSE
deleted file mode 100644
index 8ef16f7..0000000
--- a/packages/lazy-imt/contracts/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Ethereum Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/packages/lazy-imt/contracts/README.md b/packages/lazy-imt/contracts/README.md
deleted file mode 100644
index 8073eaa..0000000
--- a/packages/lazy-imt/contracts/README.md
+++ /dev/null
@@ -1,60 +0,0 @@
-
-
- Lazy Incremental Merkle Tree (Solidity)
-
- Lazy Incremental Merkle tree implementation in Solidity.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [!WARNING]
-> These library has **not** been audited.
-
-> [!WARNING]
-> If you are looking for the first version of this package, please visit this [link](https://github.com/privacy-scaling-explorations/zk-kit/tree/imt-v1/packages/incremental-merkle-tree.sol).
-
----
-
-## 🛠 Install
-
-### npm or yarn
-
-Install the `@zk-kit/lazy-imt.sol` package with npm:
-
-```bash
-npm i @zk-kit/lazy-imt.sol --save
-```
-
-or yarn:
-
-```bash
-yarn add @zk-kit/lazy-imt.sol
-```
-
-## 📜 Usage
-
-Please, see the [test contracts](./test) for guidance on utilizing the libraries.
diff --git a/packages/lazy-imt/contracts/package.json b/packages/lazy-imt/contracts/package.json
deleted file mode 100644
index 85063d3..0000000
--- a/packages/lazy-imt/contracts/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "@zk-kit/lazy-imt.sol",
- "version": "2.0.0-beta.12",
- "description": "Lazy Incremental Merkle tree implementation in Solidity.",
- "license": "MIT",
- "files": [
- "*.sol",
- "!test/*",
- "README.md",
- "LICENSE"
- ],
- "keywords": [
- "blockchain",
- "ethereum",
- "hardhat",
- "smart-contracts",
- "solidity",
- "libraries",
- "merkle-tree",
- "incremental-merkle-tree"
- ],
- "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
- "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/lazy-imt",
- "publishConfig": {
- "access": "public"
- },
- "dependencies": {
- "poseidon-solidity": "0.0.5"
- }
-}
diff --git a/packages/lazy-imt/hardhat.config.ts b/packages/lazy-imt/hardhat.config.ts
deleted file mode 100644
index d652e05..0000000
--- a/packages/lazy-imt/hardhat.config.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import "@nomicfoundation/hardhat-toolbox"
-import { HardhatUserConfig } from "hardhat/config"
-import "./tasks/deploy-imt-test"
-
-const hardhatConfig: HardhatUserConfig = {
- solidity: {
- version: "0.8.23",
- settings: {
- optimizer: {
- enabled: true
- }
- }
- },
- gasReporter: {
- currency: "USD",
- enabled: process.env.REPORT_GAS === "true"
- },
- typechain: {
- target: "ethers-v6"
- }
-}
-
-export default hardhatConfig
diff --git a/packages/lazy-imt/package.json b/packages/lazy-imt/package.json
index d4ed5f5..33b1934 100644
--- a/packages/lazy-imt/package.json
+++ b/packages/lazy-imt/package.json
@@ -1,39 +1,28 @@
{
- "name": "lazy-imt.sol",
- "private": true,
- "scripts": {
- "start": "hardhat node",
- "compile": "hardhat compile",
- "test": "hardhat test",
- "test:report-gas": "REPORT_GAS=true hardhat test",
- "test:coverage": "hardhat coverage",
- "typechain": "hardhat typechain",
- "lint": "solhint 'contracts/**/*.sol'"
- },
- "devDependencies": {
- "@nomicfoundation/hardhat-chai-matchers": "^2.0.3",
- "@nomicfoundation/hardhat-ethers": "^3.0.0",
- "@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": "^10.0.6",
- "@types/node": "^20.10.7",
- "@zk-kit/imt": "^2.0.0-beta.5",
- "chai": "^4.2.0",
- "ethers": "^6.4.0",
- "hardhat": "^2.19.4",
- "hardhat-gas-reporter": "^1.0.8",
- "poseidon-lite": "^0.2.0",
- "prettier-plugin-solidity": "^1.3.1",
- "solhint": "^3.3.6",
- "solhint-plugin-prettier": "^0.1.0",
- "solidity-coverage": "^0.8.0",
- "ts-node": "^10.9.2",
- "typechain": "^8.3.0",
- "typescript": "^5.3.3"
+ "name": "@zk-kit/lazy-imt.sol",
+ "version": "2.0.0-beta.12",
+ "description": "Lazy Incremental Merkle tree implementation in Solidity.",
+ "license": "MIT",
+ "files": [
+ "*.sol",
+ "!test/*",
+ "README.md",
+ "LICENSE"
+ ],
+ "keywords": [
+ "blockchain",
+ "ethereum",
+ "forge",
+ "smart-contracts",
+ "solidity",
+ "libraries",
+ "merkle-tree",
+ "incremental-merkle-tree"
+ ],
+ "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
+ "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/lazy-imt",
+ "publishConfig": {
+ "access": "public"
},
"dependencies": {
"poseidon-solidity": "0.0.5"
diff --git a/packages/lazy-imt/scripts/defaultZeroes.mjs b/packages/lazy-imt/scripts/defaultZeroes.mjs
deleted file mode 100644
index 5bb49dd..0000000
--- a/packages/lazy-imt/scripts/defaultZeroes.mjs
+++ /dev/null
@@ -1,31 +0,0 @@
-import { poseidon } from "circomlibjs"
-
-const zeroes = [0]
-
-for (let x = 1; x < 33; x += 1) {
- zeroes[x] = poseidon([zeroes[x - 1], zeroes[x - 1]])
-}
-
-console.log(`
- ${Array(33)
- .fill(0)
- .map((_, i) => `uint256 constant public Z_${i} = ${zeroes[i]};`)
- .join("\n ")}
-
-/*
- function defaultZeroes() public pure returns (uint256[32] memory) {
- return [${Array(32)
- .fill()
- .map((_, i) => `Z_${i}`)
- .join(",")}];
- }
-*/
-
- function defaultZero(uint256 index) public pure returns (uint256) {
- ${Array(33)
- .fill()
- .map((_, i) => ` if (index == ${i}) return Z_${i};`)
- .join("\n")}
- revert('badindex');
- }
-`)
diff --git a/packages/lazy-imt/contracts/Constants.sol b/packages/lazy-imt/src/Constants.sol
similarity index 100%
rename from packages/lazy-imt/contracts/Constants.sol
rename to packages/lazy-imt/src/Constants.sol
diff --git a/packages/lazy-imt/contracts/InternalLazyIMT.sol b/packages/lazy-imt/src/InternalLazyIMT.sol
similarity index 96%
rename from packages/lazy-imt/contracts/InternalLazyIMT.sol
rename to packages/lazy-imt/src/InternalLazyIMT.sol
index 84e5b34..15ba265 100644
--- a/packages/lazy-imt/contracts/InternalLazyIMT.sol
+++ b/packages/lazy-imt/src/InternalLazyIMT.sol
@@ -108,7 +108,7 @@ library InternalLazyIMT {
uint256 hash = leaf;
- for (uint8 i = 0; ; ) {
+ for (uint8 i = 0;;) {
self.elements[_indexForElement(i, index)] = hash;
// it's a left element so we don't hash until there's a right element
if (index & 1 == 0) break;
@@ -128,7 +128,7 @@ library InternalLazyIMT {
uint256 hash = leaf;
- for (uint8 i = 0; true; ) {
+ for (uint8 i = 0; true;) {
self.elements[_indexForElement(i, index)] = hash;
uint256 levelCount = numberOfLeaves >> (i + 1);
if (levelCount <= index >> 1) break;
@@ -176,12 +176,10 @@ library InternalLazyIMT {
return levels[depth];
}
- function _levels(
- LazyIMTData storage self,
- uint40 numberOfLeaves,
- uint8 depth,
- uint256[] memory levels
- ) internal view {
+ function _levels(LazyIMTData storage self, uint40 numberOfLeaves, uint8 depth, uint256[] memory levels)
+ internal
+ view
+ {
require(depth <= MAX_DEPTH, "LazyIMT: depth must be <= MAX_DEPTH");
require(numberOfLeaves > 0, "LazyIMT: number of leaves must be > 0");
// this should always short circuit if self.numberOfLeaves == 0
@@ -193,7 +191,7 @@ library InternalLazyIMT {
levels[0] = _defaultZero(0);
}
- for (uint8 i = 0; i < depth; ) {
+ for (uint8 i = 0; i < depth;) {
if (index & 1 == 0) {
levels[i + 1] = PoseidonT3.hash([levels[i], _defaultZero(i)]);
} else {
@@ -213,11 +211,11 @@ library InternalLazyIMT {
}
}
- function _merkleProofElements(
- LazyIMTData storage self,
- uint40 index,
- uint8 depth
- ) internal view returns (uint256[] memory) {
+ function _merkleProofElements(LazyIMTData storage self, uint40 index, uint8 depth)
+ internal
+ view
+ returns (uint256[] memory)
+ {
uint40 numberOfLeaves = self.numberOfLeaves;
require(index < numberOfLeaves, "LazyIMT: leaf must exist");
@@ -243,7 +241,7 @@ library InternalLazyIMT {
}
index >>= 1;
- for (uint8 i = 1; i < depth; ) {
+ for (uint8 i = 1; i < depth;) {
uint256 currentLevelCount = numberOfLeaves >> i;
if (index & 1 == 0) {
// if the element is an uncomputed edge node we'll use the value set
diff --git a/packages/lazy-imt/contracts/LazyIMT.sol b/packages/lazy-imt/src/LazyIMT.sol
similarity index 90%
rename from packages/lazy-imt/contracts/LazyIMT.sol
rename to packages/lazy-imt/src/LazyIMT.sol
index 284d5e5..48a2da8 100644
--- a/packages/lazy-imt/contracts/LazyIMT.sol
+++ b/packages/lazy-imt/src/LazyIMT.sol
@@ -38,11 +38,11 @@ library LazyIMT {
return InternalLazyIMT._root(self, depth);
}
- function merkleProofElements(
- LazyIMTData storage self,
- uint40 index,
- uint8 depth
- ) public view returns (uint256[] memory) {
+ function merkleProofElements(LazyIMTData storage self, uint40 index, uint8 depth)
+ public
+ view
+ returns (uint256[] memory)
+ {
return InternalLazyIMT._merkleProofElements(self, index, depth);
}
diff --git a/packages/lazy-imt/tasks/deploy-imt-test.ts b/packages/lazy-imt/tasks/deploy-imt-test.ts
deleted file mode 100644
index d9dc6f7..0000000
--- a/packages/lazy-imt/tasks/deploy-imt-test.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { task, types } from "hardhat/config"
-
-task("deploy:imt-test", "Deploy an IMT contract for testing a library")
- .addParam("library", "The name of the library", undefined, types.string)
- .addOptionalParam("logs", "Print the logs", true, types.boolean)
- .addOptionalParam("arity", "The arity of the tree", 2, types.int)
- .setAction(async ({ logs, library: libraryName, arity }, { ethers }): Promise => {
- const PoseidonFactory = await ethers.getContractFactory(`PoseidonT${arity + 1}`)
-
- const poseidon = await PoseidonFactory.deploy()
- const poseidonAddress = await poseidon.getAddress()
-
- if (logs) {
- console.info(`PoseidonT${arity + 1} library has been deployed to: ${poseidonAddress}`)
- }
-
- const LibraryFactory = await ethers.getContractFactory(libraryName, {
- libraries: {
- [`PoseidonT${arity + 1}`]: poseidonAddress
- }
- })
-
- const library = await LibraryFactory.deploy()
- const libraryAddress = await library.getAddress()
-
- if (logs) {
- console.info(`${libraryName} library has been deployed to: ${libraryAddress}`)
- }
-
- const ContractFactory = await ethers.getContractFactory(`${libraryName}Test`, {
- libraries: {
- [libraryName]: libraryAddress
- }
- })
-
- const contract = await ContractFactory.deploy()
- const contractAddress = await contract.getAddress()
-
- if (logs) {
- console.info(`${libraryName}Test contract has been deployed to: ${contractAddress}`)
- }
-
- return { library, contract }
- })
diff --git a/packages/lazy-imt/test/LazyIMT.ts b/packages/lazy-imt/test/LazyIMT.ts
deleted file mode 100644
index d34653a..0000000
--- a/packages/lazy-imt/test/LazyIMT.ts
+++ /dev/null
@@ -1,373 +0,0 @@
-import { expect } from "chai"
-import { run, network } from "hardhat"
-import { poseidon2 } from "poseidon-lite"
-import { IMT } from "@zk-kit/imt"
-import type { BigNumber } from "ethers"
-import { LazyIMT, LazyIMTTest } from "../typechain-types"
-
-const random = () => poseidon2([Math.floor(Math.random() * 2 ** 40), 0])
-
-describe("LazyIMT", () => {
- const SNARK_SCALAR_FIELD = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")
- let lazyIMTTest: LazyIMTTest
- let lazyIMT: LazyIMT
-
- beforeEach(async () => {
- const { library, contract } = await run("deploy:imt-test", { library: "LazyIMT", logs: false })
-
- lazyIMTTest = contract
- lazyIMT = library
- })
-
- describe("# init", () => {
- it("Should check zero values", async () => {
- expect("0").to.equal((await lazyIMT.defaultZero(0)).toString())
-
- let hash = poseidon2([BigInt(0), BigInt(0)])
-
- for (let x = 1; x < 33; x += 1) {
- const v = await lazyIMT.defaultZero(x)
- expect(v.toString()).to.equal(hash.toString())
- hash = poseidon2([hash, hash])
- }
-
- await expect(lazyIMT.defaultZero(34)).to.be.revertedWith("LazyIMT: defaultZero bad index")
- })
-
- for (let x = 0; x < 32; x += 1) {
- it(`Should initialize tree with depth ${x}`, async () => {
- {
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.maxIndex).to.equal(0)
- expect(treeData.numberOfLeaves).to.equal(0)
- }
-
- await lazyIMTTest.init(x)
-
- {
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.maxIndex).to.equal(2 ** x - 1)
- expect(treeData.numberOfLeaves).to.equal(0)
- }
- })
- }
-
- it("Should fail to init large tree", async () => {
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.maxIndex).to.equal(0)
- expect(treeData.numberOfLeaves).to.equal(0)
-
- await expect(lazyIMTTest.init(33)).to.be.revertedWith("LazyIMT: Tree too large")
- })
- })
-
- describe("# insert", () => {
- for (let depth = 1; depth < 3; depth += 1) {
- it(`Should insert leaves in tree with depth ${depth}`, async () => {
- await lazyIMTTest.init(10)
-
- // empty root should be H(0, 0)
- expect(await lazyIMTTest.root()).to.equal(poseidon2([BigInt(0), BigInt(0)]))
-
- const elements = []
-
- for (let x = 0; x < 2 ** depth - 1; x += 1) {
- const e = random()
-
- elements.push(e)
-
- // construct the tree
- {
- const targetDepth = Math.max(1, Math.ceil(Math.log2(elements.length)))
- const merkleTree = new IMT(poseidon2, targetDepth, BigInt(0))
- for (const _e of elements) {
- merkleTree.insert(_e)
- }
- await lazyIMTTest.insert(e)
- await lazyIMTTest.benchmarkRoot().then((t) => t.wait())
- {
- const root = await lazyIMTTest.root()
- expect(root.toString()).to.equal(merkleTree.root.toString())
- }
- {
- const root = await lazyIMTTest.dynamicRoot(targetDepth)
- expect(root.toString()).to.equal(merkleTree.root.toString())
- }
- }
-
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.numberOfLeaves).to.equal(elements.length)
-
- for (let y = depth; y < 12; y += 1) {
- const merkleTree = new IMT(poseidon2, y, BigInt(0))
- for (const _e of elements) {
- merkleTree.insert(_e)
- }
- const root = await lazyIMTTest.staticRoot(y)
- expect(root.toString()).to.equal(merkleTree.root.toString())
- }
- }
- })
- }
-
- it("Should insert multiple leaves", async () => {
- const depth = 8
-
- const merkleTree = new IMT(poseidon2, depth, BigInt(0))
- await lazyIMTTest.init(depth)
-
- for (let x = 0; x < 130; x += 1) {
- const e = random()
- await lazyIMTTest.insert(e)
- merkleTree.insert(e)
- }
-
- const root = await lazyIMTTest.root()
- expect(root.toString()).to.equal(merkleTree.root.toString())
- })
-
- it("Should fail to insert too many leaves", async () => {
- const depth = 3
-
- await lazyIMTTest.init(depth)
-
- for (let x = 0; x < 2 ** depth - 1; x += 1) {
- await lazyIMTTest.insert(random())
- }
-
- await expect(lazyIMTTest.insert(random())).to.be.revertedWith("LazyIMT: tree is full")
- })
-
- it("Should fail to insert leaf outside of field", async () => {
- const depth = 3
-
- await lazyIMTTest.init(depth)
-
- await expect(lazyIMTTest.insert(SNARK_SCALAR_FIELD)).to.be.revertedWith(
- "LazyIMT: leaf must be < SNARK_SCALAR_FIELD"
- )
- })
- })
-
- describe("# update", () => {
- for (let depth = 1; depth < 3; depth += 1) {
- it(`Should update leaves in tree with depth ${depth}`, async () => {
- await lazyIMTTest.init(depth)
-
- const elements = []
-
- // runs in ~N^N
- for (let x = 0; x < 2 ** depth - 1; x += 1) {
- const e = random()
-
- elements.push(e)
-
- // construct the tree
- const targetDepth = Math.max(1, Math.ceil(Math.log2(elements.length)))
-
- {
- const merkleTree = new IMT(poseidon2, targetDepth, BigInt(0))
-
- for (const _e of elements) {
- merkleTree.insert(_e)
- }
-
- await lazyIMTTest.insert(e)
-
- await lazyIMTTest.benchmarkRoot().then((t) => t.wait())
-
- const root = await lazyIMTTest.root()
-
- expect(root.toString()).to.equal(merkleTree.root.toString())
-
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.numberOfLeaves).to.equal(elements.length)
- }
-
- for (let y = 0; y < x; y += 1) {
- const newE = random()
-
- elements.splice(y, 1, newE)
-
- await lazyIMTTest.update(newE, y)
-
- const merkleTree = new IMT(poseidon2, targetDepth, BigInt(0))
-
- for (const _e of elements) {
- merkleTree.insert(_e)
- }
-
- const root = await lazyIMTTest.root()
-
- expect(root.toString()).to.equal(merkleTree.root.toString())
-
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.numberOfLeaves).to.equal(elements.length)
- }
- }
- })
- }
-
- it("Should fail to update invalid leaf index", async () => {
- const depth = 4
-
- await lazyIMTTest.init(depth)
-
- for (let x = 0; x < 10; x += 1) {
- await lazyIMTTest.insert(random())
- }
-
- await expect(lazyIMTTest.update(random(), 10)).to.be.revertedWith("LazyIMT: leaf must exist")
- })
-
- it("Should fail to update with invalid leaf value", async () => {
- const depth = 3
-
- await lazyIMTTest.init(depth)
-
- for (let x = 0; x < 3; x += 1) {
- await lazyIMTTest.insert(random())
- }
-
- await expect(lazyIMTTest.update(SNARK_SCALAR_FIELD, 0)).to.be.revertedWith(
- "LazyIMT: leaf must be < SNARK_SCALAR_FIELD"
- )
- })
- })
-
- describe("# reset", () => {
- it("Should reset and reuse tree", async () => {
- const depth = 3
-
- await lazyIMTTest.init(10)
-
- {
- const data = await lazyIMTTest.data()
-
- expect(data.numberOfLeaves).to.equal(0)
- }
-
- for (let i = 0; i < 3; i += 1) {
- const elements = []
-
- for (let x = 0; x < 2 ** depth - 1; x += 1) {
- const e = random()
-
- elements.push(e)
-
- // construct the tree
- const targetDepth = Math.max(1, Math.ceil(Math.log2(elements.length)))
- const merkleTree = new IMT(poseidon2, targetDepth, BigInt(0))
-
- for (const _e of elements) {
- merkleTree.insert(_e)
- }
-
- await lazyIMTTest.insert(e)
-
- const root = await lazyIMTTest.root()
-
- expect(root.toString()).to.equal(merkleTree.root.toString())
-
- const treeData = await lazyIMTTest.data()
-
- expect(treeData.numberOfLeaves).to.equal(elements.length)
- }
-
- await lazyIMTTest.reset()
-
- {
- const data = await lazyIMTTest.data()
- expect(data.numberOfLeaves).to.equal(0)
- }
- }
- })
- })
-
- describe("# merkleProof", () => {
- // Given a merkle proof (elements and indices) and a leaf, calculates the root
- function calculateRoot(leafIndex: number, leaf: BigNumber, proofElements: BigNumber[]) {
- let hash = leaf
- const proofIndices = []
- for (let x = 0; x < proofElements.length; x += 1) {
- proofIndices.push((leafIndex >> x) & 1)
- }
- for (let i = 0; i < proofElements.length; i += 1) {
- const proofElement = proofElements[i]
- const proofIndex = proofIndices[i]
- if (proofIndex) {
- hash = poseidon2([proofElement.toString(), hash.toString()])
- } else {
- hash = poseidon2([hash.toString(), proofElement.toString()])
- }
- }
- return hash
- }
-
- it("Should produce valid Merke proofs for different trees", async () => {
- // Test different depths (key) and leafs (values)
- const tests: { [key: number]: number[] } = {
- 1: [1],
- 2: [1, 2],
- 5: [6, 7, 8, 15, 16],
- 7: [7, 127],
- 20: [9, 14, 15, 16, 18, 26, 27, 28, 40, 128, 129]
- }
-
- // For each depth
- // eslint-disable-next-line guard-for-in
- for (const depth in tests) {
- // For each amount of leafs
- for (const numLeaf of tests[depth]) {
- // Freeze the state
- const snapshoot = await network.provider.request({ method: "evm_snapshot", params: [] })
-
- // Create the tree
- await lazyIMTTest.init(depth)
- const elements = []
- for (let x = 0; x < numLeaf; x += 1) {
- const e = random()
- elements.push(e)
- await lazyIMTTest.insert(e)
- }
-
- // Get proofs for every leafs and verify against the root
- for (let leafIndex = 0; leafIndex < numLeaf; leafIndex += 1) {
- const proofElements = await lazyIMTTest.merkleProofElements(leafIndex, depth)
-
- // Calculate the root we arrive at with the proof we got
- const calculatedRoot = calculateRoot(leafIndex, elements[leafIndex], proofElements)
-
- // Get the root from the contract
- const staticRoot = await lazyIMTTest.staticRoot(depth)
-
- // If they match, proof is valid
- await expect(calculatedRoot).to.be.equal(staticRoot)
- }
-
- // Done with test, revert the tree state
- await network.provider.request({ method: "evm_revert", params: [snapshoot] })
- }
- }
- }).timeout(8 * 60 * 1000)
- })
-
- it("Should fail to generate out of range static root", async () => {
- await lazyIMTTest.init(10)
-
- const elements = []
- for (let x = 0; x < 20; x += 1) {
- const e = random()
- elements.push(e)
- await lazyIMTTest.insert(e)
- }
- await expect(lazyIMTTest.staticRoot(4)).to.be.revertedWith("LazyIMT: ambiguous depth")
- await expect(lazyIMTTest.staticRoot(33)).to.be.revertedWith("LazyIMT: depth must be <= MAX_DEPTH")
- })
-})
diff --git a/packages/lazy-imt/contracts/test/LazyIMTTest.sol b/packages/lazy-imt/test/LazyIMTTest.sol
similarity index 95%
rename from packages/lazy-imt/contracts/test/LazyIMTTest.sol
rename to packages/lazy-imt/test/LazyIMTTest.sol
index 417c341..2d4b03d 100644
--- a/packages/lazy-imt/contracts/test/LazyIMTTest.sol
+++ b/packages/lazy-imt/test/LazyIMTTest.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.4;
-import {LazyIMT, LazyIMTData} from "../LazyIMT.sol";
+import {LazyIMT, LazyIMTData} from "../src/LazyIMT.sol";
contract LazyIMTTest {
LazyIMTData public data;
diff --git a/packages/lazy-imt/tsconfig.json b/packages/lazy-imt/tsconfig.json
deleted file mode 100644
index 0a513ff..0000000
--- a/packages/lazy-imt/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2020",
- "module": "commonjs",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "skipLibCheck": true,
- "resolveJsonModule": true
- },
- "include": ["scripts/**/*", "tasks/**/*", "test/**/*", "typechain-types/**/*"],
- "files": ["hardhat.config.ts"]
-}
diff --git a/packages/lazytower/.prettierrc.json b/packages/lazytower/.prettierrc.json
deleted file mode 100644
index 717fb52..0000000
--- a/packages/lazytower/.prettierrc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "semi": false,
- "arrowParens": "always",
- "trailingComma": "none",
- "plugins": ["prettier-plugin-solidity"]
-}
diff --git a/packages/lazytower/.solhint.json b/packages/lazytower/.solhint.json
deleted file mode 100644
index bfc727d..0000000
--- a/packages/lazytower/.solhint.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "solhint:recommended",
- "plugins": ["prettier"],
- "rules": {
- "compiler-version": ["error", ">=0.8.0"],
- "const-name-snakecase": "off",
- "no-empty-blocks": "off",
- "constructor-syntax": "error",
- "func-visibility": ["error", { "ignoreConstructors": true }],
- "max-line-length": ["error", 120],
- "not-rely-on-time": "off",
- "prettier/prettier": [
- "error",
- {
- "endOfLine": "auto"
- }
- ],
- "reason-string": ["warn", { "maxLength": 80 }]
- }
-}
diff --git a/packages/lazytower/LICENSE b/packages/lazytower/LICENSE
index 89a15f7..30cff74 120000
--- a/packages/lazytower/LICENSE
+++ b/packages/lazytower/LICENSE
@@ -1 +1 @@
-contracts/LICENSE
\ No newline at end of file
+../../LICENSE
\ No newline at end of file
diff --git a/packages/lazytower/README.md b/packages/lazytower/README.md
deleted file mode 120000
index 1ee0442..0000000
--- a/packages/lazytower/README.md
+++ /dev/null
@@ -1 +0,0 @@
-contracts/README.md
\ No newline at end of file
diff --git a/packages/lazytower/README.md b/packages/lazytower/README.md
new file mode 100644
index 0000000..dcaa8a5
--- /dev/null
+++ b/packages/lazytower/README.md
@@ -0,0 +1,138 @@
+
+
+ LazyTower (Solidity)
+
+ LazyTower Solidity library.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> [!WARNING]
+> These library has **not** been audited.
+
+---
+
+## 🛠 Install
+
+### npm or yarn
+
+Install the `@zk-kit/lazytower.sol` package with npm:
+
+```bash
+npm i @zk-kit/lazytower.sol --save
+```
+
+or yarn:
+
+```bash
+yarn add @zk-kit/lazytower.sol
+```
+
+## 📜 Usage
+
+### Importing and using the library
+
+```solidity
+// SPDX-License-Identifier: MIT
+
+pragma solidity ^0.8.4;
+
+import "../LazyTowerHashChain.sol";
+
+contract LazyTowerHashChainTest {
+ using LazyTowerHashChain for LazyTowerHashChainData;
+
+ event Add(uint256 item);
+
+ // map for multiple test cases
+ mapping(bytes32 => LazyTowerHashChainData) public towers;
+
+ function add(bytes32 _towerId, uint256 _item) external {
+ towers[_towerId].add(_item);
+ emit Add(_item);
+ }
+
+ function getDataForProving(bytes32 _towerId) external view returns (uint256, uint256[] memory, uint256) {
+ return towers[_towerId].getDataForProving();
+ }
+}
+```
+
+### Creating an Hardhat task to deploy the contract
+
+```typescript
+import { Contract } from "ethers"
+import { task, types } from "hardhat/config"
+
+task("deploy:lazytower-test", "Deploy a LazyTowerHashChainTest contract")
+ .addOptionalParam("logs", "Print the logs", true, types.boolean)
+ .setAction(async ({ logs }, { ethers }): Promise => {
+ const PoseidonT3Factory = await ethers.getContractFactory("PoseidonT3")
+ const PoseidonT3 = await PoseidonT3Factory.deploy()
+
+ if (logs) {
+ console.info(`PoseidonT3 library has been deployed to: ${PoseidonT3.address}`)
+ }
+
+ const LazyTowerLibFactory = await ethers.getContractFactory("LazyTowerHashChain", {
+ libraries: {
+ PoseidonT3: PoseidonT3.address
+ }
+ })
+ const lazyTowerLib = await LazyTowerLibFactory.deploy()
+
+ await lazyTowerLib.deployed()
+
+ if (logs) {
+ console.info(`LazyTowerHashChain library has been deployed to: ${lazyTowerLib.address}`)
+ }
+
+ const ContractFactory = await ethers.getContractFactory("LazyTowerHashChainTest", {
+ libraries: {
+ LazyTowerHashChain: lazyTowerLib.address
+ }
+ })
+
+ const contract = await ContractFactory.deploy()
+
+ await contract.deployed()
+
+ if (logs) {
+ console.info(`Test contract has been deployed to: ${contract.address}`)
+ }
+
+ return contract
+ })
+```
+
+## Contacts
+
+### Developers
+
+- e-mail : lcamel@gmail.com
+- github : [@LCamel](https://github.com/LCamel)
+- website : https://www.facebook.com/LCamel
diff --git a/packages/lazytower/contracts/LICENSE b/packages/lazytower/contracts/LICENSE
deleted file mode 100644
index 8ef16f7..0000000
--- a/packages/lazytower/contracts/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Ethereum Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/packages/lazytower/contracts/README.md b/packages/lazytower/contracts/README.md
deleted file mode 100644
index dcaa8a5..0000000
--- a/packages/lazytower/contracts/README.md
+++ /dev/null
@@ -1,138 +0,0 @@
-
-
- LazyTower (Solidity)
-
- LazyTower Solidity library.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [!WARNING]
-> These library has **not** been audited.
-
----
-
-## 🛠 Install
-
-### npm or yarn
-
-Install the `@zk-kit/lazytower.sol` package with npm:
-
-```bash
-npm i @zk-kit/lazytower.sol --save
-```
-
-or yarn:
-
-```bash
-yarn add @zk-kit/lazytower.sol
-```
-
-## 📜 Usage
-
-### Importing and using the library
-
-```solidity
-// SPDX-License-Identifier: MIT
-
-pragma solidity ^0.8.4;
-
-import "../LazyTowerHashChain.sol";
-
-contract LazyTowerHashChainTest {
- using LazyTowerHashChain for LazyTowerHashChainData;
-
- event Add(uint256 item);
-
- // map for multiple test cases
- mapping(bytes32 => LazyTowerHashChainData) public towers;
-
- function add(bytes32 _towerId, uint256 _item) external {
- towers[_towerId].add(_item);
- emit Add(_item);
- }
-
- function getDataForProving(bytes32 _towerId) external view returns (uint256, uint256[] memory, uint256) {
- return towers[_towerId].getDataForProving();
- }
-}
-```
-
-### Creating an Hardhat task to deploy the contract
-
-```typescript
-import { Contract } from "ethers"
-import { task, types } from "hardhat/config"
-
-task("deploy:lazytower-test", "Deploy a LazyTowerHashChainTest contract")
- .addOptionalParam("logs", "Print the logs", true, types.boolean)
- .setAction(async ({ logs }, { ethers }): Promise => {
- const PoseidonT3Factory = await ethers.getContractFactory("PoseidonT3")
- const PoseidonT3 = await PoseidonT3Factory.deploy()
-
- if (logs) {
- console.info(`PoseidonT3 library has been deployed to: ${PoseidonT3.address}`)
- }
-
- const LazyTowerLibFactory = await ethers.getContractFactory("LazyTowerHashChain", {
- libraries: {
- PoseidonT3: PoseidonT3.address
- }
- })
- const lazyTowerLib = await LazyTowerLibFactory.deploy()
-
- await lazyTowerLib.deployed()
-
- if (logs) {
- console.info(`LazyTowerHashChain library has been deployed to: ${lazyTowerLib.address}`)
- }
-
- const ContractFactory = await ethers.getContractFactory("LazyTowerHashChainTest", {
- libraries: {
- LazyTowerHashChain: lazyTowerLib.address
- }
- })
-
- const contract = await ContractFactory.deploy()
-
- await contract.deployed()
-
- if (logs) {
- console.info(`Test contract has been deployed to: ${contract.address}`)
- }
-
- return contract
- })
-```
-
-## Contacts
-
-### Developers
-
-- e-mail : lcamel@gmail.com
-- github : [@LCamel](https://github.com/LCamel)
-- website : https://www.facebook.com/LCamel
diff --git a/packages/lazytower/contracts/package.json b/packages/lazytower/contracts/package.json
deleted file mode 100644
index 1d46dec..0000000
--- a/packages/lazytower/contracts/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "@zk-kit/lazytower.sol",
- "version": "0.0.1",
- "description": "LazyTower Solidity libraries.",
- "license": "MIT",
- "files": [
- "**/*.sol",
- "!test/",
- "README.md"
- ],
- "keywords": [
- "blockchain",
- "ethereum",
- "hardhat",
- "smart-contracts",
- "solidity",
- "libraries",
- "merkle-tree",
- "incremental-merkle-tree",
- "lazytower"
- ],
- "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
- "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/lazytower",
- "author": {
- "name": "LCamel",
- "email": "lcamel@gmail.com",
- "url": "https://twitter.com/LCamel"
- },
- "publishConfig": {
- "access": "public"
- },
- "dependencies": {
- "poseidon-solidity": "0.0.5"
- }
-}
diff --git a/packages/lazytower/hardhat.config.ts b/packages/lazytower/hardhat.config.ts
deleted file mode 100644
index 10c3e1f..0000000
--- a/packages/lazytower/hardhat.config.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import "@nomicfoundation/hardhat-toolbox"
-import { HardhatUserConfig } from "hardhat/config"
-import "./tasks/deploy-lazytower-test"
-
-const hardhatConfig: HardhatUserConfig = {
- solidity: "0.8.23",
- gasReporter: {
- currency: "USD",
- enabled: process.env.REPORT_GAS === "true",
- coinmarketcap: process.env.COINMARKETCAP_API_KEY
- },
- typechain: {
- target: "ethers-v6"
- }
-}
-
-export default hardhatConfig
diff --git a/packages/lazytower/package.json b/packages/lazytower/package.json
index 74ade71..c2a92c2 100644
--- a/packages/lazytower/package.json
+++ b/packages/lazytower/package.json
@@ -1,39 +1,33 @@
{
- "name": "lazytower.sol",
- "private": true,
- "scripts": {
- "start": "hardhat node",
- "compile": "hardhat compile",
- "deploy:test-contracts": "hardhat deploy:tree-contracts",
- "test": "hardhat test",
- "test:report-gas": "REPORT_GAS=true hardhat test",
- "test:coverage": "hardhat coverage",
- "typechain": "hardhat typechain",
- "lint": "solhint 'contracts/**/*.sol'"
+ "name": "@zk-kit/lazytower.sol",
+ "version": "0.0.1",
+ "description": "LazyTower Solidity libraries.",
+ "license": "MIT",
+ "files": [
+ "**/*.sol",
+ "!test/",
+ "README.md"
+ ],
+ "keywords": [
+ "blockchain",
+ "ethereum",
+ "forge",
+ "smart-contracts",
+ "solidity",
+ "libraries",
+ "merkle-tree",
+ "incremental-merkle-tree",
+ "lazytower"
+ ],
+ "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
+ "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/lazytower",
+ "author": {
+ "name": "LCamel",
+ "email": "lcamel@gmail.com",
+ "url": "https://twitter.com/LCamel"
},
- "devDependencies": {
- "@nomicfoundation/hardhat-chai-matchers": "^2.0.3",
- "@nomicfoundation/hardhat-ethers": "^3.0.0",
- "@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": "^10.0.6",
- "@types/node": "^20.10.7",
- "chai": "^4.2.0",
- "ethers": "^6.4.0",
- "hardhat": "^2.19.4",
- "hardhat-gas-reporter": "^1.0.8",
- "poseidon-lite": "^0.2.0",
- "prettier-plugin-solidity": "^1.3.1",
- "solhint": "^3.3.6",
- "solhint-plugin-prettier": "^0.1.0",
- "solidity-coverage": "^0.8.0",
- "ts-node": "^10.9.2",
- "typechain": "^8.3.0",
- "typescript": "^5.3.3"
+ "publishConfig": {
+ "access": "public"
},
"dependencies": {
"poseidon-solidity": "0.0.5"
diff --git a/packages/lazytower/contracts/LazyTowerHashChain.sol b/packages/lazytower/src/LazyTowerHashChain.sol
similarity index 90%
rename from packages/lazytower/contracts/LazyTowerHashChain.sol
rename to packages/lazytower/src/LazyTowerHashChain.sol
index d7fce28..a0fd6d1 100644
--- a/packages/lazytower/contracts/LazyTowerHashChain.sol
+++ b/packages/lazytower/src/LazyTowerHashChain.sol
@@ -4,6 +4,7 @@ pragma solidity ^0.8.4;
import {PoseidonT3} from "poseidon-solidity/PoseidonT3.sol";
// CAPACITY = W * (W**0 + W**1 + ... + W**(H - 1)) = W * (W**H - 1) / (W - 1)
// 4 * (4**24 - 1) / (4 - 1) = 375_299_968_947_540;
+
uint256 constant H = 24;
uint256 constant W = 4;
@@ -26,9 +27,11 @@ library LazyTowerHashChain {
uint256 internal constant SNARK_SCALAR_FIELD =
21888242871839275222246405745257275088548364400416034343698204186575808495617;
- function findLowestNonFullLevelThenInc(
- uint256 levelLengths
- ) internal pure returns (uint256 level, bool isHead, bool isTop, uint256 newLevelLengths) {
+ function findLowestNonFullLevelThenInc(uint256 levelLengths)
+ internal
+ pure
+ returns (uint256 level, bool isHead, bool isTop, uint256 newLevelLengths)
+ {
// find the lowest non-full level
uint256 levelLength;
while (true) {
@@ -82,9 +85,11 @@ library LazyTowerHashChain {
}
}
- function getDataForProving(
- LazyTowerHashChainData storage self
- ) external view returns (uint256, uint256[] memory, uint256) {
+ function getDataForProving(LazyTowerHashChainData storage self)
+ external
+ view
+ returns (uint256, uint256[] memory, uint256)
+ {
uint256 len = self.digests.length;
uint256[] memory digests = new uint256[](len); // for returning a dynamic array
for (uint256 i = 0; i < len; i++) {
diff --git a/packages/lazytower/tasks/deploy-lazytower-test.ts b/packages/lazytower/tasks/deploy-lazytower-test.ts
deleted file mode 100644
index 1ac1751..0000000
--- a/packages/lazytower/tasks/deploy-lazytower-test.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import { task, types } from "hardhat/config"
-
-task("deploy:lazytower-test", "Deploy a LazyTowerHashChainTest contract")
- .addOptionalParam("logs", "Print the logs", true, types.boolean)
- .setAction(async ({ logs }, { ethers }): Promise => {
- const PoseidonT3Factory = await ethers.getContractFactory("PoseidonT3")
-
- const poseidonT3 = await PoseidonT3Factory.deploy()
- const poseidonT3Address = await poseidonT3.getAddress()
-
- if (logs) {
- console.info(`PoseidonT3 library has been deployed to: ${poseidonT3Address}`)
- }
-
- const LazyTowerLibFactory = await ethers.getContractFactory("LazyTowerHashChain", {
- libraries: {
- PoseidonT3: poseidonT3Address
- }
- })
-
- const lazyTowerLib = await LazyTowerLibFactory.deploy()
- const lazyTowerLibAddress = await lazyTowerLib.getAddress()
-
- if (logs) {
- console.info(`LazyTowerHashChain library has been deployed to: ${lazyTowerLibAddress}`)
- }
-
- const ContractFactory = await ethers.getContractFactory("LazyTowerHashChainTest", {
- libraries: {
- LazyTowerHashChain: lazyTowerLibAddress
- }
- })
-
- const contract = await ContractFactory.deploy()
- const contractAddress = await lazyTowerLib.getAddress()
-
- if (logs) {
- console.info(`Test contract has been deployed to: ${contractAddress}`)
- }
-
- return contract
- })
diff --git a/packages/lazytower/contracts/test/LazyTowerHashChainTest.sol b/packages/lazytower/test/LazyTowerHashChainTest.sol
similarity index 93%
rename from packages/lazytower/contracts/test/LazyTowerHashChainTest.sol
rename to packages/lazytower/test/LazyTowerHashChainTest.sol
index c1501d0..1666e40 100644
--- a/packages/lazytower/contracts/test/LazyTowerHashChainTest.sol
+++ b/packages/lazytower/test/LazyTowerHashChainTest.sol
@@ -2,7 +2,7 @@
pragma solidity ^0.8.4;
-import "../LazyTowerHashChain.sol";
+import "../src/LazyTowerHashChain.sol";
contract LazyTowerHashChainTest {
using LazyTowerHashChain for LazyTowerHashChainData;
diff --git a/packages/lazytower/test/LazyTowerHashChainTest.ts b/packages/lazytower/test/LazyTowerHashChainTest.ts
deleted file mode 100644
index 2ce66e8..0000000
--- a/packages/lazytower/test/LazyTowerHashChainTest.ts
+++ /dev/null
@@ -1,88 +0,0 @@
-import { expect } from "chai"
-import { Contract, encodeBytes32String } from "ethers"
-import { run } from "hardhat"
-import { poseidon2 } from "poseidon-lite"
-import ShiftTower from "./utils"
-
-describe("LazyTowerHashChainTest", () => {
- let contract: Contract
-
- before(async () => {
- contract = await run("deploy:lazytower-test", { logs: false })
- })
-
- it("Should produce correct levelLengths, digests and digest of digests", async () => {
- const lazyTowerId = encodeBytes32String("test1")
-
- const N = 150
- for (let i = 0; i < N; i += 1) {
- await contract.add(lazyTowerId, i)
- }
-
- const [levelLengths, digests, digestOfDigests] = await contract.getDataForProving(lazyTowerId)
-
- expect(levelLengths).to.equal(0x2112)
-
- expect(digests[0]).to.equal(
- BigInt("7484852499570635450337779587061833141700590058395918107227385307780465498841")
- )
- expect(digests[1]).to.equal(
- BigInt("18801712394745483811033456933953954791894699812924877968490149877093764724813")
- )
- expect(digests[2]).to.equal(
- BigInt("18495397265763935736123111771752209927150052777598404957994272011704245682779")
- )
- expect(digests[3]).to.equal(
- BigInt("11606235313340788975553986881206148975708550071371494991713397040288897077102")
- )
- for (let i = 4; i < digests.length; i += 1) {
- expect(digests[i]).to.equal(BigInt("0"))
- }
-
- expect(digestOfDigests).to.equal(
- BigInt("19260615748091768530426964318883829655407684674262674118201416393073357631548")
- )
- })
-
- // TODO: this times out in CI
- it.skip("Should have the same output as the Javascript fixture", async () => {
- const lazyTowerId = encodeBytes32String("test2")
-
- const H2 = (a: bigint, b: bigint) => poseidon2([a, b])
- const W = 4
- const shiftTower = ShiftTower(W, (vs: any[]) => vs.reduce(H2))
- for (let i = 0; i < 150; i += 1) {
- shiftTower.add(i)
-
- const tx = contract.add(lazyTowerId, i)
-
- // event
- await expect(tx).to.emit(contract, "Add").withArgs(i)
-
- // levelLengths and digest
- const [levelLengths, digests, digestOfDigests] = await contract.getDataForProving(lazyTowerId)
-
- expect(levelLengths).to.equal(shiftTower.L.map((l) => l.length).reduce((s, v, lv) => s + (v << (lv * 4))))
-
- const D = shiftTower.L.map((l: any[]) => l.reduce(H2))
- for (let lv = 0; lv < digests.length; lv += 1) {
- expect(digests[lv]).to.equal(D[lv] ?? 0)
- }
-
- expect(digestOfDigests).to.equal(D.reverse().reduce(H2))
- }
- })
-
- it("Should reject values not in the field", async () => {
- const lazyTowerId = encodeBytes32String("test3")
-
- let item = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495616")
-
- const tx = contract.add(lazyTowerId, item)
- await expect(tx).to.emit(contract, "Add").withArgs(item)
-
- item += BigInt(1)
- const tx2 = contract.add(lazyTowerId, item)
- await expect(tx2).to.be.revertedWith("LazyTower: item must be < SNARK_SCALAR_FIELD")
- })
-})
diff --git a/packages/lazytower/test/utils.ts b/packages/lazytower/test/utils.ts
deleted file mode 100644
index e720fe5..0000000
--- a/packages/lazytower/test/utils.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-export default function ShiftTower(W: number, digest: (values: number[]) => number) {
- const S: number[][] = []
- const L: number[][] = []
-
- function _add(lv: number, v: number): number {
- if (lv === L.length) {
- S[lv] = []
- L[lv] = [v]
- } else if (L[lv].length < W) {
- L[lv].push(v)
- } else {
- const d = digest(L[lv])
- S[lv].push(...L[lv])
- L[lv] = [v]
- return _add(lv + 1, d)
- }
- return lv
- }
- const add = (item: number) => _add(0, item)
- return { W, digest, L, S, add }
-}
diff --git a/packages/lazytower/tsconfig.json b/packages/lazytower/tsconfig.json
deleted file mode 100644
index 0a513ff..0000000
--- a/packages/lazytower/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2020",
- "module": "commonjs",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "skipLibCheck": true,
- "resolveJsonModule": true
- },
- "include": ["scripts/**/*", "tasks/**/*", "test/**/*", "typechain-types/**/*"],
- "files": ["hardhat.config.ts"]
-}
diff --git a/packages/lean-imt/.prettierrc.json b/packages/lean-imt/.prettierrc.json
deleted file mode 100644
index 717fb52..0000000
--- a/packages/lean-imt/.prettierrc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "semi": false,
- "arrowParens": "always",
- "trailingComma": "none",
- "plugins": ["prettier-plugin-solidity"]
-}
diff --git a/packages/lean-imt/.solhint.json b/packages/lean-imt/.solhint.json
deleted file mode 100644
index bfc727d..0000000
--- a/packages/lean-imt/.solhint.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "extends": "solhint:recommended",
- "plugins": ["prettier"],
- "rules": {
- "compiler-version": ["error", ">=0.8.0"],
- "const-name-snakecase": "off",
- "no-empty-blocks": "off",
- "constructor-syntax": "error",
- "func-visibility": ["error", { "ignoreConstructors": true }],
- "max-line-length": ["error", 120],
- "not-rely-on-time": "off",
- "prettier/prettier": [
- "error",
- {
- "endOfLine": "auto"
- }
- ],
- "reason-string": ["warn", { "maxLength": 80 }]
- }
-}
diff --git a/packages/lean-imt/LICENSE b/packages/lean-imt/LICENSE
deleted file mode 120000
index 89a15f7..0000000
--- a/packages/lean-imt/LICENSE
+++ /dev/null
@@ -1 +0,0 @@
-contracts/LICENSE
\ No newline at end of file
diff --git a/packages/lean-imt/LICENSE b/packages/lean-imt/LICENSE
new file mode 100644
index 0000000..8ef16f7
--- /dev/null
+++ b/packages/lean-imt/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2024 Ethereum Foundation
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/packages/lean-imt/README.md b/packages/lean-imt/README.md
deleted file mode 120000
index 1ee0442..0000000
--- a/packages/lean-imt/README.md
+++ /dev/null
@@ -1 +0,0 @@
-contracts/README.md
\ No newline at end of file
diff --git a/packages/lean-imt/README.md b/packages/lean-imt/README.md
new file mode 100644
index 0000000..8c5e1cb
--- /dev/null
+++ b/packages/lean-imt/README.md
@@ -0,0 +1,59 @@
+
+
+ Lean Incremental Merkle Tree (Solidity)
+
+ Lean Incremental Merkle tree implementation in Solidity.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+> [!NOTE]
+> This library has been audited as part of the Semaphore V4 PSE audit: https://semaphore.pse.dev/Semaphore_4.0.0_Audit.pdf.
+
+The LeanIMT is an optimized binary version of the [IMT](https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/imt) into binary-focused model, eliminating the need for zero values and allowing dynamic depth adjustment. Unlike the IMT, which uses a zero hash for incomplete nodes, the LeanIMT directly adopts the left child's value when a node lacks a right counterpart. The tree's depth dynamically adjusts to the count of leaves, enhancing efficiency by reducing the number of required hash calculations. To understand more about the LeanIMT, take a look at this [visual explanation](https://hackmd.io/@vplasencia/S1whLBN16).
+
+---
+
+## 🛠 Install
+
+### npm or yarn
+
+Install the `@zk-kit/lean-imt.sol` package with npm:
+
+```bash
+npm i @zk-kit/lean-imt.sol --save
+```
+
+or yarn:
+
+```bash
+yarn add @zk-kit/lean-imt.sol
+```
+
+## 📜 Usage
+
+Please, see the [test contracts](./test) for guidance on utilizing the libraries.
diff --git a/packages/lean-imt/contracts/LICENSE b/packages/lean-imt/contracts/LICENSE
deleted file mode 100644
index 8ef16f7..0000000
--- a/packages/lean-imt/contracts/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2024 Ethereum Foundation
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/packages/lean-imt/contracts/README.md b/packages/lean-imt/contracts/README.md
deleted file mode 100644
index 8c5e1cb..0000000
--- a/packages/lean-imt/contracts/README.md
+++ /dev/null
@@ -1,59 +0,0 @@
-
-
- Lean Incremental Merkle Tree (Solidity)
-
- Lean Incremental Merkle tree implementation in Solidity.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-> [!NOTE]
-> This library has been audited as part of the Semaphore V4 PSE audit: https://semaphore.pse.dev/Semaphore_4.0.0_Audit.pdf.
-
-The LeanIMT is an optimized binary version of the [IMT](https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/imt) into binary-focused model, eliminating the need for zero values and allowing dynamic depth adjustment. Unlike the IMT, which uses a zero hash for incomplete nodes, the LeanIMT directly adopts the left child's value when a node lacks a right counterpart. The tree's depth dynamically adjusts to the count of leaves, enhancing efficiency by reducing the number of required hash calculations. To understand more about the LeanIMT, take a look at this [visual explanation](https://hackmd.io/@vplasencia/S1whLBN16).
-
----
-
-## 🛠 Install
-
-### npm or yarn
-
-Install the `@zk-kit/lean-imt.sol` package with npm:
-
-```bash
-npm i @zk-kit/lean-imt.sol --save
-```
-
-or yarn:
-
-```bash
-yarn add @zk-kit/lean-imt.sol
-```
-
-## 📜 Usage
-
-Please, see the [test contracts](./test) for guidance on utilizing the libraries.
diff --git a/packages/lean-imt/contracts/package.json b/packages/lean-imt/contracts/package.json
deleted file mode 100644
index 20b39a6..0000000
--- a/packages/lean-imt/contracts/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "@zk-kit/lean-imt.sol",
- "version": "2.0.0",
- "description": "Incremental Merkle tree implementations in Solidity.",
- "license": "MIT",
- "files": [
- "*.sol",
- "!test/*",
- "README.md",
- "LICENSE"
- ],
- "keywords": [
- "blockchain",
- "ethereum",
- "hardhat",
- "smart-contracts",
- "solidity",
- "libraries",
- "merkle-tree",
- "incremental-merkle-tree"
- ],
- "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
- "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/imt",
- "publishConfig": {
- "access": "public"
- },
- "dependencies": {
- "poseidon-solidity": "0.0.5"
- }
-}
diff --git a/packages/lean-imt/contracts/test/LeanIMTTest.sol b/packages/lean-imt/contracts/test/LeanIMTTest.sol
deleted file mode 100644
index b39f8d1..0000000
--- a/packages/lean-imt/contracts/test/LeanIMTTest.sol
+++ /dev/null
@@ -1,37 +0,0 @@
-// SPDX-License-Identifier: MIT
-
-pragma solidity ^0.8.4;
-
-import {LeanIMT, LeanIMTData} from "../LeanIMT.sol";
-
-contract LeanIMTTest {
- LeanIMTData public data;
-
- function insert(uint256 leaf) external {
- LeanIMT.insert(data, leaf);
- }
-
- function insertMany(uint256[] calldata leaves) external {
- LeanIMT.insertMany(data, leaves);
- }
-
- function update(uint256 oldLeaf, uint256 newLeaf, uint256[] calldata siblingNodes) external {
- LeanIMT.update(data, oldLeaf, newLeaf, siblingNodes);
- }
-
- function remove(uint256 leaf, uint256[] calldata siblingNodes) external {
- LeanIMT.remove(data, leaf, siblingNodes);
- }
-
- function has(uint256 leaf) external view returns (bool) {
- return LeanIMT.has(data, leaf);
- }
-
- function indexOf(uint256 leaf) external view returns (uint256) {
- return LeanIMT.indexOf(data, leaf);
- }
-
- function root() public view returns (uint256) {
- return LeanIMT.root(data);
- }
-}
diff --git a/packages/lean-imt/hardhat.config.ts b/packages/lean-imt/hardhat.config.ts
deleted file mode 100644
index d652e05..0000000
--- a/packages/lean-imt/hardhat.config.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import "@nomicfoundation/hardhat-toolbox"
-import { HardhatUserConfig } from "hardhat/config"
-import "./tasks/deploy-imt-test"
-
-const hardhatConfig: HardhatUserConfig = {
- solidity: {
- version: "0.8.23",
- settings: {
- optimizer: {
- enabled: true
- }
- }
- },
- gasReporter: {
- currency: "USD",
- enabled: process.env.REPORT_GAS === "true"
- },
- typechain: {
- target: "ethers-v6"
- }
-}
-
-export default hardhatConfig
diff --git a/packages/lean-imt/package.json b/packages/lean-imt/package.json
index ef8316f..f94aaee 100644
--- a/packages/lean-imt/package.json
+++ b/packages/lean-imt/package.json
@@ -1,39 +1,25 @@
{
- "name": "lean-imt.sol",
- "private": true,
- "scripts": {
- "start": "hardhat node",
- "compile": "hardhat compile",
- "test": "hardhat test",
- "test:report-gas": "REPORT_GAS=true hardhat test",
- "test:coverage": "hardhat coverage",
- "typechain": "hardhat typechain",
- "lint": "solhint 'contracts/**/*.sol'"
- },
- "devDependencies": {
- "@nomicfoundation/hardhat-chai-matchers": "^2.0.3",
- "@nomicfoundation/hardhat-ethers": "^3.0.0",
- "@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": "^10.0.6",
- "@types/node": "^20.10.7",
- "@zk-kit/lean-imt": "^2.0.1",
- "chai": "^4.2.0",
- "ethers": "^6.4.0",
- "hardhat": "^2.19.4",
- "hardhat-gas-reporter": "^1.0.8",
- "poseidon-lite": "^0.2.0",
- "prettier-plugin-solidity": "^1.3.1",
- "solhint": "^3.3.6",
- "solhint-plugin-prettier": "^0.1.0",
- "solidity-coverage": "^0.8.0",
- "ts-node": "^10.9.2",
- "typechain": "^8.3.0",
- "typescript": "^5.3.3"
+ "name": "@zk-kit/lean-imt.sol",
+ "version": "2.0.0",
+ "description": "Incremental Merkle tree implementations in Solidity.",
+ "license": "MIT",
+ "files": [
+ "src"
+ ],
+ "keywords": [
+ "blockchain",
+ "ethereum",
+ "forge",
+ "smart-contracts",
+ "solidity",
+ "libraries",
+ "merkle-tree",
+ "incremental-merkle-tree"
+ ],
+ "repository": "git@github.com:privacy-scaling-explorations/zk-kit.solidity.git",
+ "homepage": "https://github.com/privacy-scaling-explorations/zk-kit.solidity/tree/main/packages/imt",
+ "publishConfig": {
+ "access": "public"
},
"dependencies": {
"poseidon-solidity": "0.0.5"
diff --git a/packages/lean-imt/contracts/Constants.sol b/packages/lean-imt/src/Constants.sol
similarity index 100%
rename from packages/lean-imt/contracts/Constants.sol
rename to packages/lean-imt/src/Constants.sol
diff --git a/packages/lean-imt/contracts/InternalLeanIMT.sol b/packages/lean-imt/src/InternalLeanIMT.sol
similarity index 95%
rename from packages/lean-imt/contracts/InternalLeanIMT.sol
rename to packages/lean-imt/src/InternalLeanIMT.sol
index 49c3bdb..8f5c593 100644
--- a/packages/lean-imt/contracts/InternalLeanIMT.sol
+++ b/packages/lean-imt/src/InternalLeanIMT.sol
@@ -62,7 +62,7 @@ library InternalLeanIMT {
uint256 node = leaf;
- for (uint256 level = 0; level < treeDepth; ) {
+ for (uint256 level = 0; level < treeDepth;) {
if ((index >> level) & 1 == 1) {
node = PoseidonT3.hash([self.sideNodes[level], node]);
} else {
@@ -93,7 +93,7 @@ library InternalLeanIMT {
uint256 treeSize = self.size;
// Check that all the new values are correct to be added.
- for (uint256 i = 0; i < leaves.length; ) {
+ for (uint256 i = 0; i < leaves.length;) {
if (leaves[i] >= SNARK_SCALAR_FIELD) {
revert LeafGreaterThanSnarkScalarField();
} else if (leaves[i] == 0) {
@@ -138,12 +138,12 @@ library InternalLeanIMT {
// The size of the next level.
uint256 nextLevelSize = ((currentLevelSize - 1) >> 1) + 1;
- for (uint256 level = 0; level < treeDepth; ) {
+ for (uint256 level = 0; level < treeDepth;) {
// The number of nodes for the new level that will be created,
// only the new values, not the entire level.
uint256 numberOfNewNodes = nextLevelSize - nextLevelStartIndex;
uint256[] memory nextLevelNewNodes = new uint256[](numberOfNewNodes);
- for (uint256 i = 0; i < numberOfNewNodes; ) {
+ for (uint256 i = 0; i < numberOfNewNodes;) {
uint256 leftNode;
// Assign the left node using the saved path or the position in the array.
@@ -226,12 +226,10 @@ library InternalLeanIMT {
/// @param newLeaf: The new value that will replace the oldLeaf in the tree.
/// @param siblingNodes: An array of sibling nodes that are necessary to recalculate the path to the root.
/// @return The new hash of the updated node after the leaf has been updated.
- function _update(
- LeanIMTData storage self,
- uint256 oldLeaf,
- uint256 newLeaf,
- uint256[] calldata siblingNodes
- ) internal returns (uint256) {
+ function _update(LeanIMTData storage self, uint256 oldLeaf, uint256 newLeaf, uint256[] calldata siblingNodes)
+ internal
+ returns (uint256)
+ {
if (newLeaf >= SNARK_SCALAR_FIELD) {
revert LeafGreaterThanSnarkScalarField();
} else if (!_has(self, oldLeaf)) {
@@ -250,7 +248,7 @@ library InternalLeanIMT {
// Cache tree depth to optimize gas
uint256 treeDepth = self.depth;
- for (uint256 level = 0; level < treeDepth; ) {
+ for (uint256 level = 0; level < treeDepth;) {
if ((index >> level) & 1 == 1) {
if (siblingNodes[i] >= SNARK_SCALAR_FIELD) {
revert LeafGreaterThanSnarkScalarField();
@@ -306,11 +304,10 @@ library InternalLeanIMT {
/// @param oldLeaf: The value of the leaf to be removed.
/// @param siblingNodes: An array of sibling nodes required for updating the path to the root after removal.
/// @return The new root hash of the tree after the leaf has been removed.
- function _remove(
- LeanIMTData storage self,
- uint256 oldLeaf,
- uint256[] calldata siblingNodes
- ) internal returns (uint256) {
+ function _remove(LeanIMTData storage self, uint256 oldLeaf, uint256[] calldata siblingNodes)
+ internal
+ returns (uint256)
+ {
return _update(self, oldLeaf, 0, siblingNodes);
}
diff --git a/packages/lean-imt/contracts/LeanIMT.sol b/packages/lean-imt/src/LeanIMT.sol
similarity index 76%
rename from packages/lean-imt/contracts/LeanIMT.sol
rename to packages/lean-imt/src/LeanIMT.sol
index 3c546a3..552c88e 100644
--- a/packages/lean-imt/contracts/LeanIMT.sol
+++ b/packages/lean-imt/src/LeanIMT.sol
@@ -14,20 +14,17 @@ library LeanIMT {
return InternalLeanIMT._insertMany(self, leaves);
}
- function update(
- LeanIMTData storage self,
- uint256 oldLeaf,
- uint256 newLeaf,
- uint256[] calldata siblingNodes
- ) public returns (uint256) {
+ function update(LeanIMTData storage self, uint256 oldLeaf, uint256 newLeaf, uint256[] calldata siblingNodes)
+ public
+ returns (uint256)
+ {
return InternalLeanIMT._update(self, oldLeaf, newLeaf, siblingNodes);
}
- function remove(
- LeanIMTData storage self,
- uint256 oldLeaf,
- uint256[] calldata siblingNodes
- ) public returns (uint256) {
+ function remove(LeanIMTData storage self, uint256 oldLeaf, uint256[] calldata siblingNodes)
+ public
+ returns (uint256)
+ {
return InternalLeanIMT._remove(self, oldLeaf, siblingNodes);
}
diff --git a/packages/lean-imt/tasks/deploy-imt-test.ts b/packages/lean-imt/tasks/deploy-imt-test.ts
deleted file mode 100644
index d9dc6f7..0000000
--- a/packages/lean-imt/tasks/deploy-imt-test.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { task, types } from "hardhat/config"
-
-task("deploy:imt-test", "Deploy an IMT contract for testing a library")
- .addParam("library", "The name of the library", undefined, types.string)
- .addOptionalParam("logs", "Print the logs", true, types.boolean)
- .addOptionalParam("arity", "The arity of the tree", 2, types.int)
- .setAction(async ({ logs, library: libraryName, arity }, { ethers }): Promise => {
- const PoseidonFactory = await ethers.getContractFactory(`PoseidonT${arity + 1}`)
-
- const poseidon = await PoseidonFactory.deploy()
- const poseidonAddress = await poseidon.getAddress()
-
- if (logs) {
- console.info(`PoseidonT${arity + 1} library has been deployed to: ${poseidonAddress}`)
- }
-
- const LibraryFactory = await ethers.getContractFactory(libraryName, {
- libraries: {
- [`PoseidonT${arity + 1}`]: poseidonAddress
- }
- })
-
- const library = await LibraryFactory.deploy()
- const libraryAddress = await library.getAddress()
-
- if (logs) {
- console.info(`${libraryName} library has been deployed to: ${libraryAddress}`)
- }
-
- const ContractFactory = await ethers.getContractFactory(`${libraryName}Test`, {
- libraries: {
- [libraryName]: libraryAddress
- }
- })
-
- const contract = await ContractFactory.deploy()
- const contractAddress = await contract.getAddress()
-
- if (logs) {
- console.info(`${libraryName}Test contract has been deployed to: ${contractAddress}`)
- }
-
- return { library, contract }
- })
diff --git a/packages/lean-imt/test/LeanIMT.t.sol b/packages/lean-imt/test/LeanIMT.t.sol
new file mode 100644
index 0000000..d01e847
--- /dev/null
+++ b/packages/lean-imt/test/LeanIMT.t.sol
@@ -0,0 +1,162 @@
+// SPDX-License-Identifier: MIT
+pragma solidity ^0.8.4;
+
+import "forge-std/console.sol";
+import "forge-std/Test.sol";
+import {SNARK_SCALAR_FIELD} from "lean-imt/Constants.sol";
+import "lean-imt/LeanIMT.sol";
+import {
+ LeafAlreadyExists,
+ LeafCannotBeZero,
+ LeafDoesNotExist,
+ LeafGreaterThanSnarkScalarField,
+ WrongSiblingNodes
+} from "lean-imt/InternalLeanIMT.sol";
+
+contract LeanIMTTest is Test {
+ using LeanIMT for LeanIMTData;
+
+ LeanIMTData private imt;
+
+ function boundLeaf(uint256 leaf) private pure returns (uint256) {
+ return bound(leaf, 1, SNARK_SCALAR_FIELD - 1);
+ }
+
+ function boundLeaves(uint256[] calldata leaves) private pure returns (uint256[] memory) {
+ uint256[] memory boundedLeaves = new uint256[](leaves.length);
+ for (uint256 i = 0; i < leaves.length; i++) {
+ boundedLeaves[i] = boundLeaf(leaves[i]);
+ }
+ return boundedLeaves;
+ }
+
+ function test_RevertIf_InsertLeafGreaterThanSnarkScalarField() public {
+ vm.expectRevert(LeafGreaterThanSnarkScalarField.selector);
+ imt.insert(SNARK_SCALAR_FIELD);
+
+ vm.expectRevert(LeafGreaterThanSnarkScalarField.selector);
+ imt.insert(SNARK_SCALAR_FIELD + 1);
+ }
+
+ function test_RevertIf_InsertZeroLeaf() public {
+ vm.expectRevert(LeafCannotBeZero.selector);
+ imt.insert(0);
+ }
+
+ function testRevert_InsertDuplicateLeaf() public {
+ imt.insert(1);
+ vm.expectRevert(LeafAlreadyExists.selector);
+ imt.insert(1);
+ }
+
+ function testFuzz_Insert(uint256 leaf) public {
+ // revert if leaf out of bound already tested above
+ leaf = boundLeaf(leaf);
+ uint256 root = imt.insert(leaf);
+
+ assertTrue(imt.has(leaf));
+ assertEq(imt.indexOf(leaf), 0);
+ assertEq(imt.root(), root);
+ assertEq(imt.size, 1);
+ assertEq(imt.depth, 0);
+ }
+
+ function test_RevertIf_InsertManyGreaterThanSnarkField() public {
+ vm.expectRevert(LeafGreaterThanSnarkScalarField.selector);
+ uint256[] memory leaves = new uint256[](1);
+ leaves[0] = SNARK_SCALAR_FIELD;
+
+ imt.insertMany(leaves);
+ }
+
+ function test_RevertIf_InsertManyZeroLeaf() public {
+ vm.expectRevert(LeafCannotBeZero.selector);
+ uint256[] memory leaves = new uint256[](1);
+ leaves[0] = 0;
+
+ imt.insertMany(leaves);
+ }
+
+ function test_RevertIf_InsertManyDuplicateLeaf() public {
+ uint256[] memory leaves = new uint256[](2);
+ leaves[0] = 1;
+ leaves[1] = 1;
+
+ vm.expectRevert(LeafAlreadyExists.selector);
+ imt.insertMany(leaves);
+ }
+
+ function test_insertMany() public {
+ uint256[] memory leaves = new uint256[](3);
+ leaves[0] = 1;
+ leaves[1] = 2;
+ leaves[2] = 3;
+
+ uint256 root = imt.insertMany(leaves);
+
+ for (uint256 i = 0; i < leaves.length; i++) {
+ assertTrue(imt.has(leaves[i]));
+ assertEq(imt.indexOf(leaves[i]), i);
+ }
+ assertEq(imt.root(), root);
+ assertEq(imt.size, 3);
+ assertEq(imt.depth, 2);
+ }
+
+ function test_RevertIf_UpdateNewLeafGreaterThanSnarkScalarField() public {
+ imt.insert(1);
+ vm.expectRevert(LeafGreaterThanSnarkScalarField.selector);
+ imt.update(1, SNARK_SCALAR_FIELD, new uint256[](0));
+
+ vm.expectRevert(LeafGreaterThanSnarkScalarField.selector);
+ imt.update(1, SNARK_SCALAR_FIELD + 1, new uint256[](0));
+ }
+
+ function test_RevertIf_UpdateNewLeafAlreadyExists() public {
+ imt.insert(1);
+ vm.expectRevert(LeafAlreadyExists.selector);
+ imt.update(1, 1, new uint256[](0));
+ }
+
+ function test_RevertIf_UpdateOldLeafDoesNotExist() public {
+ imt.insert(1);
+ vm.expectRevert(LeafDoesNotExist.selector);
+ imt.update(2, 3, new uint256[](0));
+ }
+
+ function testFuzz_Update(uint256 oldLeaf, uint256 newLeaf) public {
+ // all revert cases already tested above, so forcing they can't happen while still fuzzing
+ oldLeaf = boundLeaf(oldLeaf);
+ newLeaf = boundLeaf(newLeaf);
+ while (oldLeaf == newLeaf) {
+ newLeaf = boundLeaf(newLeaf + 1);
+ }
+
+ imt.insert(oldLeaf);
+ uint256 root = imt.update(oldLeaf, newLeaf, new uint256[](0));
+
+ assertTrue(imt.has(newLeaf));
+ assertFalse(imt.has(oldLeaf));
+ assertEq(imt.indexOf(newLeaf), 0);
+ assertEq(imt.root(), root);
+ assertEq(imt.size, 1);
+ assertEq(imt.depth, 0);
+ }
+
+ function test_FuzzRemove(uint256 leaf) public {
+ leaf = boundLeaf(leaf);
+ assertEq(imt.size, 0);
+ imt.insert(leaf);
+ uint256 root = imt.remove(leaf, new uint256[](0));
+
+ assertFalse(imt.has(leaf));
+ assertEq(imt.root(), root);
+ // TODO: question: remove does not update size??
+ assertFalse(imt.size == 0);
+ }
+
+ function test_RevertIf_IndexOfLeafDoesNotExist() public {
+ vm.expectRevert(LeafDoesNotExist.selector);
+ imt.indexOf(1);
+ }
+}
diff --git a/packages/lean-imt/test/LeanIMT.ts b/packages/lean-imt/test/LeanIMT.ts
deleted file mode 100644
index 315bd5c..0000000
--- a/packages/lean-imt/test/LeanIMT.ts
+++ /dev/null
@@ -1,380 +0,0 @@
-import { LeanIMT as JSLeanIMT } from "@zk-kit/lean-imt"
-import { expect } from "chai"
-import { run } from "hardhat"
-import { poseidon2 } from "poseidon-lite"
-import { LeanIMT, LeanIMTTest } from "../typechain-types"
-
-describe("LeanIMT", () => {
- const SNARK_SCALAR_FIELD = BigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")
- let leanIMTTest: LeanIMTTest
- let leanIMT: LeanIMT
- let jsLeanIMT: JSLeanIMT
-
- beforeEach(async () => {
- const { library, contract } = await run("deploy:imt-test", { library: "LeanIMT", logs: false })
-
- leanIMTTest = contract
- leanIMT = library
- jsLeanIMT = new JSLeanIMT((a, b) => poseidon2([a, b]))
- })
-
- describe("# insert", () => {
- it("Should not insert a leaf if its value is >= SNARK_SCALAR_FIELD", async () => {
- const transaction = leanIMTTest.insert(SNARK_SCALAR_FIELD)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafGreaterThanSnarkScalarField")
- })
-
- it("Should not insert a leaf if it is 0", async () => {
- const leaf = 0
-
- const transaction = leanIMTTest.insert(leaf)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafCannotBeZero")
- })
-
- it("Should insert a leaf", async () => {
- jsLeanIMT.insert(BigInt(1))
-
- await leanIMTTest.insert(1)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- })
-
- it("Should not insert a leaf if it was already inserted before", async () => {
- await leanIMTTest.insert(1)
-
- const transaction = leanIMTTest.insert(1)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafAlreadyExists")
- })
-
- it("Should insert 10 leaves", async () => {
- for (let i = 0; i < 10; i += 1) {
- jsLeanIMT.insert(BigInt(i + 1))
-
- await leanIMTTest.insert(i + 1)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- }
- })
- })
-
- describe("# insertMany", () => {
- it("Should not insert a leaf if its value is >= SNARK_SCALAR_FIELD", async () => {
- const transaction = leanIMTTest.insertMany([SNARK_SCALAR_FIELD])
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafGreaterThanSnarkScalarField")
- })
-
- it("Should not insert a leaf if it is 0", async () => {
- const leaf = 0
-
- const transaction = leanIMTTest.insertMany([leaf])
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafCannotBeZero")
- })
- it("Should not insert a leaf if it was already inserted before", async () => {
- await leanIMTTest.insert(1)
-
- const transaction = leanIMTTest.insertMany([1])
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafAlreadyExists")
- })
- it("Should insert a leaf", async () => {
- jsLeanIMT.insert(BigInt(1))
-
- await leanIMTTest.insertMany([1])
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- })
- it("Should insert 10 leaves", async () => {
- const elems: bigint[] = []
- for (let i = 0; i < 10; i += 1) {
- elems.push(BigInt(i + 1))
- }
-
- jsLeanIMT.insertMany(elems)
- await leanIMTTest.insertMany(elems)
-
- const root = await leanIMTTest.root()
- expect(root).to.equal(jsLeanIMT.root)
- })
- it("Should insert many leaves when the tree is not empty", async () => {
- jsLeanIMT.insert(BigInt(1))
-
- await leanIMTTest.insert(BigInt(1))
-
- const elems: bigint[] = []
- for (let i = 1; i < 10; i += 1) {
- elems.push(BigInt(i + 1))
- }
-
- jsLeanIMT.insertMany(elems)
- await leanIMTTest.insertMany(elems)
-
- const root = await leanIMTTest.root()
- expect(root).to.equal(jsLeanIMT.root)
- })
- })
-
- describe("# update", () => {
- it("Should not update a leaf if the leaf does not exist", async () => {
- const transaction = leanIMTTest.update(2, 1, [1, 2, 3, 4])
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafDoesNotExist")
- })
-
- it("Should not update a leaf if its value is >= SNARK_SCALAR_FIELD", async () => {
- const transaction = leanIMTTest.update(2, SNARK_SCALAR_FIELD, [1, 2, 3, 4])
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafGreaterThanSnarkScalarField")
- })
-
- it("Should update a leaf if that's the only leaf in the tree", async () => {
- await leanIMTTest.insert(1)
-
- jsLeanIMT.insert(BigInt(1))
- jsLeanIMT.update(0, BigInt(2))
-
- const { siblings } = jsLeanIMT.generateProof(0)
-
- await leanIMTTest.update(1, 2, siblings)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- })
-
- it("Should update a leaf if there's more than 1 leaf in the tree", async () => {
- await leanIMTTest.insert(1)
- await leanIMTTest.insert(2)
-
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
- jsLeanIMT.update(0, BigInt(3))
-
- const { siblings } = jsLeanIMT.generateProof(0)
-
- await leanIMTTest.update(1, 3, siblings)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- })
-
- it("Should not update a leaf if its index is even and the value of at least one sibling node is >= SNARK_SCALAR_FIELD", async () => {
- await leanIMTTest.insert(1)
- await leanIMTTest.insert(2)
-
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
- jsLeanIMT.update(0, BigInt(3))
-
- const { siblings } = jsLeanIMT.generateProof(0)
-
- siblings[0] = SNARK_SCALAR_FIELD
-
- const transaction = leanIMTTest.update(1, 3, siblings)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafGreaterThanSnarkScalarField")
- })
-
- it("Should not update a leaf if its index is odd and the value of at least one sibling node is >= SNARK_SCALAR_FIELD", async () => {
- await leanIMTTest.insert(1)
- await leanIMTTest.insert(2)
-
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
- jsLeanIMT.update(1, BigInt(3))
-
- const { siblings } = jsLeanIMT.generateProof(1)
-
- siblings[0] = SNARK_SCALAR_FIELD
-
- const transaction = leanIMTTest.update(2, 3, siblings)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafGreaterThanSnarkScalarField")
- })
-
- it("Should not update a leaf if the siblings are wrong", async () => {
- await leanIMTTest.insert(1)
- await leanIMTTest.insert(2)
-
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
- jsLeanIMT.update(0, BigInt(3))
-
- const { siblings } = jsLeanIMT.generateProof(0)
-
- siblings[0] = BigInt(3)
-
- const transaction = leanIMTTest.update(1, 3, siblings)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "WrongSiblingNodes")
- })
-
- it("Should update 6 leaves", async () => {
- for (let i = 0; i < 6; i += 1) {
- jsLeanIMT.insert(BigInt(i + 1))
-
- await leanIMTTest.insert(i + 1)
- }
-
- for (let i = 0; i < 6; i += 1) {
- jsLeanIMT.update(i, BigInt(i + 7))
-
- const { siblings } = jsLeanIMT.generateProof(i)
-
- await leanIMTTest.update(i + 1, i + 7, siblings)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- }
- })
-
- it("Should not update a leaf that was removed", async () => {
- await leanIMTTest.insertMany([1, 2])
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
-
- jsLeanIMT.update(1, BigInt(0))
-
- const { siblings } = jsLeanIMT.generateProof(1)
-
- await leanIMTTest.remove(2, siblings)
-
- jsLeanIMT.update(1, BigInt(3))
-
- const { siblings: newSiblings } = jsLeanIMT.generateProof(1)
-
- const transaction = leanIMTTest.update(0, 3, newSiblings)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafDoesNotExist")
- })
- it("Should not update a leaf if the new value already exists", async () => {
- await leanIMTTest.insert(1)
- await leanIMTTest.insert(2)
-
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
- jsLeanIMT.update(0, BigInt(2))
-
- const { siblings } = jsLeanIMT.generateProof(0)
-
- const transaction = leanIMTTest.update(1, 2, siblings)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafAlreadyExists")
- })
- })
-
- describe("# remove", () => {
- it("Should remove a leaf", async () => {
- await leanIMTTest.insert(1)
- await leanIMTTest.insert(2)
- await leanIMTTest.insert(3)
-
- jsLeanIMT.insertMany([BigInt(1), BigInt(2), BigInt(3)])
- jsLeanIMT.update(2, BigInt(0))
-
- const { siblings } = jsLeanIMT.generateProof(2)
-
- await leanIMTTest.remove(3, siblings)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- })
-
- it("Should remove 10 leaf", async () => {
- for (let i = 0; i < 10; i += 1) {
- jsLeanIMT.insert(BigInt(i + 1))
-
- await leanIMTTest.insert(i + 1)
- }
-
- for (let i = 0; i < 10; i += 1) {
- jsLeanIMT.update(i, BigInt(0))
-
- const { siblings } = jsLeanIMT.generateProof(i)
-
- await leanIMTTest.remove(i + 1, siblings)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- }
- })
- })
-
- describe("# has", () => {
- it("Should return true because the node is in the tree", async () => {
- await leanIMTTest.insert(1)
-
- const hasLeaf = await leanIMTTest.has(1)
-
- expect(hasLeaf).to.equal(true)
- })
-
- it("Should return false because the node is not the tree", async () => {
- const hasLeaf = await leanIMTTest.has(2)
-
- expect(hasLeaf).to.equal(false)
- })
-
- it("Should return false if the leaf is 0", async () => {
- await leanIMTTest.insertMany([1, 2])
- jsLeanIMT.insertMany([BigInt(1), BigInt(2)])
-
- jsLeanIMT.update(1, BigInt(0))
-
- const { siblings } = jsLeanIMT.generateProof(1)
-
- await leanIMTTest.remove(2, siblings)
-
- const hasLeaf = await leanIMTTest.has(0)
-
- expect(hasLeaf).to.equal(false)
- })
- })
- describe("# indexOf", () => {
- it("Should return the index of a leaf", async () => {
- await leanIMTTest.insert(1)
-
- const index = await leanIMTTest.indexOf(1)
-
- expect(index).to.equal(0)
- })
-
- it("Should return the indices of the leaves", async () => {
- await leanIMTTest.insertMany([1, 2])
-
- const index1 = await leanIMTTest.indexOf(1)
- const index2 = await leanIMTTest.indexOf(2)
-
- expect(index1).to.equal(0)
- expect(index2).to.equal(1)
- })
-
- it("Should throw a custom error if the leaf does not exist", async () => {
- await leanIMTTest.insertMany([1, 2])
-
- const transaction = leanIMTTest.indexOf(3)
-
- await expect(transaction).to.be.revertedWithCustomError(leanIMT, "LeafDoesNotExist")
- })
- })
-
- describe("# root", () => {
- it("Should return the tree root", async () => {
- jsLeanIMT.insert(BigInt(1))
-
- await leanIMTTest.insert(1)
-
- const root = await leanIMTTest.root()
-
- expect(root).to.equal(jsLeanIMT.root)
- })
- })
-})
diff --git a/packages/lean-imt/tsconfig.json b/packages/lean-imt/tsconfig.json
deleted file mode 100644
index 0a513ff..0000000
--- a/packages/lean-imt/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "compilerOptions": {
- "target": "es2020",
- "module": "commonjs",
- "esModuleInterop": true,
- "forceConsistentCasingInFileNames": true,
- "strict": true,
- "skipLibCheck": true,
- "resolveJsonModule": true
- },
- "include": ["scripts/**/*", "tasks/**/*", "test/**/*", "typechain-types/**/*"],
- "files": ["hardhat.config.ts"]
-}
diff --git a/remappings.txt b/remappings.txt
new file mode 100644
index 0000000..081e652
--- /dev/null
+++ b/remappings.txt
@@ -0,0 +1,5 @@
+excubiae/=packages/excubiae/src
+imt/=packages/imt/src
+lazy-imt/=packages/lazy-imt/src
+lazytower/=packages/lazytower/src
+lean-imt/=packages/lean-imt/src
diff --git a/scripts/publish-for-forge.sh b/scripts/publish-for-forge.sh
new file mode 100755
index 0000000..e810104
--- /dev/null
+++ b/scripts/publish-for-forge.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env sh
+
+set -eu
+
+clean() {
+ # TODO: use regex instead
+ find . -maxdepth 1 \
+ ! -path . \
+ ! -path ./.git \
+ ! -path "./.git/*" \
+ ! -path ./packages \
+ ! -path ./LICENSE \
+ -exec rm -rf {} +
+}
+
+main() {
+ git fetch origin main
+ latest_main_commit_msg=$(git log origin/main -1 --pretty=%B)
+
+ git checkout -b forge
+ git fetch origin forge
+ git pull origin forge --rebase || true
+
+ clean
+
+ # http://mywiki.wooledge.org/BashFAQ/001
+ # https://github.com/koalaman/shellcheck/wiki/SC2012
+ find packages -maxdepth 1 -mindepth 1 -printf '%P\n' | while read -r pkg; do
+ mkdir "$pkg"
+ mv "packages/$pkg/src" "$pkg"
+ mv "packages/$pkg/README.md" "$pkg"
+ git add "$pkg"
+ done
+
+ rm -fr "packages"
+
+ git commit -am "$latest_main_commit_msg"
+ git push origin forge
+}
+
+main
diff --git a/scripts/remove-stable-version-field.sh b/scripts/remove-stable-version-field.sh
new file mode 100755
index 0000000..dd85062
--- /dev/null
+++ b/scripts/remove-stable-version-field.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -eu
+
+remove_stable_version() {
+ package_json_path="$1"
+ sed -i '/^[[:space:]]*"stableVersion":/d' "$package_json_path"
+}
+
+main() {
+ package_json_path="packages/$1/package.json"
+ remove_stable_version "$package_json_path"
+}
+
+main "$@"
diff --git a/scripts/remove-stable-version-field.ts b/scripts/remove-stable-version-field.ts
deleted file mode 100644
index c34fe73..0000000
--- a/scripts/remove-stable-version-field.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import { existsSync, readFileSync, writeFileSync } from "node:fs"
-
-async function main() {
- const projectDirectory = `packages/${process.argv[2]}`
-
- let filePath = `${projectDirectory}/package.json`
-
- if (existsSync(`${projectDirectory}/contracts/package.json`)) {
- filePath = `${projectDirectory}/contracts/package.json`
- }
-
- const content = JSON.parse(readFileSync(filePath, "utf8"))
-
- if (content.stableVersion) {
- delete content.stableVersion
- }
-
- writeFileSync(filePath, JSON.stringify(content, null, 4), "utf8")
-}
-
-main()
- .then(() => process.exit(0))
- .catch((error) => {
- console.error(error)
- process.exit(1)
- })
diff --git a/scripts/version-bump.sh b/scripts/version-bump.sh
new file mode 100755
index 0000000..97f9e27
--- /dev/null
+++ b/scripts/version-bump.sh
@@ -0,0 +1,36 @@
+#!/usr/bin/env sh
+
+set -eu
+
+ORANGE='\033[0;33m'
+RED='\033[0;31m'
+RESET='\033[0m'
+
+log() {
+ printf "%b\n" "$1"
+}
+
+red() {
+ log "${RED}$1${RESET}"
+}
+
+usage() {
+ red "Error: Missing arguments"
+ log "Usage: $0 ${ORANGE}package$RESET ${ORANGE}version$RESET"
+ exit 1
+}
+
+main() {
+ [ "$#" -ne 2 ] && usage
+
+ pkg="$1"
+ version="$2"
+
+ yarn workspace @zk-kit/"$pkg".sol version "$version"
+ scripts/remove-stable-version-field.sh "$pkg"
+ yarn format:write
+ NO_HOOK=1 git commit -am "chore($pkg): v$version"
+ git tag "$pkg.sol-v$version"
+}
+
+main "$@"
diff --git a/yarn.lock b/yarn.lock
index 43fa6ce..8a97631 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -5,46 +5,39 @@ __metadata:
version: 8
cacheKey: 10
-"@adraffy/ens-normalize@npm:1.10.1":
- version: 1.10.1
- resolution: "@adraffy/ens-normalize@npm:1.10.1"
- checksum: 10/4cb938c4abb88a346d50cb0ea44243ab3574330c81d4f5aaaf9dfee584b96189d0faa404de0fcbef5a1b73909ea4ebc3e63d84bd23f9949e5c8d4085207a5091
- languageName: node
- linkType: hard
-
"@antfu/utils@npm:^0.7.7":
- version: 0.7.8
- resolution: "@antfu/utils@npm:0.7.8"
- checksum: 10/9efffb78a9683add047b0e2be96a059c3a29baee1565a2d127500bc433def25a0375c1e84c9479cbb3f1dcec797b2c1f0a24e5d85c830ea64f9a8a6a6ca5b9c3
+ version: 0.7.10
+ resolution: "@antfu/utils@npm:0.7.10"
+ checksum: 10/c8c2797aeab3e88f0095dea5736d2f16137a7213195e568246792b2cceecb184234f018346dc07c252c62e4d9085c09ce6bd180da833266cafa65133fb03e075
languageName: node
linkType: hard
"@babel/code-frame@npm:^7.0.0":
- version: 7.24.2
- resolution: "@babel/code-frame@npm:7.24.2"
+ version: 7.24.7
+ resolution: "@babel/code-frame@npm:7.24.7"
dependencies:
- "@babel/highlight": "npm:^7.24.2"
+ "@babel/highlight": "npm:^7.24.7"
picocolors: "npm:^1.0.0"
- checksum: 10/7db8f5b36ffa3f47a37f58f61e3d130b9ecad21961f3eede7e2a4ac2c7e4a5efb6e9d03a810c669bc986096831b6c0dfc2c3082673d93351b82359c1b03e0590
+ checksum: 10/4812e94885ba7e3213d49583a155fdffb05292330f0a9b2c41b49288da70cf3c746a3fda0bf1074041a6d741c33f8d7be24be5e96f41ef77395eeddc5c9ff624
languageName: node
linkType: hard
-"@babel/helper-validator-identifier@npm:^7.24.5":
- version: 7.24.5
- resolution: "@babel/helper-validator-identifier@npm:7.24.5"
- checksum: 10/38aaf6a64a0ea2e84766165b461deda3c24fd2173dff18419a2cc9e1ea1d3e709039aee94db29433a07011492717c80900a5eb564cdca7d137757c3c69e26898
+"@babel/helper-validator-identifier@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/helper-validator-identifier@npm:7.24.7"
+ checksum: 10/86875063f57361471b531dbc2ea10bbf5406e12b06d249b03827d361db4cad2388c6f00936bcd9dc86479f7e2c69ea21412c2228d4b3672588b754b70a449d4b
languageName: node
linkType: hard
-"@babel/highlight@npm:^7.24.2":
- version: 7.24.5
- resolution: "@babel/highlight@npm:7.24.5"
+"@babel/highlight@npm:^7.24.7":
+ version: 7.24.7
+ resolution: "@babel/highlight@npm:7.24.7"
dependencies:
- "@babel/helper-validator-identifier": "npm:^7.24.5"
+ "@babel/helper-validator-identifier": "npm:^7.24.7"
chalk: "npm:^2.4.2"
js-tokens: "npm:^4.0.0"
picocolors: "npm:^1.0.0"
- checksum: 10/afde0403154ad69ecd58a98903058e776760444bf4d0363fb740a8596bc6278b72c5226637c4f6b3674d70acb1665207fe2fcecfe93a74f2f4ab033e89fd7e8c
+ checksum: 10/69b73f38cdd4f881b09b939a711e76646da34f4834f4ce141d7a49a6bb1926eab1c594148970a8aa9360398dff800f63aade4e81fafdd7c8d8a8489ea93bfec1
languageName: node
linkType: hard
@@ -242,15 +235,6 @@ __metadata:
languageName: node
linkType: hard
-"@cspotcode/source-map-support@npm:^0.8.0":
- version: 0.8.1
- resolution: "@cspotcode/source-map-support@npm:0.8.1"
- dependencies:
- "@jridgewell/trace-mapping": "npm:0.3.9"
- checksum: 10/b6e38a1712fab242c86a241c229cf562195aad985d0564bd352ac404be583029e89e93028ffd2c251d2c407ecac5fb0cbdca94a2d5c10f29ac806ede0508b3ff
- languageName: node
- linkType: hard
-
"@ethereum-attestation-service/eas-contracts@npm:1.7.1":
version: 1.7.1
resolution: "@ethereum-attestation-service/eas-contracts@npm:1.7.1"
@@ -260,27 +244,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethereumjs/rlp@npm:^4.0.1":
- version: 4.0.1
- resolution: "@ethereumjs/rlp@npm:4.0.1"
- bin:
- rlp: bin/rlp
- checksum: 10/bfdffd634ce72f3b17e3d085d071f2fe7ce9680aebdf10713d74b30afd80ef882d17f19ff7175fcb049431a56e800bd3558d3b028bd0d82341927edb303ab450
- languageName: node
- linkType: hard
-
-"@ethereumjs/util@npm:^8.1.0":
- version: 8.1.0
- resolution: "@ethereumjs/util@npm:8.1.0"
- dependencies:
- "@ethereumjs/rlp": "npm:^4.0.1"
- ethereum-cryptography: "npm:^2.0.0"
- micro-ftch: "npm:^0.3.1"
- checksum: 10/cc35338932e49b15e54ca6e548b32a1f48eed7d7e1d34ee743e4d3600dd616668bd50f70139e86c5c35f55aac35fba3b6cc4e6f679cf650aeba66bf93016200c
- languageName: node
- linkType: hard
-
-"@ethersproject/abi@npm:5.7.0, @ethersproject/abi@npm:^5.0.9, @ethersproject/abi@npm:^5.1.2, @ethersproject/abi@npm:^5.7.0":
+"@ethersproject/abi@npm:^5.1.2":
version: 5.7.0
resolution: "@ethersproject/abi@npm:5.7.0"
dependencies:
@@ -297,7 +261,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/abstract-provider@npm:5.7.0, @ethersproject/abstract-provider@npm:^5.7.0":
+"@ethersproject/abstract-provider@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/abstract-provider@npm:5.7.0"
dependencies:
@@ -312,7 +276,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/abstract-signer@npm:5.7.0, @ethersproject/abstract-signer@npm:^5.7.0":
+"@ethersproject/abstract-signer@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/abstract-signer@npm:5.7.0"
dependencies:
@@ -325,7 +289,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/address@npm:5.7.0, @ethersproject/address@npm:^5.0.2, @ethersproject/address@npm:^5.7.0":
+"@ethersproject/address@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/address@npm:5.7.0"
dependencies:
@@ -338,7 +302,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/base64@npm:5.7.0, @ethersproject/base64@npm:^5.7.0":
+"@ethersproject/base64@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/base64@npm:5.7.0"
dependencies:
@@ -347,17 +311,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/basex@npm:5.7.0, @ethersproject/basex@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/basex@npm:5.7.0"
- dependencies:
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- checksum: 10/840e333e109bff2fcf8d91dcfd45fa951835844ef0e1ba710037e87291c7b5f3c189ba86f6cee2ca7de2ede5b7d59fbb930346607695855bee20d2f9f63371ef
- languageName: node
- linkType: hard
-
-"@ethersproject/bignumber@npm:5.7.0, @ethersproject/bignumber@npm:^5.7.0":
+"@ethersproject/bignumber@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/bignumber@npm:5.7.0"
dependencies:
@@ -368,7 +322,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/bytes@npm:5.7.0, @ethersproject/bytes@npm:^5.7.0":
+"@ethersproject/bytes@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/bytes@npm:5.7.0"
dependencies:
@@ -377,7 +331,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/constants@npm:5.7.0, @ethersproject/constants@npm:^5.7.0":
+"@ethersproject/constants@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/constants@npm:5.7.0"
dependencies:
@@ -386,25 +340,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/contracts@npm:5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/contracts@npm:5.7.0"
- dependencies:
- "@ethersproject/abi": "npm:^5.7.0"
- "@ethersproject/abstract-provider": "npm:^5.7.0"
- "@ethersproject/abstract-signer": "npm:^5.7.0"
- "@ethersproject/address": "npm:^5.7.0"
- "@ethersproject/bignumber": "npm:^5.7.0"
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/constants": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- "@ethersproject/transactions": "npm:^5.7.0"
- checksum: 10/5df66179af242faabea287a83fd2f8f303a4244dc87a6ff802e1e3b643f091451295c8e3d088c7739970b7915a16a581c192d4e007d848f1fdf3cc9e49010053
- languageName: node
- linkType: hard
-
-"@ethersproject/hash@npm:5.7.0, @ethersproject/hash@npm:^5.7.0":
+"@ethersproject/hash@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/hash@npm:5.7.0"
dependencies:
@@ -421,48 +357,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/hdnode@npm:5.7.0, @ethersproject/hdnode@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/hdnode@npm:5.7.0"
- dependencies:
- "@ethersproject/abstract-signer": "npm:^5.7.0"
- "@ethersproject/basex": "npm:^5.7.0"
- "@ethersproject/bignumber": "npm:^5.7.0"
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/pbkdf2": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- "@ethersproject/sha2": "npm:^5.7.0"
- "@ethersproject/signing-key": "npm:^5.7.0"
- "@ethersproject/strings": "npm:^5.7.0"
- "@ethersproject/transactions": "npm:^5.7.0"
- "@ethersproject/wordlists": "npm:^5.7.0"
- checksum: 10/2fbe6278c324235afaa88baa5dea24d8674c72b14ad037fe2096134d41025977f410b04fd146e333a1b6cac9482e9de62d6375d1705fd42667543f2d0eb66655
- languageName: node
- linkType: hard
-
-"@ethersproject/json-wallets@npm:5.7.0, @ethersproject/json-wallets@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/json-wallets@npm:5.7.0"
- dependencies:
- "@ethersproject/abstract-signer": "npm:^5.7.0"
- "@ethersproject/address": "npm:^5.7.0"
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/hdnode": "npm:^5.7.0"
- "@ethersproject/keccak256": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/pbkdf2": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- "@ethersproject/random": "npm:^5.7.0"
- "@ethersproject/strings": "npm:^5.7.0"
- "@ethersproject/transactions": "npm:^5.7.0"
- aes-js: "npm:3.0.0"
- scrypt-js: "npm:3.0.1"
- checksum: 10/4a1ef0912ffc8d18c392ae4e292948d86bffd715fe3dd3e66d1cd21f6c9267aeadad4da84261db853327f97cdfd765a377f9a87e39d4c6749223a69226faf0a1
- languageName: node
- linkType: hard
-
-"@ethersproject/keccak256@npm:5.7.0, @ethersproject/keccak256@npm:^5.7.0":
+"@ethersproject/keccak256@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/keccak256@npm:5.7.0"
dependencies:
@@ -472,14 +367,14 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/logger@npm:5.7.0, @ethersproject/logger@npm:^5.7.0":
+"@ethersproject/logger@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/logger@npm:5.7.0"
checksum: 10/683a939f467ae7510deedc23d7611d0932c3046137f5ffb92ba1e3c8cd9cf2fbbaa676b660c248441a0fa9143783137c46d6e6d17d676188dd5a6ef0b72dd091
languageName: node
linkType: hard
-"@ethersproject/networks@npm:5.7.1, @ethersproject/networks@npm:^5.7.0":
+"@ethersproject/networks@npm:^5.7.0":
version: 5.7.1
resolution: "@ethersproject/networks@npm:5.7.1"
dependencies:
@@ -488,17 +383,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/pbkdf2@npm:5.7.0, @ethersproject/pbkdf2@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/pbkdf2@npm:5.7.0"
- dependencies:
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/sha2": "npm:^5.7.0"
- checksum: 10/dea7ba747805e24b81dfb99e695eb329509bf5cad1a42e48475ade28e060e567458a3d5bf930f302691bded733fd3fa364f0c7adce920f9f05a5ef8c13267aaa
- languageName: node
- linkType: hard
-
-"@ethersproject/properties@npm:5.7.0, @ethersproject/properties@npm:^5.7.0":
+"@ethersproject/properties@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/properties@npm:5.7.0"
dependencies:
@@ -507,45 +392,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/providers@npm:5.7.2":
- version: 5.7.2
- resolution: "@ethersproject/providers@npm:5.7.2"
- dependencies:
- "@ethersproject/abstract-provider": "npm:^5.7.0"
- "@ethersproject/abstract-signer": "npm:^5.7.0"
- "@ethersproject/address": "npm:^5.7.0"
- "@ethersproject/base64": "npm:^5.7.0"
- "@ethersproject/basex": "npm:^5.7.0"
- "@ethersproject/bignumber": "npm:^5.7.0"
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/constants": "npm:^5.7.0"
- "@ethersproject/hash": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/networks": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- "@ethersproject/random": "npm:^5.7.0"
- "@ethersproject/rlp": "npm:^5.7.0"
- "@ethersproject/sha2": "npm:^5.7.0"
- "@ethersproject/strings": "npm:^5.7.0"
- "@ethersproject/transactions": "npm:^5.7.0"
- "@ethersproject/web": "npm:^5.7.0"
- bech32: "npm:1.1.4"
- ws: "npm:7.4.6"
- checksum: 10/8534a1896e61b9f0b66427a639df64a5fe76d0c08ec59b9f0cc64fdd1d0cc28d9fc3312838ae8d7817c8f5e2e76b7f228b689bc33d1cbb8e1b9517d4c4f678d8
- languageName: node
- linkType: hard
-
-"@ethersproject/random@npm:5.7.0, @ethersproject/random@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/random@npm:5.7.0"
- dependencies:
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- checksum: 10/c23ec447998ce1147651bd58816db4d12dbeb404f66a03d14a13e1edb439879bab18528e1fc46b931502903ac7b1c08ea61d6a86e621a6e060fa63d41aeed3ac
- languageName: node
- linkType: hard
-
-"@ethersproject/rlp@npm:5.7.0, @ethersproject/rlp@npm:^5.7.0":
+"@ethersproject/rlp@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/rlp@npm:5.7.0"
dependencies:
@@ -555,18 +402,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/sha2@npm:5.7.0, @ethersproject/sha2@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/sha2@npm:5.7.0"
- dependencies:
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- hash.js: "npm:1.1.7"
- checksum: 10/09321057c022effbff4cc2d9b9558228690b5dd916329d75c4b1ffe32ba3d24b480a367a7cc92d0f0c0b1c896814d03351ae4630e2f1f7160be2bcfbde435dbc
- languageName: node
- linkType: hard
-
-"@ethersproject/signing-key@npm:5.7.0, @ethersproject/signing-key@npm:^5.7.0":
+"@ethersproject/signing-key@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/signing-key@npm:5.7.0"
dependencies:
@@ -580,21 +416,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/solidity@npm:5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/solidity@npm:5.7.0"
- dependencies:
- "@ethersproject/bignumber": "npm:^5.7.0"
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/keccak256": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/sha2": "npm:^5.7.0"
- "@ethersproject/strings": "npm:^5.7.0"
- checksum: 10/9a02f37f801c96068c3e7721f83719d060175bc4e80439fe060e92bd7acfcb6ac1330c7e71c49f4c2535ca1308f2acdcb01e00133129aac00581724c2d6293f3
- languageName: node
- linkType: hard
-
-"@ethersproject/strings@npm:5.7.0, @ethersproject/strings@npm:^5.7.0":
+"@ethersproject/strings@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/strings@npm:5.7.0"
dependencies:
@@ -605,7 +427,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/transactions@npm:5.7.0, @ethersproject/transactions@npm:^5.7.0":
+"@ethersproject/transactions@npm:^5.7.0":
version: 5.7.0
resolution: "@ethersproject/transactions@npm:5.7.0"
dependencies:
@@ -622,41 +444,7 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/units@npm:5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/units@npm:5.7.0"
- dependencies:
- "@ethersproject/bignumber": "npm:^5.7.0"
- "@ethersproject/constants": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- checksum: 10/304714f848cd32e57df31bf545f7ad35c2a72adae957198b28cbc62166daa929322a07bff6e9c9ac4577ab6aa0de0546b065ed1b2d20b19e25748b7d475cb0fc
- languageName: node
- linkType: hard
-
-"@ethersproject/wallet@npm:5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/wallet@npm:5.7.0"
- dependencies:
- "@ethersproject/abstract-provider": "npm:^5.7.0"
- "@ethersproject/abstract-signer": "npm:^5.7.0"
- "@ethersproject/address": "npm:^5.7.0"
- "@ethersproject/bignumber": "npm:^5.7.0"
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/hash": "npm:^5.7.0"
- "@ethersproject/hdnode": "npm:^5.7.0"
- "@ethersproject/json-wallets": "npm:^5.7.0"
- "@ethersproject/keccak256": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- "@ethersproject/random": "npm:^5.7.0"
- "@ethersproject/signing-key": "npm:^5.7.0"
- "@ethersproject/transactions": "npm:^5.7.0"
- "@ethersproject/wordlists": "npm:^5.7.0"
- checksum: 10/340f8e5c77c6c47c4d1596c200d97c53c1d4b4eb54d9166d0f2a114cb81685e7689255b0627e917fbcdc29cb54c4bd1f1a9909f3096ef9dff9acc0b24972f1c1
- languageName: node
- linkType: hard
-
-"@ethersproject/web@npm:5.7.1, @ethersproject/web@npm:^5.7.0":
+"@ethersproject/web@npm:^5.7.0":
version: 5.7.1
resolution: "@ethersproject/web@npm:5.7.1"
dependencies:
@@ -669,19 +457,6 @@ __metadata:
languageName: node
linkType: hard
-"@ethersproject/wordlists@npm:5.7.0, @ethersproject/wordlists@npm:^5.7.0":
- version: 5.7.0
- resolution: "@ethersproject/wordlists@npm:5.7.0"
- dependencies:
- "@ethersproject/bytes": "npm:^5.7.0"
- "@ethersproject/hash": "npm:^5.7.0"
- "@ethersproject/logger": "npm:^5.7.0"
- "@ethersproject/properties": "npm:^5.7.0"
- "@ethersproject/strings": "npm:^5.7.0"
- checksum: 10/737fca67ad743a32020f50f5b9e147e5683cfba2692367c1124a5a5538be78515865257b426ec9141daac91a70295e5e21bef7a193b79fe745f1be378562ccaa
- languageName: node
- linkType: hard
-
"@fastify/busboy@npm:^2.0.0":
version: 2.1.1
resolution: "@fastify/busboy@npm:2.1.1"
@@ -703,30 +478,6 @@ __metadata:
languageName: node
linkType: hard
-"@jridgewell/resolve-uri@npm:^3.0.3":
- version: 3.1.2
- resolution: "@jridgewell/resolve-uri@npm:3.1.2"
- checksum: 10/97106439d750a409c22c8bff822d648f6a71f3aa9bc8e5129efdc36343cd3096ddc4eeb1c62d2fe48e9bdd4db37b05d4646a17114ecebd3bbcacfa2de51c3c1d
- languageName: node
- linkType: hard
-
-"@jridgewell/sourcemap-codec@npm:^1.4.10":
- version: 1.4.15
- resolution: "@jridgewell/sourcemap-codec@npm:1.4.15"
- checksum: 10/89960ac087781b961ad918978975bcdf2051cd1741880469783c42de64239703eab9db5230d776d8e6a09d73bb5e4cb964e07d93ee6e2e7aea5a7d726e865c09
- languageName: node
- linkType: hard
-
-"@jridgewell/trace-mapping@npm:0.3.9":
- version: 0.3.9
- resolution: "@jridgewell/trace-mapping@npm:0.3.9"
- dependencies:
- "@jridgewell/resolve-uri": "npm:^3.0.3"
- "@jridgewell/sourcemap-codec": "npm:^1.4.10"
- checksum: 10/83deafb8e7a5ca98993c2c6eeaa93c270f6f647a4c0dc00deb38c9cf9b2d3b7bf15e8839540155247ef034a052c0ec4466f980bf0c9e2ab63b97d16c0cedd3ff
- languageName: node
- linkType: hard
-
"@metamask/eth-sig-util@npm:^4.0.0":
version: 4.0.1
resolution: "@metamask/eth-sig-util@npm:4.0.1"
@@ -740,24 +491,6 @@ __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: 10/94e02e9571a9fd42a3263362451849d2f54405cb3ce9fa7c45bc6b9b36dcd7d1d20e2e1e14cfded24937a13d82f1e60eefc4d7a14982ce0bc219a9fc0f51d1f9
- 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"
- dependencies:
- "@noble/hashes": "npm:1.3.3"
- checksum: 10/f3cbdd1af00179e30146eac5539e6df290228fb857a7a8ba36d1a772cbe59288a2ca83d06f175d3446ef00db3a80d7fd8b8347f7de9c2d4d5bf3865d8bb78252
- languageName: node
- linkType: hard
-
"@noble/hashes@npm:1.2.0, @noble/hashes@npm:~1.2.0":
version: 1.2.0
resolution: "@noble/hashes@npm:1.2.0"
@@ -765,27 +498,6 @@ __metadata:
languageName: node
linkType: hard
-"@noble/hashes@npm:1.3.2":
- version: 1.3.2
- resolution: "@noble/hashes@npm:1.3.2"
- checksum: 10/685f59d2d44d88e738114b71011d343a9f7dce9dfb0a121f1489132f9247baa60bc985e5ec6f3213d114fbd1e1168e7294644e46cbd0ce2eba37994f28eeb51b
- 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"
- checksum: 10/1025ddde4d24630e95c0818e63d2d54ee131b980fe113312d17ed7468bc18f54486ac86c907685759f8a7e13c2f9b9e83ec7b67d1cc20836f36b5e4a65bb102d
- languageName: node
- linkType: hard
-
-"@noble/hashes@npm:^1.4.0":
- version: 1.4.0
- resolution: "@noble/hashes@npm:1.4.0"
- checksum: 10/e156e65794c473794c52fa9d06baf1eb20903d0d96719530f523cc4450f6c721a957c544796e6efd0197b2296e7cd70efeb312f861465e17940a3e3c7e0febc6
- languageName: node
- linkType: hard
-
"@noble/secp256k1@npm:1.7.1, @noble/secp256k1@npm:~1.7.0":
version: 1.7.1
resolution: "@noble/secp256k1@npm:1.7.1"
@@ -793,33 +505,6 @@ __metadata:
languageName: node
linkType: hard
-"@nodelib/fs.scandir@npm:2.1.5":
- version: 2.1.5
- resolution: "@nodelib/fs.scandir@npm:2.1.5"
- dependencies:
- "@nodelib/fs.stat": "npm:2.0.5"
- run-parallel: "npm:^1.1.9"
- checksum: 10/6ab2a9b8a1d67b067922c36f259e3b3dfd6b97b219c540877a4944549a4d49ea5ceba5663905ab5289682f1f3c15ff441d02f0447f620a42e1cb5e1937174d4b
- languageName: node
- linkType: hard
-
-"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2":
- version: 2.0.5
- resolution: "@nodelib/fs.stat@npm:2.0.5"
- checksum: 10/012480b5ca9d97bff9261571dbbec7bbc6033f69cc92908bc1ecfad0792361a5a1994bc48674b9ef76419d056a03efadfce5a6cf6dbc0a36559571a7a483f6f0
- languageName: node
- linkType: hard
-
-"@nodelib/fs.walk@npm:^1.2.3":
- version: 1.2.8
- resolution: "@nodelib/fs.walk@npm:1.2.8"
- dependencies:
- "@nodelib/fs.scandir": "npm:2.1.5"
- fastq: "npm:^1.6.0"
- checksum: 10/40033e33e96e97d77fba5a238e4bba4487b8284678906a9f616b5579ddaf868a18874c0054a75402c9fbaaa033a25ceae093af58c9c30278e35c23c9479e79b0
- languageName: node
- linkType: hard
-
"@nomicfoundation/edr-darwin-arm64@npm:0.3.8":
version: 0.3.8
resolution: "@nomicfoundation/edr-darwin-arm64@npm:0.3.8"
@@ -934,182 +619,71 @@ __metadata:
languageName: node
linkType: hard
-"@nomicfoundation/hardhat-chai-matchers@npm:^2.0.3":
- 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: 10/7ab908eddd51f63cda7709ec36beab9a7876d570f0708b68b8541160eeb1f54b8c9665e136661c5ee0d5d06060e909605341fff3f2c7b92ee671f951846bf203
- languageName: node
- linkType: hard
-
-"@nomicfoundation/hardhat-ethers@npm:^3.0.0":
- version: 3.0.6
- resolution: "@nomicfoundation/hardhat-ethers@npm:3.0.6"
- dependencies:
- debug: "npm:^4.1.1"
- lodash.isequal: "npm:^4.5.0"
- peerDependencies:
- ethers: ^6.1.0
- hardhat: ^2.0.0
- checksum: 10/2a8dffeeacd91d0f65315f81b01991533135b5a4fec36642710dc473f7b604fe30281be386461167c5b5da79aeda1fed8395cdb460c8e722ae4d788e2a25efd6
- languageName: node
- linkType: hard
-
-"@nomicfoundation/hardhat-network-helpers@npm:^1.0.0":
- version: 1.0.10
- resolution: "@nomicfoundation/hardhat-network-helpers@npm:1.0.10"
- dependencies:
- ethereumjs-util: "npm:^7.1.4"
- peerDependencies:
- hardhat: ^2.9.5
- checksum: 10/38953777f69fea6c82a6df0f5de5c52afd797aae9d9d38d710dc19a4a0ef6bba2b4320db6050e04e94fb4bb0ce4cf81a2911a4da5097e0ca6fc1017ca77c3bb9
- 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: 10/a563cb50bd86a740b47864398277f21d6ee89c16737c849265b868381025f412fddbab579ff592ac4e9feddd807b9f72435f72a93766a9a153d6c538844b43a7
- languageName: node
- linkType: hard
-
-"@nomicfoundation/hardhat-verify@npm:^2.0.0":
- version: 2.0.7
- resolution: "@nomicfoundation/hardhat-verify@npm:2.0.7"
- 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: 10/5ee492990b51a75a4599e29dcba9d72a6da72ebc0d470cae2ac7c7899bb6f0dc7d75238352537e7bdf825fb535c155d523d3f33f10b7830fbb0c9bebd1580066
- 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"
- conditions: os=darwin & cpu=arm64
- languageName: node
- linkType: hard
-
-"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.1"
- conditions: os=darwin & cpu=x64
- languageName: node
- linkType: hard
-
-"@nomicfoundation/solidity-analyzer-freebsd-x64@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-freebsd-x64@npm:0.1.1"
- conditions: os=freebsd & cpu=x64
- languageName: node
- linkType: hard
-
-"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.1"
- conditions: os=linux & cpu=arm64 & libc=glibc
+"@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-darwin-arm64@npm:0.1.2"
+ checksum: 10/cf241ad2577741ccaaf0e5f723409c3d6e005d46f7a6eeceff17dcdbef1bc3bf603f859b23f3adb827a7e221f55fec781efd6153b52c05e3a85ba7d9fa5121c0
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.1"
- conditions: os=linux & cpu=arm64 & libc=musl
+"@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-darwin-x64@npm:0.1.2"
+ checksum: 10/ff85471f3c0a6463896b1da1d433c174bd1b5f09976a9f678ab063baabe883c4f7fdaadc69d46050bf9c50b596b0f1f38d05e689e703386644a533350a2439f0
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.1"
- conditions: os=linux & cpu=x64 & libc=glibc
+"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-gnu@npm:0.1.2"
+ checksum: 10/e0e0a8b7b5e81f002fd4e775bcb5035564c08b9c19cc2a99011d0ae691ec22278df343d054d76b9e2eff32b552defa3c63a6f9038996269e8f5b30ea9e07cb15
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.1"
- conditions: os=linux & cpu=x64 & libc=musl
+"@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-linux-arm64-musl@npm:0.1.2"
+ checksum: 10/1e8371db027c379fc9c3470cfdfe0913b32371317052c082b3c1338a569f1171f243d5df999bc5416799c342dda62145dcbce21c8d56eb7033bb31c470af5418
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-win32-arm64-msvc@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-win32-arm64-msvc@npm:0.1.1"
- conditions: os=win32 & cpu=arm64
+"@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-linux-x64-gnu@npm:0.1.2"
+ checksum: 10/63e9703975b784ad1ff64a44415ae4ab8fef64b776b7235d5e9bcf756cd636cf95e305b74d14072ffb541f5605151933476784f1afbb1e65b081b33860e9fcde
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-win32-ia32-msvc@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-win32-ia32-msvc@npm:0.1.1"
- conditions: os=win32 & cpu=ia32
+"@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-linux-x64-musl@npm:0.1.2"
+ checksum: 10/4c51615931ba8bd2ce144489f91fc0f1872def8f283253de50e6598945305f0b2655788ca03974e696046755c7db763c9457609908384ee91e649ee1899e4457
languageName: node
linkType: hard
-"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.1":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.1"
- conditions: os=win32 & cpu=x64
+"@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2":
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer-win32-x64-msvc@npm:0.1.2"
+ checksum: 10/1a645168510776e469245e61e0139d6509632ba608806b78545b026725e423752987cd3f30b5924893260b9bf6fa106db1e5b69bf77e7e7133d1c3bef0fd1ffa
languageName: node
linkType: hard
"@nomicfoundation/solidity-analyzer@npm:^0.1.0":
- version: 0.1.1
- resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.1"
- dependencies:
- "@nomicfoundation/solidity-analyzer-darwin-arm64": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-darwin-x64": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-freebsd-x64": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-linux-x64-musl": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "npm:0.1.1"
- "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "npm:0.1.1"
+ version: 0.1.2
+ resolution: "@nomicfoundation/solidity-analyzer@npm:0.1.2"
+ dependencies:
+ "@nomicfoundation/solidity-analyzer-darwin-arm64": "npm:0.1.2"
+ "@nomicfoundation/solidity-analyzer-darwin-x64": "npm:0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "npm:0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "npm:0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "npm:0.1.2"
+ "@nomicfoundation/solidity-analyzer-linux-x64-musl": "npm:0.1.2"
+ "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "npm:0.1.2"
dependenciesMeta:
"@nomicfoundation/solidity-analyzer-darwin-arm64":
optional: true
"@nomicfoundation/solidity-analyzer-darwin-x64":
optional: true
- "@nomicfoundation/solidity-analyzer-freebsd-x64":
- optional: true
"@nomicfoundation/solidity-analyzer-linux-arm64-gnu":
optional: true
"@nomicfoundation/solidity-analyzer-linux-arm64-musl":
@@ -1118,13 +692,9 @@ __metadata:
optional: true
"@nomicfoundation/solidity-analyzer-linux-x64-musl":
optional: true
- "@nomicfoundation/solidity-analyzer-win32-arm64-msvc":
- optional: true
- "@nomicfoundation/solidity-analyzer-win32-ia32-msvc":
- optional: true
"@nomicfoundation/solidity-analyzer-win32-x64-msvc":
optional: true
- checksum: 10/a3b3b557f911791b26a352d4e11abf5cbac427de33fda7d70fda043f1994a7f63f542c1752e6415a82c5452625470ba4fbf040e7d87dddd1aa3366e79b3dc2c6
+ checksum: 10/e86f4c82420e44b22bdf9419c944c0e64f199c71dd539e350dc80ecaf0a9852068a0701a11885f2e460abb731568e5f19949ac403383a5466d12625799237c4e
languageName: node
linkType: hard
@@ -1164,19 +734,10 @@ __metadata:
languageName: node
linkType: hard
-"@prettier/sync@npm:^0.3.0":
- version: 0.3.0
- resolution: "@prettier/sync@npm:0.3.0"
- peerDependencies:
- prettier: ^3.0.0
- checksum: 10/10520d2479830c18256bf2b18349a15a8964f968059f7ccaa1f6d455c133a26e6c96bd7aea7c64ef6701700e8007ad68619b16ec83391b356b5d4a741cbae504
- languageName: node
- linkType: hard
-
-"@scure/base@npm:~1.1.0, @scure/base@npm:~1.1.4":
- version: 1.1.6
- resolution: "@scure/base@npm:1.1.6"
- checksum: 10/814fd1cce24f1e152751fabca2853d26aaa96ff8a9349c43d9aebc3b3d8ca88dd902966e1c289590a37f35d4c4436c6aedb1b386924b2909072045af4c3e9fe4
+"@scure/base@npm:~1.1.0":
+ version: 1.1.7
+ resolution: "@scure/base@npm:1.1.7"
+ checksum: 10/fc50ffaab36cb46ff9fa4dc5052a06089ab6a6707f63d596bb34aaaec76173c9a564ac312a0b981b5e7a5349d60097b8878673c75d6cbfc4da7012b63a82099b
languageName: node
linkType: hard
@@ -1191,17 +752,6 @@ __metadata:
languageName: node
linkType: hard
-"@scure/bip32@npm:1.3.3":
- version: 1.3.3
- resolution: "@scure/bip32@npm:1.3.3"
- dependencies:
- "@noble/curves": "npm:~1.3.0"
- "@noble/hashes": "npm:~1.3.2"
- "@scure/base": "npm:~1.1.4"
- checksum: 10/4b8b75567866ff7d6b3ba154538add02d2951e9433e8dd7f0014331ac500cda5a88fe3d39b408fcc36e86b633682013f172b967af022c2e4e4ab07336801d688
- languageName: node
- linkType: hard
-
"@scure/bip39@npm:1.1.1":
version: 1.1.1
resolution: "@scure/bip39@npm:1.1.1"
@@ -1212,16 +762,6 @@ __metadata:
languageName: node
linkType: hard
-"@scure/bip39@npm:1.2.2":
- version: 1.2.2
- resolution: "@scure/bip39@npm:1.2.2"
- dependencies:
- "@noble/hashes": "npm:~1.3.2"
- "@scure/base": "npm:~1.1.4"
- checksum: 10/f71aceda10a7937bf3779fd2b4c4156c95ec9813269470ddca464cb8ab610d2451b173037f4b1e6dac45414e406e7adc7b5814c51279f4474d5d38140bbee542
- languageName: node
- linkType: hard
-
"@semaphore-protocol/contracts@npm:4.0.0-beta.16":
version: 4.0.0-beta.16
resolution: "@semaphore-protocol/contracts@npm:4.0.0-beta.16"
@@ -1313,94 +853,6 @@ __metadata:
languageName: node
linkType: hard
-"@solidity-parser/parser@npm:^0.14.0":
- version: 0.14.5
- resolution: "@solidity-parser/parser@npm:0.14.5"
- dependencies:
- antlr4ts: "npm:^0.5.0-alpha.4"
- checksum: 10/5ceb5601cf0b65cfcea86adf3efa3918cc377fff50cec361a3a0987de6c1ec79c5b5c4be8cc67df55d5a26f3243b35813a71f3d2e26f258fb38ce8158be97ea6
- languageName: node
- linkType: hard
-
-"@solidity-parser/parser@npm:^0.16.0":
- version: 0.16.2
- resolution: "@solidity-parser/parser@npm:0.16.2"
- dependencies:
- antlr4ts: "npm:^0.5.0-alpha.4"
- checksum: 10/a95b0c45331623e587e938e69d49832814ab8867371bd58f9946346b99a18705ee47b98a1006c3da6dae33ec8c8c1bf7d203a4acfa1ced0bfd68632acf2cd19c
- languageName: node
- linkType: hard
-
-"@solidity-parser/parser@npm:^0.17.0":
- version: 0.17.0
- resolution: "@solidity-parser/parser@npm:0.17.0"
- checksum: 10/76de7d1268de676c101b9a41576c324c0d0b9699e3ba3d846b5e580d6cae454fd7ec088011c316ce18af1b23a1482da88768d30f0e41becfd9da90f692fb9a65
- languageName: node
- linkType: hard
-
-"@solidity-parser/parser@npm:^0.18.0":
- version: 0.18.0
- resolution: "@solidity-parser/parser@npm:0.18.0"
- checksum: 10/3b600b584f49bd84d6d27aeeb453c49c279df49324e104bda00d12cd3b26f18cb6230ff63db6a0ba1f383868620d318b15b7417a92aa8c580099449adaa13d76
- languageName: node
- linkType: hard
-
-"@tsconfig/node10@npm:^1.0.7":
- version: 1.0.11
- resolution: "@tsconfig/node10@npm:1.0.11"
- checksum: 10/51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267
- languageName: node
- linkType: hard
-
-"@tsconfig/node12@npm:^1.0.7":
- version: 1.0.11
- resolution: "@tsconfig/node12@npm:1.0.11"
- checksum: 10/5ce29a41b13e7897a58b8e2df11269c5395999e588b9a467386f99d1d26f6c77d1af2719e407621412520ea30517d718d5192a32403b8dfcc163bf33e40a338a
- languageName: node
- linkType: hard
-
-"@tsconfig/node14@npm:^1.0.0":
- version: 1.0.3
- resolution: "@tsconfig/node14@npm:1.0.3"
- checksum: 10/19275fe80c4c8d0ad0abed6a96dbf00642e88b220b090418609c4376e1cef81bf16237bf170ad1b341452feddb8115d8dd2e5acdfdea1b27422071163dc9ba9d
- languageName: node
- linkType: hard
-
-"@tsconfig/node16@npm:^1.0.2":
- version: 1.0.4
- resolution: "@tsconfig/node16@npm:1.0.4"
- checksum: 10/202319785901f942a6e1e476b872d421baec20cf09f4b266a1854060efbf78cde16a4d256e8bc949d31e6cd9a90f1e8ef8fb06af96a65e98338a2b6b0de0a0ff
- 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: 10/51dd8be3548fe3c061d2a5372beb9214e767e2b69f10c12424b699bba7ff409a13c4bdff2e513ef49046b51153db56489752205541be8fb1775f3b9ad884b85b
- 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: 10/1f59d8243af020905f3cdb96125cf9fcad33bd16f919d5e07762c63e0220bccb658abf59b0ad74be784a3387c0a6b0262612fa1adeb9f6c99061a6abaa6afc53
- languageName: node
- linkType: hard
-
"@types/bn.js@npm:^4.11.3":
version: 4.11.6
resolution: "@types/bn.js@npm:4.11.6"
@@ -1419,50 +871,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/chai-as-promised@npm:^7.1.3":
- version: 7.1.8
- resolution: "@types/chai-as-promised@npm:7.1.8"
- dependencies:
- "@types/chai": "npm:*"
- checksum: 10/88e2d42f14d1de19ba1c7b5c35f263fef37d3ad241c71f5eb59b10763706f3902f4131b93854c9c6ed520081c7e36be555849f202418357f905bea71178b7d02
- languageName: node
- linkType: hard
-
-"@types/chai@npm:*, @types/chai@npm:^4.2.0":
- version: 4.3.16
- resolution: "@types/chai@npm:4.3.16"
- checksum: 10/f84a9049a7f13284f7237236872ed4afce5045dd6ea3926c8b0ac995490f5a524b247b2e70fcd3ebc85832201349a8f026bd0c336b90b5baca9eed0c7a4dbd3f
- languageName: node
- linkType: hard
-
-"@types/concat-stream@npm:^1.6.0":
- version: 1.6.1
- resolution: "@types/concat-stream@npm:1.6.1"
- dependencies:
- "@types/node": "npm:*"
- checksum: 10/7d211e74331affd3578b5469244f5cef84a93775f38332adb3ef12413559a23862bc682c6873d0a404b01c9d5d5f7d3ae091fe835b435b633eb420e3055b3e56
- languageName: node
- linkType: hard
-
-"@types/form-data@npm:0.0.33":
- version: 0.0.33
- resolution: "@types/form-data@npm:0.0.33"
- dependencies:
- "@types/node": "npm:*"
- checksum: 10/f0c7437e9dd7b348cf7de772bf9c5ad810ecaec767b9199cfc600f4929d600212b52d1acd5a1c674e1ceec5e063cb4d9ce96c8e479aea8dacd56371e04aab836
- languageName: node
- linkType: hard
-
-"@types/glob@npm:^7.1.1, @types/glob@npm:^7.2.0":
- version: 7.2.0
- resolution: "@types/glob@npm:7.2.0"
- dependencies:
- "@types/minimatch": "npm:*"
- "@types/node": "npm:*"
- checksum: 10/6ae717fedfdfdad25f3d5a568323926c64f52ef35897bcac8aca8e19bc50c0bd84630bbd063e5d52078b2137d8e7d3c26eabebd1a2f03ff350fff8a91e79fc19
- languageName: node
- linkType: hard
-
"@types/lru-cache@npm:^5.1.0":
version: 5.1.1
resolution: "@types/lru-cache@npm:5.1.1"
@@ -1470,13 +878,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/minimatch@npm:*":
- version: 5.1.2
- resolution: "@types/minimatch@npm:5.1.2"
- checksum: 10/94db5060d20df2b80d77b74dd384df3115f01889b5b6c40fa2dfa27cfc03a68fb0ff7c1f2a0366070263eb2e9d6bfd8c87111d4bc3ae93c3f291297c1bf56c85
- languageName: node
- linkType: hard
-
"@types/minimist@npm:^1.2.0":
version: 1.2.5
resolution: "@types/minimist@npm:1.2.5"
@@ -1484,40 +885,12 @@ __metadata:
languageName: node
linkType: hard
-"@types/mocha@npm:^10.0.6":
- version: 10.0.6
- resolution: "@types/mocha@npm:10.0.6"
- checksum: 10/fc73626e81e89c32d06b7ff9b72c4177b46d579cdd932f796614adc026852d84cb849d743473ba572cb4d9ea6d8c04e3749552d326c26495ec1c4b46e6e0a0c0
- languageName: node
- linkType: hard
-
-"@types/node@npm:*, @types/node@npm:^20, @types/node@npm:^20.10.7":
- version: 20.12.12
- resolution: "@types/node@npm:20.12.12"
+"@types/node@npm:*":
+ version: 20.14.10
+ resolution: "@types/node@npm:20.14.10"
dependencies:
undici-types: "npm:~5.26.4"
- checksum: 10/e3945da0a3017bdc1f88f15bdfb823f526b2a717bd58d4640082d6eb0bd2794b5c99bfb914b9e9324ec116dce36066990353ed1c777e8a7b0641f772575793c4
- languageName: node
- linkType: hard
-
-"@types/node@npm:18.15.13":
- version: 18.15.13
- resolution: "@types/node@npm:18.15.13"
- checksum: 10/b9bbe923573797ef7c5fd2641a6793489e25d9369c32aeadcaa5c7c175c85b42eb12d6fe173f6781ab6f42eaa1ebd9576a419eeaa2a1ec810094adb8adaa9a54
- languageName: node
- linkType: hard
-
-"@types/node@npm:^10.0.3":
- version: 10.17.60
- resolution: "@types/node@npm:10.17.60"
- checksum: 10/f9161493b3284b1d41d5d594c2768625acdd9e33f992f71ccde47861916e662e2ae438d2cc5f1b285053391a31b52a7564ecedc22d485610d236bfad9c7e6a1c
- languageName: node
- linkType: hard
-
-"@types/node@npm:^8.0.0":
- version: 8.10.66
- resolution: "@types/node@npm:8.10.66"
- checksum: 10/49a93cbeeca74e247970b5c2130abe8204587b6d3c5ec259543e7511234e5fa340341668155807ade7a86c22dab1ec8ee18c0ac745e4d54679de1b2dabd99363
+ checksum: 10/672892cf94d0d95cf052f11271990686a0fd204cd1e5fe7a4ef240e5315e06711765dc47b9ec98627d3adac18b8c92bb7e2d8db21d18faa20bc3e3203a143e79
languageName: node
linkType: hard
@@ -1537,20 +910,6 @@ __metadata:
languageName: node
linkType: hard
-"@types/prettier@npm:^2.1.1":
- version: 2.7.3
- resolution: "@types/prettier@npm:2.7.3"
- checksum: 10/cda84c19acc3bf327545b1ce71114a7d08efbd67b5030b9e8277b347fa57b05178045f70debe1d363ff7efdae62f237260713aafc2d7217e06fc99b048a88497
- languageName: node
- linkType: hard
-
-"@types/qs@npm:^6.2.31":
- version: 6.9.15
- resolution: "@types/qs@npm:6.9.15"
- checksum: 10/97d8208c2b82013b618e7a9fc14df6bd40a73e1385ac479b6896bafc7949a46201c15f42afd06e86a05e914f146f495f606b6fb65610cc60cf2e0ff743ec38a2
- languageName: node
- linkType: hard
-
"@types/secp256k1@npm:^4.0.1":
version: 4.0.6
resolution: "@types/secp256k1@npm:4.0.6"
@@ -1560,9 +919,9 @@ __metadata:
languageName: node
linkType: hard
-"@zk-kit/excubiae@workspace:packages/excubiae/contracts":
+"@zk-kit/excubiae@workspace:packages/excubiae":
version: 0.0.0-use.local
- resolution: "@zk-kit/excubiae@workspace:packages/excubiae/contracts"
+ resolution: "@zk-kit/excubiae@workspace:packages/excubiae"
dependencies:
"@ethereum-attestation-service/eas-contracts": "npm:1.7.1"
"@openzeppelin/contracts": "npm:5.0.2"
@@ -1570,65 +929,38 @@ __metadata:
languageName: unknown
linkType: soft
-"@zk-kit/imt.sol@workspace:packages/imt/contracts":
+"@zk-kit/imt.sol@workspace:packages/imt":
version: 0.0.0-use.local
- resolution: "@zk-kit/imt.sol@workspace:packages/imt/contracts"
+ resolution: "@zk-kit/imt.sol@workspace:packages/imt"
dependencies:
poseidon-solidity: "npm:0.0.5"
languageName: unknown
linkType: soft
-"@zk-kit/imt@npm:^2.0.0-beta.5":
- version: 2.0.0-beta.5
- resolution: "@zk-kit/imt@npm:2.0.0-beta.5"
- dependencies:
- "@zk-kit/utils": "npm:1.0.0"
- checksum: 10/666a84ea2be5893c9bd0e1cee487a3896304948ed08f9033fd54fabda0961ec93b152a23fd90d6b8504b4dfff2581c68e1310022adac38f4a3a53846e0e149c0
- languageName: node
- linkType: hard
-
-"@zk-kit/lazy-imt.sol@workspace:packages/lazy-imt/contracts":
+"@zk-kit/lazy-imt.sol@workspace:packages/lazy-imt":
version: 0.0.0-use.local
- resolution: "@zk-kit/lazy-imt.sol@workspace:packages/lazy-imt/contracts"
+ resolution: "@zk-kit/lazy-imt.sol@workspace:packages/lazy-imt"
dependencies:
poseidon-solidity: "npm:0.0.5"
languageName: unknown
linkType: soft
-"@zk-kit/lazytower.sol@workspace:packages/lazytower/contracts":
+"@zk-kit/lazytower.sol@workspace:packages/lazytower":
version: 0.0.0-use.local
- resolution: "@zk-kit/lazytower.sol@workspace:packages/lazytower/contracts"
+ resolution: "@zk-kit/lazytower.sol@workspace:packages/lazytower"
dependencies:
poseidon-solidity: "npm:0.0.5"
languageName: unknown
linkType: soft
-"@zk-kit/lean-imt.sol@npm:2.0.0, @zk-kit/lean-imt.sol@workspace:packages/lean-imt/contracts":
+"@zk-kit/lean-imt.sol@npm:2.0.0, @zk-kit/lean-imt.sol@workspace:packages/lean-imt":
version: 0.0.0-use.local
- resolution: "@zk-kit/lean-imt.sol@workspace:packages/lean-imt/contracts"
+ resolution: "@zk-kit/lean-imt.sol@workspace:packages/lean-imt"
dependencies:
poseidon-solidity: "npm:0.0.5"
languageName: unknown
linkType: soft
-"@zk-kit/lean-imt@npm:^2.0.1":
- version: 2.0.1
- resolution: "@zk-kit/lean-imt@npm:2.0.1"
- dependencies:
- "@zk-kit/utils": "npm:1.0.0"
- checksum: 10/33d03a20c3ce6270036d4cc0a96100b4f6e17f373688595937d2a0863883562b648a768c11ab938fd83ed65d7a70b542db647e3d9e0b5e050c02efc5df0543ce
- languageName: node
- linkType: hard
-
-"@zk-kit/utils@npm:1.0.0":
- version: 1.0.0
- resolution: "@zk-kit/utils@npm:1.0.0"
- dependencies:
- buffer: "npm:^6.0.3"
- checksum: 10/a471025ca4c69a825bebf2c68a0d83c55c345c8843f28eeb958f1e2aa549aaa982939c1d6d819dda337601163064f382e450d09103ba4d9a0525281a0a23696b
- languageName: node
- linkType: hard
-
"JSONStream@npm:^1.3.5":
version: 1.3.5
resolution: "JSONStream@npm:1.3.5"
@@ -1641,20 +973,6 @@ __metadata:
languageName: node
linkType: hard
-"abbrev@npm:1":
- version: 1.1.1
- resolution: "abbrev@npm:1.1.1"
- checksum: 10/2d882941183c66aa665118bafdab82b7a177e9add5eb2776c33e960a4f3c89cff88a1b38aba13a456de01d0dd9d66a8bea7c903268b21ea91dd1097e1e2e8243
- languageName: node
- linkType: hard
-
-"abbrev@npm:1.0.x":
- version: 1.0.9
- resolution: "abbrev@npm:1.0.9"
- checksum: 10/5ca5ac34c39d3ae15a90ce5570309e25c0e72d3947bdf95c10a1957f83609bf42831cb4b746d3d96b2a85a52b290832797b8a63b27449f47925b25ca86b78591
- languageName: node
- linkType: hard
-
"abbrev@npm:^2.0.0":
version: 2.0.0
resolution: "abbrev@npm:2.0.0"
@@ -1662,19 +980,12 @@ __metadata:
languageName: node
linkType: hard
-"acorn-walk@npm:^8.1.1":
- version: 8.3.2
- resolution: "acorn-walk@npm:8.3.2"
- checksum: 10/57dbe2fd8cf744f562431775741c5c087196cd7a65ce4ccb3f3981cdfad25cd24ad2bad404997b88464ac01e789a0a61e5e355b2a84876f13deef39fb39686ca
- languageName: node
- linkType: hard
-
-"acorn@npm:^8.11.3, acorn@npm:^8.4.1":
- version: 8.11.3
- resolution: "acorn@npm:8.11.3"
+"acorn@npm:^8.11.3":
+ version: 8.12.1
+ resolution: "acorn@npm:8.12.1"
bin:
acorn: bin/acorn
- checksum: 10/b688e7e3c64d9bfb17b596e1b35e4da9d50553713b3b3630cf5690f2b023a84eac90c56851e6912b483fe60e8b4ea28b254c07e92f17ef83d72d78745a8352dd
+ checksum: 10/d08c2d122bba32d0861e0aa840b2ee25946c286d5dc5990abca991baf8cdbfbe199b05aacb221b979411a2fea36f83e26b5ac4f6b4e0ce49038c62316c1848f0
languageName: node
linkType: hard
@@ -1685,20 +996,6 @@ __metadata:
languageName: node
linkType: hard
-"aes-js@npm:3.0.0":
- version: 3.0.0
- resolution: "aes-js@npm:3.0.0"
- checksum: 10/1b3772e5ba74abdccb6c6b99bf7f50b49057b38c0db1612b46c7024414f16e65ba7f1643b2d6e38490b1870bdf3ba1b87b35e2c831fd3fdaeff015f08aad19d1
- 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: 10/8f745da2e8fb38e91297a8ec13c2febe3219f8383303cd4ed4660ca67190242ccfd5fdc2f0d1642fd1ea934818fb871cd4cc28d3f28e812e3dc6c3d0f1f97c24
- languageName: node
- linkType: hard
-
"agent-base@npm:6":
version: 6.0.2
resolution: "agent-base@npm:6.0.2"
@@ -1727,34 +1024,15 @@ __metadata:
languageName: node
linkType: hard
-"ajv@npm:^6.12.6":
- version: 6.12.6
- resolution: "ajv@npm:6.12.6"
- dependencies:
- fast-deep-equal: "npm:^3.1.1"
- fast-json-stable-stringify: "npm:^2.0.0"
- json-schema-traverse: "npm:^0.4.1"
- uri-js: "npm:^4.2.2"
- checksum: 10/48d6ad21138d12eb4d16d878d630079a2bda25a04e745c07846a4ad768319533031e28872a9b3c5790fa1ec41aabdf2abed30a56e5a03ebc2cf92184b8ee306c
- languageName: node
- linkType: hard
-
-"ajv@npm:^8.0.1, ajv@npm:^8.11.0":
- version: 8.13.0
- resolution: "ajv@npm:8.13.0"
+"ajv@npm:^8.11.0":
+ version: 8.16.0
+ resolution: "ajv@npm:8.16.0"
dependencies:
fast-deep-equal: "npm:^3.1.3"
json-schema-traverse: "npm:^1.0.0"
require-from-string: "npm:^2.0.2"
uri-js: "npm:^4.4.1"
- checksum: 10/4ada268c9a6e44be87fd295df0f0a91267a7bae8dbc8a67a2d5799c3cb459232839c99d18b035597bb6e3ffe88af6979f7daece854f590a81ebbbc2dfa80002c
- languageName: node
- linkType: hard
-
-"amdefine@npm:>=0.0.4":
- version: 1.0.1
- resolution: "amdefine@npm:1.0.1"
- checksum: 10/517df65fc33d3ff14fe5c0057e041b03d603a2254dea7968b05dfbfa3041eb8430ea6729e305bc428c03fad03f162de91a4b256692d27d7b81d3ee691312cffe
+ checksum: 10/9b4b380efaf8be2639736d535662bd142a6972b43075b404380165c37ab6ceb72f01c7c987536747ff3e9e21eb5cd2e2a194f1e0fa8355364ea6204b1262fcd1
languageName: node
linkType: hard
@@ -1767,14 +1045,7 @@ __metadata:
languageName: node
linkType: hard
-"ansi-colors@npm:4.1.1":
- version: 4.1.1
- resolution: "ansi-colors@npm:4.1.1"
- checksum: 10/e862fddd0a9ca88f1e7c9312ea70674cec3af360c994762309f6323730525e92c77d2715ee5f08aa8f438b7ca18efe378af647f501fc92b15b8e4b3b52d09db4
- languageName: node
- linkType: hard
-
-"ansi-colors@npm:^4.1.1":
+"ansi-colors@npm:^4.1.1, ansi-colors@npm:^4.1.3":
version: 4.1.3
resolution: "ansi-colors@npm:4.1.3"
checksum: 10/43d6e2fc7b1c6e4dc373de708ee76311ec2e0433e7e8bd3194e7ff123ea6a747428fc61afdcf5969da5be3a5f0fd054602bec56fc0ebe249ce2fcde6e649e3c2
@@ -1797,13 +1068,6 @@ __metadata:
languageName: node
linkType: hard
-"ansi-regex@npm:^3.0.0":
- version: 3.0.1
- resolution: "ansi-regex@npm:3.0.1"
- checksum: 10/09daf180c5f59af9850c7ac1bd7fda85ba596cc8cbeb210826e90755f06c818af86d9fa1e6e8322fab2c3b9e9b03f56c537b42241139f824dd75066a1e7257cc
- languageName: node
- linkType: hard
-
"ansi-regex@npm:^5.0.1":
version: 5.0.1
resolution: "ansi-regex@npm:5.0.1"
@@ -1843,22 +1107,6 @@ __metadata:
languageName: node
linkType: hard
-"antlr4@npm:^4.11.0":
- version: 4.13.1
- resolution: "antlr4@npm:4.13.1"
- checksum: 10/b17ee045cf30c7cec563f3ce81dc8bffd2c17b546646cd76e7b5f4cc4b676a1960c1a8a9aea53769947b0c6de70ed2aea73431e76c3840ab3b69cf3de5f1fc89
- languageName: node
- linkType: hard
-
-"antlr4ts@npm:^0.5.0-alpha.4":
- version: 0.5.0-dev
- resolution: "antlr4ts@npm:0.5.0-dev"
- dependencies:
- source-map-support: "npm:^0.5.16"
- checksum: 10/a95a061fb2fc9e2a0cd065e112fbc3fb899f408feace51249367051711b2255488b4e89b5912a706080f807c72484499e0f61f6a782391ecaba39c556d479f55
- languageName: node
- linkType: hard
-
"anymatch@npm:~3.1.2":
version: 3.1.3
resolution: "anymatch@npm:3.1.3"
@@ -1869,22 +1117,6 @@ __metadata:
languageName: node
linkType: hard
-"arg@npm:^4.1.0":
- version: 4.1.3
- resolution: "arg@npm:4.1.3"
- checksum: 10/969b491082f20cad166649fa4d2073ea9e974a4e5ac36247ca23d2e5a8b3cb12d60e9ff70a8acfe26d76566c71fd351ee5e6a9a6595157eb36f92b1fd64e1599
- languageName: node
- linkType: hard
-
-"argparse@npm:^1.0.7":
- version: 1.0.10
- resolution: "argparse@npm:1.0.10"
- dependencies:
- sprintf-js: "npm:~1.0.2"
- checksum: 10/c6a621343a553ff3779390bb5ee9c2263d6643ebcd7843227bdde6cc7adbed796eb5540ca98db19e3fd7b4714e1faa51551f8849b268bb62df27ddb15cbcd91e
- languageName: node
- linkType: hard
-
"argparse@npm:^2.0.1":
version: 2.0.1
resolution: "argparse@npm:2.0.1"
@@ -1892,20 +1124,6 @@ __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: 10/7205004fcd0f9edd926db921af901b083094608d5b265738d0290092f9822f73accb468e677db74c7c94ef432d39e5ed75a7b1786701e182efb25bbba9734209
- 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: 10/f30603270771eeb54e5aad5f54604c62b3577a18b6db212a7272b2b6c32049121b49431f656654790ed1469411e45f387e7627c0de8fd0515995cc40df9b9294
- languageName: node
- linkType: hard
-
"array-ify@npm:^1.0.0":
version: 1.0.0
resolution: "array-ify@npm:1.0.0"
@@ -1913,20 +1131,6 @@ __metadata:
languageName: node
linkType: hard
-"array-union@npm:^2.1.0":
- version: 2.1.0
- resolution: "array-union@npm:2.1.0"
- checksum: 10/5bee12395cba82da674931df6d0fea23c4aa4660cb3b338ced9f828782a65caa232573e6bf3968f23e0c5eb301764a382cef2f128b170a9dc59de0e36c39f98d
- languageName: node
- linkType: hard
-
-"array-uniq@npm:1.0.3":
- version: 1.0.3
- resolution: "array-uniq@npm:1.0.3"
- checksum: 10/1625f06b093d8bf279b81adfec6e72951c0857d65b5e3f65f053fffe9f9dd61c2fc52cff57e38a4700817e7e3f01a4faa433d505ea9e33cdae4514c334e0bf9e
- languageName: node
- linkType: hard
-
"arrify@npm:^1.0.1":
version: 1.0.1
resolution: "arrify@npm:1.0.1"
@@ -1934,66 +1138,6 @@ __metadata:
languageName: node
linkType: hard
-"asap@npm:~2.0.6":
- version: 2.0.6
- resolution: "asap@npm:2.0.6"
- checksum: 10/b244c0458c571945e4b3be0b14eb001bea5596f9868cc50cc711dc03d58a7e953517d3f0dad81ccde3ff37d1f074701fa76a6f07d41aaa992d7204a37b915dda
- languageName: node
- linkType: hard
-
-"assertion-error@npm:^1.1.0":
- version: 1.1.0
- resolution: "assertion-error@npm:1.1.0"
- checksum: 10/fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf
- languageName: node
- linkType: hard
-
-"ast-parents@npm:^0.0.1":
- version: 0.0.1
- resolution: "ast-parents@npm:0.0.1"
- checksum: 10/08eaa3b755529aad0708aad54ff09087b171334dcffa0774d3401e1dc54db1242bd5e76e599152705e813f768b9245a3c20777ed033c706d2093e358a91b12c2
- languageName: node
- linkType: hard
-
-"astral-regex@npm:^2.0.0":
- version: 2.0.0
- resolution: "astral-regex@npm:2.0.0"
- checksum: 10/876231688c66400473ba505731df37ea436e574dd524520294cc3bbc54ea40334865e01fa0d074d74d036ee874ee7e62f486ea38bc421ee8e6a871c06f011766
- languageName: node
- linkType: hard
-
-"async@npm:1.x":
- version: 1.5.2
- resolution: "async@npm:1.5.2"
- checksum: 10/8afcdcee05168250926a3e7bd4dfaa74b681a74f634bae2af424fb716042461cbd20a375d9bc2534daa50a2d45286c9b174952fb239cee4ab8d6351a40c65327
- languageName: node
- linkType: hard
-
-"asynckit@npm:^0.4.0":
- version: 0.4.0
- resolution: "asynckit@npm:0.4.0"
- checksum: 10/3ce727cbc78f69d6a4722517a58ee926c8c21083633b1d3fdf66fd688f6c127a53a592141bd4866f9b63240a86e9d8e974b13919450bd17fa33c2d22c4558ad8
- languageName: node
- linkType: hard
-
-"at-least-node@npm:^1.0.0":
- version: 1.0.0
- resolution: "at-least-node@npm:1.0.0"
- checksum: 10/463e2f8e43384f1afb54bc68485c436d7622acec08b6fad269b421cb1d29cebb5af751426793d0961ed243146fe4dc983402f6d5a51b720b277818dbf6f2e49e
- languageName: node
- linkType: hard
-
-"axios@npm:^1.5.1":
- version: 1.6.8
- resolution: "axios@npm:1.6.8"
- dependencies:
- follow-redirects: "npm:^1.15.6"
- form-data: "npm:^4.0.0"
- proxy-from-env: "npm:^1.1.0"
- checksum: 10/3f9a79eaf1d159544fca9576261ff867cbbff64ed30017848e4210e49f3b01e97cf416390150e6fdf6633f336cd43dc1151f890bbd09c3c01ad60bb0891eee63
- languageName: node
- linkType: hard
-
"balanced-match@npm:^1.0.0":
version: 1.0.2
resolution: "balanced-match@npm:1.0.2"
@@ -2002,25 +1146,11 @@ __metadata:
linkType: hard
"base-x@npm:^3.0.2":
- version: 3.0.9
- resolution: "base-x@npm:3.0.9"
+ version: 3.0.10
+ resolution: "base-x@npm:3.0.10"
dependencies:
safe-buffer: "npm:^5.0.1"
- checksum: 10/957101d6fd09e1903e846fd8f69fd7e5e3e50254383e61ab667c725866bec54e5ece5ba49ce385128ae48f9ec93a26567d1d5ebb91f4d56ef4a9cc0d5a5481e8
- languageName: node
- linkType: hard
-
-"base64-js@npm:^1.3.1":
- version: 1.5.1
- resolution: "base64-js@npm:1.5.1"
- checksum: 10/669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005
- languageName: node
- linkType: hard
-
-"bech32@npm:1.1.4":
- version: 1.1.4
- resolution: "bech32@npm:1.1.4"
- checksum: 10/63ff37c0ce43be914c685ce89700bba1589c319af0dac1ea04f51b33d0e5ecfd40d14c24f527350b94f0a4e236385373bb9122ec276410f354ddcdbf29ca13f4
+ checksum: 10/52307739559e81d9980889de2359cb4f816cc0eb9a463028fa3ab239ab913d9044a1b47b4520f98e68453df32a457b8ba58b8d0ee7e757fc3fb971f3fa7a1482
languageName: node
linkType: hard
@@ -2045,13 +1175,6 @@ __metadata:
languageName: node
linkType: hard
-"bn.js@npm:4.11.6":
- version: 4.11.6
- resolution: "bn.js@npm:4.11.6"
- checksum: 10/22741b015c9fff60fce32fc9988331b298eb9b6db5bfb801babb23b846eaaf894e440e0d067b2b3ae4e46aab754e90972f8f333b31bf94a686bbcb054bfa7b14
- languageName: node
- linkType: hard
-
"bn.js@npm:^4.11.0, bn.js@npm:^4.11.8, bn.js@npm:^4.11.9":
version: 4.12.0
resolution: "bn.js@npm:4.12.0"
@@ -2059,7 +1182,7 @@ __metadata:
languageName: node
linkType: hard
-"bn.js@npm:^5.1.2, bn.js@npm:^5.2.0, bn.js@npm:^5.2.1":
+"bn.js@npm:^5.2.0, bn.js@npm:^5.2.1":
version: 5.2.1
resolution: "bn.js@npm:5.2.1"
checksum: 10/7a7e8764d7a6e9708b8b9841b2b3d6019cc154d2fc23716d0efecfe1e16921b7533c6f7361fb05471eab47986c4aa310c270f88e3507172104632ac8df2cfd84
@@ -2110,12 +1233,12 @@ __metadata:
languageName: node
linkType: hard
-"braces@npm:^3.0.2, braces@npm:~3.0.2":
- version: 3.0.2
- resolution: "braces@npm:3.0.2"
+"braces@npm:^3.0.3, braces@npm:~3.0.2":
+ version: 3.0.3
+ resolution: "braces@npm:3.0.3"
dependencies:
- fill-range: "npm:^7.0.1"
- checksum: 10/966b1fb48d193b9d155f810e5efd1790962f2c4e0829f8440b8ad236ba009222c501f70185ef732fef17a4c490bb33a03b90dab0631feafbdf447da91e8165b1
+ fill-range: "npm:^7.1.1"
+ checksum: 10/fad11a0d4697a27162840b02b1fad249c1683cbc510cd5bf1a471f2f8085c046d41094308c577a50a03a579dd99d5a6b3724c4b5e8b14df2c4443844cfcda2c6
languageName: node
linkType: hard
@@ -2126,7 +1249,7 @@ __metadata:
languageName: node
linkType: hard
-"browser-stdout@npm:1.3.1":
+"browser-stdout@npm:^1.3.1":
version: 1.3.1
resolution: "browser-stdout@npm:1.3.1"
checksum: 10/ac70a84e346bb7afc5045ec6f22f6a681b15a4057447d4cc1c48a25c6dedb302a49a46dd4ddfb5cdd9c96e0c905a8539be1b98ae7bc440512152967009ec7015
@@ -2181,16 +1304,6 @@ __metadata:
languageName: node
linkType: hard
-"buffer@npm:^6.0.3":
- version: 6.0.3
- resolution: "buffer@npm:6.0.3"
- dependencies:
- base64-js: "npm:^1.3.1"
- ieee754: "npm:^1.2.1"
- checksum: 10/b6bc68237ebf29bdacae48ce60e5e28fc53ae886301f2ad9496618efac49427ed79096750033e7eab1897a4f26ae374ace49106a5758f38fb70c78c9fda2c3b1
- languageName: node
- linkType: hard
-
"bundle-name@npm:^3.0.0":
version: 3.0.0
resolution: "bundle-name@npm:3.0.0"
@@ -2208,22 +1321,27 @@ __metadata:
linkType: hard
"c12@npm:^1.4.2, c12@npm:^1.6.1":
- version: 1.10.0
- resolution: "c12@npm:1.10.0"
+ version: 1.11.1
+ resolution: "c12@npm:1.11.1"
dependencies:
chokidar: "npm:^3.6.0"
- confbox: "npm:^0.1.3"
+ confbox: "npm:^0.1.7"
defu: "npm:^6.1.4"
dotenv: "npm:^16.4.5"
- giget: "npm:^1.2.1"
- jiti: "npm:^1.21.0"
- mlly: "npm:^1.6.1"
+ giget: "npm:^1.2.3"
+ jiti: "npm:^1.21.6"
+ mlly: "npm:^1.7.1"
ohash: "npm:^1.1.3"
pathe: "npm:^1.1.2"
perfect-debounce: "npm:^1.0.0"
- pkg-types: "npm:^1.0.3"
- rc9: "npm:^2.1.1"
- checksum: 10/e592593fe3fb48c63ecae6a711045fae11904d1a50c5c7ff2920528e398a15e695d791f962662c51c6dcd3add8404b45a89ce9f305c4a029deef0bbd89466768
+ pkg-types: "npm:^1.1.1"
+ rc9: "npm:^2.1.2"
+ peerDependencies:
+ magicast: ^0.3.4
+ peerDependenciesMeta:
+ magicast:
+ optional: true
+ checksum: 10/f836395ef3a3ec9b4d254f72ff9e92ab3dc0530193881a81f6d49506bcc8f41d8ba6613c6b776c7cabb996065b447f9a8822eff3f74d03af24c5cd7c067b9c92
languageName: node
linkType: hard
@@ -2254,19 +1372,6 @@ __metadata:
languageName: node
linkType: hard
-"call-bind@npm:^1.0.7":
- version: 1.0.7
- resolution: "call-bind@npm:1.0.7"
- dependencies:
- es-define-property: "npm:^1.0.0"
- es-errors: "npm:^1.3.0"
- function-bind: "npm:^1.1.2"
- get-intrinsic: "npm:^1.2.4"
- set-function-length: "npm:^1.2.1"
- checksum: 10/cd6fe658e007af80985da5185bff7b55e12ef4c2b6f41829a26ed1eef254b1f1c12e3dfd5b2b068c6ba8b86aba62390842d81752e67dcbaec4f6f76e7113b6b7
- languageName: node
- linkType: hard
-
"callsites@npm:^3.0.0":
version: 3.1.0
resolution: "callsites@npm:3.1.0"
@@ -2278,73 +1383,24 @@ __metadata:
version: 6.2.2
resolution: "camelcase-keys@npm:6.2.2"
dependencies:
- camelcase: "npm:^5.3.1"
- map-obj: "npm:^4.0.0"
- quick-lru: "npm:^4.0.1"
- checksum: 10/c1999f5b6d03bee7be9a36e48eef3da9e93e51b000677348ec8d15d51fc4418375890fb6c7155e387322d2ebb2a2cdebf9cd96607a6753d1d6c170d9b1e2eed5
- languageName: node
- linkType: hard
-
-"camelcase@npm:^5.3.1":
- version: 5.3.1
- resolution: "camelcase@npm:5.3.1"
- checksum: 10/e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b
- languageName: node
- linkType: hard
-
-"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0":
- version: 6.3.0
- resolution: "camelcase@npm:6.3.0"
- checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d
- languageName: node
- linkType: hard
-
-"caseless@npm:^0.12.0, caseless@npm:~0.12.0":
- version: 0.12.0
- resolution: "caseless@npm:0.12.0"
- checksum: 10/ea1efdf430975fdbac3505cdd21007f7ac5aa29b6d4d1c091f965853cd1bf87e4b08ea07b31a6d688b038872b7cdf0589d9262d59c699d199585daad052aeb20
- languageName: node
- linkType: hard
-
-"cbor@npm:^8.1.0":
- version: 8.1.0
- resolution: "cbor@npm:8.1.0"
- dependencies:
- nofilter: "npm:^3.1.0"
- checksum: 10/fc6c6d4f8d14def3a0f2ef111f4fc14b3b0bc91d22ed8fd0eb005095c4699c723a45721e515d713571148d0d965ceeb771f4ad422953cb4e9658b379991b52c9
- languageName: node
- linkType: hard
-
-"chai-as-promised@npm:^7.1.1":
- version: 7.1.2
- resolution: "chai-as-promised@npm:7.1.2"
- dependencies:
- check-error: "npm:^1.0.2"
- peerDependencies:
- chai: ">= 2.1.2 < 6"
- checksum: 10/be372540dad92ef85cde3954bc0e9b0b33e4e6454f3740b17bfb16e36eda638911619089c05a4e4f2bf6722563bf893bb78c2af59b318c23abb2199e5c20ca1f
+ camelcase: "npm:^5.3.1"
+ map-obj: "npm:^4.0.0"
+ quick-lru: "npm:^4.0.1"
+ checksum: 10/c1999f5b6d03bee7be9a36e48eef3da9e93e51b000677348ec8d15d51fc4418375890fb6c7155e387322d2ebb2a2cdebf9cd96607a6753d1d6c170d9b1e2eed5
languageName: node
linkType: hard
-"chai@npm:^4.2.0":
- version: 4.4.1
- resolution: "chai@npm:4.4.1"
- dependencies:
- assertion-error: "npm:^1.1.0"
- check-error: "npm:^1.0.3"
- deep-eql: "npm:^4.1.3"
- get-func-name: "npm:^2.0.2"
- loupe: "npm:^2.3.6"
- pathval: "npm:^1.1.1"
- type-detect: "npm:^4.0.8"
- checksum: 10/c6d7aba913a67529c68dbec3673f94eb9c586c5474cc5142bd0b587c9c9ec9e5fbaa937e038ecaa6475aea31433752d5fabdd033b9248bde6ae53befcde774ae
+"camelcase@npm:^5.3.1":
+ version: 5.3.1
+ resolution: "camelcase@npm:5.3.1"
+ checksum: 10/e6effce26b9404e3c0f301498184f243811c30dfe6d0b9051863bd8e4034d09c8c2923794f280d6827e5aa055f6c434115ff97864a16a963366fb35fd673024b
languageName: node
linkType: hard
-"chalk@npm:5.3.0":
- version: 5.3.0
- resolution: "chalk@npm:5.3.0"
- checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea
+"camelcase@npm:^6.0.0, camelcase@npm:^6.2.0":
+ version: 6.3.0
+ resolution: "camelcase@npm:6.3.0"
+ checksum: 10/8c96818a9076434998511251dcb2761a94817ea17dbdc37f47ac080bd088fc62c7369429a19e2178b993497132c8cbcf5cc1f44ba963e76782ba469c0474938d
languageName: node
linkType: hard
@@ -2359,7 +1415,7 @@ __metadata:
languageName: node
linkType: hard
-"chalk@npm:^4.1.0, chalk@npm:^4.1.2":
+"chalk@npm:^4.1.0":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
@@ -2369,6 +1425,13 @@ __metadata:
languageName: node
linkType: hard
+"chalk@npm:~5.3.0":
+ version: 5.3.0
+ resolution: "chalk@npm:5.3.0"
+ checksum: 10/6373caaab21bd64c405bfc4bd9672b145647fc9482657b5ea1d549b3b2765054e9d3d928870cdf764fb4aad67555f5061538ff247b8310f110c5c888d92397ea
+ languageName: node
+ linkType: hard
+
"changelogen@npm:0.5.5":
version: 0.5.5
resolution: "changelogen@npm:0.5.5"
@@ -2430,42 +1493,7 @@ __metadata:
languageName: node
linkType: hard
-"charenc@npm:>= 0.0.1":
- version: 0.0.2
- resolution: "charenc@npm:0.0.2"
- checksum: 10/81dcadbe57e861d527faf6dd3855dc857395a1c4d6781f4847288ab23cffb7b3ee80d57c15bba7252ffe3e5e8019db767757ee7975663ad2ca0939bb8fcaf2e5
- languageName: node
- linkType: hard
-
-"check-error@npm:^1.0.2, check-error@npm:^1.0.3":
- version: 1.0.3
- resolution: "check-error@npm:1.0.3"
- dependencies:
- get-func-name: "npm:^2.0.2"
- checksum: 10/e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399
- languageName: node
- linkType: hard
-
-"chokidar@npm:3.5.3":
- version: 3.5.3
- resolution: "chokidar@npm:3.5.3"
- dependencies:
- anymatch: "npm:~3.1.2"
- braces: "npm:~3.0.2"
- fsevents: "npm:~2.3.2"
- glob-parent: "npm:~5.1.2"
- is-binary-path: "npm:~2.1.0"
- is-glob: "npm:~4.0.1"
- normalize-path: "npm:~3.0.0"
- readdirp: "npm:~3.6.0"
- dependenciesMeta:
- fsevents:
- optional: true
- checksum: 10/863e3ff78ee7a4a24513d2a416856e84c8e4f5e60efbe03e8ab791af1a183f569b62fc6f6b8044e2804966cb81277ddbbc1dc374fba3265bd609ea8efd62f5b3
- languageName: node
- linkType: hard
-
-"chokidar@npm:^3.4.0, chokidar@npm:^3.6.0":
+"chokidar@npm:^3.4.0, chokidar@npm:^3.5.3, chokidar@npm:^3.6.0":
version: 3.6.0
resolution: "chokidar@npm:3.6.0"
dependencies:
@@ -2540,20 +1568,6 @@ __metadata:
languageName: node
linkType: hard
-"cli-table3@npm:^0.5.0":
- version: 0.5.1
- resolution: "cli-table3@npm:0.5.1"
- dependencies:
- colors: "npm:^1.1.2"
- object-assign: "npm:^4.1.0"
- string-width: "npm:^2.1.1"
- dependenciesMeta:
- colors:
- optional: true
- checksum: 10/5b4aaa81943c9030e3366aaf20cc4be0792397d82dea3a1660e80ce49edded4dcc722f9bf272354061c5bfa3f4236ad2fdc86bc7bb0bbf7e4b8e8d3b418b955a
- languageName: node
- linkType: hard
-
"cli-truncate@npm:^4.0.0":
version: 4.0.0
resolution: "cli-truncate@npm:4.0.0"
@@ -2625,22 +1639,6 @@ __metadata:
languageName: node
linkType: hard
-"colors@npm:1.4.0, colors@npm:^1.1.2":
- version: 1.4.0
- resolution: "colors@npm:1.4.0"
- checksum: 10/90b2d5465159813a3983ea72ca8cff75f784824ad70f2cc2b32c233e95bcfbcda101ebc6d6766bc50f57263792629bfb4f1f8a4dfbd1d240f229fc7f69b785fc
- languageName: node
- linkType: hard
-
-"combined-stream@npm:^1.0.6, combined-stream@npm:^1.0.8":
- version: 1.0.8
- resolution: "combined-stream@npm:1.0.8"
- dependencies:
- delayed-stream: "npm:~1.0.0"
- checksum: 10/2e969e637d05d09fa50b02d74c83a1186f6914aae89e6653b62595cc75a221464f884f55f231b8f4df7a49537fba60bdc0427acd2bf324c09a1dbb84837e36e4
- languageName: node
- linkType: hard
-
"command-exists@npm:^1.2.8":
version: 1.2.9
resolution: "command-exists@npm:1.2.9"
@@ -2648,37 +1646,6 @@ __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: 10/e6a42652ae8843fbb56e2fba1e85da00a16a0482896bb1849092e1bc70b8bf353d945e69732bf4ae98370ff84e8910ff4933af8f2f747806a6b2cb5074799fdb
- 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: 10/902901582a543b26f55f90fc0f266c08a603a92bfadd8d07c66679f3d9eea2c074a039404126b0c4b65ff8452153c5f2010ea2f4ec14b70be0c77241f6d5bd53
- languageName: node
- linkType: hard
-
-"commander@npm:11.1.0":
- version: 11.1.0
- resolution: "commander@npm:11.1.0"
- checksum: 10/66bd2d8a0547f6cb1d34022efb25f348e433b0e04ad76a65279b1b09da108f59a4d3001ca539c60a7a46ea38bcf399fc17d91adad76a8cf43845d8dcbaf5cda1
- languageName: node
- linkType: hard
-
"commander@npm:3.0.2":
version: 3.0.2
resolution: "commander@npm:3.0.2"
@@ -2686,10 +1653,10 @@ __metadata:
languageName: node
linkType: hard
-"commander@npm:^10.0.0":
- version: 10.0.1
- resolution: "commander@npm:10.0.1"
- checksum: 10/8799faa84a30da985802e661cc9856adfaee324d4b138413013ef7f087e8d7924b144c30a1f1405475f0909f467665cd9e1ce13270a2f41b141dab0b7a58f3fb
+"commander@npm:~12.1.0":
+ version: 12.1.0
+ resolution: "commander@npm:12.1.0"
+ checksum: 10/cdaeb672d979816853a4eed7f1310a9319e8b976172485c2a6b437ed0db0a389a44cfb222bfbde772781efa9f215bdd1b936f80d6b249485b465c6cb906e1f93
languageName: node
linkType: hard
@@ -2710,19 +1677,7 @@ __metadata:
languageName: node
linkType: hard
-"concat-stream@npm:^1.6.0, concat-stream@npm:^1.6.2":
- version: 1.6.2
- resolution: "concat-stream@npm:1.6.2"
- dependencies:
- buffer-from: "npm:^1.0.0"
- inherits: "npm:^2.0.3"
- readable-stream: "npm:^2.2.2"
- typedarray: "npm:^0.0.6"
- checksum: 10/71db903c84fc073ca35a274074e8d26c4330713d299f8623e993c448c1f6bf8b967806dd1d1a7b0f8add6f15ab1af7435df21fe79b4fe7efd78420c89e054e28
- languageName: node
- linkType: hard
-
-"confbox@npm:^0.1.3, confbox@npm:^0.1.7":
+"confbox@npm:^0.1.7":
version: 0.1.7
resolution: "confbox@npm:0.1.7"
checksum: 10/3086687b9a2a70d44d4b40a2d376536fe7e1baec4a2a34261b21b8a836026b419cbf89ded6054216631823e7d63c415dad4b4d53591d6edbb202bb9820dfa6fa
@@ -2789,13 +1744,6 @@ __metadata:
languageName: node
linkType: hard
-"core-util-is@npm:~1.0.0":
- version: 1.0.3
- resolution: "core-util-is@npm:1.0.3"
- checksum: 10/9de8597363a8e9b9952491ebe18167e3b36e7707569eed0ebf14f8bba773611376466ae34575bca8cfe3c767890c859c74056084738f09d4e4a6f902b2ad7d99
- languageName: node
- linkType: hard
-
"cosmiconfig-typescript-loader@npm:^5.0.0":
version: 5.0.0
resolution: "cosmiconfig-typescript-loader@npm:5.0.0"
@@ -2809,7 +1757,7 @@ __metadata:
languageName: node
linkType: hard
-"cosmiconfig@npm:^8.0.0, cosmiconfig@npm:^8.3.6":
+"cosmiconfig@npm:^8.3.6":
version: 8.3.6
resolution: "cosmiconfig@npm:8.3.6"
dependencies:
@@ -2853,13 +1801,6 @@ __metadata:
languageName: node
linkType: hard
-"create-require@npm:^1.1.0":
- version: 1.1.1
- resolution: "create-require@npm:1.1.1"
- checksum: 10/a9a1503d4390d8b59ad86f4607de7870b39cad43d929813599a23714831e81c520bddf61bcdd1f8e30f05fd3a2b71ae8538e946eb2786dc65c2bbc520f692eff
- languageName: node
- linkType: hard
-
"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.3":
version: 7.0.3
resolution: "cross-spawn@npm:7.0.3"
@@ -2871,20 +1812,13 @@ __metadata:
languageName: node
linkType: hard
-"crypt@npm:>= 0.0.1":
- version: 0.0.2
- resolution: "crypt@npm:0.0.2"
- checksum: 10/2c72768de3d28278c7c9ffd81a298b26f87ecdfe94415084f339e6632f089b43fe039f2c93f612bcb5ffe447238373d93b2e8c90894cba6cfb0ac7a74616f8b9
- languageName: node
- linkType: hard
-
"czg@npm:^1.9.1":
- version: 1.9.1
- resolution: "czg@npm:1.9.1"
+ version: 1.9.3
+ resolution: "czg@npm:1.9.3"
bin:
czg: bin/index.js
git-czg: bin/index.js
- checksum: 10/4673b5dd9f48db2748520f35e4211d7363db5c045e44a1d32af96263efd8bff514a37a9e816d716ddebfd909548578613bf8e34517b57ee566d005cc84f360bb
+ checksum: 10/2908dc75e31877f2dbe560fc207613199e76bf0fdb56c1734500752e73004bb807850e362596be95bc17ed52ad2a1f1c83e378c54155e26053415d0142bfa7c2
languageName: node
linkType: hard
@@ -2895,22 +1829,15 @@ __metadata:
languageName: node
linkType: hard
-"death@npm:^1.1.0":
- version: 1.1.0
- resolution: "death@npm:1.1.0"
- checksum: 10/b6fc4d1b8fbfc84486a025d36c540795c5ae9368f580a31fc2740935d0a9afbd31a214b00650335e97756f4c1a3fae895adc45795aeb9ef00694968311ab844d
- languageName: node
- linkType: hard
-
-"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.4":
- version: 4.3.4
- resolution: "debug@npm:4.3.4"
+"debug@npm:4, debug@npm:^4.1.1, debug@npm:^4.3.4, debug@npm:^4.3.5, debug@npm:~4.3.4":
+ version: 4.3.5
+ resolution: "debug@npm:4.3.5"
dependencies:
ms: "npm:2.1.2"
peerDependenciesMeta:
supports-color:
optional: true
- checksum: 10/0073c3bcbd9cb7d71dd5f6b55be8701af42df3e56e911186dfa46fac3a5b9eb7ce7f377dd1d3be6db8977221f8eb333d945216f645cf56f6b688cd484837d255
+ checksum: 10/cb6eab424c410e07813ca1392888589972ce9a32b8829c6508f5e1f25f3c3e70a76731610ae55b4bbe58d1a2fffa1424b30e97fa8d394e49cd2656a9643aedd2
languageName: node
linkType: hard
@@ -2938,29 +1865,6 @@ __metadata:
languageName: node
linkType: hard
-"deep-eql@npm:^4.0.1, deep-eql@npm:^4.1.3":
- version: 4.1.3
- resolution: "deep-eql@npm:4.1.3"
- dependencies:
- type-detect: "npm:^4.0.0"
- checksum: 10/12ce93ae63de187e77b076d3d51bfc28b11f98910a22c18714cce112791195e86a94f97788180994614b14562a86c9763f67c69f785e4586f806b5df39bf9301
- languageName: node
- linkType: hard
-
-"deep-extend@npm:~0.6.0":
- version: 0.6.0
- resolution: "deep-extend@npm:0.6.0"
- checksum: 10/7be7e5a8d468d6b10e6a67c3de828f55001b6eb515d014f7aeb9066ce36bd5717161eb47d6a0f7bed8a9083935b465bc163ee2581c8b128d29bf61092fdf57a7
- languageName: node
- linkType: hard
-
-"deep-is@npm:~0.1.3":
- version: 0.1.4
- resolution: "deep-is@npm:0.1.4"
- checksum: 10/ec12d074aef5ae5e81fa470b9317c313142c9e8e2afe3f8efa124db309720db96d1d222b82b84c834e5f87e7a614b44a4684b6683583118b87c833b3be40d4d8
- languageName: node
- linkType: hard
-
"default-browser-id@npm:^3.0.0":
version: 3.0.0
resolution: "default-browser-id@npm:3.0.0"
@@ -2983,17 +1887,6 @@ __metadata:
languageName: node
linkType: hard
-"define-data-property@npm:^1.1.4":
- version: 1.1.4
- resolution: "define-data-property@npm:1.1.4"
- dependencies:
- es-define-property: "npm:^1.0.0"
- es-errors: "npm:^1.3.0"
- gopd: "npm:^1.0.1"
- checksum: 10/abdcb2505d80a53524ba871273e5da75e77e52af9e15b3aa65d8aad82b8a3a424dad7aee2cc0b71470ac7acf501e08defac362e8b6a73cdb4309f028061df4ae
- languageName: node
- linkType: hard
-
"define-lazy-prop@npm:^3.0.0":
version: 3.0.0
resolution: "define-lazy-prop@npm:3.0.0"
@@ -3008,13 +1901,6 @@ __metadata:
languageName: node
linkType: hard
-"delayed-stream@npm:~1.0.0":
- version: 1.0.0
- resolution: "delayed-stream@npm:1.0.0"
- checksum: 10/46fe6e83e2cb1d85ba50bd52803c68be9bd953282fa7096f51fc29edd5d67ff84ff753c51966061e5ba7cb5e47ef6d36a91924eddb7f3f3483b1c560f77a0020
- languageName: node
- linkType: hard
-
"depd@npm:2.0.0":
version: 2.0.0
resolution: "depd@npm:2.0.0"
@@ -3029,35 +1915,10 @@ __metadata:
languageName: node
linkType: hard
-"diff@npm:5.0.0":
- version: 5.0.0
- resolution: "diff@npm:5.0.0"
- checksum: 10/4a179a75b17cbb420eb9145be913f9ddb34b47cb2ba4301e80ae745122826a468f02ca8f5e56945958de26ace594899c8381acb6659c88e7803ef078b53d690c
- languageName: node
- linkType: hard
-
-"diff@npm:^4.0.1":
- version: 4.0.2
- resolution: "diff@npm:4.0.2"
- checksum: 10/ec09ec2101934ca5966355a229d77afcad5911c92e2a77413efda5455636c4cf2ce84057e2d7715227a2eeeda04255b849bd3ae3a4dd22eb22e86e76456df069
- 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: 10/35c09c9469f762b72703a1eee4bd7bae6227fac96cef4605cd00f0ab3773b547584aefd2c5224f85c5b1701f0e8cedebd45afbb853b01d1d44863b4720cfcd35
- languageName: node
- linkType: hard
-
-"dir-glob@npm:^3.0.1":
- version: 3.0.1
- resolution: "dir-glob@npm:3.0.1"
- dependencies:
- path-type: "npm:^4.0.0"
- checksum: 10/fa05e18324510d7283f55862f3161c6759a3f2f8dbce491a2fc14c8324c498286c54282c1f0e933cb930da8419b30679389499b919122952a4f8592362ef4615
+"diff@npm:^5.2.0":
+ version: 5.2.0
+ resolution: "diff@npm:5.2.0"
+ checksum: 10/01b7b440f83a997350a988e9d2f558366c0f90f15be19f4aa7f1bb3109a4e153dfc3b9fbf78e14ea725717017407eeaa2271e3896374a0181e8f52445740846d
languageName: node
linkType: hard
@@ -3177,22 +2038,6 @@ __metadata:
languageName: node
linkType: hard
-"es-define-property@npm:^1.0.0":
- version: 1.0.0
- resolution: "es-define-property@npm:1.0.0"
- dependencies:
- get-intrinsic: "npm:^1.2.4"
- checksum: 10/f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6
- languageName: node
- linkType: hard
-
-"es-errors@npm:^1.3.0":
- version: 1.3.0
- resolution: "es-errors@npm:1.3.0"
- checksum: 10/96e65d640156f91b707517e8cdc454dd7d47c32833aa3e85d79f24f9eb7ea85f39b63e36216ef0114996581969b59fe609a94e30316b08f5f4df1d44134cf8d5
- languageName: node
- linkType: hard
-
"escalade@npm:^3.1.1":
version: 3.1.2
resolution: "escalade@npm:3.1.2"
@@ -3200,13 +2045,6 @@ __metadata:
languageName: node
linkType: hard
-"escape-string-regexp@npm:4.0.0":
- version: 4.0.0
- resolution: "escape-string-regexp@npm:4.0.0"
- checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5
- languageName: node
- linkType: hard
-
"escape-string-regexp@npm:^1.0.5":
version: 1.0.5
resolution: "escape-string-regexp@npm:1.0.5"
@@ -3214,91 +2052,10 @@ __metadata:
languageName: node
linkType: hard
-"escodegen@npm:1.8.x":
- version: 1.8.1
- resolution: "escodegen@npm:1.8.1"
- dependencies:
- esprima: "npm:^2.7.1"
- estraverse: "npm:^1.9.1"
- esutils: "npm:^2.0.2"
- optionator: "npm:^0.8.1"
- source-map: "npm:~0.2.0"
- dependenciesMeta:
- source-map:
- optional: true
- bin:
- escodegen: ./bin/escodegen.js
- esgenerate: ./bin/esgenerate.js
- checksum: 10/f7c4f9639f4198848784548f268bb4bbd55f1a12344af79ea4a8978168c2009b0bfc1047dece1e0fdca4ff539fe9dffb0b4183ecab22ab91dea88328487da86a
- languageName: node
- linkType: hard
-
-"esprima@npm:2.7.x, esprima@npm:^2.7.1":
- version: 2.7.3
- resolution: "esprima@npm:2.7.3"
- bin:
- esparse: ./bin/esparse.js
- esvalidate: ./bin/esvalidate.js
- checksum: 10/7508285b882012deea8f68dff4b759f9a17e9317ad8c7449969feb1e2efc083fa4a0012139a4722f1e96da81ece0ac319756c8e79a01e5ddb4b36ae483464d3f
- languageName: node
- linkType: hard
-
-"esprima@npm:^4.0.0":
- version: 4.0.1
- resolution: "esprima@npm:4.0.1"
- bin:
- esparse: ./bin/esparse.js
- esvalidate: ./bin/esvalidate.js
- checksum: 10/f1d3c622ad992421362294f7acf866aa9409fbad4eb2e8fa230bd33944ce371d32279667b242d8b8907ec2b6ad7353a717f3c0e60e748873a34a7905174bc0eb
- languageName: node
- linkType: hard
-
-"estraverse@npm:^1.9.1":
- version: 1.9.3
- resolution: "estraverse@npm:1.9.3"
- checksum: 10/682a7e2fda17fd3e892b78a8347d055f923465598f5d713354aefd53a3348b2a1a6ee8df41031d8f5ad9802cfd27c29caac84c2f58ce3b2df659d43d668c870b
- languageName: node
- linkType: hard
-
-"esutils@npm:^2.0.2":
- version: 2.0.3
- resolution: "esutils@npm:2.0.3"
- checksum: 10/b23acd24791db11d8f65be5ea58fd9a6ce2df5120ae2da65c16cfc5331ff59d5ac4ef50af66cd4bde238881503ec839928a0135b99a036a9cdfa22d17fd56cdb
- languageName: node
- linkType: hard
-
-"eth-gas-reporter@npm:^0.2.25":
- version: 0.2.27
- resolution: "eth-gas-reporter@npm:0.2.27"
- dependencies:
- "@solidity-parser/parser": "npm:^0.14.0"
- axios: "npm:^1.5.1"
- cli-table3: "npm:^0.5.0"
- colors: "npm:1.4.0"
- ethereum-cryptography: "npm:^1.0.3"
- ethers: "npm:^5.7.2"
- fs-readdir-recursive: "npm:^1.1.0"
- lodash: "npm:^4.17.14"
- markdown-table: "npm:^1.1.3"
- mocha: "npm:^10.2.0"
- req-cwd: "npm:^2.0.0"
- sha1: "npm:^1.1.1"
- sync-request: "npm:^6.0.0"
- peerDependencies:
- "@codechecks/client": ^0.1.0
- peerDependenciesMeta:
- "@codechecks/client":
- optional: true
- checksum: 10/d2ba21b6e7edfadc39a29368bf52d22ab5314ee6a132b88df2abfe746e4c8161a32fd998be4ee6a98309a4c04162d5150e46f1391f116bcb15a76d711538453d
- languageName: node
- linkType: hard
-
-"ethereum-bloom-filters@npm:^1.0.6":
- version: 1.1.0
- resolution: "ethereum-bloom-filters@npm:1.1.0"
- dependencies:
- "@noble/hashes": "npm:^1.4.0"
- checksum: 10/fb50448d024723f5817d7fce7d11ed22921b36f2b14b6102fe553721cf073b07f5f0f32ceef1a2a4520b426e5d9cac217b76f5bc8af4b82b4036c2d14b907836
+"escape-string-regexp@npm:^4.0.0":
+ version: 4.0.0
+ resolution: "escape-string-regexp@npm:4.0.0"
+ checksum: 10/98b48897d93060f2322108bf29db0feba7dd774be96cd069458d1453347b25ce8682ecc39859d4bca2203cc0ab19c237bcc71755eff49a0f8d90beadeeba5cc5
languageName: node
linkType: hard
@@ -3337,18 +2094,6 @@ __metadata:
languageName: node
linkType: hard
-"ethereum-cryptography@npm:^2.0.0, ethereum-cryptography@npm:^2.1.2":
- version: 2.1.3
- resolution: "ethereum-cryptography@npm:2.1.3"
- dependencies:
- "@noble/curves": "npm:1.3.0"
- "@noble/hashes": "npm:1.3.3"
- "@scure/bip32": "npm:1.3.3"
- "@scure/bip39": "npm:1.2.2"
- checksum: 10/cc5aa9a4368dc1dd7680ba921957c098ced7b3d7dbb1666334013ab2f8d4cd25a785ad84e66fd9f5c5a9b6de337930ea24ff8c722938f36a9c00cec597ca16b5
- languageName: node
- linkType: hard
-
"ethereumjs-abi@npm:^0.6.8":
version: 0.6.8
resolution: "ethereumjs-abi@npm:0.6.8"
@@ -3374,82 +2119,6 @@ __metadata:
languageName: node
linkType: hard
-"ethereumjs-util@npm:^7.1.4":
- version: 7.1.5
- resolution: "ethereumjs-util@npm:7.1.5"
- dependencies:
- "@types/bn.js": "npm:^5.1.0"
- bn.js: "npm:^5.1.2"
- create-hash: "npm:^1.1.2"
- ethereum-cryptography: "npm:^0.1.3"
- rlp: "npm:^2.2.4"
- checksum: 10/f28fc1ebb8f35bf9e418f76f51be737d94d603b912c3e014c4e87cd45ccd1b10bdfef764c8f152574b57e9faa260a18773cbc110f9e0a754d6b3730699e54dc9
- languageName: node
- linkType: hard
-
-"ethers@npm:^5.7.2":
- version: 5.7.2
- resolution: "ethers@npm:5.7.2"
- dependencies:
- "@ethersproject/abi": "npm:5.7.0"
- "@ethersproject/abstract-provider": "npm:5.7.0"
- "@ethersproject/abstract-signer": "npm:5.7.0"
- "@ethersproject/address": "npm:5.7.0"
- "@ethersproject/base64": "npm:5.7.0"
- "@ethersproject/basex": "npm:5.7.0"
- "@ethersproject/bignumber": "npm:5.7.0"
- "@ethersproject/bytes": "npm:5.7.0"
- "@ethersproject/constants": "npm:5.7.0"
- "@ethersproject/contracts": "npm:5.7.0"
- "@ethersproject/hash": "npm:5.7.0"
- "@ethersproject/hdnode": "npm:5.7.0"
- "@ethersproject/json-wallets": "npm:5.7.0"
- "@ethersproject/keccak256": "npm:5.7.0"
- "@ethersproject/logger": "npm:5.7.0"
- "@ethersproject/networks": "npm:5.7.1"
- "@ethersproject/pbkdf2": "npm:5.7.0"
- "@ethersproject/properties": "npm:5.7.0"
- "@ethersproject/providers": "npm:5.7.2"
- "@ethersproject/random": "npm:5.7.0"
- "@ethersproject/rlp": "npm:5.7.0"
- "@ethersproject/sha2": "npm:5.7.0"
- "@ethersproject/signing-key": "npm:5.7.0"
- "@ethersproject/solidity": "npm:5.7.0"
- "@ethersproject/strings": "npm:5.7.0"
- "@ethersproject/transactions": "npm:5.7.0"
- "@ethersproject/units": "npm:5.7.0"
- "@ethersproject/wallet": "npm:5.7.0"
- "@ethersproject/web": "npm:5.7.1"
- "@ethersproject/wordlists": "npm:5.7.0"
- checksum: 10/227dfa88a2547c799c0c3c9e92e5e246dd11342f4b495198b3ae7c942d5bf81d3970fcef3fbac974a9125d62939b2d94f3c0458464e702209b839a8e6e615028
- languageName: node
- linkType: hard
-
-"ethers@npm:^6.4.0":
- version: 6.12.1
- resolution: "ethers@npm:6.12.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: 10/2995766164292b531499764d319d753b1f4e1cd7ddb4f26c6557a26e42947d5642a4b3bbeace0b8bb398b909dc22fafa4f52d5190a9bb8180bebf2dd3d4d48a9
- languageName: node
- linkType: hard
-
-"ethjs-unit@npm:0.1.6":
- version: 0.1.6
- resolution: "ethjs-unit@npm:0.1.6"
- dependencies:
- bn.js: "npm:4.11.6"
- number-to-bn: "npm:1.7.0"
- checksum: 10/35086cb671806992ec36d5dd43ab67e68ad7a9237e42c0e963f9081c88e40147cda86c1a258b0a3180bf2b7bc1960e607c5bcaefdb2196e0f3564acf73276189
- languageName: node
- linkType: hard
-
"ethjs-util@npm:0.1.6, ethjs-util@npm:^0.1.6":
version: 0.1.6
resolution: "ethjs-util@npm:0.1.6"
@@ -3478,51 +2147,6 @@ __metadata:
languageName: node
linkType: hard
-"excubiae@workspace:packages/excubiae":
- version: 0.0.0-use.local
- resolution: "excubiae@workspace:packages/excubiae"
- dependencies:
- "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.3"
- "@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
- "@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:^10.0.6"
- "@types/node": "npm:^20.10.7"
- chai: "npm:^4.2.0"
- ethers: "npm:^6.4.0"
- hardhat: "npm:^2.19.4"
- hardhat-gas-reporter: "npm:^1.0.8"
- prettier-plugin-solidity: "npm:^1.3.1"
- solhint: "npm:^3.3.6"
- solhint-plugin-prettier: "npm:^0.1.0"
- solidity-coverage: "npm:^0.8.0"
- ts-node: "npm:^10.9.2"
- typechain: "npm:^8.3.0"
- typescript: "npm:^5.3.3"
- languageName: unknown
- linkType: soft
-
-"execa@npm:8.0.1, execa@npm:^8.0.1":
- version: 8.0.1
- resolution: "execa@npm:8.0.1"
- dependencies:
- cross-spawn: "npm:^7.0.3"
- get-stream: "npm:^8.0.1"
- human-signals: "npm:^5.0.0"
- is-stream: "npm:^3.0.0"
- merge-stream: "npm:^2.0.0"
- npm-run-path: "npm:^5.1.0"
- onetime: "npm:^6.0.0"
- signal-exit: "npm:^4.1.0"
- strip-final-newline: "npm:^3.0.0"
- checksum: 10/d2ab5fe1e2bb92b9788864d0713f1fce9a07c4594e272c0c97bc18c90569897ab262e4ea58d27a694d288227a2e24f16f5e2575b44224ad9983b799dc7f1098d
- languageName: node
- linkType: hard
-
"execa@npm:^5.0.0":
version: 5.1.1
resolution: "execa@npm:5.1.1"
@@ -3552,93 +2176,48 @@ __metadata:
npm-run-path: "npm:^5.1.0"
onetime: "npm:^6.0.0"
signal-exit: "npm:^3.0.7"
- strip-final-newline: "npm:^3.0.0"
- checksum: 10/473feff60f9d4dbe799225948de48b5158c1723021d19c4b982afe37bcd111ae84e1b4c9dfe967fae5101b0894b1a62e4dd564a286dfa3e46d7b0cfdbf7fe62b
- languageName: node
- linkType: hard
-
-"exponential-backoff@npm:^3.1.1":
- version: 3.1.1
- resolution: "exponential-backoff@npm:3.1.1"
- checksum: 10/2d9bbb6473de7051f96790d5f9a678f32e60ed0aa70741dc7fdc96fec8d631124ec3374ac144387604f05afff9500f31a1d45bd9eee4cdc2e4f9ad2d9b9d5dbd
- languageName: node
- linkType: hard
-
-"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3":
- version: 3.1.3
- resolution: "fast-deep-equal@npm:3.1.3"
- checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d
- languageName: node
- linkType: hard
-
-"fast-diff@npm:^1.1.2, fast-diff@npm:^1.2.0":
- version: 1.3.0
- resolution: "fast-diff@npm:1.3.0"
- checksum: 10/9e57415bc69cd6efcc720b3b8fe9fdaf42dcfc06f86f0f45378b1fa512598a8aac48aa3928c8751d58e2f01bb4ba4f07e4f3d9bc0d57586d45f1bd1e872c6cde
- languageName: node
- linkType: hard
-
-"fast-glob@npm:^3.0.3":
- version: 3.3.2
- resolution: "fast-glob@npm:3.3.2"
- dependencies:
- "@nodelib/fs.stat": "npm:^2.0.2"
- "@nodelib/fs.walk": "npm:^1.2.3"
- glob-parent: "npm:^5.1.2"
- merge2: "npm:^1.3.0"
- micromatch: "npm:^4.0.4"
- checksum: 10/222512e9315a0efca1276af9adb2127f02105d7288fa746145bf45e2716383fb79eb983c89601a72a399a56b7c18d38ce70457c5466218c5f13fad957cee16df
- languageName: node
- linkType: hard
-
-"fast-json-stable-stringify@npm:^2.0.0":
- version: 2.1.0
- resolution: "fast-json-stable-stringify@npm:2.1.0"
- checksum: 10/2c20055c1fa43c922428f16ca8bb29f2807de63e5c851f665f7ac9790176c01c3b40335257736b299764a8d383388dabc73c8083b8e1bc3d99f0a941444ec60e
- languageName: node
- linkType: hard
-
-"fast-levenshtein@npm:~2.0.6":
- version: 2.0.6
- resolution: "fast-levenshtein@npm:2.0.6"
- checksum: 10/eb7e220ecf2bab5159d157350b81d01f75726a4382f5a9266f42b9150c4523b9795f7f5d9fbbbeaeac09a441b2369f05ee02db48ea938584205530fe5693cfe1
+ strip-final-newline: "npm:^3.0.0"
+ checksum: 10/473feff60f9d4dbe799225948de48b5158c1723021d19c4b982afe37bcd111ae84e1b4c9dfe967fae5101b0894b1a62e4dd564a286dfa3e46d7b0cfdbf7fe62b
languageName: node
linkType: hard
-"fastq@npm:^1.6.0":
- version: 1.17.1
- resolution: "fastq@npm:1.17.1"
+"execa@npm:^8.0.1, execa@npm:~8.0.1":
+ version: 8.0.1
+ resolution: "execa@npm:8.0.1"
dependencies:
- reusify: "npm:^1.0.4"
- checksum: 10/a443180068b527dd7b3a63dc7f2a47ceca2f3e97b9c00a1efe5538757e6cc4056a3526df94308075d7727561baf09ebaa5b67da8dcbddb913a021c5ae69d1f69
+ cross-spawn: "npm:^7.0.3"
+ get-stream: "npm:^8.0.1"
+ human-signals: "npm:^5.0.0"
+ is-stream: "npm:^3.0.0"
+ merge-stream: "npm:^2.0.0"
+ npm-run-path: "npm:^5.1.0"
+ onetime: "npm:^6.0.0"
+ signal-exit: "npm:^4.1.0"
+ strip-final-newline: "npm:^3.0.0"
+ checksum: 10/d2ab5fe1e2bb92b9788864d0713f1fce9a07c4594e272c0c97bc18c90569897ab262e4ea58d27a694d288227a2e24f16f5e2575b44224ad9983b799dc7f1098d
languageName: node
linkType: hard
-"fill-range@npm:^7.0.1":
- version: 7.0.1
- resolution: "fill-range@npm:7.0.1"
- dependencies:
- to-regex-range: "npm:^5.0.1"
- checksum: 10/e260f7592fd196b4421504d3597cc76f4a1ca7a9488260d533b611fc3cefd61e9a9be1417cb82d3b01ad9f9c0ff2dbf258e1026d2445e26b0cf5148ff4250429
+"exponential-backoff@npm:^3.1.1":
+ version: 3.1.1
+ resolution: "exponential-backoff@npm:3.1.1"
+ checksum: 10/2d9bbb6473de7051f96790d5f9a678f32e60ed0aa70741dc7fdc96fec8d631124ec3374ac144387604f05afff9500f31a1d45bd9eee4cdc2e4f9ad2d9b9d5dbd
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: 10/6b04bcfd79027f5b84aa1dfe100e3295da989bdac4b4de6b277f4d063e78f5c9e92ebc8a1fec6dd3b448c924ba404ee051cc759e14a3ee3e825fa1361025df08
+"fast-deep-equal@npm:^3.1.3":
+ version: 3.1.3
+ resolution: "fast-deep-equal@npm:3.1.3"
+ checksum: 10/e21a9d8d84f53493b6aa15efc9cfd53dd5b714a1f23f67fb5dc8f574af80df889b3bce25dc081887c6d25457cce704e636395333abad896ccdec03abaf1f3f9d
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"
+"fill-range@npm:^7.1.1":
+ version: 7.1.1
+ resolution: "fill-range@npm:7.1.1"
dependencies:
- locate-path: "npm:^6.0.0"
- path-exists: "npm:^4.0.0"
- checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095
+ to-regex-range: "npm:^5.0.1"
+ checksum: 10/a7095cb39e5bc32fada2aa7c7249d3f6b01bd1ce461a61b0adabacccabd9198500c6fb1f68a7c851a657e273fce2233ba869638897f3d7ed2e87a2d89b4436ea
languageName: node
linkType: hard
@@ -3661,6 +2240,16 @@ __metadata:
languageName: node
linkType: hard
+"find-up@npm:^5.0.0":
+ version: 5.0.0
+ resolution: "find-up@npm:5.0.0"
+ dependencies:
+ locate-path: "npm:^6.0.0"
+ path-exists: "npm:^4.0.0"
+ checksum: 10/07955e357348f34660bde7920783204ff5a26ac2cafcaa28bace494027158a97b9f56faaf2d89a6106211a8174db650dd9f503f9c0d526b1202d5554a00b9095
+ languageName: node
+ linkType: hard
+
"flat@npm:^5.0.2":
version: 5.0.2
resolution: "flat@npm:5.0.2"
@@ -3670,7 +2259,7 @@ __metadata:
languageName: node
linkType: hard
-"follow-redirects@npm:^1.12.1, follow-redirects@npm:^1.15.6":
+"follow-redirects@npm:^1.12.1":
version: 1.15.6
resolution: "follow-redirects@npm:1.15.6"
peerDependenciesMeta:
@@ -3681,34 +2270,12 @@ __metadata:
linkType: hard
"foreground-child@npm:^3.1.0":
- version: 3.1.1
- resolution: "foreground-child@npm:3.1.1"
+ version: 3.2.1
+ resolution: "foreground-child@npm:3.2.1"
dependencies:
cross-spawn: "npm:^7.0.0"
signal-exit: "npm:^4.0.1"
- checksum: 10/087edd44857d258c4f73ad84cb8df980826569656f2550c341b27adf5335354393eec24ea2fabd43a253233fb27cee177ebe46bd0b7ea129c77e87cb1e9936fb
- languageName: node
- linkType: hard
-
-"form-data@npm:^2.2.0":
- version: 2.5.1
- resolution: "form-data@npm:2.5.1"
- dependencies:
- asynckit: "npm:^0.4.0"
- combined-stream: "npm:^1.0.6"
- mime-types: "npm:^2.1.12"
- checksum: 10/2e2e5e927979ba3623f9b4c4bcc939275fae3f2dea9dafc8db3ca656a3d75476605de2c80f0e6f1487987398e056f0b4c738972d6e1edd83392d5686d0952eed
- languageName: node
- linkType: hard
-
-"form-data@npm:^4.0.0":
- version: 4.0.0
- resolution: "form-data@npm:4.0.0"
- dependencies:
- asynckit: "npm:^0.4.0"
- combined-stream: "npm:^1.0.8"
- mime-types: "npm:^2.1.12"
- checksum: 10/7264aa760a8cf09482816d8300f1b6e2423de1b02bba612a136857413fdc96d7178298ced106817655facc6b89036c6e12ae31c9eb5bdc16aabf502ae8a5d805
+ checksum: 10/77b33b3c438a499201727ca84de39a66350ccd54a8805df712773e963cefb5c4632dbc4386109e97a0df8fb1585aee95fa35acb07587e3e04cfacabfc0ae15dc
languageName: node
linkType: hard
@@ -3739,7 +2306,7 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^7.0.0, fs-extra@npm:^7.0.1":
+"fs-extra@npm:^7.0.1":
version: 7.0.1
resolution: "fs-extra@npm:7.0.1"
dependencies:
@@ -3750,29 +2317,6 @@ __metadata:
languageName: node
linkType: hard
-"fs-extra@npm:^8.1.0":
- version: 8.1.0
- resolution: "fs-extra@npm:8.1.0"
- dependencies:
- graceful-fs: "npm:^4.2.0"
- jsonfile: "npm:^4.0.0"
- universalify: "npm:^0.1.0"
- checksum: 10/6fb12449f5349be724a138b4a7b45fe6a317d2972054517f5971959c26fbd17c0e145731a11c7324460262baa33e0a799b183ceace98f7a372c95fbb6f20f5de
- languageName: node
- linkType: hard
-
-"fs-extra@npm:^9.1.0":
- version: 9.1.0
- resolution: "fs-extra@npm:9.1.0"
- dependencies:
- at-least-node: "npm:^1.0.0"
- graceful-fs: "npm:^4.2.0"
- jsonfile: "npm:^6.0.1"
- universalify: "npm:^2.0.0"
- checksum: 10/08600da1b49552ed23dfac598c8fc909c66776dd130fea54fbcad22e330f7fcc13488bb995f6bc9ce5651aa35b65702faf616fe76370ee56f1aade55da982dca
- languageName: node
- linkType: hard
-
"fs-minipass@npm:^2.0.0":
version: 2.1.0
resolution: "fs-minipass@npm:2.1.0"
@@ -3791,13 +2335,6 @@ __metadata:
languageName: node
linkType: hard
-"fs-readdir-recursive@npm:^1.1.0":
- version: 1.1.0
- resolution: "fs-readdir-recursive@npm:1.1.0"
- checksum: 10/d5e3fd8456b8e5d57a43f169a9eaf65c70fa82c4a22f1d4361cdba4ea5e61c60c5c2b4ac481ea137a4d43b2b99b3ea2fae95ac2730255c4206d61af645866c3a
- languageName: node
- linkType: hard
-
"fs.realpath@npm:^1.0.0":
version: 1.0.0
resolution: "fs.realpath@npm:1.0.0"
@@ -3845,33 +2382,6 @@ __metadata:
languageName: node
linkType: hard
-"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2":
- version: 2.0.2
- resolution: "get-func-name@npm:2.0.2"
- checksum: 10/3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b
- languageName: node
- linkType: hard
-
-"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4":
- version: 1.2.4
- resolution: "get-intrinsic@npm:1.2.4"
- dependencies:
- es-errors: "npm:^1.3.0"
- function-bind: "npm:^1.1.2"
- has-proto: "npm:^1.0.1"
- has-symbols: "npm:^1.0.3"
- hasown: "npm:^2.0.0"
- checksum: 10/85bbf4b234c3940edf8a41f4ecbd4e25ce78e5e6ad4e24ca2f77037d983b9ef943fd72f00f3ee97a49ec622a506b67db49c36246150377efcda1c9eb03e5f06d
- languageName: node
- linkType: hard
-
-"get-port@npm:^3.1.0":
- version: 3.2.0
- resolution: "get-port@npm:3.2.0"
- checksum: 10/577b6ae47dcac1cb64f9bad28c9aa9e4cd8e8f2166c4224485dcdd1dede64154517a57a0eb55bfb557ad3d48f9a1b400415ed047f04002e936f96ddb247f645d
- languageName: node
- linkType: hard
-
"get-stream@npm:^6.0.0, get-stream@npm:^6.0.1":
version: 6.0.1
resolution: "get-stream@npm:6.0.1"
@@ -3886,19 +2396,7 @@ __metadata:
languageName: node
linkType: hard
-"ghost-testrpc@npm:^0.0.2":
- version: 0.0.2
- resolution: "ghost-testrpc@npm:0.0.2"
- dependencies:
- chalk: "npm:^2.4.2"
- node-emoji: "npm:^1.10.0"
- bin:
- testrpc-sc: ./index.js
- checksum: 10/e52f1d7ad5ac84c8528b3884496270c65056264b37373c00631ca874674b3cfd7c45ae2fc787ba3ff75e63273188f29d155d995ce3e361244bd55a9c365e444f
- languageName: node
- linkType: hard
-
-"giget@npm:^1.2.1":
+"giget@npm:^1.2.3":
version: 1.2.3
resolution: "giget@npm:1.2.3"
dependencies:
@@ -3931,7 +2429,7 @@ __metadata:
languageName: node
linkType: hard
-"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2":
+"glob-parent@npm:~5.1.2":
version: 5.1.2
resolution: "glob-parent@npm:5.1.2"
dependencies:
@@ -3940,20 +2438,6 @@ __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: 10/ff5aab0386e9cace92b0550d42085b71013c5ea382982dd7fdded998a559635f61413b8ba6fb7294eef289c83b52f4e64136f888300ac8afc4f3e5623182d6c8
- languageName: node
- linkType: hard
-
"glob@npm:7.2.0":
version: 7.2.0
resolution: "glob@npm:7.2.0"
@@ -3968,58 +2452,46 @@ __metadata:
languageName: node
linkType: hard
-"glob@npm:8.1.0, glob@npm:^8.0.3":
- version: 8.1.0
- resolution: "glob@npm:8.1.0"
- dependencies:
- fs.realpath: "npm:^1.0.0"
- inflight: "npm:^1.0.4"
- inherits: "npm:2"
- minimatch: "npm:^5.0.1"
- once: "npm:^1.3.0"
- checksum: 10/9aab1c75eb087c35dbc41d1f742e51d0507aa2b14c910d96fb8287107a10a22f4bbdce26fc0a3da4c69a20f7b26d62f1640b346a4f6e6becfff47f335bb1dc5e
- languageName: node
- linkType: hard
-
"glob@npm:^10.2.2, glob@npm:^10.3.10":
- version: 10.3.15
- resolution: "glob@npm:10.3.15"
+ version: 10.4.5
+ resolution: "glob@npm:10.4.5"
dependencies:
foreground-child: "npm:^3.1.0"
- jackspeak: "npm:^2.3.6"
- minimatch: "npm:^9.0.1"
- minipass: "npm:^7.0.4"
- path-scurry: "npm:^1.11.0"
+ jackspeak: "npm:^3.1.2"
+ minimatch: "npm:^9.0.4"
+ minipass: "npm:^7.1.2"
+ package-json-from-dist: "npm:^1.0.0"
+ path-scurry: "npm:^1.11.1"
bin:
glob: dist/esm/bin.mjs
- checksum: 10/b2b1c74309979b34fd6010afb50418a12525def32f1d3758d5827fc75d6143fc3ee5d1f3180a43111f6386c9e297c314f208d9d09955a6c6b69f22e92ee97635
+ checksum: 10/698dfe11828b7efd0514cd11e573eaed26b2dff611f0400907281ce3eab0c1e56143ef9b35adc7c77ecc71fba74717b510c7c223d34ca8a98ec81777b293d4ac
languageName: node
linkType: hard
-"glob@npm:^5.0.15":
- version: 5.0.15
- resolution: "glob@npm:5.0.15"
+"glob@npm:^7.1.3":
+ version: 7.2.3
+ resolution: "glob@npm:7.2.3"
dependencies:
+ fs.realpath: "npm:^1.0.0"
inflight: "npm:^1.0.4"
inherits: "npm:2"
- minimatch: "npm:2 || 3"
+ minimatch: "npm:^3.1.1"
once: "npm:^1.3.0"
path-is-absolute: "npm:^1.0.0"
- checksum: 10/4a1f2401329d94b5c25c6ac16276aceccc52b865bd9b2b9198da21fc937d021bfd87463ae44de9a9e4794894a49bc619ebaf7e5b12182bcf97e2ceb68ae116d7
+ checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b
languageName: node
linkType: hard
-"glob@npm:^7.0.0, glob@npm:^7.1.3":
- version: 7.2.3
- resolution: "glob@npm:7.2.3"
+"glob@npm:^8.1.0":
+ version: 8.1.0
+ resolution: "glob@npm:8.1.0"
dependencies:
fs.realpath: "npm:^1.0.0"
inflight: "npm:^1.0.4"
inherits: "npm:2"
- minimatch: "npm:^3.1.1"
+ minimatch: "npm:^5.0.1"
once: "npm:^1.3.0"
- path-is-absolute: "npm:^1.0.0"
- checksum: 10/59452a9202c81d4508a43b8af7082ca5c76452b9fcc4a9ab17655822e6ce9b21d4f8fbadabe4fe3faef448294cec249af305e2cd824b7e9aaf689240e5e96a7b
+ checksum: 10/9aab1c75eb087c35dbc41d1f742e51d0507aa2b14c910d96fb8287107a10a22f4bbdce26fc0a3da4c69a20f7b26d62f1640b346a4f6e6becfff47f335bb1dc5e
languageName: node
linkType: hard
@@ -4032,76 +2504,13 @@ __metadata:
languageName: node
linkType: hard
-"global-modules@npm:^2.0.0":
- version: 2.0.0
- resolution: "global-modules@npm:2.0.0"
- dependencies:
- global-prefix: "npm:^3.0.0"
- checksum: 10/4aee73adf533fe82ead2ad15c8bfb6ea4fb29e16d2d067521ab39d3b45b8f834d71c47a807e4f8f696e79497c3946d4ccdcd708da6f3a4522d65b087b8852f64
- languageName: node
- linkType: hard
-
-"global-prefix@npm:^3.0.0":
- version: 3.0.0
- resolution: "global-prefix@npm:3.0.0"
- dependencies:
- ini: "npm:^1.3.5"
- kind-of: "npm:^6.0.2"
- which: "npm:^1.3.1"
- checksum: 10/a405b9f83c7d88a49dc1c1e458d6585e258356810d3d0f41094265152a06a0f393b14d911f45616e35a4ce3894176a73be2984883575e778f55e90bf812d7337
- languageName: node
- linkType: hard
-
-"globby@npm:^10.0.1":
- version: 10.0.2
- resolution: "globby@npm:10.0.2"
- dependencies:
- "@types/glob": "npm:^7.1.1"
- array-union: "npm:^2.1.0"
- dir-glob: "npm:^3.0.1"
- fast-glob: "npm:^3.0.3"
- glob: "npm:^7.1.3"
- ignore: "npm:^5.1.1"
- merge2: "npm:^1.2.3"
- slash: "npm:^3.0.0"
- checksum: 10/6974752014f0914b112957b4364b760af5f2fda4033ff29bedb830bbe278ff4c13ba64681741f3e62b1f12ea0f2d64bf02ac28534f9cbea4b90ed7e9cd6e954f
- languageName: node
- linkType: hard
-
-"gopd@npm:^1.0.1":
- version: 1.0.1
- resolution: "gopd@npm:1.0.1"
- dependencies:
- get-intrinsic: "npm:^1.1.3"
- checksum: 10/5fbc7ad57b368ae4cd2f41214bd947b045c1a4be2f194a7be1778d71f8af9dbf4004221f3b6f23e30820eb0d052b4f819fe6ebe8221e2a3c6f0ee4ef173421ca
- languageName: node
- linkType: hard
-
-"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6":
+"graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.1.9, graceful-fs@npm:^4.2.6":
version: 4.2.11
resolution: "graceful-fs@npm:4.2.11"
checksum: 10/bf152d0ed1dc159239db1ba1f74fdbc40cb02f626770dcd5815c427ce0688c2635a06ed69af364396da4636d0408fcf7d4afdf7881724c3307e46aff30ca49e2
languageName: node
linkType: hard
-"handlebars@npm:^4.0.1":
- version: 4.7.8
- resolution: "handlebars@npm:4.7.8"
- dependencies:
- minimist: "npm:^1.2.5"
- neo-async: "npm:^2.6.2"
- source-map: "npm:^0.6.1"
- uglify-js: "npm:^3.1.4"
- wordwrap: "npm:^1.0.0"
- dependenciesMeta:
- uglify-js:
- optional: true
- bin:
- handlebars: bin/handlebars
- checksum: 10/bd528f4dd150adf67f3f857118ef0fa43ff79a153b1d943fa0a770f2599e38b25a7a0dbac1a3611a4ec86970fd2325a81310fb788b5c892308c9f8743bd02e11
- languageName: node
- linkType: hard
-
"hard-rejection@npm:^2.1.0":
version: 2.1.0
resolution: "hard-rejection@npm:2.1.0"
@@ -4109,20 +2518,7 @@ __metadata:
languageName: node
linkType: hard
-"hardhat-gas-reporter@npm:^1.0.8":
- version: 1.0.10
- resolution: "hardhat-gas-reporter@npm:1.0.10"
- dependencies:
- array-uniq: "npm:1.0.3"
- eth-gas-reporter: "npm:^0.2.25"
- sha1: "npm:^1.1.1"
- peerDependencies:
- hardhat: ^2.0.2
- checksum: 10/ad6df4f87ebddea967d02243a728f824cd02a486bc400a0b5fb0bfc55b24eb08d445d4c2650e8d53fa622050f6f4a971e954179bb2ac02f2bbaba97f4464d33f
- languageName: node
- linkType: hard
-
-"hardhat@npm:2.22.4, hardhat@npm:^2.19.4":
+"hardhat@npm:2.22.4":
version: 2.22.4
resolution: "hardhat@npm:2.22.4"
dependencies:
@@ -4183,13 +2579,6 @@ __metadata:
languageName: node
linkType: hard
-"has-flag@npm:^1.0.0":
- version: 1.0.0
- resolution: "has-flag@npm:1.0.0"
- checksum: 10/ce3f8ae978e70f16e4bbe17d3f0f6d6c0a3dd3b62a23f97c91d0fda9ed8e305e13baf95cc5bee4463b9f25ac9f5255de113165c5fb285e01b8065b2ac079b301
- languageName: node
- linkType: hard
-
"has-flag@npm:^3.0.0":
version: 3.0.0
resolution: "has-flag@npm:3.0.0"
@@ -4204,29 +2593,6 @@ __metadata:
languageName: node
linkType: hard
-"has-property-descriptors@npm:^1.0.2":
- version: 1.0.2
- resolution: "has-property-descriptors@npm:1.0.2"
- dependencies:
- es-define-property: "npm:^1.0.0"
- checksum: 10/2d8c9ab8cebb572e3362f7d06139a4592105983d4317e68f7adba320fe6ddfc8874581e0971e899e633fd5f72e262830edce36d5a0bc863dad17ad20572484b2
- languageName: node
- linkType: hard
-
-"has-proto@npm:^1.0.1":
- version: 1.0.3
- resolution: "has-proto@npm:1.0.3"
- checksum: 10/0b67c2c94e3bea37db3e412e3c41f79d59259875e636ba471e94c009cdfb1fa82bf045deeffafc7dbb9c148e36cae6b467055aaa5d9fad4316e11b41e3ba551a
- languageName: node
- linkType: hard
-
-"has-symbols@npm:^1.0.3":
- version: 1.0.3
- resolution: "has-symbols@npm:1.0.3"
- checksum: 10/464f97a8202a7690dadd026e6d73b1ceeddd60fe6acfd06151106f050303eaa75855aaa94969df8015c11ff7c505f196114d22f7386b4a471038da5874cf5e9b
- languageName: node
- linkType: hard
-
"hash-base@npm:^3.0.0":
version: 3.1.0
resolution: "hash-base@npm:3.1.0"
@@ -4248,7 +2614,7 @@ __metadata:
languageName: node
linkType: hard
-"hasown@npm:^2.0.0":
+"hasown@npm:^2.0.2":
version: 2.0.2
resolution: "hasown@npm:2.0.2"
dependencies:
@@ -4257,7 +2623,7 @@ __metadata:
languageName: node
linkType: hard
-"he@npm:1.2.0":
+"he@npm:^1.2.0":
version: 1.2.0
resolution: "he@npm:1.2.0"
bin:
@@ -4266,13 +2632,6 @@ __metadata:
languageName: node
linkType: hard
-"heap@npm:>= 0.2.0":
- version: 0.2.7
- resolution: "heap@npm:0.2.7"
- checksum: 10/6374f6510af79bf47f2cfcee265bf608e6ed2b2694875974d1cb5654ddc98af05347dcf3a42ee9a7de318b576022d6f4d00fe06fa65a4a65c4c60638375eabfe
- languageName: node
- linkType: hard
-
"hmac-drbg@npm:^1.0.1":
version: 1.0.1
resolution: "hmac-drbg@npm:1.0.1"
@@ -4300,18 +2659,6 @@ __metadata:
languageName: node
linkType: hard
-"http-basic@npm:^8.1.1":
- version: 8.1.3
- resolution: "http-basic@npm:8.1.3"
- dependencies:
- caseless: "npm:^0.12.0"
- concat-stream: "npm:^1.6.2"
- http-response-object: "npm:^3.0.1"
- parse-cache-control: "npm:^1.0.1"
- checksum: 10/f515c46159da289bc1573251a90f29b36ec7d781587481acc93656bc21d07f664c862662bd0e79144870c0254758e8b328e16ddc0a5c004827fb1503760e561e
- languageName: node
- linkType: hard
-
"http-cache-semantics@npm:^4.1.1":
version: 4.1.1
resolution: "http-cache-semantics@npm:4.1.1"
@@ -4342,15 +2689,6 @@ __metadata:
languageName: node
linkType: hard
-"http-response-object@npm:^3.0.1":
- version: 3.0.2
- resolution: "http-response-object@npm:3.0.2"
- dependencies:
- "@types/node": "npm:^10.0.3"
- checksum: 10/f530c1b28d35200ec125e3a1d3c2d6da1f9d78cc52537e9379219e8172bda24f831856eb050a635d9746f9545586532ade60ffe75253d5a1db14dfaf4759d691
- languageName: node
- linkType: hard
-
"https-proxy-agent@npm:^5.0.0":
version: 5.0.1
resolution: "https-proxy-agent@npm:5.0.1"
@@ -4362,12 +2700,12 @@ __metadata:
linkType: hard
"https-proxy-agent@npm:^7.0.1":
- version: 7.0.4
- resolution: "https-proxy-agent@npm:7.0.4"
+ version: 7.0.5
+ resolution: "https-proxy-agent@npm:7.0.5"
dependencies:
agent-base: "npm:^7.0.2"
debug: "npm:4"
- checksum: 10/405fe582bba461bfe5c7e2f8d752b384036854488b828ae6df6a587c654299cbb2c50df38c4b6ab303502c3c5e029a793fbaac965d1e86ee0be03faceb554d63
+ checksum: 10/6679d46159ab3f9a5509ee80c3a3fc83fba3a920a5e18d32176c3327852c3c00ad640c0c4210a8fd70ea3c4a6d3a1b375bf01942516e7df80e2646bdc77658ab
languageName: node
linkType: hard
@@ -4419,20 +2757,6 @@ __metadata:
languageName: node
linkType: hard
-"ieee754@npm:^1.2.1":
- version: 1.2.1
- resolution: "ieee754@npm:1.2.1"
- checksum: 10/d9f2557a59036f16c282aaeb107832dc957a93d73397d89bbad4eb1130560560eb695060145e8e6b3b498b15ab95510226649a0b8f52ae06583575419fe10fc4
- languageName: node
- linkType: hard
-
-"ignore@npm:^5.1.1, ignore@npm:^5.2.4":
- version: 5.3.1
- resolution: "ignore@npm:5.3.1"
- checksum: 10/0a884c2fbc8c316f0b9f92beaf84464253b73230a4d4d286697be45fca081199191ca33e1c2e82d9e5f851f5e9a48a78e25a35c951e7eb41e59f150db3530065
- languageName: node
- linkType: hard
-
"immutable@npm:^4.0.0-rc.12":
version: 4.3.6
resolution: "immutable@npm:4.3.6"
@@ -4450,37 +2774,6 @@ __metadata:
languageName: node
linkType: hard
-"imt.sol@workspace:packages/imt":
- version: 0.0.0-use.local
- resolution: "imt.sol@workspace:packages/imt"
- dependencies:
- "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.3"
- "@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
- "@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:^10.0.6"
- "@types/node": "npm:^20.10.7"
- "@zk-kit/imt": "npm:^2.0.0-beta.5"
- chai: "npm:^4.2.0"
- ethers: "npm:^6.4.0"
- hardhat: "npm:^2.19.4"
- hardhat-gas-reporter: "npm:^1.0.8"
- poseidon-lite: "npm:^0.2.0"
- poseidon-solidity: "npm:0.0.5"
- prettier-plugin-solidity: "npm:^1.3.1"
- solhint: "npm:^3.3.6"
- solhint-plugin-prettier: "npm:^0.1.0"
- solidity-coverage: "npm:^0.8.0"
- ts-node: "npm:^10.9.2"
- typechain: "npm:^8.3.0"
- typescript: "npm:^5.3.3"
- languageName: unknown
- linkType: soft
-
"imurmurhash@npm:^0.1.4":
version: 0.1.4
resolution: "imurmurhash@npm:0.1.4"
@@ -4505,27 +2798,20 @@ __metadata:
languageName: node
linkType: hard
-"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3":
+"inherits@npm:2, inherits@npm:2.0.4, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4":
version: 2.0.4
resolution: "inherits@npm:2.0.4"
checksum: 10/cd45e923bee15186c07fa4c89db0aace24824c482fb887b528304694b2aa6ff8a898da8657046a5dcf3e46cd6db6c61629551f9215f208d7c3f157cf9b290521
languageName: node
linkType: hard
-"ini@npm:^1.3.4, ini@npm:^1.3.5":
+"ini@npm:^1.3.4":
version: 1.3.8
resolution: "ini@npm:1.3.8"
checksum: 10/314ae176e8d4deb3def56106da8002b462221c174ddb7ce0c49ee72c8cd1f9044f7b10cc555a7d8850982c3b9ca96fc212122749f5234bc2b6fb05fb942ed566
languageName: node
linkType: hard
-"interpret@npm:^1.0.0":
- version: 1.4.0
- resolution: "interpret@npm:1.4.0"
- checksum: 10/5beec568d3f60543d0f61f2c5969d44dffcb1a372fe5abcdb8013968114d4e4aaac06bc971a4c9f5bd52d150881d8ebad72a8c60686b1361f5f0522f39c0e1a3
- languageName: node
- linkType: hard
-
"io-ts@npm:1.10.4":
version: 1.10.4
resolution: "io-ts@npm:1.10.4"
@@ -4562,11 +2848,11 @@ __metadata:
linkType: hard
"is-core-module@npm:^2.13.0, is-core-module@npm:^2.5.0":
- version: 2.13.1
- resolution: "is-core-module@npm:2.13.1"
+ version: 2.14.0
+ resolution: "is-core-module@npm:2.14.0"
dependencies:
- hasown: "npm:^2.0.0"
- checksum: 10/d53bd0cc24b0a0351fb4b206ee3908f71b9bbf1c47e9c9e14e5f06d292af1663704d2abd7e67700d6487b2b7864e0d0f6f10a1edf1892864bdffcb197d1845a2
+ hasown: "npm:^2.0.2"
+ checksum: 10/1e0d1a16cb3a94746f6a28db09ccab4562860c94c74bacedb3a6729736d61cfb97001d2052f9622637aa7ea8e0643a3f0f4f16965c70ba6ce30a8ccfe8074af8
languageName: node
linkType: hard
@@ -4595,13 +2881,6 @@ __metadata:
languageName: node
linkType: hard
-"is-fullwidth-code-point@npm:^2.0.0":
- version: 2.0.0
- resolution: "is-fullwidth-code-point@npm:2.0.0"
- checksum: 10/eef9c6e15f68085fec19ff6a978a6f1b8f48018fd1265035552078ee945573594933b09bbd6f562553e2a241561439f1ef5339276eba68d272001343084cfab8
- languageName: node
- linkType: hard
-
"is-fullwidth-code-point@npm:^3.0.0":
version: 3.0.0
resolution: "is-fullwidth-code-point@npm:3.0.0"
@@ -4726,13 +3005,6 @@ __metadata:
languageName: node
linkType: hard
-"isarray@npm:~1.0.0":
- version: 1.0.0
- resolution: "isarray@npm:1.0.0"
- checksum: 10/f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab
- languageName: node
- linkType: hard
-
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
@@ -4747,29 +3019,29 @@ __metadata:
languageName: node
linkType: hard
-"jackspeak@npm:^2.3.6":
- version: 2.3.6
- resolution: "jackspeak@npm:2.3.6"
+"jackspeak@npm:^3.1.2":
+ version: 3.4.2
+ resolution: "jackspeak@npm:3.4.2"
dependencies:
"@isaacs/cliui": "npm:^8.0.2"
"@pkgjs/parseargs": "npm:^0.11.0"
dependenciesMeta:
"@pkgjs/parseargs":
optional: true
- checksum: 10/6e6490d676af8c94a7b5b29b8fd5629f21346911ebe2e32931c2a54210134408171c24cee1a109df2ec19894ad04a429402a8438cbf5cc2794585d35428ace76
+ checksum: 10/485b77ffef380d1a1367a6453f3c6e61ca02728012be99bb397e673479020e87b1b0307d8f2a9288e48017eea9b8c95586a5c621b137e60c856e87365b9e1a8f
languageName: node
linkType: hard
-"jiti@npm:^1.19.1, jiti@npm:^1.21.0":
- version: 1.21.0
- resolution: "jiti@npm:1.21.0"
+"jiti@npm:^1.19.1, jiti@npm:^1.21.6":
+ version: 1.21.6
+ resolution: "jiti@npm:1.21.6"
bin:
jiti: bin/jiti.js
- checksum: 10/005a0239e50381b5c9919f59dbab86128367bd64872f3376dbbde54b6523f41bd134bf22909e2a509e38fd87e1c22125ca255b9b6b53e7df0fedd23f737334cc
+ checksum: 10/289b124cea411c130a14ffe88e3d38376ab44b6695616dfa0a1f32176a8f20ec90cdd6d2b9d81450fc6467cfa4d865f04f49b98452bff0f812bc400fd0ae78d6
languageName: node
linkType: hard
-"js-sha3@npm:0.8.0, js-sha3@npm:^0.8.0":
+"js-sha3@npm:0.8.0":
version: 0.8.0
resolution: "js-sha3@npm:0.8.0"
checksum: 10/a49ac6d3a6bfd7091472a28ab82a94c7fb8544cc584ee1906486536ba1cb4073a166f8c7bb2b0565eade23c5b3a7b8f7816231e0309ab5c549b737632377a20c
@@ -4783,19 +3055,7 @@ __metadata:
languageName: node
linkType: hard
-"js-yaml@npm:3.x":
- version: 3.14.1
- resolution: "js-yaml@npm:3.14.1"
- dependencies:
- argparse: "npm:^1.0.7"
- esprima: "npm:^4.0.0"
- bin:
- js-yaml: bin/js-yaml.js
- checksum: 10/9e22d80b4d0105b9899135365f746d47466ed53ef4223c529b3c0f7a39907743fdbd3c4379f94f1106f02755b5e90b2faaf84801a891135544e1ea475d1a1379
- languageName: node
- linkType: hard
-
-"js-yaml@npm:4.1.0, js-yaml@npm:^4.1.0":
+"js-yaml@npm:^4.1.0":
version: 4.1.0
resolution: "js-yaml@npm:4.1.0"
dependencies:
@@ -4820,13 +3080,6 @@ __metadata:
languageName: node
linkType: hard
-"json-schema-traverse@npm:^0.4.1":
- version: 0.4.1
- resolution: "json-schema-traverse@npm:0.4.1"
- checksum: 10/7486074d3ba247769fda17d5181b345c9fb7d12e0da98b22d1d71a5db9698d8b4bd900a3ec1a4ffdd60846fc2556274a5c894d0c48795f14cb03aeae7b55260b
- languageName: node
- linkType: hard
-
"json-schema-traverse@npm:^1.0.0":
version: 1.0.0
resolution: "json-schema-traverse@npm:1.0.0"
@@ -4858,19 +3111,6 @@ __metadata:
languageName: node
linkType: hard
-"jsonfile@npm:^6.0.1":
- version: 6.1.0
- resolution: "jsonfile@npm:6.1.0"
- dependencies:
- graceful-fs: "npm:^4.1.6"
- universalify: "npm:^2.0.0"
- dependenciesMeta:
- graceful-fs:
- optional: true
- checksum: 10/03014769e7dc77d4cf05fa0b534907270b60890085dd5e4d60a382ff09328580651da0b8b4cdf44d91e4c8ae64d91791d965f05707beff000ed494a38b6fec85
- languageName: node
- linkType: hard
-
"jsonparse@npm:^1.2.0":
version: 1.3.1
resolution: "jsonparse@npm:1.3.1"
@@ -4878,13 +3118,6 @@ __metadata:
languageName: node
linkType: hard
-"jsonschema@npm:^1.2.4":
- version: 1.4.1
- resolution: "jsonschema@npm:1.4.1"
- checksum: 10/d7a188da7a3100a2caa362b80e98666d46607b7a7153aac405b8e758132961911c6df02d444d4700691330874e21a62639f550e856b21ddd28423690751ca9c6
- languageName: node
- linkType: hard
-
"keccak@npm:^3.0.0, keccak@npm:^3.0.2":
version: 3.0.4
resolution: "keccak@npm:3.0.4"
@@ -4897,7 +3130,7 @@ __metadata:
languageName: node
linkType: hard
-"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3":
+"kind-of@npm:^6.0.3":
version: 6.0.3
resolution: "kind-of@npm:6.0.3"
checksum: 10/5873d303fb36aad875b7538798867da2ae5c9e328d67194b0162a3659a627d22f742fc9c4ae95cd1704132a24b00cae5041fc00c0f6ef937dc17080dc4dbb962
@@ -4914,121 +3147,19 @@ __metadata:
optional: true
checksum: 10/68b8ccb89f222dca60805df2b0e0fa0b3e4203ca1928b8facc0afac660e3e362809fe00f868ac877f495ebf89e376bb9ac9275508a132b5573e7382bed3ab006
languageName: node
- linkType: hard
-
-"kolorist@npm:^1.8.0":
- version: 1.8.0
- resolution: "kolorist@npm:1.8.0"
- checksum: 10/71d5d122951cc65f2f14c3e1d7f8fd91694b374647d4f6deec3816d018cd04a44edd9578d93e00c82c2053b925e5d30a0565746c4171f4ca9fce1a13bd5f3315
- languageName: node
- linkType: hard
-
-"lazy-imt.sol@workspace:packages/lazy-imt":
- version: 0.0.0-use.local
- resolution: "lazy-imt.sol@workspace:packages/lazy-imt"
- dependencies:
- "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.3"
- "@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
- "@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:^10.0.6"
- "@types/node": "npm:^20.10.7"
- "@zk-kit/imt": "npm:^2.0.0-beta.5"
- chai: "npm:^4.2.0"
- ethers: "npm:^6.4.0"
- hardhat: "npm:^2.19.4"
- hardhat-gas-reporter: "npm:^1.0.8"
- poseidon-lite: "npm:^0.2.0"
- poseidon-solidity: "npm:0.0.5"
- prettier-plugin-solidity: "npm:^1.3.1"
- solhint: "npm:^3.3.6"
- solhint-plugin-prettier: "npm:^0.1.0"
- solidity-coverage: "npm:^0.8.0"
- ts-node: "npm:^10.9.2"
- typechain: "npm:^8.3.0"
- typescript: "npm:^5.3.3"
- languageName: unknown
- linkType: soft
-
-"lazytower.sol@workspace:packages/lazytower":
- version: 0.0.0-use.local
- resolution: "lazytower.sol@workspace:packages/lazytower"
- dependencies:
- "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.3"
- "@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
- "@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:^10.0.6"
- "@types/node": "npm:^20.10.7"
- chai: "npm:^4.2.0"
- ethers: "npm:^6.4.0"
- hardhat: "npm:^2.19.4"
- hardhat-gas-reporter: "npm:^1.0.8"
- poseidon-lite: "npm:^0.2.0"
- poseidon-solidity: "npm:0.0.5"
- prettier-plugin-solidity: "npm:^1.3.1"
- solhint: "npm:^3.3.6"
- solhint-plugin-prettier: "npm:^0.1.0"
- solidity-coverage: "npm:^0.8.0"
- ts-node: "npm:^10.9.2"
- typechain: "npm:^8.3.0"
- typescript: "npm:^5.3.3"
- languageName: unknown
- linkType: soft
-
-"lean-imt.sol@workspace:packages/lean-imt":
- version: 0.0.0-use.local
- resolution: "lean-imt.sol@workspace:packages/lean-imt"
- dependencies:
- "@nomicfoundation/hardhat-chai-matchers": "npm:^2.0.3"
- "@nomicfoundation/hardhat-ethers": "npm:^3.0.0"
- "@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:^10.0.6"
- "@types/node": "npm:^20.10.7"
- "@zk-kit/lean-imt": "npm:^2.0.1"
- chai: "npm:^4.2.0"
- ethers: "npm:^6.4.0"
- hardhat: "npm:^2.19.4"
- hardhat-gas-reporter: "npm:^1.0.8"
- poseidon-lite: "npm:^0.2.0"
- poseidon-solidity: "npm:0.0.5"
- prettier-plugin-solidity: "npm:^1.3.1"
- solhint: "npm:^3.3.6"
- solhint-plugin-prettier: "npm:^0.1.0"
- solidity-coverage: "npm:^0.8.0"
- ts-node: "npm:^10.9.2"
- typechain: "npm:^8.3.0"
- typescript: "npm:^5.3.3"
- languageName: unknown
- linkType: soft
+ linkType: hard
-"levn@npm:~0.3.0":
- version: 0.3.0
- resolution: "levn@npm:0.3.0"
- dependencies:
- prelude-ls: "npm:~1.1.2"
- type-check: "npm:~0.3.2"
- checksum: 10/e1c3e75b5c430d9aa4c32c83c8a611e4ca53608ca78e3ea3bf6bbd9d017e4776d05d86e27df7901baebd3afa732abede9f26f715b8c1be19e95505c7a3a7b589
+"kolorist@npm:^1.8.0":
+ version: 1.8.0
+ resolution: "kolorist@npm:1.8.0"
+ checksum: 10/71d5d122951cc65f2f14c3e1d7f8fd91694b374647d4f6deec3816d018cd04a44edd9578d93e00c82c2053b925e5d30a0565746c4171f4ca9fce1a13bd5f3315
languageName: node
linkType: hard
-"lilconfig@npm:3.0.0":
- version: 3.0.0
- resolution: "lilconfig@npm:3.0.0"
- checksum: 10/55f60f4f9f7b41358cc33875e3696919412683a35aec30c6c60c4f6ecb16fb6d11f7ac856b8458b9b82b21d5f4629649fbfca1de034e8d5b0cc7a70836266db6
+"lilconfig@npm:~3.1.1":
+ version: 3.1.2
+ resolution: "lilconfig@npm:3.1.2"
+ checksum: 10/8058403850cfad76d6041b23db23f730e52b6c17a8c28d87b90766639ca0ee40c748a3e85c2d7bd133d572efabff166c4b015e5d25e01fd666cb4b13cfada7f0
languageName: node
linkType: hard
@@ -5040,36 +3171,36 @@ __metadata:
linkType: hard
"lint-staged@npm:^15.2.2":
- version: 15.2.2
- resolution: "lint-staged@npm:15.2.2"
- dependencies:
- chalk: "npm:5.3.0"
- commander: "npm:11.1.0"
- debug: "npm:4.3.4"
- execa: "npm:8.0.1"
- lilconfig: "npm:3.0.0"
- listr2: "npm:8.0.1"
- micromatch: "npm:4.0.5"
- pidtree: "npm:0.6.0"
- string-argv: "npm:0.3.2"
- yaml: "npm:2.3.4"
+ version: 15.2.7
+ resolution: "lint-staged@npm:15.2.7"
+ dependencies:
+ chalk: "npm:~5.3.0"
+ commander: "npm:~12.1.0"
+ debug: "npm:~4.3.4"
+ execa: "npm:~8.0.1"
+ lilconfig: "npm:~3.1.1"
+ listr2: "npm:~8.2.1"
+ micromatch: "npm:~4.0.7"
+ pidtree: "npm:~0.6.0"
+ string-argv: "npm:~0.3.2"
+ yaml: "npm:~2.4.2"
bin:
lint-staged: bin/lint-staged.js
- checksum: 10/5855ae7abf3ffdc2d66e8ad20759915e76544e7c4bcdfef78c82b5c126502284320d9fb0ecde554a6d07747311ab751d0bccbe3468aa5d5a7661774317cd7437
+ checksum: 10/7557bcf4e8dc0555f2c7e6a8ab6f5dfd7faaaed632a5d9e598768c86f786267ca216f8005068796a8118884d322a1c7f8f93e57c01b3e556475b77297ddad34f
languageName: node
linkType: hard
-"listr2@npm:8.0.1":
- version: 8.0.1
- resolution: "listr2@npm:8.0.1"
+"listr2@npm:~8.2.1":
+ version: 8.2.3
+ resolution: "listr2@npm:8.2.3"
dependencies:
cli-truncate: "npm:^4.0.0"
colorette: "npm:^2.0.20"
eventemitter3: "npm:^5.0.1"
log-update: "npm:^6.0.0"
- rfdc: "npm:^1.3.0"
+ rfdc: "npm:^1.4.1"
wrap-ansi: "npm:^9.0.0"
- checksum: 10/3fa83e8b709306b7efab69884ac1af08de3e18449bccf0b4d81f78dc7235dc921a32a5875b1e7deea0650f0faef2bca2d8992f16377d858158eb5a57bbb0d025
+ checksum: 10/4d63a699b851d6763df83b0eb26d9f07e6ba656fbae79ddd2447bd72a5b6825dad2fd315aacba712707ccd414fab3365ba863ad5b12b9f1b515a5d0768f6fc7d
languageName: node
linkType: hard
@@ -5108,20 +3239,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.clonedeep@npm:^4.5.0":
- version: 4.5.0
- resolution: "lodash.clonedeep@npm:4.5.0"
- checksum: 10/957ed243f84ba6791d4992d5c222ffffca339a3b79dbe81d2eaf0c90504160b500641c5a0f56e27630030b18b8e971ea10b44f928a977d5ced3c8948841b555f
- languageName: node
- linkType: hard
-
-"lodash.isequal@npm:^4.5.0":
- version: 4.5.0
- resolution: "lodash.isequal@npm:4.5.0"
- checksum: 10/82fc58a83a1555f8df34ca9a2cd300995ff94018ac12cc47c349655f0ae1d4d92ba346db4c19bbfc90510764e0c00ddcc985a358bdcd4b3b965abf8f2a48a214
- languageName: node
- linkType: hard
-
"lodash.isfunction@npm:^3.0.9":
version: 3.0.9
resolution: "lodash.isfunction@npm:3.0.9"
@@ -5171,13 +3288,6 @@ __metadata:
languageName: node
linkType: hard
-"lodash.truncate@npm:^4.4.2":
- version: 4.4.2
- resolution: "lodash.truncate@npm:4.4.2"
- checksum: 10/7a495616121449e5d2288c606b1025d42ab9979e8c93ba885e5c5802ffd4f1ebad4428c793ccc12f73e73237e85a9f5b67dd6415757546fbd5a4653ba83e25ac
- languageName: node
- linkType: hard
-
"lodash.uniq@npm:^4.5.0":
version: 4.5.0
resolution: "lodash.uniq@npm:4.5.0"
@@ -5192,14 +3302,14 @@ __metadata:
languageName: node
linkType: hard
-"lodash@npm:^4.17.11, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.21":
+"lodash@npm:^4.17.11, lodash@npm:^4.17.15":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: 10/c08619c038846ea6ac754abd6dd29d2568aa705feb69339e836dfa8d8b09abbb2f859371e86863eda41848221f9af43714491467b5b0299122431e202bb0c532
languageName: node
linkType: hard
-"log-symbols@npm:4.1.0":
+"log-symbols@npm:^4.1.0":
version: 4.1.0
resolution: "log-symbols@npm:4.1.0"
dependencies:
@@ -5222,19 +3332,10 @@ __metadata:
languageName: node
linkType: hard
-"loupe@npm:^2.3.6":
- version: 2.3.7
- resolution: "loupe@npm:2.3.7"
- dependencies:
- get-func-name: "npm:^2.0.1"
- checksum: 10/635c8f0914c2ce7ecfe4e239fbaf0ce1d2c00e4246fafcc4ed000bfdb1b8f89d05db1a220054175cca631ebf3894872a26fffba0124477fcb562f78762848fb1
- languageName: node
- linkType: hard
-
"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0":
- version: 10.2.2
- resolution: "lru-cache@npm:10.2.2"
- checksum: 10/ff1a496d30b5eaec2c9079080965bb0cede203cf878371f7033a007f1e54cd4aa13cc8abf7ccec4c994a83a22ed5476e83a55bb57cc07e6c1547a42937e42c37
+ version: 10.4.3
+ resolution: "lru-cache@npm:10.4.3"
+ checksum: 10/e6e90267360476720fa8e83cc168aa2bf0311f3f2eea20a6ba78b90a885ae72071d9db132f40fda4129c803e7dcec3a6b6a6fbb44ca90b081630b810b5d6a41a
languageName: node
linkType: hard
@@ -5254,13 +3355,6 @@ __metadata:
languageName: node
linkType: hard
-"make-error@npm:^1.1.1":
- version: 1.3.6
- resolution: "make-error@npm:1.3.6"
- checksum: 10/b86e5e0e25f7f777b77fabd8e2cbf15737972869d852a22b7e73c17623928fccb826d8e46b9951501d3f20e51ad74ba8c59ed584f610526a48f8ccf88aaec402
- languageName: node
- linkType: hard
-
"make-fetch-happen@npm:^13.0.0":
version: 13.0.1
resolution: "make-fetch-happen@npm:13.0.1"
@@ -5295,13 +3389,6 @@ __metadata:
languageName: node
linkType: hard
-"markdown-table@npm:^1.1.3":
- version: 1.1.3
- resolution: "markdown-table@npm:1.1.3"
- checksum: 10/ca94e8a84c467f9da963d1888aa298939f137d792b39259bf971d01d6fb534e02c0435e10dcccdc0b11d9e29bf6eb7dffacb007b07e3038b68b2e6eb02990fb1
- languageName: node
- linkType: hard
-
"md5.js@npm:^1.3.4":
version: 1.3.5
resolution: "md5.js@npm:1.3.5"
@@ -5353,43 +3440,13 @@ __metadata:
languageName: node
linkType: hard
-"merge2@npm:^1.2.3, merge2@npm:^1.3.0":
- version: 1.4.1
- resolution: "merge2@npm:1.4.1"
- checksum: 10/7268db63ed5169466540b6fb947aec313200bcf6d40c5ab722c22e242f651994619bcd85601602972d3c85bd2cc45a358a4c61937e9f11a061919a1da569b0c2
- languageName: node
- linkType: hard
-
-"micro-ftch@npm:^0.3.1":
- version: 0.3.1
- resolution: "micro-ftch@npm:0.3.1"
- checksum: 10/a7ab07d25e28ec4ae492ce4542ea9b06eee85538742b3b1263b247366ee8872f2c5ce9c8651138b2f1d22c8212f691a7b8b5384fe86ead5aff1852e211f1c035
- languageName: node
- linkType: hard
-
-"micromatch@npm:4.0.5, micromatch@npm:^4.0.4":
- version: 4.0.5
- resolution: "micromatch@npm:4.0.5"
+"micromatch@npm:~4.0.7":
+ version: 4.0.7
+ resolution: "micromatch@npm:4.0.7"
dependencies:
- braces: "npm:^3.0.2"
+ braces: "npm:^3.0.3"
picomatch: "npm:^2.3.1"
- checksum: 10/a749888789fc15cac0e03273844dbd749f9f8e8d64e70c564bcf06a033129554c789bb9e30d7566d7ff6596611a08e58ac12cf2a05f6e3c9c47c50c4c7e12fa2
- languageName: node
- linkType: hard
-
-"mime-db@npm:1.52.0":
- version: 1.52.0
- resolution: "mime-db@npm:1.52.0"
- checksum: 10/54bb60bf39e6f8689f6622784e668a3d7f8bed6b0d886f5c3c446cb3284be28b30bf707ed05d0fe44a036f8469976b2629bbea182684977b084de9da274694d7
- languageName: node
- linkType: hard
-
-"mime-types@npm:^2.1.12":
- version: 2.1.35
- resolution: "mime-types@npm:2.1.35"
- dependencies:
- mime-db: "npm:1.52.0"
- checksum: 10/89aa9651b67644035de2784a6e665fc685d79aba61857e02b9c8758da874a754aed4a9aced9265f5ed1171fd934331e5516b84a7f0218031b6fa0270eca1e51a
+ checksum: 10/a11ed1cb67dcbbe9a5fc02c4062cf8bb0157d73bf86956003af8dcfdf9b287f9e15ec0f6d6925ff6b8b5b496202335e497b01de4d95ef6cf06411bc5e5c474a0
languageName: node
linkType: hard
@@ -5428,7 +3485,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:2 || 3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1":
+"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
@@ -5437,16 +3494,7 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:5.0.1":
- version: 5.0.1
- resolution: "minimatch@npm:5.0.1"
- dependencies:
- brace-expansion: "npm:^2.0.1"
- checksum: 10/2656580f18d9f38ada186196fcc72dc9076d70f7227adc664e72614d464e075dc4ae3936e6742519e09e336996ef33c6035e606888b12f65ca7fda792ddd2085
- languageName: node
- linkType: hard
-
-"minimatch@npm:^5.0.1":
+"minimatch@npm:^5.0.1, minimatch@npm:^5.1.6":
version: 5.1.6
resolution: "minimatch@npm:5.1.6"
dependencies:
@@ -5455,12 +3503,12 @@ __metadata:
languageName: node
linkType: hard
-"minimatch@npm:^9.0.1":
- version: 9.0.4
- resolution: "minimatch@npm:9.0.4"
+"minimatch@npm:^9.0.4":
+ version: 9.0.5
+ resolution: "minimatch@npm:9.0.5"
dependencies:
brace-expansion: "npm:^2.0.1"
- checksum: 10/4cdc18d112b164084513e890d6323370db14c22249d536ad1854539577a895e690a27513dc346392f61a4a50afbbd8abc88f3f25558bfbbbb862cd56508b20f5
+ checksum: 10/dd6a8927b063aca6d910b119e1f2df6d2ce7d36eab91de83167dd136bb85e1ebff97b0d3de1cb08bd1f7e018ca170b4962479fefab5b2a69e2ae12cb2edc8348
languageName: node
linkType: hard
@@ -5475,7 +3523,7 @@ __metadata:
languageName: node
linkType: hard
-"minimist@npm:^1.2.5, minimist@npm:^1.2.6":
+"minimist@npm:^1.2.6":
version: 1.2.8
resolution: "minimist@npm:1.2.8"
checksum: 10/908491b6cc15a6c440ba5b22780a0ba89b9810e1aea684e253e43c4e3b8d56ec1dcdd7ea96dde119c29df59c936cde16062159eae4225c691e19c70b432b6e6f
@@ -5549,10 +3597,10 @@ __metadata:
languageName: node
linkType: hard
-"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4":
- version: 7.1.1
- resolution: "minipass@npm:7.1.1"
- checksum: 10/6f4f920f1b5ea585d08fa3739b9bd81726cd85a0c972fb371c0fa6c1544d468813fb1694c7bc64ad81f138fd8abf665e2af0f406de9ba5741d8e4a377ed346b1
+"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.1.2":
+ version: 7.1.2
+ resolution: "minipass@npm:7.1.2"
+ checksum: 10/c25f0ee8196d8e6036661104bacd743785b2599a21de5c516b32b3fa2b83113ac89a2358465bc04956baab37ffb956ae43be679b2262bf7be15fce467ccd7950
languageName: node
linkType: hard
@@ -5566,18 +3614,7 @@ __metadata:
languageName: node
linkType: hard
-"mkdirp@npm:0.5.x":
- version: 0.5.6
- resolution: "mkdirp@npm:0.5.6"
- dependencies:
- minimist: "npm:^1.2.6"
- bin:
- mkdirp: bin/cmd.js
- checksum: 10/0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2
- languageName: node
- linkType: hard
-
-"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4":
+"mkdirp@npm:^1.0.3":
version: 1.0.4
resolution: "mkdirp@npm:1.0.4"
bin:
@@ -5586,15 +3623,15 @@ __metadata:
languageName: node
linkType: hard
-"mlly@npm:^1.6.1, mlly@npm:^1.7.0":
- version: 1.7.0
- resolution: "mlly@npm:1.7.0"
+"mlly@npm:^1.7.1":
+ version: 1.7.1
+ resolution: "mlly@npm:1.7.1"
dependencies:
acorn: "npm:^8.11.3"
pathe: "npm:^1.1.2"
- pkg-types: "npm:^1.1.0"
+ pkg-types: "npm:^1.1.1"
ufo: "npm:^1.5.3"
- checksum: 10/a52f17767f1aa8133ad4354065e579c3d1cc72e866102bde7e466123772f5e571327b95ce777d1d655724f0c479a82acaafc6e81e25781851779d865682c8823
+ checksum: 10/c1ef3989e95fb6c6c27a238330897b01f46507020501f45a681f2cae453f982e38dcb0e45aa65f672ea7280945d4a729d266f17a8acb187956f312b0cafddf61
languageName: node
linkType: hard
@@ -5607,34 +3644,34 @@ __metadata:
languageName: node
linkType: hard
-"mocha@npm:^10.0.0, mocha@npm:^10.2.0":
- version: 10.4.0
- resolution: "mocha@npm:10.4.0"
- dependencies:
- ansi-colors: "npm:4.1.1"
- browser-stdout: "npm:1.3.1"
- chokidar: "npm:3.5.3"
- debug: "npm:4.3.4"
- diff: "npm:5.0.0"
- escape-string-regexp: "npm:4.0.0"
- find-up: "npm:5.0.0"
- glob: "npm:8.1.0"
- he: "npm:1.2.0"
- js-yaml: "npm:4.1.0"
- log-symbols: "npm:4.1.0"
- minimatch: "npm:5.0.1"
- ms: "npm:2.1.3"
- serialize-javascript: "npm:6.0.0"
- strip-json-comments: "npm:3.1.1"
- supports-color: "npm:8.1.1"
- workerpool: "npm:6.2.1"
- yargs: "npm:16.2.0"
- yargs-parser: "npm:20.2.4"
- yargs-unparser: "npm:2.0.0"
+"mocha@npm:^10.0.0":
+ version: 10.6.0
+ resolution: "mocha@npm:10.6.0"
+ dependencies:
+ ansi-colors: "npm:^4.1.3"
+ browser-stdout: "npm:^1.3.1"
+ chokidar: "npm:^3.5.3"
+ debug: "npm:^4.3.5"
+ diff: "npm:^5.2.0"
+ escape-string-regexp: "npm:^4.0.0"
+ find-up: "npm:^5.0.0"
+ glob: "npm:^8.1.0"
+ he: "npm:^1.2.0"
+ js-yaml: "npm:^4.1.0"
+ log-symbols: "npm:^4.1.0"
+ minimatch: "npm:^5.1.6"
+ ms: "npm:^2.1.3"
+ serialize-javascript: "npm:^6.0.2"
+ strip-json-comments: "npm:^3.1.1"
+ supports-color: "npm:^8.1.1"
+ workerpool: "npm:^6.5.1"
+ yargs: "npm:^16.2.0"
+ yargs-parser: "npm:^20.2.9"
+ yargs-unparser: "npm:^2.0.0"
bin:
_mocha: bin/_mocha
mocha: bin/mocha.js
- checksum: 10/0147b2a86c8a3b134b3bda949006aa5f2b08db606b9394e38eb3fa0d97dd2f54f06eb4afb270d4ae08aa6fb7674282737ed556b9a8bc407f9b8488380852eca4
+ checksum: 10/8e9901f4c8a3299c3e1b65821778915622aa0b5758acbe6d5b96f142843e23562b6aa3c87c2baa8626640ecb7e6b956d7a6cdb622ac8422d43a13558cb748e42
languageName: node
linkType: hard
@@ -5652,7 +3689,7 @@ __metadata:
languageName: node
linkType: hard
-"ms@npm:2.1.3":
+"ms@npm:^2.1.3":
version: 2.1.3
resolution: "ms@npm:2.1.3"
checksum: 10/aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d
@@ -5666,13 +3703,6 @@ __metadata:
languageName: node
linkType: hard
-"neo-async@npm:^2.6.2":
- version: 2.6.2
- resolution: "neo-async@npm:2.6.2"
- checksum: 10/1a7948fea86f2b33ec766bc899c88796a51ba76a4afc9026764aedc6e7cde692a09067031e4a1bf6db4f978ccd99e7f5b6c03fe47ad9865c3d4f99050d67e002
- languageName: node
- linkType: hard
-
"node-addon-api@npm:^2.0.0":
version: 2.0.2
resolution: "node-addon-api@npm:2.0.2"
@@ -5682,15 +3712,6 @@ __metadata:
languageName: node
linkType: hard
-"node-emoji@npm:^1.10.0":
- version: 1.11.0
- resolution: "node-emoji@npm:1.11.0"
- dependencies:
- lodash: "npm:^4.17.21"
- checksum: 10/1d7ae9bcb0f23d7cdfcac5c3a90a6fd6ec584e6f7c70ff073f6122bfbed6c06284da7334092500d24e14162f5c4016e5dcd3355753cbd5b7e60de560a973248d
- languageName: node
- linkType: hard
-
"node-fetch-native@npm:^1.2.0, node-fetch-native@npm:^1.6.3":
version: 1.6.4
resolution: "node-fetch-native@npm:1.6.4"
@@ -5729,24 +3750,6 @@ __metadata:
languageName: node
linkType: hard
-"nofilter@npm:^3.1.0":
- version: 3.1.0
- resolution: "nofilter@npm:3.1.0"
- checksum: 10/f63d87231dfda4b783db17d75b15aac948f78e65f4f1043096ef441147f6667ff74cd4b3f57ada5dbe240be282d3e9838558ac863a66cb04ef25fff7b2b4be4e
- languageName: node
- linkType: hard
-
-"nopt@npm:3.x":
- version: 3.0.6
- resolution: "nopt@npm:3.0.6"
- dependencies:
- abbrev: "npm:1"
- bin:
- nopt: ./bin/nopt.js
- checksum: 10/2f582a44f7a4e495f21b6668008eda47f6e9c50c27efc00494aa67360791c9240da537661371786afc5d5712f353d3debb863a7201b536fe35fb393ceadc8a23
- languageName: node
- linkType: hard
-
"nopt@npm:^7.0.0":
version: 7.2.1
resolution: "nopt@npm:7.2.1"
@@ -5807,42 +3810,19 @@ __metadata:
languageName: node
linkType: hard
-"number-to-bn@npm:1.7.0":
- version: 1.7.0
- resolution: "number-to-bn@npm:1.7.0"
- dependencies:
- bn.js: "npm:4.11.6"
- strip-hex-prefix: "npm:1.0.0"
- checksum: 10/702e8f00b6b90abd23f711056005179c3bd5ce3b063c47d468250f63ab3b9b4b82e27bff3b4642a9e71e06c717d5ed359873501746df0a64c3db1fa6d704e704
- languageName: node
- linkType: hard
-
"nypm@npm:^0.3.8":
- version: 0.3.8
- resolution: "nypm@npm:0.3.8"
+ version: 0.3.9
+ resolution: "nypm@npm:0.3.9"
dependencies:
citty: "npm:^0.1.6"
consola: "npm:^3.2.3"
execa: "npm:^8.0.1"
pathe: "npm:^1.1.2"
- ufo: "npm:^1.4.0"
+ pkg-types: "npm:^1.1.1"
+ ufo: "npm:^1.5.3"
bin:
nypm: dist/cli.mjs
- checksum: 10/fc3fcf4f2c9837d09c1b9b976c205e1538a9378b5ac40ea0d3bac0bcaeb554d0a8d17e4b42c1b8b6079fb6bf760f0d94b576084c032f862433a915739a54e327
- languageName: node
- linkType: hard
-
-"object-assign@npm:^4.1.0":
- version: 4.1.1
- resolution: "object-assign@npm:4.1.1"
- checksum: 10/fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f
- languageName: node
- linkType: hard
-
-"object-inspect@npm:^1.13.1":
- version: 1.13.1
- resolution: "object-inspect@npm:1.13.1"
- checksum: 10/92f4989ed83422d56431bc39656d4c780348eb15d397ce352ade6b7fec08f973b53744bd41b94af021901e61acaf78fcc19e65bf464ecc0df958586a672700f0
+ checksum: 10/fd884f4465f51c57fe584a11299320a5678934b14eed0ecc56003dd26f5638db4e858d97f2ab580937fa17a4a1c4ef73e32b82c7ef0bc06d820b3f32b932a45a
languageName: node
linkType: hard
@@ -5871,7 +3851,7 @@ __metadata:
languageName: node
linkType: hard
-"once@npm:1.x, once@npm:^1.3.0":
+"once@npm:^1.3.0":
version: 1.4.0
resolution: "once@npm:1.4.0"
dependencies:
@@ -5910,27 +3890,6 @@ __metadata:
languageName: node
linkType: hard
-"optionator@npm:^0.8.1":
- version: 0.8.3
- resolution: "optionator@npm:0.8.3"
- dependencies:
- deep-is: "npm:~0.1.3"
- fast-levenshtein: "npm:~2.0.6"
- levn: "npm:~0.3.0"
- prelude-ls: "npm:~1.1.2"
- type-check: "npm:~0.3.2"
- word-wrap: "npm:~1.2.3"
- checksum: 10/6fa3c841b520f10aec45563962922215180e8cfbc59fde3ecd4ba2644ad66ca96bd19ad0e853f22fefcb7fc10e7612a5215b412cc66c5588f9a3138b38f6b5ff
- languageName: node
- linkType: hard
-
-"ordinal@npm:^1.0.3":
- version: 1.0.3
- resolution: "ordinal@npm:1.0.3"
- checksum: 10/6761c5b7606b6c4b0c22b4097dab4fe7ffcddacc49238eedf9c0ced877f5d4e4ad3f4fd43fefa1cc3f167cc54c7149267441b2ae85b81ccf13f45cf4b7947164
- languageName: node
- linkType: hard
-
"os-tmpdir@npm:~1.0.2":
version: 1.0.2
resolution: "os-tmpdir@npm:1.0.2"
@@ -6015,6 +3974,13 @@ __metadata:
languageName: node
linkType: hard
+"package-json-from-dist@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "package-json-from-dist@npm:1.0.0"
+ checksum: 10/ac706ec856a5a03f5261e4e48fa974f24feb044d51f84f8332e2af0af04fbdbdd5bbbfb9cbbe354190409bc8307c83a9e38c6672c3c8855f709afb0006a009ea
+ languageName: node
+ linkType: hard
+
"parent-module@npm:^1.0.0":
version: 1.0.1
resolution: "parent-module@npm:1.0.1"
@@ -6024,13 +3990,6 @@ __metadata:
languageName: node
linkType: hard
-"parse-cache-control@npm:^1.0.1":
- version: 1.0.1
- resolution: "parse-cache-control@npm:1.0.1"
- checksum: 10/13171cd97395bdcb9ad29e0b82a789f2313663f2392ab4f699c97ecd2059e18c00834b9c12c9b42f6b0f22bc3c9395d16db9d2e3db7e21538ad5cf2e5ec9fdbe
- languageName: node
- linkType: hard
-
"parse-json@npm:^5.0.0, parse-json@npm:^5.2.0":
version: 5.2.0
resolution: "parse-json@npm:5.2.0"
@@ -6085,7 +4044,7 @@ __metadata:
languageName: node
linkType: hard
-"path-scurry@npm:^1.11.0":
+"path-scurry@npm:^1.11.1":
version: 1.11.1
resolution: "path-scurry@npm:1.11.1"
dependencies:
@@ -6109,13 +4068,6 @@ __metadata:
languageName: node
linkType: hard
-"pathval@npm:^1.1.1":
- version: 1.1.1
- resolution: "pathval@npm:1.1.1"
- checksum: 10/b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6
- languageName: node
- linkType: hard
-
"pbkdf2@npm:^3.0.17":
version: 3.1.2
resolution: "pbkdf2@npm:3.1.2"
@@ -6150,7 +4102,7 @@ __metadata:
languageName: node
linkType: hard
-"pidtree@npm:0.6.0":
+"pidtree@npm:~0.6.0":
version: 0.6.0
resolution: "pidtree@npm:0.6.0"
bin:
@@ -6159,35 +4111,14 @@ __metadata:
languageName: node
linkType: hard
-"pify@npm:^4.0.1":
- version: 4.0.1
- resolution: "pify@npm:4.0.1"
- checksum: 10/8b97cbf9dc6d4c1320cc238a2db0fc67547f9dc77011729ff353faf34f1936ea1a4d7f3c63b2f4980b253be77bcc72ea1e9e76ee3fd53cce2aafb6a8854d07ec
- languageName: node
- linkType: hard
-
-"pkg-types@npm:^1.0.3, pkg-types@npm:^1.1.0":
- version: 1.1.1
- resolution: "pkg-types@npm:1.1.1"
+"pkg-types@npm:^1.0.3, pkg-types@npm:^1.1.1":
+ version: 1.1.3
+ resolution: "pkg-types@npm:1.1.3"
dependencies:
confbox: "npm:^0.1.7"
- mlly: "npm:^1.7.0"
+ mlly: "npm:^1.7.1"
pathe: "npm:^1.1.2"
- checksum: 10/225eaf7c0339027e176dd0d34a6d9a1384c21e0aab295e57dfbef1f1b7fc132f008671da7e67553e352b80b17ba38c531c720c914061d277410eef1bdd9d9608
- languageName: node
- linkType: hard
-
-"pluralize@npm:^8.0.0":
- version: 8.0.0
- resolution: "pluralize@npm:8.0.0"
- checksum: 10/17877fdfdb7ddb3639ce257ad73a7c51a30a966091e40f56ea9f2f545b5727ce548d4928f8cb3ce38e7dc0c5150407d318af6a4ed0ea5265d378473b4c2c61ec
- languageName: node
- linkType: hard
-
-"poseidon-lite@npm:^0.2.0":
- version: 0.2.0
- resolution: "poseidon-lite@npm:0.2.0"
- checksum: 10/63c7668b480ee3d57aaca0eda7e56d563ab2bfcc40bbce0e4bccdc9deed4c0d68255749356e328b622ce8715b1f1ba689fe1a86ca78eb1056a51a18daa252ee1
+ checksum: 10/06c03ca679ea8e3a1ea7cb74e92af1a486a6081401aac35f6aa51fb6f0855cd86bbfc713f9bfdaaa730815b5ae147b4d6a838710b550c1c4b3f54a6653ff04a3
languageName: node
linkType: hard
@@ -6198,50 +4129,12 @@ __metadata:
languageName: node
linkType: hard
-"prelude-ls@npm:~1.1.2":
- version: 1.1.2
- resolution: "prelude-ls@npm:1.1.2"
- checksum: 10/946a9f60d3477ca6b7d4c5e8e452ad1b98dc8aaa992cea939a6b926ac16cc4129d7217c79271dc808b5814b1537ad0af37f29a942e2eafbb92cfc5a1c87c38cb
- languageName: node
- linkType: hard
-
-"prettier-linter-helpers@npm:^1.0.0":
- version: 1.0.0
- resolution: "prettier-linter-helpers@npm:1.0.0"
- dependencies:
- fast-diff: "npm:^1.1.2"
- checksum: 10/00ce8011cf6430158d27f9c92cfea0a7699405633f7f1d4a45f07e21bf78e99895911cbcdc3853db3a824201a7c745bd49bfea8abd5fb9883e765a90f74f8392
- languageName: node
- linkType: hard
-
-"prettier-plugin-solidity@npm:^1.3.1":
- version: 1.3.1
- resolution: "prettier-plugin-solidity@npm:1.3.1"
- dependencies:
- "@solidity-parser/parser": "npm:^0.17.0"
- semver: "npm:^7.5.4"
- solidity-comments-extractor: "npm:^0.0.8"
- peerDependencies:
- prettier: ">=2.3.0"
- checksum: 10/45c1bf16ca960e43e8dc518db95a9eecfce941480e2737272ab259ea9dcb9796a7830a8884de21637f286f80f06d4b4163418d4d55e41347aee96ee93bc4e8f0
- languageName: node
- linkType: hard
-
-"prettier@npm:^2.3.1, prettier@npm:^2.8.3":
- version: 2.8.8
- resolution: "prettier@npm:2.8.8"
- bin:
- prettier: bin-prettier.js
- checksum: 10/00cdb6ab0281f98306cd1847425c24cbaaa48a5ff03633945ab4c701901b8e96ad558eb0777364ffc312f437af9b5a07d0f45346266e8245beaf6247b9c62b24
- languageName: node
- linkType: hard
-
"prettier@npm:^3.2.5":
- version: 3.2.5
- resolution: "prettier@npm:3.2.5"
+ version: 3.3.2
+ resolution: "prettier@npm:3.3.2"
bin:
prettier: bin/prettier.cjs
- checksum: 10/d509f9da0b70e8cacc561a1911c0d99ec75117faed27b95cc8534cb2349667dee6351b0ca83fa9d5703f14127faa52b798de40f5705f02d843da133fc3aa416a
+ checksum: 10/83214e154afa5aa9b664c2506640212323eb1376b13379b2413dc351b7de0687629dca3f00ff2ec895ebd7e3a2adb7d7e231b6c77606e2358137f2150807405b
languageName: node
linkType: hard
@@ -6259,13 +4152,6 @@ __metadata:
languageName: node
linkType: hard
-"process-nextick-args@npm:~2.0.0":
- version: 2.0.1
- resolution: "process-nextick-args@npm:2.0.1"
- checksum: 10/1d38588e520dab7cea67cbbe2efdd86a10cc7a074c09657635e34f035277b59fbb57d09d8638346bf7090f8e8ebc070c96fa5fd183b777fff4f5edff5e9466cf
- languageName: node
- linkType: hard
-
"promise-retry@npm:^2.0.1":
version: 2.0.1
resolution: "promise-retry@npm:2.0.1"
@@ -6276,22 +4162,6 @@ __metadata:
languageName: node
linkType: hard
-"promise@npm:^8.0.0":
- version: 8.3.0
- resolution: "promise@npm:8.3.0"
- dependencies:
- asap: "npm:~2.0.6"
- checksum: 10/55e9d0d723c66810966bc055c6c77a3658c0af7e4a8cc88ea47aeaf2949ca0bd1de327d9c631df61236f5406ad478384fa19a77afb3f88c0303eba9e5eb0a8d8
- languageName: node
- linkType: hard
-
-"proxy-from-env@npm:^1.1.0":
- version: 1.1.0
- resolution: "proxy-from-env@npm:1.1.0"
- checksum: 10/f0bb4a87cfd18f77bc2fba23ae49c3b378fb35143af16cc478171c623eebe181678f09439707ad80081d340d1593cd54a33a0113f3ccb3f4bc9451488780ee23
- languageName: node
- linkType: hard
-
"punycode@npm:^2.1.0":
version: 2.3.1
resolution: "punycode@npm:2.3.1"
@@ -6299,22 +4169,6 @@ __metadata:
languageName: node
linkType: hard
-"qs@npm:^6.4.0":
- version: 6.12.1
- resolution: "qs@npm:6.12.1"
- dependencies:
- side-channel: "npm:^1.0.6"
- checksum: 10/035bcad2a1ab0175bac7a74c904c15913bdac252834149ccff988c93a51de02642fe7be10e43058ba4dc4094bb28ce9b59d12b9e91d40997f445cfde3ecc1c29
- languageName: node
- linkType: hard
-
-"queue-microtask@npm:^1.2.2":
- version: 1.2.3
- resolution: "queue-microtask@npm:1.2.3"
- checksum: 10/72900df0616e473e824202113c3df6abae59150dfb73ed13273503127235320e9c8ca4aaaaccfd58cf417c6ca92a6e68ee9a5c3182886ae949a768639b388a7b
- languageName: node
- linkType: hard
-
"quick-lru@npm:^4.0.1":
version: 4.0.1
resolution: "quick-lru@npm:4.0.1"
@@ -6343,7 +4197,7 @@ __metadata:
languageName: node
linkType: hard
-"rc9@npm:^2.1.1":
+"rc9@npm:^2.1.2":
version: 2.1.2
resolution: "rc9@npm:2.1.2"
dependencies:
@@ -6387,21 +4241,6 @@ __metadata:
languageName: node
linkType: hard
-"readable-stream@npm:^2.2.2":
- version: 2.3.8
- resolution: "readable-stream@npm:2.3.8"
- dependencies:
- core-util-is: "npm:~1.0.0"
- inherits: "npm:~2.0.3"
- isarray: "npm:~1.0.0"
- process-nextick-args: "npm:~2.0.0"
- safe-buffer: "npm:~5.1.1"
- string_decoder: "npm:~1.1.1"
- util-deprecate: "npm:~1.0.1"
- checksum: 10/8500dd3a90e391d6c5d889256d50ec6026c059fadee98ae9aa9b86757d60ac46fff24fafb7a39fa41d54cb39d8be56cc77be202ebd4cd8ffcf4cb226cbaa40d4
- languageName: node
- linkType: hard
-
"readdirp@npm:~3.6.0":
version: 3.6.0
resolution: "readdirp@npm:3.6.0"
@@ -6411,24 +4250,6 @@ __metadata:
languageName: node
linkType: hard
-"rechoir@npm:^0.6.2":
- version: 0.6.2
- resolution: "rechoir@npm:0.6.2"
- dependencies:
- resolve: "npm:^1.1.6"
- checksum: 10/fe76bf9c21875ac16e235defedd7cbd34f333c02a92546142b7911a0f7c7059d2e16f441fe6fb9ae203f459c05a31b2bcf26202896d89e390eda7514d5d2702b
- languageName: node
- linkType: hard
-
-"recursive-readdir@npm:^2.2.2":
- version: 2.2.3
- resolution: "recursive-readdir@npm:2.2.3"
- dependencies:
- minimatch: "npm:^3.0.5"
- checksum: 10/19298852b0b87810aed5f2c81a73bfaaeb9ade7c9bf363f350fc1443f2cc3df66ecade5e102dfbb153fcd9df20342c301848e11e149e5f78759c1d55aa2c9c39
- languageName: node
- linkType: hard
-
"redent@npm:^3.0.0":
version: 3.0.0
resolution: "redent@npm:3.0.0"
@@ -6439,31 +4260,6 @@ __metadata:
languageName: node
linkType: hard
-"reduce-flatten@npm:^2.0.0":
- version: 2.0.0
- resolution: "reduce-flatten@npm:2.0.0"
- checksum: 10/64393ef99a16b20692acfd60982d7fdbd7ff8d9f8f185c6023466444c6dd2abb929d67717a83cec7f7f8fb5f46a25d515b3b2bf2238fdbfcdbfd01d2a9e73cb8
- languageName: node
- linkType: hard
-
-"req-cwd@npm:^2.0.0":
- version: 2.0.0
- resolution: "req-cwd@npm:2.0.0"
- dependencies:
- req-from: "npm:^2.0.0"
- checksum: 10/c44f9dea0b0f7d3a72be18a04f7769e0eefbadca363e3a346c1c02b79745126c871e1f6970357b3e731c26740aad8344bf80fb3ce055a2bcf8ca85ad2b44f519
- languageName: node
- linkType: hard
-
-"req-from@npm:^2.0.0":
- version: 2.0.0
- resolution: "req-from@npm:2.0.0"
- dependencies:
- resolve-from: "npm:^3.0.0"
- checksum: 10/4c369881a2296e23e71668ed089c5d93b37652fe900ec9f1e1f5c1da65f6bca4ee271e97ba2b806fdea50219e011995d1df3c80a7209015cc1e1fc622507f140
- languageName: node
- linkType: hard
-
"require-directory@npm:^2.1.1":
version: 2.1.1
resolution: "require-directory@npm:2.1.1"
@@ -6485,13 +4281,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve-from@npm:^3.0.0":
- version: 3.0.0
- resolution: "resolve-from@npm:3.0.0"
- checksum: 10/c4189f1592a777f7d51c1ff6153df18b5d062c831fb0c623b4b87736c8a73c08e4eaab19e807399287040791f3e7aa0877f05f9d86739d3ef1ef0c727e9fe06c
- languageName: node
- linkType: hard
-
"resolve-from@npm:^4.0.0":
version: 4.0.0
resolution: "resolve-from@npm:4.0.0"
@@ -6508,13 +4297,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:1.1.x":
- version: 1.1.7
- resolution: "resolve@npm:1.1.7"
- checksum: 10/0a4ff8a102b1d059321caf77563cb2c495979c734f9dc400a70e3ceaaafe76a72bbcc625f9361756348d7b6af6d3cd2815cfbe3109be655a2b18e62d1cdadfc5
- languageName: node
- linkType: hard
-
"resolve@npm:1.17.0":
version: 1.17.0
resolution: "resolve@npm:1.17.0"
@@ -6524,7 +4306,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@npm:^1.1.6, resolve@npm:^1.10.0":
+"resolve@npm:^1.10.0":
version: 1.22.8
resolution: "resolve@npm:1.22.8"
dependencies:
@@ -6537,13 +4319,6 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@npm%3A1.1.x#optional!builtin":
- version: 1.1.7
- resolution: "resolve@patch:resolve@npm%3A1.1.7#optional!builtin::version=1.1.7&hash=3bafbf"
- checksum: 10/dc5c99fb47807d3771be3135ac6bdb892186973d0895ab17838f0b85bb575e03111214aa16cb68b6416df3c1dd658081a066dd7a9af6e668c28b0025080b615c
- languageName: node
- linkType: hard
-
"resolve@patch:resolve@npm%3A1.17.0#optional!builtin":
version: 1.17.0
resolution: "resolve@patch:resolve@npm%3A1.17.0#optional!builtin::version=1.17.0&hash=c3c19d"
@@ -6553,7 +4328,7 @@ __metadata:
languageName: node
linkType: hard
-"resolve@patch:resolve@npm%3A^1.1.6#optional!builtin, resolve@patch:resolve@npm%3A^1.10.0#optional!builtin":
+"resolve@patch:resolve@npm%3A^1.10.0#optional!builtin":
version: 1.22.8
resolution: "resolve@patch:resolve@npm%3A1.22.8#optional!builtin::version=1.22.8&hash=c3c19d"
dependencies:
@@ -6583,17 +4358,10 @@ __metadata:
languageName: node
linkType: hard
-"reusify@npm:^1.0.4":
- version: 1.0.4
- resolution: "reusify@npm:1.0.4"
- checksum: 10/14222c9e1d3f9ae01480c50d96057228a8524706db79cdeb5a2ce5bb7070dd9f409a6f84a02cbef8cdc80d39aef86f2dd03d155188a1300c599b05437dcd2ffb
- languageName: node
- linkType: hard
-
-"rfdc@npm:^1.3.0":
- version: 1.3.1
- resolution: "rfdc@npm:1.3.1"
- checksum: 10/44cc6a82e2fe1db13b7d3c54e9ffd0b40ef070cbde69ffbfbb38dab8cee46bd68ba686784b96365ff08d04798bc121c3465663a0c91f2c421c90546c4366f4a6
+"rfdc@npm:^1.4.1":
+ version: 1.4.1
+ resolution: "rfdc@npm:1.4.1"
+ checksum: 10/2f3d11d3d8929b4bfeefc9acb03aae90f971401de0add5ae6c5e38fec14f0405e6a4aad8fdb76344bfdd20c5193110e3750cbbd28ba86d73729d222b6cf4a729
languageName: node
linkType: hard
@@ -6618,7 +4386,7 @@ __metadata:
languageName: node
linkType: hard
-"rlp@npm:^2.2.3, rlp@npm:^2.2.4":
+"rlp@npm:^2.2.3":
version: 2.2.7
resolution: "rlp@npm:2.2.7"
dependencies:
@@ -6638,15 +4406,6 @@ __metadata:
languageName: node
linkType: hard
-"run-parallel@npm:^1.1.9":
- version: 1.2.0
- resolution: "run-parallel@npm:1.2.0"
- dependencies:
- queue-microtask: "npm:^1.2.2"
- checksum: 10/cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d
- languageName: node
- linkType: hard
-
"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0":
version: 5.2.1
resolution: "safe-buffer@npm:5.2.1"
@@ -6654,13 +4413,6 @@ __metadata:
languageName: node
linkType: hard
-"safe-buffer@npm:~5.1.0, safe-buffer@npm:~5.1.1":
- version: 5.1.2
- resolution: "safe-buffer@npm:5.1.2"
- checksum: 10/7eb5b48f2ed9a594a4795677d5a150faa7eb54483b2318b568dc0c4fc94092a6cce5be02c7288a0500a156282f5276d5688bce7259299568d1053b2150ef374a
- languageName: node
- linkType: hard
-
"safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0":
version: 2.1.2
resolution: "safer-buffer@npm:2.1.2"
@@ -6668,31 +4420,7 @@ __metadata:
languageName: node
linkType: hard
-"sc-istanbul@npm:^0.4.5":
- version: 0.4.6
- resolution: "sc-istanbul@npm:0.4.6"
- dependencies:
- abbrev: "npm:1.0.x"
- async: "npm:1.x"
- escodegen: "npm:1.8.x"
- esprima: "npm:2.7.x"
- glob: "npm:^5.0.15"
- handlebars: "npm:^4.0.1"
- js-yaml: "npm:3.x"
- mkdirp: "npm:0.5.x"
- nopt: "npm:3.x"
- once: "npm:1.x"
- resolve: "npm:1.1.x"
- supports-color: "npm:^3.1.0"
- which: "npm:^1.1.1"
- wordwrap: "npm:^1.0.0"
- bin:
- istanbul: lib/cli.js
- checksum: 10/69acccb8ef3af117a71a57a4a1767ce845e62d1d6ff3d6fd2b5e0dc02746772c352bebee67fd0d0bb805a864bd4753741b118690955955bf34c990c3db36c0f8
- languageName: node
- linkType: hard
-
-"scrypt-js@npm:3.0.1, scrypt-js@npm:^3.0.0":
+"scrypt-js@npm:^3.0.0":
version: 3.0.1
resolution: "scrypt-js@npm:3.0.1"
checksum: 10/2f8aa72b7f76a6f9c446bbec5670f80d47497bccce98474203d89b5667717223eeb04a50492ae685ed7adc5a060fc2d8f9fd988f8f7ebdaf3341967f3aeff116
@@ -6747,7 +4475,7 @@ __metadata:
languageName: node
linkType: hard
-"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.2, semver@npm:^7.5.4":
+"semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.5.4":
version: 7.6.2
resolution: "semver@npm:7.6.2"
bin:
@@ -6756,26 +4484,12 @@ __metadata:
languageName: node
linkType: hard
-"serialize-javascript@npm:6.0.0":
- version: 6.0.0
- resolution: "serialize-javascript@npm:6.0.0"
+"serialize-javascript@npm:^6.0.2":
+ version: 6.0.2
+ resolution: "serialize-javascript@npm:6.0.2"
dependencies:
randombytes: "npm:^2.1.0"
- checksum: 10/ed3dabfbb565c48c9eb1ca8fe58f0d256902ab70a8a605be634ddd68388d5f728bb0bd1268e94fab628748ba8ad8392f01b05f3cbe1e4878b5c58c669fd3d1b4
- languageName: node
- linkType: hard
-
-"set-function-length@npm:^1.2.1":
- version: 1.2.2
- resolution: "set-function-length@npm:1.2.2"
- dependencies:
- define-data-property: "npm:^1.1.4"
- es-errors: "npm:^1.3.0"
- function-bind: "npm:^1.1.2"
- get-intrinsic: "npm:^1.2.4"
- gopd: "npm:^1.0.1"
- has-property-descriptors: "npm:^1.0.2"
- checksum: 10/505d62b8e088468917ca4e3f8f39d0e29f9a563b97dbebf92f4bd2c3172ccfb3c5b8e4566d5fcd00784a00433900e7cb8fbc404e2dbd8c3818ba05bb9d4a8a6d
+ checksum: 10/445a420a6fa2eaee4b70cbd884d538e259ab278200a2ededd73253ada17d5d48e91fb1f4cd224a236ab62ea7ba0a70c6af29fc93b4f3d3078bf7da1c031fde58
languageName: node
linkType: hard
@@ -6805,54 +4519,19 @@ __metadata:
languageName: node
linkType: hard
-"sha1@npm:^1.1.1":
- version: 1.1.1
- resolution: "sha1@npm:1.1.1"
- dependencies:
- charenc: "npm:>= 0.0.1"
- crypt: "npm:>= 0.0.1"
- checksum: 10/da9f47e949988e2f595ef19733fd1dc736866ef6de4e421a55c13b444c03ae532e528b7350ae6ea55d9fb053be61d4648ec2cd5250d46cfdbdf4f6b4e763713d
- languageName: node
- linkType: hard
-
"shebang-command@npm:^2.0.0":
version: 2.0.0
resolution: "shebang-command@npm:2.0.0"
dependencies:
shebang-regex: "npm:^3.0.0"
- checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa
- languageName: node
- linkType: hard
-
-"shebang-regex@npm:^3.0.0":
- version: 3.0.0
- resolution: "shebang-regex@npm:3.0.0"
- checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222
- languageName: node
- linkType: hard
-
-"shelljs@npm:^0.8.3":
- version: 0.8.5
- resolution: "shelljs@npm:0.8.5"
- dependencies:
- glob: "npm:^7.0.0"
- interpret: "npm:^1.0.0"
- rechoir: "npm:^0.6.2"
- bin:
- shjs: bin/shjs
- checksum: 10/f2178274b97b44332bbe9ddb78161137054f55ecf701c7a99db9552cb5478fe279ad5f5131d8a7c2f0730e01ccf0c629d01094143f0541962ce1a3d0243d23f7
+ checksum: 10/6b52fe87271c12968f6a054e60f6bde5f0f3d2db483a1e5c3e12d657c488a15474121a1d55cd958f6df026a54374ec38a4a963988c213b7570e1d51575cea7fa
languageName: node
linkType: hard
-"side-channel@npm:^1.0.6":
- version: 1.0.6
- resolution: "side-channel@npm:1.0.6"
- dependencies:
- call-bind: "npm:^1.0.7"
- es-errors: "npm:^1.3.0"
- get-intrinsic: "npm:^1.2.4"
- object-inspect: "npm:^1.13.1"
- checksum: 10/eb10944f38cebad8ad643dd02657592fa41273ce15b8bfa928d3291aff2d30c20ff777cfe908f76ccc4551ace2d1245822fdc576657cce40e9066c638ca8fa4d
+"shebang-regex@npm:^3.0.0":
+ version: 3.0.0
+ resolution: "shebang-regex@npm:3.0.0"
+ checksum: 10/1a2bcae50de99034fcd92ad4212d8e01eedf52c7ec7830eedcf886622804fe36884278f2be8be0ea5fde3fd1c23911643a4e0f726c8685b61871c8908af01222
languageName: node
linkType: hard
@@ -6870,24 +4549,6 @@ __metadata:
languageName: node
linkType: hard
-"slash@npm:^3.0.0":
- version: 3.0.0
- resolution: "slash@npm:3.0.0"
- checksum: 10/94a93fff615f25a999ad4b83c9d5e257a7280c90a32a7cb8b4a87996e4babf322e469c42b7f649fd5796edd8687652f3fb452a86dc97a816f01113183393f11c
- languageName: node
- linkType: hard
-
-"slice-ansi@npm:^4.0.0":
- version: 4.0.0
- resolution: "slice-ansi@npm:4.0.0"
- dependencies:
- ansi-styles: "npm:^4.0.0"
- astral-regex: "npm:^2.0.0"
- is-fullwidth-code-point: "npm:^3.0.0"
- checksum: 10/4a82d7f085b0e1b070e004941ada3c40d3818563ac44766cca4ceadd2080427d337554f9f99a13aaeb3b4a94d9964d9466c807b3d7b7541d1ec37ee32d308756
- languageName: node
- linkType: hard
-
"slice-ansi@npm:^5.0.0":
version: 5.0.0
resolution: "slice-ansi@npm:5.0.0"
@@ -6916,17 +4577,17 @@ __metadata:
linkType: hard
"socks-proxy-agent@npm:^8.0.3":
- version: 8.0.3
- resolution: "socks-proxy-agent@npm:8.0.3"
+ version: 8.0.4
+ resolution: "socks-proxy-agent@npm:8.0.4"
dependencies:
agent-base: "npm:^7.1.1"
debug: "npm:^4.3.4"
- socks: "npm:^2.7.1"
- checksum: 10/c2112c66d6322e497d68e913c3780f3683237fd394bfd480b9283486a86e36095d0020db96145d88f8ccd9cc73261b98165b461f9c1bf5dc17abfe75c18029ce
+ socks: "npm:^2.8.3"
+ checksum: 10/c8e7c2b398338b49a0a0f4d2bae5c0602aeeca6b478b99415927b6c5db349ca258448f2c87c6958ebf83eea17d42cbc5d1af0bfecb276cac10b9658b0f07f7d7
languageName: node
linkType: hard
-"socks@npm:^2.7.1":
+"socks@npm:^2.8.3":
version: 2.8.3
resolution: "socks@npm:2.8.3"
dependencies:
@@ -6955,89 +4616,7 @@ __metadata:
languageName: node
linkType: hard
-"solhint-plugin-prettier@npm:^0.1.0":
- version: 0.1.0
- resolution: "solhint-plugin-prettier@npm:0.1.0"
- dependencies:
- "@prettier/sync": "npm:^0.3.0"
- prettier-linter-helpers: "npm:^1.0.0"
- peerDependencies:
- prettier: ^3.0.0
- prettier-plugin-solidity: ^1.0.0
- checksum: 10/241caa07b9d1570117cf0cc56371cc81c69fb17706dbc68136dfb112279c8c1cf815dbaa70c146acd06876e16d9a7385312b63302f2381868c02c3bdfa23715b
- languageName: node
- linkType: hard
-
-"solhint@npm:^3.3.6":
- version: 3.6.2
- resolution: "solhint@npm:3.6.2"
- dependencies:
- "@solidity-parser/parser": "npm:^0.16.0"
- ajv: "npm:^6.12.6"
- antlr4: "npm:^4.11.0"
- ast-parents: "npm:^0.0.1"
- chalk: "npm:^4.1.2"
- commander: "npm:^10.0.0"
- cosmiconfig: "npm:^8.0.0"
- fast-diff: "npm:^1.2.0"
- glob: "npm:^8.0.3"
- ignore: "npm:^5.2.4"
- js-yaml: "npm:^4.1.0"
- lodash: "npm:^4.17.21"
- pluralize: "npm:^8.0.0"
- prettier: "npm:^2.8.3"
- semver: "npm:^7.5.2"
- strip-ansi: "npm:^6.0.1"
- table: "npm:^6.8.1"
- text-table: "npm:^0.2.0"
- dependenciesMeta:
- prettier:
- optional: true
- bin:
- solhint: solhint.js
- checksum: 10/3ee71c3e2363c046b2fe4379d8cd16283e2fd5c8e07d6200b324cd82c0f22c4765cecb9b0a3c9a8097158810b4f34c4a2320b0ad1f13343035f9cd8cc16e5a41
- languageName: node
- linkType: hard
-
-"solidity-comments-extractor@npm:^0.0.8":
- version: 0.0.8
- resolution: "solidity-comments-extractor@npm:0.0.8"
- checksum: 10/615d53c2e8f5e7a1ad26e4e7e3bdc8b7c7885420611fcd690864bb54a9af2813a93cf30bdede16273791bda16eebc7a4ce1379d458ac2d7834074eb4936dea70
- languageName: node
- linkType: hard
-
-"solidity-coverage@npm:^0.8.0":
- version: 0.8.12
- resolution: "solidity-coverage@npm:0.8.12"
- 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.21"
- 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: 10/69f73bba3f3b24bddac00f88a1e739b08b7b37edad46757f477c7ae0422e9f0f16c9da4e8521cb5d83054e2e990dc16d8ea931a334af245e48238577f64be00f
- languageName: node
- linkType: hard
-
-"source-map-support@npm:^0.5.13, source-map-support@npm:^0.5.16":
+"source-map-support@npm:^0.5.13":
version: 0.5.21
resolution: "source-map-support@npm:0.5.21"
dependencies:
@@ -7047,22 +4626,13 @@ __metadata:
languageName: node
linkType: hard
-"source-map@npm:^0.6.0, source-map@npm:^0.6.1":
+"source-map@npm:^0.6.0":
version: 0.6.1
resolution: "source-map@npm:0.6.1"
checksum: 10/59ef7462f1c29d502b3057e822cdbdae0b0e565302c4dd1a95e11e793d8d9d62006cdc10e0fd99163ca33ff2071360cf50ee13f90440806e7ed57d81cba2f7ff
languageName: node
linkType: hard
-"source-map@npm:~0.2.0":
- version: 0.2.0
- resolution: "source-map@npm:0.2.0"
- dependencies:
- amdefine: "npm:>=0.0.4"
- checksum: 10/616b67d874a4bce443d285db07f8e4c6b1a1e60df17ea4e4d357c8173bd4b165c97386ee0675ef67afb9a9f1bdbd511368544febc4d92c8d8d1ebda57c4e7efb
- languageName: node
- linkType: hard
-
"spdx-correct@npm:^3.0.0":
version: 3.2.0
resolution: "spdx-correct@npm:3.2.0"
@@ -7091,9 +4661,9 @@ __metadata:
linkType: hard
"spdx-license-ids@npm:^3.0.0":
- version: 3.0.17
- resolution: "spdx-license-ids@npm:3.0.17"
- checksum: 10/8f6c6ae02ebb25b4ca658b8990d9e8a8f8d8a95e1d8b9fd84d87eed80a7dc8f8073d6a8d50b8a0295c0e8399e1f8814f5c00e2985e6bf3731540a16f7241cbf1
+ version: 3.0.18
+ resolution: "spdx-license-ids@npm:3.0.18"
+ checksum: 10/45fdbb50c4bbe364720ef0acd19f4fc1914d73ba1e2b1ce9db21ee12d7f9e8bf14336289f6ad3d5acac3dc5b91aafe61e9c652d5806b31cbb8518a14979a16ff
languageName: node
linkType: hard
@@ -7120,13 +4690,6 @@ __metadata:
languageName: node
linkType: hard
-"sprintf-js@npm:~1.0.2":
- version: 1.0.3
- resolution: "sprintf-js@npm:1.0.3"
- checksum: 10/c34828732ab8509c2741e5fd1af6b767c3daf2c642f267788f933a65b1614943c282e74c4284f4fa749c264b18ee016a0d37a3e5b73aee446da46277d3a85daa
- languageName: node
- linkType: hard
-
"ssri@npm:^10.0.0":
version: 10.0.6
resolution: "ssri@npm:10.0.6"
@@ -7159,20 +4722,13 @@ __metadata:
languageName: node
linkType: hard
-"string-argv@npm:0.3.2":
+"string-argv@npm:~0.3.2":
version: 0.3.2
resolution: "string-argv@npm:0.3.2"
checksum: 10/f9d3addf887026b4b5f997a271149e93bf71efc8692e7dc0816e8807f960b18bcb9787b45beedf0f97ff459575ee389af3f189d8b649834cac602f2e857e75af
languageName: node
linkType: hard
-"string-format@npm:^2.0.0":
- version: 2.0.0
- resolution: "string-format@npm:2.0.0"
- checksum: 10/8889014e926f69aaa8d117551a84a97cd7932484f5b0ab5b5b760eb0761e5722dee6112893ea742efac5adeb1b08dfedb77d9a91192dcd683a331e06c5148a87
- 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"
@@ -7184,16 +4740,6 @@ __metadata:
languageName: node
linkType: hard
-"string-width@npm:^2.1.1":
- version: 2.1.1
- resolution: "string-width@npm:2.1.1"
- dependencies:
- is-fullwidth-code-point: "npm:^2.0.0"
- strip-ansi: "npm:^4.0.0"
- checksum: 10/d6173abe088c615c8dffaf3861dc5d5906ed3dc2d6fd67ff2bd2e2b5dce7fd683c5240699cf0b1b8aa679a3b3bd6b28b5053c824cb89b813d7f6541d8f89064a
- languageName: node
- linkType: hard
-
"string-width@npm:^5.0.1, string-width@npm:^5.1.2":
version: 5.1.2
resolution: "string-width@npm:5.1.2"
@@ -7206,13 +4752,13 @@ __metadata:
linkType: hard
"string-width@npm:^7.0.0":
- version: 7.1.0
- resolution: "string-width@npm:7.1.0"
+ version: 7.2.0
+ resolution: "string-width@npm:7.2.0"
dependencies:
emoji-regex: "npm:^10.3.0"
get-east-asian-width: "npm:^1.0.0"
strip-ansi: "npm:^7.1.0"
- checksum: 10/a183573fe7209e0d294f661846d33f8caf72aa86d983e5b48a0ed45ab15bcccb02c6f0344b58b571988871105457137b8207855ea536827dbc4a376a0f31bf8f
+ checksum: 10/42f9e82f61314904a81393f6ef75b832c39f39761797250de68c041d8ba4df2ef80db49ab6cd3a292923a6f0f409b8c9980d120f7d32c820b4a8a84a2598a295
languageName: node
linkType: hard
@@ -7225,15 +4771,6 @@ __metadata:
languageName: node
linkType: hard
-"string_decoder@npm:~1.1.1":
- version: 1.1.1
- resolution: "string_decoder@npm:1.1.1"
- dependencies:
- safe-buffer: "npm:~5.1.0"
- checksum: 10/7c41c17ed4dea105231f6df208002ebddd732e8e9e2d619d133cecd8e0087ddfd9587d2feb3c8caf3213cbd841ada6d057f5142cae68a4e62d3540778d9819b4
- languageName: node
- linkType: hard
-
"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1":
version: 6.0.1
resolution: "strip-ansi@npm:6.0.1"
@@ -7243,15 +4780,6 @@ __metadata:
languageName: node
linkType: hard
-"strip-ansi@npm:^4.0.0":
- version: 4.0.0
- resolution: "strip-ansi@npm:4.0.0"
- dependencies:
- ansi-regex: "npm:^3.0.0"
- checksum: 10/d9186e6c0cf78f25274f6750ee5e4a5725fb91b70fdd79aa5fe648eab092a0ec5b9621b22d69d4534a56319f75d8944efbd84e3afa8d4ad1b9a9491f12c84eca
- languageName: node
- linkType: hard
-
"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0":
version: 7.1.0
resolution: "strip-ansi@npm:7.1.0"
@@ -7293,31 +4821,13 @@ __metadata:
languageName: node
linkType: hard
-"strip-json-comments@npm:3.1.1":
+"strip-json-comments@npm:^3.1.1":
version: 3.1.1
resolution: "strip-json-comments@npm:3.1.1"
checksum: 10/492f73e27268f9b1c122733f28ecb0e7e8d8a531a6662efbd08e22cccb3f9475e90a1b82cab06a392f6afae6d2de636f977e231296400d0ec5304ba70f166443
languageName: node
linkType: hard
-"supports-color@npm:8.1.1":
- version: 8.1.1
- resolution: "supports-color@npm:8.1.1"
- dependencies:
- has-flag: "npm:^4.0.0"
- checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282
- languageName: node
- linkType: hard
-
-"supports-color@npm:^3.1.0":
- version: 3.2.3
- resolution: "supports-color@npm:3.2.3"
- dependencies:
- has-flag: "npm:^1.0.0"
- checksum: 10/476a70d263a1f7ac11c26c10dfc58f0d9439edf198005b95f0e358ea8182d06b492d96320f16a841e4e968c7189044dd8c3f3037bd533480d15c7cc00e17c5d8
- languageName: node
- linkType: hard
-
"supports-color@npm:^5.3.0":
version: 5.5.0
resolution: "supports-color@npm:5.5.0"
@@ -7336,55 +4846,19 @@ __metadata:
languageName: node
linkType: hard
-"supports-preserve-symlinks-flag@npm:^1.0.0":
- version: 1.0.0
- resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
- checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e
- languageName: node
- linkType: hard
-
-"sync-request@npm:^6.0.0":
- version: 6.1.0
- resolution: "sync-request@npm:6.1.0"
- dependencies:
- http-response-object: "npm:^3.0.1"
- sync-rpc: "npm:^1.2.1"
- then-request: "npm:^6.0.0"
- checksum: 10/7f2b63b77c8440d36212c61b4babdf740a4ac37492f62f1da5e59e4081c940275a9d929e359ba427d2796e1e401fe00f35f0354b356b3709524a9bcda093313c
- languageName: node
- linkType: hard
-
-"sync-rpc@npm:^1.2.1":
- version: 1.3.6
- resolution: "sync-rpc@npm:1.3.6"
- dependencies:
- get-port: "npm:^3.1.0"
- checksum: 10/13c05461a32f06f9f41993374b3b9e3145105baede4097bd385e57d841ac0b47dad51737a919c1592df5b04aabdfee03f1d28562c37d5a76ef704069db1b4522
- languageName: node
- linkType: hard
-
-"table-layout@npm:^1.0.2":
- version: 1.0.2
- resolution: "table-layout@npm:1.0.2"
+"supports-color@npm:^8.1.1":
+ version: 8.1.1
+ resolution: "supports-color@npm:8.1.1"
dependencies:
- array-back: "npm:^4.0.1"
- deep-extend: "npm:~0.6.0"
- typical: "npm:^5.2.0"
- wordwrapjs: "npm:^4.0.0"
- checksum: 10/5dd12bc64ddf246f774fc51b45398dd8da900b7bb246595c84007ea292c15936264701660b80704be17da5d4066a9a250549418c40a2b635a0916c9294b103af
+ has-flag: "npm:^4.0.0"
+ checksum: 10/157b534df88e39c5518c5e78c35580c1eca848d7dbaf31bbe06cdfc048e22c7ff1a9d046ae17b25691128f631a51d9ec373c1b740c12ae4f0de6e292037e4282
languageName: node
linkType: hard
-"table@npm:^6.8.0, table@npm:^6.8.1":
- version: 6.8.2
- resolution: "table@npm:6.8.2"
- dependencies:
- ajv: "npm:^8.0.1"
- lodash.truncate: "npm:^4.4.2"
- slice-ansi: "npm:^4.0.0"
- string-width: "npm:^4.2.3"
- strip-ansi: "npm:^6.0.1"
- checksum: 10/2946162eb87a91b9bf4283214d26830db96f09cf517eff18e7501d47a4770c529b432bb54c9394337c3dfd6c8dbf66581f76edb37e9838beb6ec394080af4ac2
+"supports-preserve-symlinks-flag@npm:^1.0.0":
+ version: 1.0.0
+ resolution: "supports-preserve-symlinks-flag@npm:1.0.0"
+ checksum: 10/a9dc19ae2220c952bd2231d08ddeecb1b0328b61e72071ff4000c8384e145cc07c1c0bdb3b5a1cb06e186a7b2790f1dee793418b332f6ddf320de25d9125be7e
languageName: node
linkType: hard
@@ -7409,32 +4883,6 @@ __metadata:
languageName: node
linkType: hard
-"text-table@npm:^0.2.0":
- version: 0.2.0
- resolution: "text-table@npm:0.2.0"
- checksum: 10/4383b5baaeffa9bb4cda2ac33a4aa2e6d1f8aaf811848bf73513a9b88fd76372dc461f6fd6d2e9cb5100f48b473be32c6f95bd983509b7d92bb4d92c10747452
- languageName: node
- linkType: hard
-
-"then-request@npm:^6.0.0":
- version: 6.0.2
- resolution: "then-request@npm:6.0.2"
- dependencies:
- "@types/concat-stream": "npm:^1.6.0"
- "@types/form-data": "npm:0.0.33"
- "@types/node": "npm:^8.0.0"
- "@types/qs": "npm:^6.2.31"
- caseless: "npm:~0.12.0"
- concat-stream: "npm:^1.6.0"
- form-data: "npm:^2.2.0"
- http-basic: "npm:^8.1.1"
- http-response-object: "npm:^3.0.1"
- promise: "npm:^8.0.0"
- qs: "npm:^6.4.0"
- checksum: 10/7a33192fa03493fa7d5a40dbe2039271723c1c226aaa6db91576b439bf56393c8fe5a206478f37855c98284adf31d18c5bb7bafc94ebedae7c5bdb26a580dacc
- languageName: node
- linkType: hard
-
"through2@npm:^4.0.0":
version: 4.0.2
resolution: "through2@npm:4.0.2"
@@ -7490,74 +4938,6 @@ __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: 10/dd1b1fcd7aea599a909f037903bd4903c25e44e034dac8e1a2c049f34992c6cb4c9c692023c92d0dbd0f6183c3bd1bfff2181fee57099b6c5f296d38038224bf
- languageName: node
- linkType: hard
-
-"ts-essentials@npm:^7.0.1":
- version: 7.0.3
- resolution: "ts-essentials@npm:7.0.3"
- peerDependencies:
- typescript: ">=3.7.0"
- checksum: 10/021b4263ddd58897171f3f5c467b5c872f76ba2ea07dfc11fa9667ba8d62ccb7f390db3e581139dcc6da94c3ff6306921f574acdb2b94cbc9d7da3e859e24665
- languageName: node
- linkType: hard
-
-"ts-node@npm:^10.9.2":
- version: 10.9.2
- resolution: "ts-node@npm:10.9.2"
- dependencies:
- "@cspotcode/source-map-support": "npm:^0.8.0"
- "@tsconfig/node10": "npm:^1.0.7"
- "@tsconfig/node12": "npm:^1.0.7"
- "@tsconfig/node14": "npm:^1.0.0"
- "@tsconfig/node16": "npm:^1.0.2"
- acorn: "npm:^8.4.1"
- acorn-walk: "npm:^8.1.1"
- arg: "npm:^4.1.0"
- create-require: "npm:^1.1.0"
- diff: "npm:^4.0.1"
- make-error: "npm:^1.1.1"
- v8-compile-cache-lib: "npm:^3.0.1"
- yn: "npm:3.1.1"
- peerDependencies:
- "@swc/core": ">=1.2.50"
- "@swc/wasm": ">=1.2.50"
- "@types/node": "*"
- typescript: ">=2.7"
- peerDependenciesMeta:
- "@swc/core":
- optional: true
- "@swc/wasm":
- optional: true
- bin:
- ts-node: dist/bin.js
- ts-node-cwd: dist/bin-cwd.js
- ts-node-esm: dist/bin-esm.js
- ts-node-script: dist/bin-script.js
- ts-node-transpile-only: dist/bin-transpile.js
- ts-script: dist/bin-script-deprecated.js
- checksum: 10/a91a15b3c9f76ac462f006fa88b6bfa528130dcfb849dd7ef7f9d640832ab681e235b8a2bc58ecde42f72851cc1d5d4e22c901b0c11aa51001ea1d395074b794
- languageName: node
- linkType: hard
-
-"tslib@npm:2.4.0":
- version: 2.4.0
- resolution: "tslib@npm:2.4.0"
- checksum: 10/d8379e68b36caf082c1905ec25d17df8261e1d68ddc1abfd6c91158a064f6e4402039ae7c02cf4c81d12e3a2a2c7cd8ea2f57b233eb80136a2e3e7279daf2911
- languageName: node
- linkType: hard
-
"tslib@npm:^1.9.3":
version: 1.14.1
resolution: "tslib@npm:1.14.1"
@@ -7586,22 +4966,6 @@ __metadata:
languageName: node
linkType: hard
-"type-check@npm:~0.3.2":
- version: 0.3.2
- resolution: "type-check@npm:0.3.2"
- dependencies:
- prelude-ls: "npm:~1.1.2"
- checksum: 10/11dec0b50d7c3fd2e630b4b074ba36918ed2b1efbc87dfbd40ba9429d49c58d12dad5c415ece69fcf358fa083f33466fc370f23ab91aa63295c45d38b3a60dda
- languageName: node
- linkType: hard
-
-"type-detect@npm:^4.0.0, type-detect@npm:^4.0.8":
- version: 4.0.8
- resolution: "type-detect@npm:4.0.8"
- checksum: 10/5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d
- languageName: node
- linkType: hard
-
"type-fest@npm:^0.18.0":
version: 0.18.1
resolution: "type-fest@npm:0.18.1"
@@ -7644,85 +5008,13 @@ __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: 10/d6dad2f70bb3914c56bac6758ba2a761a1592a8258aa9f84360fda410c27bfade0b2f49faa366df94ac3c2f567d40b3db17f4a32903ef52bc7f9a020545eeb7f
- languageName: node
- linkType: hard
-
-"typedarray@npm:^0.0.6":
- version: 0.0.6
- resolution: "typedarray@npm:0.0.6"
- checksum: 10/2cc1bcf7d8c1237f6a16c04efc06637b2c5f2d74e58e84665445cf87668b85a21ab18dd751fa49eee6ae024b70326635d7b79ad37b1c370ed2fec6aeeeb52714
- languageName: node
- linkType: hard
-
-"typescript@npm:^5.3.3":
- version: 5.4.5
- resolution: "typescript@npm:5.4.5"
- bin:
- tsc: bin/tsc
- tsserver: bin/tsserver
- checksum: 10/d04a9e27e6d83861f2126665aa8d84847e8ebabcea9125b9ebc30370b98cb38b5dff2508d74e2326a744938191a83a69aa9fddab41f193ffa43eabfdf3f190a5
- languageName: node
- linkType: hard
-
-"typescript@patch:typescript@npm%3A^5.3.3#optional!builtin":
- version: 5.4.5
- resolution: "typescript@patch:typescript@npm%3A5.4.5#optional!builtin::version=5.4.5&hash=5adc0c"
- bin:
- tsc: bin/tsc
- tsserver: bin/tsserver
- checksum: 10/760f7d92fb383dbf7dee2443bf902f4365db2117f96f875cf809167f6103d55064de973db9f78fe8f31ec08fff52b2c969aee0d310939c0a3798ec75d0bca2e1
- languageName: node
- linkType: hard
-
-"typical@npm:^4.0.0":
- version: 4.0.0
- resolution: "typical@npm:4.0.0"
- checksum: 10/aefe2c24b025cda22534ae2594df4a1df5db05b5fe3692890fd51db741ca4f18937a149f968b8d56d9a7b0756e7cd8843b1907bea21987ff4a06619c54d5a575
- languageName: node
- linkType: hard
-
-"typical@npm:^5.2.0":
- version: 5.2.0
- resolution: "typical@npm:5.2.0"
- checksum: 10/fd8e4197cb2e021ca6d11fea0018ee219c29bf4160ab613492f74c0e21806003d1cd92a15088b111778a7b5c6432e4e28321899785a86980b390b87c4010efe5
- languageName: node
- linkType: hard
-
-"ufo@npm:^1.4.0, ufo@npm:^1.5.3":
+"ufo@npm:^1.5.3":
version: 1.5.3
resolution: "ufo@npm:1.5.3"
checksum: 10/2b30dddd873c643efecdb58cfe457183cd4d95937ccdacca6942c697b87a2c578232c25a5149fda85436696bf0fdbc213bf2b220874712bc3e58c0fb00a2c950
languageName: node
linkType: hard
-"uglify-js@npm:^3.1.4":
- version: 3.17.4
- resolution: "uglify-js@npm:3.17.4"
- bin:
- uglifyjs: bin/uglifyjs
- checksum: 10/4c0b800e0ff192079d2c3ce8414fd3b656a570028c7c79af5c29c53d5c532b68bbcae4ad47307f89c2ee124d11826fff7a136b59d5c5bb18422bcdf5568afe1e
- languageName: node
- linkType: hard
-
"undici-types@npm:~5.26.4":
version: 5.26.5
resolution: "undici-types@npm:5.26.5"
@@ -7764,13 +5056,6 @@ __metadata:
languageName: node
linkType: hard
-"universalify@npm:^2.0.0":
- version: 2.0.1
- resolution: "universalify@npm:2.0.1"
- checksum: 10/ecd8469fe0db28e7de9e5289d32bd1b6ba8f7183db34f3bfc4ca53c49891c2d6aa05f3fb3936a81285a905cc509fb641a0c3fc131ec786167eff41236ae32e60
- languageName: node
- linkType: hard
-
"unpipe@npm:1.0.0":
version: 1.0.0
resolution: "unpipe@npm:1.0.0"
@@ -7785,7 +5070,7 @@ __metadata:
languageName: node
linkType: hard
-"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1":
+"uri-js@npm:^4.4.1":
version: 4.4.1
resolution: "uri-js@npm:4.4.1"
dependencies:
@@ -7794,14 +5079,7 @@ __metadata:
languageName: node
linkType: hard
-"utf8@npm:3.0.0":
- version: 3.0.0
- resolution: "utf8@npm:3.0.0"
- checksum: 10/31d19c4faacbb65b09ebc1c21c32b20bdb0919c6f6773cee5001b99bb83f8e503e7233c08fc71ebb34f7cfebd95cec3243b81d90176097aa2f286cccb4ce866e
- languageName: node
- linkType: hard
-
-"util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1":
+"util-deprecate@npm:^1.0.1":
version: 1.0.2
resolution: "util-deprecate@npm:1.0.2"
checksum: 10/474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2
@@ -7817,13 +5095,6 @@ __metadata:
languageName: node
linkType: hard
-"v8-compile-cache-lib@npm:^3.0.1":
- version: 3.0.1
- resolution: "v8-compile-cache-lib@npm:3.0.1"
- checksum: 10/88d3423a52b6aaf1836be779cab12f7016d47ad8430dffba6edf766695e6d90ad4adaa3d8eeb512cc05924f3e246c4a4ca51e089dccf4402caa536b5e5be8961
- languageName: node
- linkType: hard
-
"validate-npm-package-license@npm:^3.0.1":
version: 3.0.4
resolution: "validate-npm-package-license@npm:3.0.4"
@@ -7834,33 +5105,6 @@ __metadata:
languageName: node
linkType: hard
-"web3-utils@npm:^1.3.6":
- version: 1.10.4
- resolution: "web3-utils@npm:1.10.4"
- dependencies:
- "@ethereumjs/util": "npm:^8.1.0"
- bn.js: "npm:^5.2.1"
- ethereum-bloom-filters: "npm:^1.0.6"
- ethereum-cryptography: "npm:^2.1.2"
- ethjs-unit: "npm:0.1.6"
- number-to-bn: "npm:1.7.0"
- randombytes: "npm:^2.1.0"
- utf8: "npm:3.0.0"
- checksum: 10/3e586b638cdae9fa45b7698e8a511ae2cbf60e219a900351ae38d384beaaf67424ac6e1d9c5098c3fb8f2ff3cc65a70d977a20bdce3dad542cb50deb666ea2a3
- languageName: node
- linkType: hard
-
-"which@npm:^1.1.1, which@npm:^1.3.1":
- version: 1.3.1
- resolution: "which@npm:1.3.1"
- dependencies:
- isexe: "npm:^2.0.0"
- bin:
- which: ./bin/which
- checksum: 10/549dcf1752f3ee7fbb64f5af2eead4b9a2f482108b7de3e85c781d6c26d8cf6a52d37cfbe0642a155fa6470483fe892661a859c03157f24c669cf115f3bbab5e
- languageName: node
- linkType: hard
-
"which@npm:^2.0.1":
version: 2.0.2
resolution: "which@npm:2.0.2"
@@ -7892,34 +5136,10 @@ __metadata:
languageName: node
linkType: hard
-"word-wrap@npm:~1.2.3":
- version: 1.2.5
- resolution: "word-wrap@npm:1.2.5"
- checksum: 10/1ec6f6089f205f83037be10d0c4b34c9183b0b63fca0834a5b3cee55dd321429d73d40bb44c8fc8471b5203d6e8f8275717f49a8ff4b2b0ab41d7e1b563e0854
- languageName: node
- linkType: hard
-
-"wordwrap@npm:^1.0.0":
- version: 1.0.0
- resolution: "wordwrap@npm:1.0.0"
- checksum: 10/497d40beb2bdb08e6d38754faa17ce20b0bf1306327f80cb777927edb23f461ee1f6bc659b3c3c93f26b08e1cf4b46acc5bae8fda1f0be3b5ab9a1a0211034cd
- 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: 10/4182c48c9d3eab0932fb9f9f202e3f1d4d28ff6db3fd2e1654ec8606677d8e0ab80110f0f8e2e236ee2b52631cbc5fccf3097e9287e3ace20cbc1613a784befc
- languageName: node
- linkType: hard
-
-"workerpool@npm:6.2.1":
- version: 6.2.1
- resolution: "workerpool@npm:6.2.1"
- checksum: 10/3e637f76320cab92eaeffa4fbefb351db02e20aa29245d8ee05fa7c088780ef7b4446bfafff2668a22fd94b7d9d97c7020117036ac77a76370ecea278b9a9b91
+"workerpool@npm:^6.5.1":
+ version: 6.5.1
+ resolution: "workerpool@npm:6.5.1"
+ checksum: 10/b1b00139fe62f2ebec556a2af8085bf6e7502ad26cf2a4dcb34fb4408b2e68aa12c88b0a50cb463b24f2806d60fa491fc0da933b56ec3b53646aeec0025d14cb
languageName: node
linkType: hard
@@ -7963,39 +5183,9 @@ __metadata:
languageName: node
linkType: hard
-"ws@npm:7.4.6":
- version: 7.4.6
- resolution: "ws@npm:7.4.6"
- peerDependencies:
- bufferutil: ^4.0.1
- utf-8-validate: ^5.0.2
- peerDependenciesMeta:
- bufferutil:
- optional: true
- utf-8-validate:
- optional: true
- checksum: 10/150e3f917b7cde568d833a5ea6ccc4132e59c38d04218afcf2b6c7b845752bd011a9e0dc1303c8694d3c402a0bdec5893661a390b71ff88f0fc81a4e4e66b09c
- 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: 10/f0ee700970a0bf925b1ec213ca3691e84fb8b435a91461fe3caf52f58c6cec57c99ed5890fbf6978824c932641932019aafc55d864cad38ac32577496efd5d3a
- languageName: node
- linkType: hard
-
"ws@npm:^7.4.6":
- version: 7.5.9
- resolution: "ws@npm:7.5.9"
+ version: 7.5.10
+ resolution: "ws@npm:7.5.10"
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: ^5.0.2
@@ -8004,7 +5194,7 @@ __metadata:
optional: true
utf-8-validate:
optional: true
- checksum: 10/171e35012934bd8788150a7f46f963e50bac43a4dc524ee714c20f258693ac4d3ba2abadb00838fdac42a47af9e958c7ae7e6f4bc56db047ba897b8a2268cf7c
+ checksum: 10/9c796b84ba80ffc2c2adcdfc9c8e9a219ba99caa435c9a8d45f9ac593bba325563b3f83edc5eb067cc6d21b9a6bf2c930adf76dd40af5f58a5ca6859e81858f0
languageName: node
linkType: hard
@@ -8022,30 +5212,16 @@ __metadata:
languageName: node
linkType: hard
-"yaml@npm:2.3.4":
- version: 2.3.4
- resolution: "yaml@npm:2.3.4"
- checksum: 10/f8207ce43065a22268a2806ea6a0fa3974c6fde92b4b2fa0082357e487bc333e85dc518910007e7ac001b532c7c84bd3eccb6c7757e94182b564028b0008f44b
- languageName: node
- linkType: hard
-
-"yaml@npm:^2.3.1":
- version: 2.4.2
- resolution: "yaml@npm:2.4.2"
+"yaml@npm:^2.3.1, yaml@npm:~2.4.2":
+ version: 2.4.5
+ resolution: "yaml@npm:2.4.5"
bin:
yaml: bin.mjs
- checksum: 10/6eafbcd68dead734035f6f72af21bd820c29214caf7d8e40c595671a3c908535cef8092b9660a1c055c5833aa148aa640e0c5fa4adb5af2dacd6d28296ccd81c
- languageName: node
- linkType: hard
-
-"yargs-parser@npm:20.2.4":
- version: 20.2.4
- resolution: "yargs-parser@npm:20.2.4"
- checksum: 10/db8f251ae40e24782d5c089ed86883ba3c0ce7f3c174002a67ec500802f928df9d505fea5d04829769221ce20b0f69f6fb1138fbb2e2fb102e3e9d426d20edab
+ checksum: 10/b09bf5a615a65276d433d76b8e34ad6b4c0320b85eb3f1a39da132c61ae6e2ff34eff4624e6458d96d49566c93cf43408ba5e568218293a8c6541a2006883f64
languageName: node
linkType: hard
-"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3":
+"yargs-parser@npm:^20.2.2, yargs-parser@npm:^20.2.3, yargs-parser@npm:^20.2.9":
version: 20.2.9
resolution: "yargs-parser@npm:20.2.9"
checksum: 10/0188f430a0f496551d09df6719a9132a3469e47fe2747208b1dd0ab2bb0c512a95d0b081628bbca5400fb20dbf2fabe63d22badb346cecadffdd948b049f3fcc
@@ -8059,7 +5235,7 @@ __metadata:
languageName: node
linkType: hard
-"yargs-unparser@npm:2.0.0":
+"yargs-unparser@npm:^2.0.0":
version: 2.0.0
resolution: "yargs-unparser@npm:2.0.0"
dependencies:
@@ -8071,7 +5247,7 @@ __metadata:
languageName: node
linkType: hard
-"yargs@npm:16.2.0":
+"yargs@npm:^16.2.0":
version: 16.2.0
resolution: "yargs@npm:16.2.0"
dependencies:
@@ -8101,13 +5277,6 @@ __metadata:
languageName: node
linkType: hard
-"yn@npm:3.1.1":
- version: 3.1.1
- resolution: "yn@npm:3.1.1"
- checksum: 10/2c487b0e149e746ef48cda9f8bad10fc83693cd69d7f9dcd8be4214e985de33a29c9e24f3c0d6bcf2288427040a8947406ab27f7af67ee9456e6b84854f02dd6
- languageName: node
- linkType: hard
-
"yocto-queue@npm:^0.1.0":
version: 0.1.0
resolution: "yocto-queue@npm:0.1.0"
@@ -8121,14 +5290,10 @@ __metadata:
dependencies:
"@commitlint/cli": "npm:^18.6.1"
"@commitlint/config-conventional": "npm:^18.6.2"
- "@types/glob": "npm:^7.2.0"
- "@types/node": "npm:^20"
changelogithub: "patch:changelogithub@npm%3A0.13.3#~/.yarn/patches/changelogithub-npm-0.13.3-1783949906.patch"
czg: "npm:^1.9.1"
husky: "npm:^9.0.11"
lint-staged: "npm:^15.2.2"
prettier: "npm:^3.2.5"
- ts-node: "npm:^10.9.2"
- typescript: "npm:^5.3.3"
languageName: unknown
linkType: soft