From 5766da1290cf8653b4d09cfb8b902ae37662f264 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 13 Dec 2023 17:25:41 +0100 Subject: [PATCH 01/27] test: hardhat test in ghwf --- .github/workflows/hardhat-test.yaml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/hardhat-test.yaml diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml new file mode 100644 index 0000000..3d4d02e --- /dev/null +++ b/.github/workflows/hardhat-test.yaml @@ -0,0 +1,25 @@ +name: hardhat-test + +on: + pull_request: + branches: + - dev + - master + types: + - opened + - reopened + - synchronize + +jobs: + test: + runs-on: ubuntu-latest + name: Hardhat unit test + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Environment + uses: actions/setup-node@v3 + - name: Test + uses: ambersun1234/hardhat-test-action@v1 + with: + network: localhost From cf1e7363396875678c53fc7ae58b3ca81ab00168 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 13 Dec 2023 17:27:08 +0100 Subject: [PATCH 02/27] test: change network --- .github/workflows/hardhat-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index 3d4d02e..86fb4ab 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -22,4 +22,4 @@ jobs: - name: Test uses: ambersun1234/hardhat-test-action@v1 with: - network: localhost + network: hardhat From e5310394e40eea33f681d349f25925be316a6a9f Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 13 Dec 2023 17:32:09 +0100 Subject: [PATCH 03/27] fix: ghwf --- .github/workflows/hardhat-test.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index 86fb4ab..966cddb 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -13,13 +13,13 @@ on: jobs: test: runs-on: ubuntu-latest - name: Hardhat unit test + name: Hardhat unit tests steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Environment + - name: Checkout code + uses: actions/checkout@v3 + - name: Install Node.js uses: actions/setup-node@v3 - - name: Test - uses: ambersun1234/hardhat-test-action@v1 - with: - network: hardhat + - name: 'Install the dependencies' + run: 'npm install' + - name: 'Run the tests' + run: 'npm run test' From 4f02568bd5378e144ad7236cc57f97873ffb5c17 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 13 Dec 2023 17:42:47 +0100 Subject: [PATCH 04/27] fix: ghwf --- .github/workflows/hardhat-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index 966cddb..294b3da 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -22,4 +22,4 @@ jobs: - name: 'Install the dependencies' run: 'npm install' - name: 'Run the tests' - run: 'npm run test' + run: 'HARDHAT_NETWORK=hardhat npm run test' From 15ebf735c0ca160418b267540388a6fbf54f6daf Mon Sep 17 00:00:00 2001 From: scolear Date: Fri, 10 May 2024 13:48:16 +0200 Subject: [PATCH 05/27] chore: some pkg updates --- package-lock.json | 3942 ++++++++++++--------------------------------- package.json | 8 +- scripts/index.js | 2 - 3 files changed, 1007 insertions(+), 2945 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4757432..363be67 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@safe-global/protocol-kit": "^1.3.0", "@safe-global/safe-core-sdk-types": "^2.3.0", "chalk": "^4.1.2", - "commander": "^10.0.0", + "commander": "^12.0.0", "dotenv": "^16.0.3", "prompts": "^2.4.2", "solmate": "^6.2.0" @@ -38,12 +38,9 @@ "@types/mocha": "^9.1.1", "@types/prompts": "^2.4.4", "ethers": "^5.7.2", - "getconfig": "^4.5.0", "hardhat": "^2.12.5", - "hardhat-gas-reporter": "^2.1.1", "husky": "^8.0.0", "mime-types": "^2.1.35", - "nft.storage": "^7.0.0", "prettier": "^3.0.3", "prettier-plugin-solidity": "^1.1.3", "solhint": "^3.3.7", @@ -53,22 +50,9 @@ "solidity-docgen": "^0.6.0-beta.36", "ts-node": "^10.9.1", "typechain": "^8.1.1", - "typescript": "^4.9.4", - "web3": "^1.8.2" + "typescript": "^4.9.4" } }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", - "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", - "dev": true - }, - "node_modules/@assemblyscript/loader": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.9.4.tgz", - "integrity": "sha512-HazVq9zwTVwGmqdwYzu7WyQ6FQVZ7SwET0KKQuKm55jD0IfUpZgN0OPIiZG3zV1iSrVYcN0bdwLRXI/VNCYsUA==", - "dev": true - }, "node_modules/@aws-crypto/sha256-js": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-1.2.2.tgz", @@ -92,16 +76,16 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.521.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.521.0.tgz", - "integrity": "sha512-H9I3Lut0F9d+kTibrhnTRqDRzhxf/vrDu12FUdTXVZEvVAQ7w9yrVHAZx8j2e8GWegetsQsNitO3KMrj4dA4pw==", + "version": "3.567.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.567.0.tgz", + "integrity": "sha512-JBznu45cdgQb8+T/Zab7WpBmfEAh77gsk99xuF4biIb2Sw1mdseONdoGDjEJX57a25TzIv/WUJ2oABWumckz1A==", "dev": true, "dependencies": { - "@smithy/types": "^2.10.0", - "tslib": "^2.5.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/types/node_modules/tslib": { @@ -126,107 +110,37 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", + "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.5", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -319,16 +233,6 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.3.tgz", "integrity": "sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==" }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -419,6 +323,17 @@ "node": ">=14" } }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", @@ -1102,150 +1017,14 @@ } }, "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "dev": true, "engines": { "node": ">=14" } }, - "node_modules/@ipld/car": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@ipld/car/-/car-3.2.4.tgz", - "integrity": "sha512-rezKd+jk8AsTGOoJKqzfjLJ3WVft7NZNH95f0pfPbicROvzTyvHCNy567HzSUd6gRXZ9im29z5ZEv9Hw49jSYw==", - "dev": true, - "dependencies": { - "@ipld/dag-cbor": "^7.0.0", - "multiformats": "^9.5.4", - "varint": "^6.0.0" - } - }, - "node_modules/@ipld/car/node_modules/@ipld/dag-cbor": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", - "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", - "dev": true, - "dependencies": { - "cborg": "^1.6.0", - "multiformats": "^9.5.4" - } - }, - "node_modules/@ipld/dag-cbor": { - "version": "6.0.15", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-6.0.15.tgz", - "integrity": "sha512-Vm3VTSTwlmGV92a3C5aeY+r2A18zbH2amehNhsX8PBa3muXICaWrN8Uri85A5hLH7D7ElhE8PdjxD6kNqUmTZA==", - "dev": true, - "dependencies": { - "cborg": "^1.5.4", - "multiformats": "^9.5.4" - } - }, - "node_modules/@ipld/dag-pb": { - "version": "2.1.18", - "resolved": "https://registry.npmjs.org/@ipld/dag-pb/-/dag-pb-2.1.18.tgz", - "integrity": "sha512-ZBnf2fuX9y3KccADURG5vb9FaOeMjFkCrNysB0PtftME/4iCTjxfaLoNq/IAh5fTqUOMXvryN6Jyka4ZGuMLIg==", - "dev": true, - "dependencies": { - "multiformats": "^9.5.4" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", @@ -1317,16 +1096,6 @@ "rlp": "^2.2.3" } }, - "node_modules/@multiformats/murmur3": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@multiformats/murmur3/-/murmur3-1.1.3.tgz", - "integrity": "sha512-wAPLUErGR8g6Lt+bAZn6218k9YQPym+sjszsXL6o4zfxbA22P+gxWZuuD9wDbwL55xrKO5idpcuQUX7/E3oHcw==", - "dev": true, - "dependencies": { - "multiformats": "^9.5.4", - "murmurhash3js-revisited": "^3.0.0" - } - }, "node_modules/@noble/curves": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", @@ -1338,7 +1107,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@noble/hashes": { + "node_modules/@noble/curves/node_modules/@noble/hashes": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", @@ -1349,6 +1118,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/secp256k1": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", @@ -1396,136 +1176,152 @@ "node": ">= 8" } }, - "node_modules/@nomicfoundation/ethereumjs-block": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-5.0.4.tgz", - "integrity": "sha512-AcyacJ9eX/uPEvqsPiB+WO1ymE+kyH48qGGiGV+YTojdtas8itUTW5dehDSOXEEItWGbbzEJ4PRqnQZlWaPvDw==", + "node_modules/@nomicfoundation/edr": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.7.tgz", + "integrity": "sha512-v2JFWnFKRsnOa6PDUrD+sr8amcdhxnG/YbL7LzmgRGU1odWEyOF4/EwNeUajQr4ZNKVWrYnJ6XjydXtUge5OBQ==", "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "ethereum-cryptography": "0.1.3" + "engines": { + "node": ">= 18" }, + "optionalDependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.3.7", + "@nomicfoundation/edr-darwin-x64": "0.3.7", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.7", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.7", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.7", + "@nomicfoundation/edr-linux-x64-musl": "0.3.7", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.7" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.7.tgz", + "integrity": "sha512-6tK9Lv/lSfyBvpEQ4nsTfgxyDT1y1Uv/x8Wa+aB+E8qGo3ToexQ1BMVjxJk6PChXCDOWxB3B4KhqaZFjdhl3Ow==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-blockchain": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-7.0.4.tgz", - "integrity": "sha512-jYsd/kwzbmpnxx86tXsYV8wZ5xGvFL+7/P0c6OlzpClHsbFzeF41KrYA9scON8Rg6bZu3ZTv6JOAgj3t7USUfg==", + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.7.tgz", + "integrity": "sha512-1RrQ/1JPwxrYO69e0tglFv5H+ggour5Ii3bb727+yBpBShrxtOTQ7fZyfxA5h62LCN+0Z9wYOPeQ7XFcVurMaQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-ethash": "3.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "lru-cache": "^10.0.0" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-common": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", - "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.7.tgz", + "integrity": "sha512-ds/CKlBoVXIihjhflhgPn13EdKWed6r5bgvMs/YwRqT5wldQAQJZWAfA2+nYm0Yi2gMGh1RUpBcfkyl4pq7G+g==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-util": "9.0.4" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-ethash": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-3.0.4.tgz", - "integrity": "sha512-xvIrwIMl9sSaiYKRem68+O7vYdj7Q2XWv5P7JXiIkn83918QzWHvqbswTRsH7+r6X1UEvdsURRnZbvZszEjAaQ==", + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.7.tgz", + "integrity": "sha512-e29udiRaPujhLkM3+R6ju7QISrcyOqpcaxb2FsDWBkuD7H8uU9JPZEyyUIpEp5uIY0Jh1eEJPKZKIXQmQAEAuw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "bigint-crypto-utils": "^3.2.2", - "ethereum-cryptography": "0.1.3" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-evm": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-2.0.4.tgz", - "integrity": "sha512-lTyZZi1KpeMHzaO6cSVisR2tjiTTedjo7PcmhI/+GNFo9BmyY6QYzGeSti0sFttmjbEMioHgXxl5yrLNRg6+1w==", + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.7.tgz", + "integrity": "sha512-/xkjmTyv+bbJ4akBCW0qzFKxPOV4AqLOmqurov+s9umHb16oOv72osSa3SdzJED2gHDaKmpMITT4crxbar4Axg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@types/debug": "^4.1.9", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "rustbn-wasm": "^0.2.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-rlp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", - "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.7.tgz", + "integrity": "sha512-QwBP9xlmsbf/ldZDGLcE4QiAb8Zt46E/+WLpxHBATFhGa7MrpJh6Zse+h2VlrT/SYLPbh2cpHgSmoSlqVxWG9g==", + "cpu": [ + "x64" + ], "dev": true, - "bin": { - "rlp": "bin/rlp.cjs" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=18" + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-statemanager": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-2.0.4.tgz", - "integrity": "sha512-HPDjeFrxw6llEi+BzqXkZ+KkvFnTOPczuHBtk21hRlDiuKuZz32dPzlhpRsDBGV1b5JTmRDUVqCS1lp3Gghw4Q==", + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.7.tgz", + "integrity": "sha512-j/80DEnkxrF2ewdbk/gQ2EOPvgF0XSsg8D0o4+6cKhUVAW6XwtWKzIphNL6dyD2YaWEPgIrNvqiJK/aln0ww4Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3", - "js-sdsl": "^4.1.4", - "lru-cache": "^10.0.0" - }, - "peerDependencies": { - "@nomicfoundation/ethereumjs-verkle": "0.0.2" - }, - "peerDependenciesMeta": { - "@nomicfoundation/ethereumjs-verkle": { - "optional": true - } + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 18" } }, - "node_modules/@nomicfoundation/ethereumjs-trie": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-6.0.4.tgz", - "integrity": "sha512-3nSwQiFMvr2VFe/aZUyinuohYvtytUqZCUCvIWcPJ/BwJH6oQdZRB42aNFBJ/8nAh2s3OcroWpBLskzW01mFKA==", + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", "dev": true, "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@types/readable-stream": "^2.3.13", - "ethereum-cryptography": "0.1.3", - "lru-cache": "^10.0.0", - "readable-stream": "^3.6.0" + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, + "bin": { + "rlp": "bin/rlp.cjs" }, "engines": { "node": ">=18" @@ -1575,43 +1371,6 @@ } } }, - "node_modules/@nomicfoundation/ethereumjs-verkle": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-verkle/-/ethereumjs-verkle-0.0.2.tgz", - "integrity": "sha512-bjnfZElpYGK/XuuVRmLS3yDvr+cDs85D9oonZ0YUa5A3lgFgokWMp76zXrxX2jVQ0BfHaw12y860n1+iOi6yFQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "lru-cache": "^10.0.0", - "rust-verkle-wasm": "^0.0.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@nomicfoundation/ethereumjs-vm": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-7.0.4.tgz", - "integrity": "sha512-gsA4IhmtWHI4BofKy3kio9W+dqZQs5Ji5mLjLYxHCkat+JQBUt5szjRKra2F9nGDJ2XcI/wWb0YWUFNgln4zRQ==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-blockchain": "7.0.4", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-evm": "2.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "debug": "^4.3.3", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@nomicfoundation/hardhat-chai-matchers": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-1.0.6.tgz", @@ -1671,9 +1430,9 @@ } }, "node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.4.tgz", - "integrity": "sha512-B8ZjhOrmbbRWqJi65jvQblzjsfYktjqj2vmOm+oc2Vu8drZbT2cjeSCRHZKbS7lOtfW78aJZSFvw+zRLCiABJA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.6.tgz", + "integrity": "sha512-oKUI5fl8QC8jysE2LUBHE6rObzEmccJcc4b43Ov7LFMlCBZJE27qoqGIsg/++wX7L8Jdga+bkejPxl8NvsecpQ==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", @@ -2058,14 +1817,14 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", - "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==" + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.6.tgz", + "integrity": "sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==" }, "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.5.tgz", - "integrity": "sha512-f7L1//4sLlflAN7fVzJLoRedrf5Na3Oal5PZfIq55NFcVZ90EpV1q5xOvL4lFvg3MNICSDr2hH0JUBxwlxcoPg==" + "version": "4.9.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.6.tgz", + "integrity": "sha512-m4iHazOsOCv1DgM7eD7GupTJ+NFVujRZt1wzddDPSVGpWdKq1SKkla5htKG7+IS4d2XOCtzkUNwRZ7Vq5aEUMA==" }, "node_modules/@openzeppelin/contracts-v0.7": { "name": "@openzeppelin/contracts", @@ -2138,9 +1897,9 @@ } }, "node_modules/@openzeppelin/upgrades-core": { - "version": "1.32.5", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.32.5.tgz", - "integrity": "sha512-R0wprsyJ4xWiRW05kaTfZZkRVpG2g0af3/hpjE7t2mX0Eb2n40MQLokTwqIk4LDzpp910JfLSpB0vBuZ6WNPog==", + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.33.1.tgz", + "integrity": "sha512-YRxIRhTY1b+j7+NUUu8Uuem5ugxKexEMVd8dBRWNgWeoN1gS1OCrhgUg0ytL+54vzQ+SGWZDfNnzjVuI1Cj1Zw==", "dev": true, "dependencies": { "cbor": "^9.0.0", @@ -2168,16 +1927,6 @@ "node": ">=16" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@prettier/sync": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@prettier/sync/-/sync-0.3.0.tgz", @@ -2190,70 +1939,6 @@ "prettier": "^3.0.0" } }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "dev": true - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "dev": true - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "dev": true - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "dev": true - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "dev": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "dev": true - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "dev": true - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "dev": true - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "dev": true - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "dev": true - }, "node_modules/@safe-global/api-kit": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/@safe-global/api-kit/-/api-kit-1.3.1.tgz", @@ -2281,24 +1966,10 @@ "zksync-web3": "^0.14.3" } }, - "node_modules/@safe-global/protocol-kit/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@safe-global/protocol-kit/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -2306,11 +1977,6 @@ "node": ">=10" } }, - "node_modules/@safe-global/protocol-kit/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@safe-global/safe-core-sdk-types": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-2.3.0.tgz", @@ -2324,31 +1990,17 @@ } }, "node_modules/@safe-global/safe-deployments": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.33.0.tgz", - "integrity": "sha512-G9qGMsha6idMnDuk98dE//inQL09w97hcQ5ZTdSWIHCzJ9mFdN0K4DH2afjZOwdt+Y4g8gZmY3z+kR38MPEToQ==", - "dependencies": { - "semver": "^7.3.7" - } - }, - "node_modules/@safe-global/safe-deployments/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "1.35.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.35.0.tgz", + "integrity": "sha512-Of8WQEcvL5Fm+xxnCDjah6Hkw+sNdzcApQnzr+OsPBxYtZL0RRtbmesypj36oOD8BQmyrH54V8DVN+pYjrfJ9g==", "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "semver": "^7.6.0" } }, "node_modules/@safe-global/safe-deployments/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { "semver": "bin/semver.js" }, @@ -2356,15 +2008,10 @@ "node": ">=10" } }, - "node_modules/@safe-global/safe-deployments/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, "node_modules/@scure/base": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", - "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.6.tgz", + "integrity": "sha512-ok9AWwhcgYuGG3Zfhyqg+zwl+Wn5uE+dwC0NV/2qQkx4dABbb/bx96vWu8NSj+BNjjSjno+JRYRjle1jV08k3g==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -2382,6 +2029,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@scure/bip39": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", @@ -2394,6 +2052,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@sentry/core": { "version": "5.30.0", "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", @@ -2508,12 +2177,12 @@ } }, "node_modules/@smithy/types": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.10.0.tgz", - "integrity": "sha512-QYXQmpIebS8/jYXgyJjCanKZbI4Rr8tBVGBAIdDhA35f025TVjJNW69FJ0TGiDqt+lIGo037YIswq2t2Y1AYZQ==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", "dev": true, "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" @@ -2526,10 +2195,14 @@ "dev": true }, "node_modules/@solidity-parser/parser": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", - "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", - "dev": true + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.5.tgz", + "integrity": "sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==", + "dev": true, + "peer": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", @@ -2543,9 +2216,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -2656,9 +2329,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.12", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.12.tgz", - "integrity": "sha512-zNKDHG/1yxm8Il6uCCVsm+dRdEsJlFoDu73X17y09bId6UwoYww+vFBsAcRzl8knM1sab3Dp1VRikFQwDOtDDw==", + "version": "4.3.16", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", + "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -2670,13 +2343,24 @@ "@types/chai": "*" } }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "node_modules/@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/form-data": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", "dev": true, + "peer": true, "dependencies": { - "@types/ms": "*" + "@types/node": "*" } }, "node_modules/@types/glob": { @@ -2702,12 +2386,6 @@ "@types/node": "*" } }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "dev": true - }, "node_modules/@types/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", @@ -2715,15 +2393,9 @@ "dev": true }, "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", "dev": true }, "node_modules/@types/mocha": { @@ -2732,26 +2404,14 @@ "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", "dev": true }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "dev": true - }, "node_modules/@types/node": { - "version": "20.11.20", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.20.tgz", - "integrity": "sha512-7/rR21OS+fq8IyHTgtLkDK949uzsa6n8BkziAKtPVpugIkO6D+/ooXMvzXxDnZrmtXVfjb1bKQafYpb8s89LOg==", + "version": "20.12.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", + "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true - }, "node_modules/@types/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -2776,21 +2436,12 @@ "kleur": "^3.0.3" } }, - "node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "peer": true }, "node_modules/@types/responselike": { "version": "1.0.3", @@ -2800,12 +2451,6 @@ "@types/node": "*" } }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, "node_modules/@types/secp256k1": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", @@ -2814,102 +2459,12 @@ "@types/node": "*" } }, - "node_modules/@web-std/blob": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@web-std/blob/-/blob-3.0.5.tgz", - "integrity": "sha512-Lm03qr0eT3PoLBuhkvFBLf0EFkAsNz/G/AYCzpOdi483aFaVX86b4iQs0OHhzHJfN5C15q17UtDbyABjlzM96A==", - "dev": true, - "dependencies": { - "@web-std/stream": "1.0.0", - "web-encoding": "1.1.5" - } - }, - "node_modules/@web-std/fetch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@web-std/fetch/-/fetch-4.2.1.tgz", - "integrity": "sha512-M6sgHDgKegcjuVsq8J6jb/4XvhPGui8uwp3EIoADGXUnBl9vKzKLk9H9iFzrPJ6fSV6zZzFWXPyziBJp9hxzBA==", - "dev": true, - "dependencies": { - "@web-std/blob": "^3.0.3", - "@web-std/file": "^3.0.2", - "@web-std/form-data": "^3.0.2", - "@web-std/stream": "^1.0.1", - "@web3-storage/multipart-parser": "^1.0.0", - "abort-controller": "^3.0.0", - "data-uri-to-buffer": "^3.0.1", - "mrmime": "^1.0.0" - }, - "engines": { - "node": "^10.17 || >=12.3" - } - }, - "node_modules/@web-std/fetch/node_modules/@web-std/stream": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@web-std/stream/-/stream-1.0.3.tgz", - "integrity": "sha512-5MIngxWyq4rQiGoDAC2WhjLuDraW8+ff2LD2et4NRY933K3gL8CHlUXrh8ZZ3dC9A9Xaub8c9sl5exOJE58D9Q==", - "dev": true, - "dependencies": { - "web-streams-polyfill": "^3.1.1" - } - }, - "node_modules/@web-std/file": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@web-std/file/-/file-3.0.3.tgz", - "integrity": "sha512-X7YYyvEERBbaDfJeC9lBKC5Q5lIEWYCP1SNftJNwNH/VbFhdHm+3neKOQP+kWEYJmosbDFq+NEUG7+XIvet/Jw==", - "dev": true, - "dependencies": { - "@web-std/blob": "^3.0.3" - } - }, - "node_modules/@web-std/form-data": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@web-std/form-data/-/form-data-3.1.0.tgz", - "integrity": "sha512-WkOrB8rnc2hEK2iVhDl9TFiPMptmxJA1HaIzSdc2/qk3XS4Ny4cCt6/V36U3XmoYKz0Md2YyK2uOZecoZWPAcA==", - "dev": true, - "dependencies": { - "web-encoding": "1.1.5" - } - }, - "node_modules/@web-std/stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@web-std/stream/-/stream-1.0.0.tgz", - "integrity": "sha512-jyIbdVl+0ZJyKGTV0Ohb9E6UnxP+t7ZzX4Do3AHjZKxUXKMs9EmqnBDQgHF7bEw0EzbQygOjtt/7gvtmi//iCQ==", - "dev": true, - "dependencies": { - "web-streams-polyfill": "^3.1.1" - } - }, - "node_modules/@web3-storage/multipart-parser": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", - "integrity": "sha512-BEO6al7BYqcnfX15W2cnGR+Q566ACXAT9UQykORCWW80lmkpWsnEob6zJS1ZVBKsSJC8+7vJkHwlp+lXG1UCdw==", - "dev": true - }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "dev": true, - "optional": true - }, "node_modules/abbrev": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", "integrity": "sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==", "dev": true }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/abortcontroller-polyfill": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", @@ -3003,9 +2558,9 @@ } }, "node_modules/amazon-cognito-identity-js": { - "version": "6.3.7", - "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.7.tgz", - "integrity": "sha512-tSjnM7KyAeOZ7UMah+oOZ6cW4Gf64FFcc7BE2l7MTcp7ekAPrXaCbpcW2xEpH1EiDS4cPcAouHzmCuc2tr72vQ==", + "version": "6.3.12", + "resolved": "https://registry.npmjs.org/amazon-cognito-identity-js/-/amazon-cognito-identity-js-6.3.12.tgz", + "integrity": "sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==", "dev": true, "dependencies": { "@aws-crypto/sha256-js": "1.2.2", @@ -3096,16 +2651,6 @@ "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", "dev": true }, - "node_modules/any-signal": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", - "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "native-abort-controller": "^1.0.3" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -3170,16 +2715,27 @@ "node": ">=8" } }, - "node_modules/array.prototype.findlast": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.4.tgz", - "integrity": "sha512-BMtLxpV+8BD+6ZPFIWmnUBpQoy+A+ujcg4rhp2iwCRJYA7PEh2MS4NL3lz8EiDlLrJPp2hg9qWihr5pd//jcGw==", + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", "dev": true, - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "es-shim-unscopables": "^1.0.2" }, "engines": { @@ -3211,14 +2767,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "peer": true }, "node_modules/asn1": { "version": "0.2.6", @@ -3321,12 +2875,12 @@ "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" }, "node_modules/axios": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", - "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.4", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -3382,15 +2936,6 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" }, - "node_modules/bigint-crypto-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.3.0.tgz", - "integrity": "sha512-jOTSb+drvEDxEq6OuUybOAv/xxoh3cuYRUIPyu8sSHQNKM303UQ2R1DAo45o1AkcIXw6fzbaFI1+xGGdaXs2lg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/bignumber.js": { "version": "9.1.2", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", @@ -3400,47 +2945,15 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { "node": ">=8" - } - }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/blakejs": { @@ -3448,31 +2961,6 @@ "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==" }, - "node_modules/blob-to-it": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.4.tgz", - "integrity": "sha512-iCmk0W4NdbrWgRRuxOriU8aM5ijeVLI61Zulsmg/lUHNr7pYjoj+U77opLefNagevtrrbMt3JQ5Qip7ar178kA==", - "dev": true, - "dependencies": { - "browser-readablestream-to-it": "^1.0.3" - } - }, - "node_modules/blockstore-core": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/blockstore-core/-/blockstore-core-1.0.5.tgz", - "integrity": "sha512-i/9CUMMvBALVbtSqUIuiWB3tk//a4Q2I2CEWiBuYNnhJvk/DWplXjLt8Sqc5VGkRVXVPSsEuH8fUtqJt5UFYcA==", - "dev": true, - "dependencies": { - "err-code": "^3.0.1", - "interface-blockstore": "^2.0.2", - "interface-store": "^2.0.1", - "it-all": "^1.0.4", - "it-drain": "^1.0.4", - "it-filter": "^1.0.2", - "it-take": "^1.0.1", - "multiformats": "^9.4.7" - } - }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3514,17 +3002,6 @@ "ms": "2.0.0" } }, - "node_modules/body-parser/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3605,18 +3082,6 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, - "node_modules/brotli-wasm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brotli-wasm/-/brotli-wasm-2.0.1.tgz", - "integrity": "sha512-+3USgYsC7bzb5yU0/p2HnnynZl0ak0E6uoIm4UW4Aby/8s8HFCq6NCfrrf1E9c3O8OCSzq3oYO1tUVqIi61Nww==", - "dev": true - }, - "node_modules/browser-readablestream-to-it": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.3.tgz", - "integrity": "sha512-+12sHB+Br8HIh6VAMVEG5r3UXCyESIgDW7kzk3BjIXa43DVqVwL7GC5TW3jeh+72dtcH99pPVpw0X8i0jt+/kw==", - "dev": true - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -3795,44 +3260,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/carbites": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/carbites/-/carbites-1.0.6.tgz", - "integrity": "sha512-dS9IQvnrb5VIRvSTNz5Ff+mB9d2MFfi5mojtJi7Rlss79VeF190jr0sZdA7eW0CGHotvHkZaWuM6wgfD9PEFRg==", - "dev": true, - "dependencies": { - "@ipld/car": "^3.0.1", - "@ipld/dag-cbor": "^6.0.3", - "@ipld/dag-pb": "^2.0.2", - "multiformats": "^9.0.4" - } - }, "node_modules/caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -3850,15 +3277,6 @@ "node": ">=12.19" } }, - "node_modules/cborg": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz", - "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", - "dev": true, - "bin": { - "cborg": "cli.js" - } - }, "node_modules/chai": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", @@ -3908,6 +3326,7 @@ "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", "dev": true, + "peer": true, "engines": { "node": "*" } @@ -4008,11 +3427,6 @@ "varint": "^5.0.0" } }, - "node_modules/cids/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, "node_modules/cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -4049,18 +3463,67 @@ } }, "node_modules/cli-table3": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", - "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", + "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", "dev": true, + "peer": true, "dependencies": { - "string-width": "^4.2.0" + "object-assign": "^4.1.0", + "string-width": "^2.1.1" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">=6" }, "optionalDependencies": { - "@colors/colors": "1.5.0" + "colors": "^1.1.2" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "peer": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "peer": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/cliui": { @@ -4101,6 +3564,16 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -4238,11 +3711,11 @@ } }, "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", + "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/compare-versions": { @@ -4257,6 +3730,55 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "peer": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "peer": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "peer": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -4393,51 +3915,26 @@ "node-fetch": "^2.6.12" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/crypt": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", "dev": true, + "peer": true, "engines": { "node": "*" } }, "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/dashdash": { @@ -4451,13 +3948,55 @@ "node": ">=0.10" } }, - "node_modules/data-uri-to-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", - "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/death": { @@ -4484,37 +4023,15 @@ } }, "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/decode-uri-component": { @@ -4675,17 +4192,6 @@ "node": ">=8" } }, - "node_modules/dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", - "dev": true, - "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" - } - }, "node_modules/dom-walk": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", @@ -4702,12 +4208,6 @@ "url": "https://dotenvx.com" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -4722,18 +4222,6 @@ "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "node_modules/electron-fetch": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.9.1.tgz", - "integrity": "sha512-M9qw6oUILGVrcENMSRRefE1MbHPIz0h79EKIeJWK9v563aT9Qkh8aEHPO1H5vi970wPirNY+jO9OpFoLiMsMGA==", - "dev": true, - "dependencies": { - "encoding": "^0.1.13" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -4767,15 +4255,6 @@ "node": ">= 0.8" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "devOptional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -4806,12 +4285,6 @@ "node": ">=6" } }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", - "dev": true - }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -4822,18 +4295,22 @@ } }, "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", + "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", @@ -4841,15 +4318,16 @@ "globalthis": "^1.0.3", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.1", + "hasown": "^2.0.2", "internal-slot": "^1.0.7", "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", @@ -4857,17 +4335,17 @@ "object-keys": "^1.1.1", "object.assign": "^4.1.5", "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", + "safe-array-concat": "^1.1.2", "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -4895,6 +4373,18 @@ "node": ">= 0.4" } }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", @@ -4936,9 +4426,9 @@ } }, "node_modules/es5-ext": { - "version": "0.10.63", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.63.tgz", - "integrity": "sha512-hUCZd2Byj/mNKjfP9jXrdVZ62B8KuA/VoK7X8nUh5qT+AxDmcbvZz041oDVZdbIN1qW6XY9VDNwzkvKnZvK2TQ==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", @@ -4966,12 +4456,15 @@ "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" }, "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" } }, "node_modules/escalade": { @@ -5036,11 +4529,6 @@ "node": ">=0.10" } }, - "node_modules/esniff/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/esprima": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", @@ -5094,6 +4582,97 @@ "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==" }, + "node_modules/eth-gas-reporter": { + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz", + "integrity": "sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==", + "dev": true, + "peer": true, + "dependencies": { + "@solidity-parser/parser": "^0.14.0", + "axios": "^1.5.1", + "cli-table3": "^0.5.0", + "colors": "1.4.0", + "ethereum-cryptography": "^1.0.3", + "ethers": "^5.7.2", + "fs-readdir-recursive": "^1.1.0", + "lodash": "^4.17.14", + "markdown-table": "^1.1.3", + "mocha": "^10.2.0", + "req-cwd": "^2.0.0", + "sha1": "^1.1.1", + "sync-request": "^6.0.0" + }, + "peerDependencies": { + "@codechecks/client": "^0.1.0" + }, + "peerDependenciesMeta": { + "@codechecks/client": { + "optional": true + } + } + }, + "node_modules/eth-gas-reporter/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "peer": true, + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/eth-gas-reporter/node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "peer": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, "node_modules/eth-lib": { "version": "0.1.29", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", @@ -5128,11 +4707,11 @@ } }, "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz", + "integrity": "sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==", "dependencies": { - "js-sha3": "^0.8.0" + "@noble/hashes": "^1.4.0" } }, "node_modules/ethereum-cryptography": { @@ -5300,15 +4879,6 @@ "es5-ext": "~0.10.14" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/eventemitter3": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", @@ -5324,16 +4894,16 @@ } }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -5364,33 +4934,10 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/express/node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "engines": { "node": ">= 0.6" } @@ -5403,17 +4950,6 @@ "ms": "2.0.0" } }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/express/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -5433,20 +4969,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/ext": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", @@ -5455,11 +4977,6 @@ "type": "^2.7.2" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5490,12 +5007,6 @@ "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true - }, "node_modules/fast-glob": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", @@ -5608,9 +5119,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.5", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", - "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -5635,34 +5146,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -5734,6 +5217,13 @@ "minipass": "^2.6.0" } }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true, + "peer": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -5824,11 +5314,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==", - "dev": true + "node_modules/get-port": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } }, "node_modules/get-stream": { "version": "6.0.1", @@ -5858,15 +5352,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/getconfig": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/getconfig/-/getconfig-4.5.0.tgz", - "integrity": "sha512-9vNCLPUkiYYB06EgYx/8PhyjV0eNSXWWeGSDXgLgAQLUQZb81SlHayMaP+dR8RzV0ISO3V6VOVGTUUx3ZR1dWQ==", - "dev": true, - "bin": { - "getconfig": "bin/getconfig" - } - }, "node_modules/getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -6027,12 +5512,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -6102,20 +5588,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/hamt-sharding": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hamt-sharding/-/hamt-sharding-2.0.1.tgz", - "integrity": "sha512-vnjrmdXG9dDs1m/H4iJ6z0JFI2NtgsW5keRkTcM85NGak69Mkf5PHUqBz+Xs0T4sg0ppvj9O5EGAJo40FTxmmA==", - "dev": true, - "dependencies": { - "sparse-array": "^1.3.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, "node_modules/handlebars": { "version": "4.7.8", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", @@ -6167,34 +5639,18 @@ "node": ">=6" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/hardhat": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.20.1.tgz", - "integrity": "sha512-q75xDQiQtCZcTMBwjTovrXEU5ECr49baxr4/OBkIu/ULTPzlB20yk1dRWNmD2IFbAeAeXggaWvQAdpiScaHtPw==", + "version": "2.22.3", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.3.tgz", + "integrity": "sha512-k8JV2ECWNchD6ahkg2BR5wKVxY0OiKot7fuxiIpRK0frRqyOljcR2vKwgWSLw6YIeDcNNA4xybj7Og7NSxr2hA==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/ethereumjs-block": "5.0.4", - "@nomicfoundation/ethereumjs-blockchain": "7.0.4", + "@nomicfoundation/edr": "^0.3.5", "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-evm": "2.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-statemanager": "2.0.4", - "@nomicfoundation/ethereumjs-trie": "6.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", - "@nomicfoundation/ethereumjs-verkle": "0.0.2", - "@nomicfoundation/ethereumjs-vm": "7.0.4", "@nomicfoundation/solidity-analyzer": "^0.1.0", "@sentry/node": "^5.18.1", "@types/bn.js": "^5.1.0", @@ -6250,240 +5706,24 @@ } }, "node_modules/hardhat-gas-reporter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-2.1.1.tgz", - "integrity": "sha512-h3PAU7iDiPNqPA4i7GcKgnIZsN3UIdALM4gdJNoTtfmF9PGVne5nFZRNX1N7Y2Mx+znbBqeV1mS7o/i6T7NkTg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz", + "integrity": "sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==", "dev": true, + "peer": true, "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/units": "^5.7.0", - "@solidity-parser/parser": "^0.18.0", - "axios": "^1.6.7", - "brotli-wasm": "^2.0.1", - "chalk": "4.1.2", - "cli-table3": "^0.6.3", - "ethereum-cryptography": "^2.1.3", - "glob": "^10.3.10", - "jsonschema": "^1.4.1", - "lodash": "^4.17.21", - "markdown-table": "2.0.0", - "sha1": "^1.1.1", - "viem": "2.7.14" + "array-uniq": "1.0.3", + "eth-gas-reporter": "^0.2.25", + "sha1": "^1.1.1" }, "peerDependencies": { - "hardhat": "^2.16.0" + "hardhat": "^2.0.2" } }, - "node_modules/hardhat-gas-reporter/node_modules/abitype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", - "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/wevm" - }, - "peerDependencies": { - "typescript": ">=5.0.4", - "zod": "^3 >=3.22.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/hardhat-gas-reporter/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", - "dev": true, - "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", - "dev": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/viem": { - "version": "2.7.14", - "resolved": "https://registry.npmjs.org/viem/-/viem-2.7.14.tgz", - "integrity": "sha512-5b1KB1gXli02GOQHZIUsRluNUwssl2t4hqdFAzyWPwJ744N83jAOBOjOkrGz7K3qMIv9b0GQt3DoZIErSQTPkQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wevm" - } - ], - "dependencies": { - "@adraffy/ens-normalize": "1.10.0", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@scure/bip32": "1.3.2", - "@scure/bip39": "1.2.1", - "abitype": "1.0.0", - "isows": "1.0.3", - "ws": "8.13.0" - }, - "peerDependencies": { - "typescript": ">=5.0.4" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/hardhat-gas-reporter/node_modules/viem/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dev": true, - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/viem/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "dev": true, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/viem/node_modules/@scure/bip32": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.2.tgz", - "integrity": "sha512-N1ZhksgwD3OBlwTv3R6KFEcPojl/W4ElJOeCZdi+vuI5QmTFwLq3OFf2zd2ROpKvxFdgZ6hUpb0dx9bVNEwYCA==", - "dev": true, - "dependencies": { - "@noble/curves": "~1.2.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/viem/node_modules/@scure/bip39": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", - "integrity": "sha512-Z3/Fsz1yr904dduJD0NpiyRHhRYHdcnyh73FZWiV+/qhWi83wNJ3NWolYqCEN+ZWsUz2TWwajJggcRE9r1zUYg==", - "dev": true, - "dependencies": { - "@noble/hashes": "~1.3.0", - "@scure/base": "~1.1.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/hardhat-gas-reporter/node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/hardhat/node_modules/@noble/hashes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", - "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "node_modules/hardhat/node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", "dev": true, "funding": [ { @@ -6695,9 +5935,9 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -6730,36 +5970,22 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/http-basic": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", "dev": true, + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/http-cache-semantics": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", @@ -6785,6 +6011,23 @@ "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==" }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "dev": true, + "peer": true + }, "node_modules/http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -6811,17 +6054,6 @@ "node": ">=10.19.0" } }, - "node_modules/http2-wrapper/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -6851,23 +6083,16 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/idb-keyval": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", - "integrity": "sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==", - "dev": true - }, "node_modules/idna-uts46-hx": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", @@ -6976,33 +6201,6 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", "dev": true }, - "node_modules/interface-blockstore": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/interface-blockstore/-/interface-blockstore-2.0.3.tgz", - "integrity": "sha512-OwVUnlNcx7H5HloK0Myv6c/C1q9cNG11HX6afdeU6q6kbuNj8jKCwVnmJHhC94LZaJ+9hvVOk4IUstb3Esg81w==", - "dev": true, - "dependencies": { - "interface-store": "^2.0.2", - "multiformats": "^9.0.4" - } - }, - "node_modules/interface-datastore": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-6.1.1.tgz", - "integrity": "sha512-AmCS+9CT34pp2u0QQVXjKztkuq3y5T+BIciuiHDDtDZucZD8VudosnSdUyXJV6IsRkN5jc4RFDhCk1O6Q3Gxjg==", - "dev": true, - "dependencies": { - "interface-store": "^2.0.2", - "nanoid": "^3.0.2", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/interface-store": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-2.0.2.tgz", - "integrity": "sha512-rScRlhDcz6k199EkHqT8NpM87ebN89ICOzILoBHgaG36/WX50N32BnU/kpZgCGPLhARRAWUUX5/cyaIjt7Kipg==", - "dev": true - }, "node_modules/internal-slot": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", @@ -7035,15 +6233,6 @@ "fp-ts": "^1.0.0" } }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", @@ -7052,211 +6241,6 @@ "node": ">= 0.10" } }, - "node_modules/ipfs-car": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/ipfs-car/-/ipfs-car-0.6.2.tgz", - "integrity": "sha512-tliuakkKKtCa4TTnFT3zJKjq/aD8EGKX8Y0ybCyrAW0fo/n2koZpxiLjBvtTs47Rqyji6ggXo+atPbJJ60hJmg==", - "dev": true, - "dependencies": { - "@ipld/car": "^3.2.3", - "@web-std/blob": "^3.0.1", - "bl": "^5.0.0", - "blockstore-core": "^1.0.2", - "browser-readablestream-to-it": "^1.0.2", - "idb-keyval": "^6.0.3", - "interface-blockstore": "^2.0.2", - "ipfs-core-types": "^0.8.3", - "ipfs-core-utils": "^0.12.1", - "ipfs-unixfs-exporter": "^7.0.4", - "ipfs-unixfs-importer": "^9.0.4", - "ipfs-utils": "^9.0.2", - "it-all": "^1.0.5", - "it-last": "^1.0.5", - "it-pipe": "^1.1.0", - "meow": "^9.0.0", - "move-file": "^2.1.0", - "multiformats": "^9.6.3", - "stream-to-it": "^0.2.3", - "streaming-iterables": "^6.0.0", - "uint8arrays": "^3.0.0" - }, - "bin": { - "🚘": "dist/cjs/cli/cli.js", - "ipfs-car": "dist/cjs/cli/cli.js" - } - }, - "node_modules/ipfs-core-types": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.8.4.tgz", - "integrity": "sha512-sbRZA1QX3xJ6ywTiVQZMOxhlhp4osAZX2SXx3azOLxAtxmGWDMkHYt722VV4nZ2GyJy8qyk5GHQIZ0uvQnpaTg==", - "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", - "dev": true, - "dependencies": { - "interface-datastore": "^6.0.2", - "multiaddr": "^10.0.0", - "multiformats": "^9.4.13" - } - }, - "node_modules/ipfs-core-utils": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.12.2.tgz", - "integrity": "sha512-RfxP3rPhXuqKIUmTAUhmee6fmaV3A7LMnjOUikRKpSyqESz/DR7aGK7tbttMxkZdkSEr0rFXlqbyb0vVwmn0wQ==", - "deprecated": "js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details", - "dev": true, - "dependencies": { - "any-signal": "^2.1.2", - "blob-to-it": "^1.0.1", - "browser-readablestream-to-it": "^1.0.1", - "debug": "^4.1.1", - "err-code": "^3.0.1", - "ipfs-core-types": "^0.8.4", - "ipfs-unixfs": "^6.0.3", - "ipfs-utils": "^9.0.2", - "it-all": "^1.0.4", - "it-map": "^1.0.4", - "it-peekable": "^1.0.2", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "multiaddr": "^10.0.0", - "multiaddr-to-uri": "^8.0.0", - "multiformats": "^9.4.13", - "nanoid": "^3.1.23", - "parse-duration": "^1.0.0", - "timeout-abort-controller": "^1.1.1", - "uint8arrays": "^3.0.0" - } - }, - "node_modules/ipfs-unixfs": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/ipfs-unixfs/-/ipfs-unixfs-6.0.9.tgz", - "integrity": "sha512-0DQ7p0/9dRB6XCb0mVCTli33GzIzSVx5udpJuVM47tGcD+W+Bl4LsnoLswd3ggNnNEakMv1FdoFITiEnchXDqQ==", - "dev": true, - "dependencies": { - "err-code": "^3.0.1", - "protobufjs": "^6.10.2" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/ipfs-unixfs-exporter": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/ipfs-unixfs-exporter/-/ipfs-unixfs-exporter-7.0.11.tgz", - "integrity": "sha512-qTYa69J7HbI2EIYNUddKPg9Y3rHkYZV0bNdmzZKA5+ZbwRVoUEuBW/cguEqTp22zHygh3sMnzYZFm0naVIdMgQ==", - "dev": true, - "dependencies": { - "@ipld/dag-cbor": "^7.0.2", - "@ipld/dag-pb": "^2.0.2", - "@multiformats/murmur3": "^1.0.3", - "err-code": "^3.0.1", - "hamt-sharding": "^2.0.0", - "interface-blockstore": "^2.0.3", - "ipfs-unixfs": "^6.0.0", - "it-last": "^1.0.5", - "multiformats": "^9.4.2", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/ipfs-unixfs-exporter/node_modules/@ipld/dag-cbor": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", - "integrity": "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==", - "dev": true, - "dependencies": { - "cborg": "^1.6.0", - "multiformats": "^9.5.4" - } - }, - "node_modules/ipfs-unixfs-importer": { - "version": "9.0.10", - "resolved": "https://registry.npmjs.org/ipfs-unixfs-importer/-/ipfs-unixfs-importer-9.0.10.tgz", - "integrity": "sha512-W+tQTVcSmXtFh7FWYWwPBGXJ1xDgREbIyI1E5JzDcimZLIyT5gGMfxR3oKPxxWj+GKMpP5ilvMQrbsPzWcm3Fw==", - "dev": true, - "dependencies": { - "@ipld/dag-pb": "^2.0.2", - "@multiformats/murmur3": "^1.0.3", - "bl": "^5.0.0", - "err-code": "^3.0.1", - "hamt-sharding": "^2.0.0", - "interface-blockstore": "^2.0.3", - "ipfs-unixfs": "^6.0.0", - "it-all": "^1.0.5", - "it-batch": "^1.0.8", - "it-first": "^1.0.6", - "it-parallel-batch": "^1.0.9", - "merge-options": "^3.0.4", - "multiformats": "^9.4.2", - "rabin-wasm": "^0.1.4", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/ipfs-utils": { - "version": "9.0.14", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-9.0.14.tgz", - "integrity": "sha512-zIaiEGX18QATxgaS0/EOQNoo33W0islREABAcxXE8n7y2MGAlB+hdsxXn4J0hGZge8IqVQhW8sWIb+oJz2yEvg==", - "dev": true, - "dependencies": { - "any-signal": "^3.0.0", - "browser-readablestream-to-it": "^1.0.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^3.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.1.5", - "it-all": "^1.0.4", - "it-glob": "^1.0.1", - "it-to-stream": "^1.0.0", - "merge-options": "^3.0.4", - "nanoid": "^3.1.20", - "native-fetch": "^3.0.0", - "node-fetch": "^2.6.8", - "react-native-fetch-api": "^3.0.0", - "stream-to-it": "^0.2.2" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/ipfs-utils/node_modules/any-signal": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-3.0.1.tgz", - "integrity": "sha512-xgZgJtKEa9YmDqXodIgl7Fl1C8yNXr8w6gXjqK3LW4GcEiYT+6AQfJSE/8SPsEpLLmcvbv8YU+qet94UewHxqg==", - "dev": true - }, - "node_modules/ipfs-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/is-arguments": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", @@ -7345,13 +6329,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7372,12 +6359,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-electron": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", - "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", - "dev": true - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -7436,18 +6417,6 @@ "npm": ">=3" } }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "dev": true, - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -7598,207 +6567,38 @@ } }, "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/iso-url": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.2.1.tgz", - "integrity": "sha512-9JPDgCN4B7QPkLtYAAOrEuAWvP9rWvR5offAr0/SeF046wIkglqH3VXgYYP6NcsKslH80UIVgmPqNe3j7tG2ng==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", - "dev": true, - "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" - } - }, - "node_modules/isows": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.3.tgz", - "integrity": "sha512-2cKei4vlmg2cxEjm3wVSqn8pcoRF/LX/wpifuuNquFO4SQmPwarClT+SUCA2lt+l581tTeZIPIZuIDo2jWN1fg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/wagmi-dev" - } - ], - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/it-all": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.6.tgz", - "integrity": "sha512-3cmCc6Heqe3uWi3CVM/k51fa/XbMFpQVzFoDsV0IZNHSQDyAXl3c4MjHkFX5kF3922OGj7Myv1nSEUgRtcuM1A==", - "dev": true - }, - "node_modules/it-batch": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/it-batch/-/it-batch-1.0.9.tgz", - "integrity": "sha512-7Q7HXewMhNFltTsAMdSz6luNhyhkhEtGGbYek/8Xb/GiqYMtwUmopE1ocPSiJKKp3rM4Dt045sNFoUu+KZGNyA==", - "dev": true - }, - "node_modules/it-drain": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.5.tgz", - "integrity": "sha512-r/GjkiW1bZswC04TNmUnLxa6uovme7KKwPhc+cb1hHU65E3AByypHH6Pm91WHuvqfFsm+9ws0kPtDBV3/8vmIg==", - "dev": true - }, - "node_modules/it-filter": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-1.0.3.tgz", - "integrity": "sha512-EI3HpzUrKjTH01miLHWmhNWy3Xpbx4OXMXltgrNprL5lDpF3giVpHIouFpr5l+evXw6aOfxhnt01BIB+4VQA+w==", - "dev": true - }, - "node_modules/it-first": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-1.0.7.tgz", - "integrity": "sha512-nvJKZoBpZD/6Rtde6FXqwDqDZGF1sCADmr2Zoc0hZsIvnE449gRFnGctxDf09Bzc/FWnHXAdaHVIetY6lrE0/g==", - "dev": true - }, - "node_modules/it-glob": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", - "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", - "dev": true, - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" - } - }, - "node_modules/it-last": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.6.tgz", - "integrity": "sha512-aFGeibeiX/lM4bX3JY0OkVCFkAw8+n9lkukkLNivbJRvNz8lI3YXv5xcqhFUV2lDJiraEK3OXRDbGuevnnR67Q==", - "dev": true - }, - "node_modules/it-map": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.6.tgz", - "integrity": "sha512-XT4/RM6UHIFG9IobGlQPFQUrlEKkU4eBUFG3qhWhfAdh1JfF2x11ShCrKCdmZ0OiZppPfoLuzcfA4cey6q3UAQ==", - "dev": true - }, - "node_modules/it-parallel-batch": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/it-parallel-batch/-/it-parallel-batch-1.0.11.tgz", - "integrity": "sha512-UWsWHv/kqBpMRmyZJzlmZeoAMA0F3SZr08FBdbhtbe+MtoEBgr/ZUAKrnenhXCBrsopy76QjRH2K/V8kNdupbQ==", - "dev": true, - "dependencies": { - "it-batch": "^1.0.9" - } - }, - "node_modules/it-peekable": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.3.tgz", - "integrity": "sha512-5+8zemFS+wSfIkSZyf0Zh5kNN+iGyccN02914BY4w/Dj+uoFEoPSvj5vaWn8pNZJNSxzjW0zHRxC3LUb2KWJTQ==", - "dev": true - }, - "node_modules/it-pipe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-1.1.0.tgz", - "integrity": "sha512-lF0/3qTVeth13TOnHVs0BTFaziwQF7m5Gg+E6JV0BXcLKutC92YjSi7bASgkPOXaLEb+YvNZrPorGMBIJvZfxg==", - "dev": true - }, - "node_modules/it-take": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-1.0.2.tgz", - "integrity": "sha512-u7I6qhhxH7pSevcYNaMECtkvZW365ARqAIt9K+xjdK1B2WUDEjQSfETkOCT8bxFq/59LqrN3cMLUtTgmDBaygw==", - "dev": true - }, - "node_modules/it-to-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-1.0.0.tgz", - "integrity": "sha512-pLULMZMAB/+vbdvbZtebC0nWBTbG581lk6w8P7DfIIIKUfa8FbY7Oi0FxZcFPbxvISs7A9E+cMpLDBc1XhpAOA==", - "dev": true, - "dependencies": { - "buffer": "^6.0.3", - "fast-fifo": "^1.0.0", - "get-iterator": "^1.0.2", - "p-defer": "^3.0.0", - "p-fifo": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/it-to-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, - "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" } }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, "node_modules/js-cookie": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-2.2.1.tgz", "integrity": "sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==", "dev": true }, - "node_modules/js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", @@ -8004,12 +6804,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true - }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", @@ -8035,45 +6829,18 @@ "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", "dev": true }, - "node_modules/lru-cache": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", - "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/markdown-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", - "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", + "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", "dev": true, - "dependencies": { - "repeat-string": "^1.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "peer": true }, "node_modules/md5.js": { "version": "1.3.5", @@ -8102,61 +6869,11 @@ "node": ">= 0.10.0" } }, - "node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", - "dev": true, - "dependencies": { - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -8238,15 +6955,6 @@ "dom-walk": "^0.1.0" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -8277,29 +6985,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/minimist-options/node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/minipass": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", @@ -8350,9 +7035,9 @@ } }, "node_modules/mocha": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.3.0.tgz", - "integrity": "sha512-uF2XJs+7xSLsrmIvn37i/wnc91nw7XjOQB8ccyx5aEgdnohr7n+rEiZP23WkCYHjilR6+EboEnbq/ZQDz4LSbg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", + "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", "dev": true, "dependencies": { "ansi-colors": "4.1.1", @@ -8556,70 +7241,12 @@ "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" }, - "node_modules/move-file": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/move-file/-/move-file-2.1.0.tgz", - "integrity": "sha512-i9qLW6gqboJ5Ht8bauZi7KlTnQ3QFpBCvMvFfEcHADKgHGeJ9BZMO7SFCTwHPV9Qa0du9DYY1Yx3oqlGt30nXA==", - "dev": true, - "dependencies": { - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/move-file/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/multiaddr": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-10.0.1.tgz", - "integrity": "sha512-G5upNcGzEGuTHkzxezPrrD6CaIHR9uo+7MwqhNVcXTs33IInon4y7nMiGxl2CY5hG7chvYQUQhz5V52/Qe3cbg==", - "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr", - "dev": true, - "dependencies": { - "dns-over-http-resolver": "^1.2.3", - "err-code": "^3.0.1", - "is-ip": "^3.1.0", - "multiformats": "^9.4.5", - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/multiaddr-to-uri": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-8.0.0.tgz", - "integrity": "sha512-dq4p/vsOOUdVEd1J1gl+R2GFrXJQH8yjLtz4hodqdVbieg39LvBOdMQRdQnfbg5LSM/q1BYNVf5CBbwZFFqBgA==", - "deprecated": "This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri", - "dev": true, - "dependencies": { - "multiaddr": "^10.0.0" - } - }, "node_modules/multibase": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", @@ -8662,17 +7289,6 @@ "varint": "^5.0.0" } }, - "node_modules/multicodec/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", - "dev": true - }, "node_modules/multihashes": { "version": "0.4.21", "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", @@ -8716,61 +7332,11 @@ "buffer": "^5.5.0" } }, - "node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/nano-json-stream-parser": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==" }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/native-abort-controller": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.4.tgz", - "integrity": "sha512-zp8yev7nxczDJMoP6pDxyD20IU0T22eX8VwN2ztDccKvSZhRaV33yP1BGwKSZfXuqWUzsXopVFjBdau9OOAwMQ==", - "dev": true, - "peerDependencies": { - "abort-controller": "*" - } - }, - "node_modules/native-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", - "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "dev": true, - "peerDependencies": { - "node-fetch": "*" - } - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -8790,27 +7356,6 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, - "node_modules/nft.storage": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/nft.storage/-/nft.storage-7.1.1.tgz", - "integrity": "sha512-OHFeRiWLcGCWHX8Kx3yvSt7qGbHwEROl0kcN2xaHWBaR0ApYH5DnjlqczXSwP9WwBDtjhyDk4IHReXSwuZkB7Q==", - "dev": true, - "dependencies": { - "@ipld/car": "^3.2.3", - "@ipld/dag-cbor": "^6.0.13", - "@web-std/blob": "^3.0.1", - "@web-std/fetch": "^4.1.2", - "@web-std/file": "^3.0.0", - "@web-std/form-data": "^3.0.0", - "carbites": "^1.0.6", - "ipfs-car": "^0.6.2", - "it-pipe": "^1.1.0", - "multiformats": "^9.6.4", - "p-retry": "^4.6.1", - "streaming-iterables": "^6.0.0", - "throttled-queue": "^2.1.2" - } - }, "node_modules/node-addon-api": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", @@ -8845,9 +7390,9 @@ } }, "node_modules/node-gyp-build": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.0.tgz", - "integrity": "sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -8875,54 +7420,6 @@ "nopt": "bin/nopt.js" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -9085,25 +7582,6 @@ "node": ">=12.20" } }, - "node_modules/p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", - "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", - "dev": true, - "dependencies": { - "fast-fifo": "^1.0.0", - "p-defer": "^3.0.0" - } - }, "node_modules/p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", @@ -9143,19 +7621,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "dev": true, - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-try": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", @@ -9177,11 +7642,12 @@ "node": ">=6" } }, - "node_modules/parse-duration": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-1.1.0.tgz", - "integrity": "sha512-z6t9dvSJYaPoQq7quMzdEagSFtpGu+utzHqqxmpVWNNZRIXnvqyCvn9XsTdh7c/w0Bqmdz3RB3YnRaKtpRtEXQ==", - "dev": true + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==", + "dev": true, + "peer": true }, "node_modules/parse-headers": { "version": "2.0.5", @@ -9232,45 +7698,11 @@ "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/path-parse": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true }, "node_modules/path-to-regexp": { "version": "0.1.7", @@ -9314,6 +7746,12 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -9411,26 +7849,11 @@ "integrity": "sha512-Nko8R0/kUo391jsEHHxrGM07QFdnPGvlmox4rmH0kNiNAashItAilhy4Mv4pK5gQmW5f4sXAF58fwJbmlkGcVw==", "dev": true }, - "node_modules/prettier-plugin-solidity/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -9438,12 +7861,6 @@ "node": ">=10" } }, - "node_modules/prettier-plugin-solidity/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -9452,6 +7869,23 @@ "node": ">= 0.6.0" } }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true, + "peer": true + }, + "node_modules/promise": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "dev": true, + "peer": true, + "dependencies": { + "asap": "~2.0.6" + } + }, "node_modules/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", @@ -9484,32 +7918,6 @@ "node": ">= 4" } }, - "node_modules/protobufjs": { - "version": "6.11.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", - "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -9550,6 +7958,22 @@ "node": ">=6" } }, + "node_modules/qs": { + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "dev": true, + "peer": true, + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", @@ -9584,29 +8008,14 @@ ] }, "node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "dev": true, + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "engines": { - "node": ">=8" - } - }, - "node_modules/rabin-wasm": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/rabin-wasm/-/rabin-wasm-0.1.5.tgz", - "integrity": "sha512-uWgQTo7pim1Rnj5TuWcCewRDTf0PEFTSlaUjWP4eY9EbLV9em08v89oCz/WO+wRxpYuO36XEHp4wgYQnAgOHzA==", - "dev": true, - "dependencies": { - "@assemblyscript/loader": "^0.9.4", - "bl": "^5.0.0", - "debug": "^4.3.1", - "minimist": "^1.2.5", - "node-fetch": "^2.6.1", - "readable-stream": "^3.6.0" + "node": ">=10" }, - "bin": { - "rabin-wasm": "cli/bin.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/randombytes": { @@ -9639,173 +8048,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-native-fetch-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/react-native-fetch-api/-/react-native-fetch-api-3.0.0.tgz", - "integrity": "sha512-g2rtqPjdroaboDKTsJCTlcmtw54E25OjyaunUP0anOZn4Fuo2IKs8BVfe02zVggA/UysbmfSnRJIqtNkAgggNA==", - "dev": true, - "dependencies": { - "p-defer": "^3.0.0" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -9831,15 +8073,6 @@ "node": ">=8.10.0" } }, - "node_modules/receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -9864,19 +8097,6 @@ "node": ">=6.0.0" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", - "dev": true, - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/reduce-flatten": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", @@ -9904,13 +8124,30 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "node_modules/req-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", + "integrity": "sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==", + "dev": true, + "peer": true, + "dependencies": { + "req-from": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/req-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/req-from/-/req-from-2.0.0.tgz", + "integrity": "sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==", "dev": true, + "peer": true, + "dependencies": { + "resolve-from": "^3.0.0" + }, "engines": { - "node": ">=0.10" + "node": ">=4" } }, "node_modules/request": { @@ -10009,6 +8246,16 @@ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" }, + "node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=4" + } + }, "node_modules/responselike": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", @@ -10028,12 +8275,6 @@ "node": ">=8" } }, - "node_modules/retimer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz", - "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==", - "dev": true - }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -10108,29 +8349,14 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rust-verkle-wasm": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/rust-verkle-wasm/-/rust-verkle-wasm-0.0.1.tgz", - "integrity": "sha512-BN6fiTsxcd2dCECz/cHtGTt9cdLJR925nh7iAuRcj8ymKw7OOaPmCneQZ7JePOJ/ia27TjEL91VdOi88Yf+mcA==", - "dev": true - }, - "node_modules/rustbn-wasm": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn-wasm/-/rustbn-wasm-0.2.0.tgz", - "integrity": "sha512-FThvYFNTqrEKGqXuseeg0zR7yROh/6U1617mCHF68OVqrN1tNKRN7Tdwy4WayPVsCmmK+eMxtIZX1qL6JxTkMg==", - "dev": true, - "dependencies": { - "@scure/base": "^1.1.1" - } - }, "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -10399,16 +8625,16 @@ } }, "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10456,6 +8682,7 @@ "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", "dev": true, + "peer": true, "dependencies": { "charenc": ">= 0.0.1", "crypt": ">= 0.0.1" @@ -10464,27 +8691,6 @@ "node": "*" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", @@ -10503,11 +8709,11 @@ } }, "node_modules/side-channel": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", - "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.7", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.4", "object-inspect": "^1.13.1" @@ -10820,8 +9026,17 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/solhint/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" } }, "node_modules/solhint/node_modules/glob": { @@ -10843,18 +9058,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/solhint/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/solhint/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -10884,13 +9087,10 @@ } }, "node_modules/solhint/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -10898,16 +9098,10 @@ "node": ">=10" } }, - "node_modules/solhint/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/solidity-ast": { - "version": "0.4.55", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.55.tgz", - "integrity": "sha512-qeEU/r/K+V5lrAw8iswf2/yfWAnSGs3WKPHI+zAFKFjX0dIBVXEU/swQ8eJQYHf6PJWUZFO2uWV4V1wEOkeQbA==", + "version": "0.4.56", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.56.tgz", + "integrity": "sha512-HgmsA/Gfklm/M8GFbCX/J1qkVH0spXHgALCNZ8fA8x5X+MFdn/8CP2gr5OVyXjXw6RZTPC/Sxl2RUDQOXyNMeA==", "dev": true, "dependencies": { "array.prototype.findlast": "^1.2.2" @@ -10920,9 +9114,9 @@ "dev": true }, "node_modules/solidity-coverage": { - "version": "0.8.8", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.8.tgz", - "integrity": "sha512-7RN6/8YAFMQNeMdSulARtE0VC5JitBAUMwvkr10FkOK+nux5q+WykrgSZntkWrX/VHzRa096P4OOViO0T9Q9Cw==", + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.12.tgz", + "integrity": "sha512-8cOB1PtjnjFRqOgwFiD8DaUsYJtVJ6+YdXQtSZDrLGf8cdhhh8xzTtGzVTGeBf15kTv0v7lYPJlV/az7zLEPJw==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.0.9", @@ -10935,7 +9129,7 @@ "global-modules": "^2.0.0", "globby": "^10.0.1", "jsonschema": "^1.2.4", - "lodash": "^4.17.15", + "lodash": "^4.17.21", "mocha": "^10.2.0", "node-emoji": "^1.10.0", "pify": "^4.0.1", @@ -10952,6 +9146,12 @@ "hardhat": "^2.11.0" } }, + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", + "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", + "dev": true + }, "node_modules/solidity-coverage/node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -11025,26 +9225,11 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -11064,12 +9249,6 @@ "node": ">=4" } }, - "node_modules/solidity-coverage/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/solidity-docgen": { "version": "0.6.0-beta.36", "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.36.tgz", @@ -11120,44 +9299,6 @@ "node": ">=0.10.0" } }, - "node_modules/sparse-array": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/sparse-array/-/sparse-array-1.3.2.tgz", - "integrity": "sha512-ZT711fePGn3+kQyLuv1fpd3rNSkNF8vd5Kv2D+qnOANeyKs3fx6bUMGWRPvgTTcYV64QMqZKZwcuaQSP3AZ0tg==", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11222,24 +9363,6 @@ "node": ">= 0.8" } }, - "node_modules/stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", - "dev": true, - "dependencies": { - "get-iterator": "^1.0.2" - } - }, - "node_modules/streaming-iterables": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/streaming-iterables/-/streaming-iterables-6.2.0.tgz", - "integrity": "sha512-3AYC8oB60WyD1ic7uHmN/vm2oRGzRnQ3XFBl/bFMDi1q1+nc5/vjMmiE4vroIya3jG59t87VpyAj/iXYxyw9AA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -11276,30 +9399,16 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11309,28 +9418,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11348,19 +9460,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-hex-prefix": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", @@ -11373,18 +9472,6 @@ "npm": ">=3" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-json-comments": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", @@ -11530,21 +9617,35 @@ "node": ">=8" } }, - "node_modules/swarm-js/node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "engines": { - "node": ">=10" + "node_modules/sync-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "dev": true, + "peer": true, + "dependencies": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/sync-rpc": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "dev": true, + "peer": true, + "dependencies": { + "get-port": "^3.1.0" } }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -11591,15 +9692,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", + "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -11635,11 +9736,50 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/throttled-queue": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/throttled-queue/-/throttled-queue-2.1.4.tgz", - "integrity": "sha512-YGdk8sdmr4ge3g+doFj/7RLF5kLM+Mi7DEciu9PHxnMJZMeVuZeTj31g4VE7ekUffx/IdbvrtOCiz62afg0mkg==", - "dev": true + "node_modules/then-request": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "dev": true, + "peer": true, + "dependencies": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/then-request/node_modules/@types/node": { + "version": "8.10.66", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==", + "dev": true, + "peer": true + }, + "node_modules/then-request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "dev": true, + "peer": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } }, "node_modules/timed-out": { "version": "4.0.1", @@ -11649,16 +9789,6 @@ "node": ">=0.10.0" } }, - "node_modules/timeout-abort-controller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz", - "integrity": "sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==", - "dev": true, - "dependencies": { - "abort-controller": "^3.0.0", - "retimer": "^2.0.0" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -11708,15 +9838,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/ts-command-line-args": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", @@ -11829,9 +9950,9 @@ "dev": true }, "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" }, "node_modules/type-check": { "version": "0.3.2", @@ -12002,9 +10123,9 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { "call-bind": "^1.0.7", @@ -12021,6 +10142,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true, + "peer": true + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -12064,15 +10192,6 @@ "node": ">=0.8.0" } }, - "node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "dev": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, "node_modules/ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", @@ -12094,9 +10213,9 @@ } }, "node_modules/undici": { - "version": "5.28.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", - "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dev": true, "dependencies": { "@fastify/busboy": "^2.0.0" @@ -12202,21 +10321,10 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "dev": true + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" }, "node_modules/vary": { "version": "1.1.2", @@ -12239,27 +10347,6 @@ "extsprintf": "^1.2.0" } }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "dev": true, - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/web3": { "version": "1.10.4", "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.4.tgz", @@ -12619,6 +10706,17 @@ "node": ">=8.0.0" } }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/web3-utils/node_modules/ethereum-cryptography": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", @@ -12702,15 +10800,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12791,24 +10889,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -12939,18 +11019,6 @@ "node": ">=10" } }, - "node_modules/yargs-unparser/node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 3b67e52..e5b0152 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@safe-global/protocol-kit": "^1.3.0", "@safe-global/safe-core-sdk-types": "^2.3.0", "chalk": "^4.1.2", - "commander": "^10.0.0", + "commander": "^12.0.0", "dotenv": "^16.0.3", "prompts": "^2.4.2", "solmate": "^6.2.0" @@ -42,12 +42,9 @@ "@types/mocha": "^9.1.1", "@types/prompts": "^2.4.4", "ethers": "^5.7.2", - "getconfig": "^4.5.0", "hardhat": "^2.12.5", - "hardhat-gas-reporter": "^2.1.1", "husky": "^8.0.0", "mime-types": "^2.1.35", - "nft.storage": "^7.0.0", "prettier": "^3.0.3", "prettier-plugin-solidity": "^1.1.3", "solhint": "^3.3.7", @@ -57,7 +54,6 @@ "solidity-docgen": "^0.6.0-beta.36", "ts-node": "^10.9.1", "typechain": "^8.1.1", - "typescript": "^4.9.4", - "web3": "^1.8.2" + "typescript": "^4.9.4" } } diff --git a/scripts/index.js b/scripts/index.js index a31a934..c63b51b 100755 --- a/scripts/index.js +++ b/scripts/index.js @@ -77,8 +77,6 @@ console.error = function (...args) { async function main() { const program = new Command(); - program.version(`${version}`); - program .name('dlc-link-eth') .description('CLI scripts to help with DLC.Link utilities') From 45a6ee84f48e0696a0f02aa23b04a09a5395eb37 Mon Sep 17 00:00:00 2001 From: scolear Date: Fri, 10 May 2024 18:15:39 +0200 Subject: [PATCH 06/27] wip: dockerizing hardhat --- .dockerignore | 2 + Dockerfile | 11 +- deploymentFiles/localhost/DLCBTC.json | 51 +++++++++ deploymentFiles/localhost/DLCManager.json | 86 +++++++++++++++ deploymentFiles/localhost/TokenManager.json | 103 ++++++++++++++++++ docker-compose.yml | 12 ++ docker/deploymentFiles/hardhat/DLCBTC.json | 51 +++++++++ .../deploymentFiles/hardhat/DLCManager.json | 86 +++++++++++++++ .../deploymentFiles/hardhat/TokenManager.json | 103 ++++++++++++++++++ docker/entrypoint.sh | 21 ++++ docker/hardhat.config.docker.js | 6 +- hardhat.config.js | 1 - scripts/99_contract-configs.js | 15 ++- .../helpers/deployment-handlers_versioned.js | 5 +- scripts/misc/deploy-all.js | 58 ++++++++++ 15 files changed, 598 insertions(+), 13 deletions(-) create mode 100644 deploymentFiles/localhost/DLCBTC.json create mode 100644 deploymentFiles/localhost/DLCManager.json create mode 100644 deploymentFiles/localhost/TokenManager.json create mode 100644 docker-compose.yml create mode 100644 docker/deploymentFiles/hardhat/DLCBTC.json create mode 100644 docker/deploymentFiles/hardhat/DLCManager.json create mode 100644 docker/deploymentFiles/hardhat/TokenManager.json create mode 100644 docker/entrypoint.sh create mode 100644 scripts/misc/deploy-all.js diff --git a/.dockerignore b/.dockerignore index f827a56..fe2c952 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,3 +6,5 @@ cache/ artifacts/ .openzeppelin/ .husky/ +contracts/mocks/ +contracts/upgrades/ diff --git a/Dockerfile b/Dockerfile index 296e28d..9059e28 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,15 +4,16 @@ COPY ./contracts /app/dlc-solidity/contracts COPY ./scripts /app/dlc-solidity/scripts COPY ./test /app/dlc-solidity/test COPY ./package.json /app/dlc-solidity/package.json -# COPY ./package-lock.json /app/dlc-solidity/package-lock.json +COPY ./package-lock.json /app/dlc-solidity/package-lock.json COPY ./docker/hardhat.config.docker.js /app/dlc-solidity/hardhat.config.js WORKDIR /app/dlc-solidity -RUN npm install +RUN npm ci -# copy entrypoint -# todo +# Copy the entrypoint script into the Docker image +COPY ./docker/entrypoint.sh /app/dlc-solidity/entrypoint.sh +RUN chmod +x /app/dlc-solidity/entrypoint.sh FROM node:20-alpine @@ -20,4 +21,4 @@ COPY --from=dlc-solidity-build /app/dlc-solidity /app/dlc-solidity WORKDIR /app/dlc-solidity -ENTRYPOINT [ "npx", "hardhat", "node" ] +ENTRYPOINT [ "/app/dlc-solidity/entrypoint.sh" ] diff --git a/deploymentFiles/localhost/DLCBTC.json b/deploymentFiles/localhost/DLCBTC.json new file mode 100644 index 0000000..c1bd39b --- /dev/null +++ b/deploymentFiles/localhost/DLCBTC.json @@ -0,0 +1,51 @@ +{ + "network": "localhost", + "updatedAt": "2024-05-10T16:00:48.495Z", + "gitSHA": "15ebf73", + "contract": { + "name": "DLCBTC", + "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "abi": [ + "constructor()", + "error BlacklistedRecipient()", + "error BlacklistedSender()", + "error NotAuthorized()", + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event Blacklisted(address account)", + "event BurnerSet(address burner)", + "event EIP712DomainChanged()", + "event Initialized(uint8 version)", + "event MinterSet(address minter)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "event Unblacklisted(address account)", + "function DOMAIN_SEPARATOR() view returns (bytes32)", + "function allowance(address owner, address spender) view returns (uint256)", + "function approve(address spender, uint256 amount) returns (bool)", + "function balanceOf(address account) view returns (uint256)", + "function blacklist(address account)", + "function blacklisted(address) view returns (bool)", + "function burn(address from, uint256 amount)", + "function decimals() view returns (uint8)", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", + "function eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", + "function initialize()", + "function mint(address to, uint256 amount)", + "function name() view returns (string)", + "function nonces(address owner) view returns (uint256)", + "function owner() view returns (address)", + "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", + "function renounceOwnership()", + "function setBurner(address burner)", + "function setMinter(address minter)", + "function symbol() view returns (string)", + "function totalSupply() view returns (uint256)", + "function transfer(address to, uint256 amount) returns (bool)", + "function transferFrom(address from, address to, uint256 amount) returns (bool)", + "function transferOwnership(address newOwner)", + "function unblacklist(address account)" + ] + } +} diff --git a/deploymentFiles/localhost/DLCManager.json b/deploymentFiles/localhost/DLCManager.json new file mode 100644 index 0000000..0b8a931 --- /dev/null +++ b/deploymentFiles/localhost/DLCManager.json @@ -0,0 +1,86 @@ +{ + "network": "localhost", + "updatedAt": "2024-05-10T16:00:48.405Z", + "gitSHA": "15ebf73", + "contract": { + "name": "DLCManager", + "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "abi": [ + "constructor()", + "error ContractNotWhitelisted()", + "error DLCNotClosing()", + "error DLCNotFound()", + "error DLCNotFunded()", + "error DLCNotReady()", + "error DuplicateSignature()", + "error IncompatibleRoles()", + "error InvalidRange()", + "error InvalidSigner()", + "error NotCreatorContract()", + "error NotDLCAdmin()", + "error NotEnoughSignatures()", + "error SignerNotApproved(address signer)", + "error ThresholdMinimumReached(uint16 _minimumThreshold)", + "error ThresholdTooLow(uint16 _minimumThreshold)", + "error Unauthorized()", + "event CloseDLC(bytes32 uuid, address sender)", + "event CreateDLC(bytes32 uuid, uint256 valueLocked, address protocolContract, address creator, uint256 timestamp)", + "event DefaultAdminDelayChangeCanceled()", + "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", + "event DefaultAdminTransferCanceled()", + "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", + "event Initialized(uint8 version)", + "event Paused(address account)", + "event PostCloseDLC(bytes32 uuid, string btcTxId, address sender)", + "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", + "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", + "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", + "event SetStatusFunded(bytes32 uuid, string btcTxId, address sender)", + "event SetThreshold(uint16 newThreshold)", + "event Unpaused(address account)", + "function APPROVED_SIGNER() view returns (bytes32)", + "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", + "function DLC_ADMIN_ROLE() view returns (bytes32)", + "function WHITELISTED_CONTRACT() view returns (bytes32)", + "function acceptDefaultAdminTransfer()", + "function attestorGroupPubKey() view returns (string)", + "function beginDefaultAdminTransfer(address newAdmin)", + "function cancelDefaultAdminTransfer()", + "function changeDefaultAdminDelay(uint48 newDelay)", + "function closeDLC(bytes32 uuid)", + "function createDLC(uint256 valueLocked, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints) returns (bytes32)", + "function defaultAdmin() view returns (address)", + "function defaultAdminDelay() view returns (uint48)", + "function defaultAdminDelayIncreaseWait() view returns (uint48)", + "function dlcIDsByUUID(bytes32) view returns (uint256)", + "function dlcs(uint256) view returns (bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)", + "function getAllDLCs(uint256 startIndex, uint256 endIndex) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", + "function getDLC(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", + "function getDLCByIndex(uint256 index) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", + "function getMinimumThreshold() view returns (uint16)", + "function getRoleAdmin(bytes32 role) view returns (bytes32)", + "function getSignerCount() view returns (uint16)", + "function getThreshold() view returns (uint16)", + "function grantRole(bytes32 role, address account)", + "function hasRole(bytes32 role, address account) view returns (bool)", + "function initialize(address defaultAdmin, address dlcAdminRole, uint16 threshold)", + "function owner() view returns (address)", + "function pauseContract()", + "function paused() view returns (bool)", + "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", + "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", + "function postCloseDLC(bytes32 uuid, string btcTxId, bytes[] signatures)", + "function renounceRole(bytes32 role, address account)", + "function revokeRole(bytes32 role, address account)", + "function rollbackDefaultAdminDelay()", + "function setAttestorGroupPubKey(string pubKey)", + "function setStatusFunded(bytes32 uuid, string btcTxId, bytes[] signatures, string taprootPubKey)", + "function setTSSCommitment(bytes32 commitment)", + "function setThreshold(uint16 newThreshold)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function tssCommitment() view returns (bytes32)", + "function unpauseContract()" + ] + } +} diff --git a/deploymentFiles/localhost/TokenManager.json b/deploymentFiles/localhost/TokenManager.json new file mode 100644 index 0000000..2e4507b --- /dev/null +++ b/deploymentFiles/localhost/TokenManager.json @@ -0,0 +1,103 @@ +{ + "network": "localhost", + "updatedAt": "2024-05-10T16:00:48.565Z", + "gitSHA": "15ebf73", + "contract": { + "name": "TokenManager", + "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "abi": [ + "constructor()", + "error DepositTooLarge(uint256 deposit, uint256 maximumDeposit)", + "error DepositTooSmall(uint256 deposit, uint256 minimumDeposit)", + "error FeeRateOutOfBounds(uint256 feeRate)", + "error InsufficientTokenBalance(uint256 balance, uint256 amount)", + "error NotDLCAdmin()", + "error NotDLCManagerContract()", + "error NotOwner()", + "error NotPauser()", + "error NotWhitelisted()", + "event Burn(address from, uint256 amount)", + "event CloseVault(bytes32 dlcUUID, address owner)", + "event DefaultAdminDelayChangeCanceled()", + "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", + "event DefaultAdminTransferCanceled()", + "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", + "event Initialized(uint8 version)", + "event Mint(address to, uint256 amount)", + "event NewDLCManagerContract(address newDLCManagerAddress)", + "event Paused(address account)", + "event PostCloseDLCHandler(bytes32 dlcUUID, string btcTxId, address owner)", + "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", + "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", + "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", + "event SetBtcFeeRecipient(string btcFeeRecipient)", + "event SetBtcMintFeeRate(uint256 newBtcMintFeeRate)", + "event SetBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", + "event SetMaximumDeposit(uint256 newMaximumDeposit)", + "event SetMinimumDeposit(uint256 newMinimumDeposit)", + "event SetStatusFunded(bytes32 dlcUUID, string btcTxId, address owner)", + "event SetWhitelistingEnabled(bool isWhitelistingEnabled)", + "event SetupVault(bytes32 dlcUUID, uint256 btcDeposit, address owner)", + "event TransferTokenContractOwnership(address newOwner)", + "event Unpaused(address account)", + "event UnwhitelistAddress(address addressToUnWhitelist)", + "event WhitelistAddress(address addressToWhitelist)", + "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", + "function DLC_ADMIN_ROLE() view returns (bytes32)", + "function DLC_MANAGER_ROLE() view returns (bytes32)", + "function PAUSER_ROLE() view returns (bytes32)", + "function acceptDefaultAdminTransfer()", + "function beginDefaultAdminTransfer(address newAdmin)", + "function blacklistOnTokenContract(address account)", + "function btcFeeRecipient() view returns (string)", + "function btcMintFeeRate() view returns (uint256)", + "function btcRedeemFeeRate() view returns (uint256)", + "function cancelDefaultAdminTransfer()", + "function changeDefaultAdminDelay(uint48 newDelay)", + "function closeVault(bytes32 uuid)", + "function defaultAdmin() view returns (address)", + "function defaultAdminDelay() view returns (uint48)", + "function defaultAdminDelayIncreaseWait() view returns (uint48)", + "function dlcBTC() view returns (address)", + "function dlcManager() view returns (address)", + "function getAllVaultUUIDsForAddress(address owner) view returns (bytes32[])", + "function getAllVaultsForAddress(address owner) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", + "function getRoleAdmin(bytes32 role) view returns (bytes32)", + "function getVault(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", + "function grantRole(bytes32 role, address account)", + "function hasRole(bytes32 role, address account) view returns (bool)", + "function initialize(address defaultAdmin, address dlcAdminRole, address dlcManagerAddress, address tokenContract, string btcFeeRecipientToSet)", + "function maximumDeposit() view returns (uint256)", + "function minimumDeposit() view returns (uint256)", + "function owner() view returns (address)", + "function pauseContract()", + "function paused() view returns (bool)", + "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", + "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", + "function postCloseDLCHandler(bytes32 uuid, string btcTxId)", + "function renounceRole(bytes32 role, address account)", + "function revokeRole(bytes32 role, address account)", + "function rollbackDefaultAdminDelay()", + "function setBtcFeeRecipient(string btcFeeRecipientToSet)", + "function setBtcMintFeeRate(uint256 newBtcMintFeeRate)", + "function setBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", + "function setBurnerOnTokenContract(address burner)", + "function setMaximumDeposit(uint256 newMaximumDeposit)", + "function setMinimumDeposit(uint256 newMinimumDeposit)", + "function setMinterOnTokenContract(address minter)", + "function setStatusFunded(bytes32 uuid, string btcTxId)", + "function setWhitelistingEnabled(bool isWhitelistingEnabled)", + "function setupVault(uint256 btcDeposit) returns (bytes32)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function transferTokenContractOwnership(address newOwner)", + "function unblacklistOnTokenContract(address account)", + "function unpauseContract()", + "function unwhitelistAddress(address addressToUnWhitelist)", + "function updateDLCManagerContract(address newDLCManagerAddress)", + "function userVaults(address, uint256) view returns (bytes32)", + "function whitelistAddress(address addressToWhitelist)", + "function whitelistingEnabled() view returns (bool)" + ] + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a324b11 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.9' +services: + hardhat: + build: . + network_mode: "host" + ports: + - "8545:8545" + volumes: + - ./docker/deploymentFiles:/app/dlc-solidity/deploymentFiles + environment: + - GITSHA=N/A + - DEPLOYMENTPATH=/app/dlc-solidity/deploymentFiles/hardhat diff --git a/docker/deploymentFiles/hardhat/DLCBTC.json b/docker/deploymentFiles/hardhat/DLCBTC.json new file mode 100644 index 0000000..0275ff1 --- /dev/null +++ b/docker/deploymentFiles/hardhat/DLCBTC.json @@ -0,0 +1,51 @@ +{ + "network": "hardhat", + "updatedAt": "2024-05-10T16:05:33.919Z", + "gitSHA": "N/A", + "contract": { + "name": "DLCBTC", + "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "abi": [ + "constructor()", + "error BlacklistedRecipient()", + "error BlacklistedSender()", + "error NotAuthorized()", + "event Approval(address indexed owner, address indexed spender, uint256 value)", + "event Blacklisted(address account)", + "event BurnerSet(address burner)", + "event EIP712DomainChanged()", + "event Initialized(uint8 version)", + "event MinterSet(address minter)", + "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", + "event Transfer(address indexed from, address indexed to, uint256 value)", + "event Unblacklisted(address account)", + "function DOMAIN_SEPARATOR() view returns (bytes32) @29000000", + "function allowance(address owner, address spender) view returns (uint256) @29000000", + "function approve(address spender, uint256 amount) returns (bool) @29000000", + "function balanceOf(address account) view returns (uint256) @29000000", + "function blacklist(address account) @29000000", + "function blacklisted(address) view returns (bool) @29000000", + "function burn(address from, uint256 amount) @29000000", + "function decimals() view returns (uint8) @29000000", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool) @29000000", + "function eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) @29000000", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool) @29000000", + "function initialize() @29000000", + "function mint(address to, uint256 amount) @29000000", + "function name() view returns (string) @29000000", + "function nonces(address owner) view returns (uint256) @29000000", + "function owner() view returns (address) @29000000", + "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) @29000000", + "function renounceOwnership() @29000000", + "function setBurner(address burner) @29000000", + "function setMinter(address minter) @29000000", + "function symbol() view returns (string) @29000000", + "function totalSupply() view returns (uint256) @29000000", + "function transfer(address to, uint256 amount) returns (bool) @29000000", + "function transferFrom(address from, address to, uint256 amount) returns (bool) @29000000", + "function transferOwnership(address newOwner) @29000000", + "function unblacklist(address account) @29000000" + ] + } +} diff --git a/docker/deploymentFiles/hardhat/DLCManager.json b/docker/deploymentFiles/hardhat/DLCManager.json new file mode 100644 index 0000000..ed266c7 --- /dev/null +++ b/docker/deploymentFiles/hardhat/DLCManager.json @@ -0,0 +1,86 @@ +{ + "network": "hardhat", + "updatedAt": "2024-05-10T16:05:33.730Z", + "gitSHA": "N/A", + "contract": { + "name": "DLCManager", + "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "abi": [ + "constructor()", + "error ContractNotWhitelisted()", + "error DLCNotClosing()", + "error DLCNotFound()", + "error DLCNotFunded()", + "error DLCNotReady()", + "error DuplicateSignature()", + "error IncompatibleRoles()", + "error InvalidRange()", + "error InvalidSigner()", + "error NotCreatorContract()", + "error NotDLCAdmin()", + "error NotEnoughSignatures()", + "error SignerNotApproved(address signer)", + "error ThresholdMinimumReached(uint16 _minimumThreshold)", + "error ThresholdTooLow(uint16 _minimumThreshold)", + "error Unauthorized()", + "event CloseDLC(bytes32 uuid, address sender)", + "event CreateDLC(bytes32 uuid, uint256 valueLocked, address protocolContract, address creator, uint256 timestamp)", + "event DefaultAdminDelayChangeCanceled()", + "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", + "event DefaultAdminTransferCanceled()", + "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", + "event Initialized(uint8 version)", + "event Paused(address account)", + "event PostCloseDLC(bytes32 uuid, string btcTxId, address sender)", + "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", + "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", + "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", + "event SetStatusFunded(bytes32 uuid, string btcTxId, address sender)", + "event SetThreshold(uint16 newThreshold)", + "event Unpaused(address account)", + "function APPROVED_SIGNER() view returns (bytes32) @29000000", + "function DEFAULT_ADMIN_ROLE() view returns (bytes32) @29000000", + "function DLC_ADMIN_ROLE() view returns (bytes32) @29000000", + "function WHITELISTED_CONTRACT() view returns (bytes32) @29000000", + "function acceptDefaultAdminTransfer() @29000000", + "function attestorGroupPubKey() view returns (string) @29000000", + "function beginDefaultAdminTransfer(address newAdmin) @29000000", + "function cancelDefaultAdminTransfer() @29000000", + "function changeDefaultAdminDelay(uint48 newDelay) @29000000", + "function closeDLC(bytes32 uuid) @29000000", + "function createDLC(uint256 valueLocked, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints) returns (bytes32) @29000000", + "function defaultAdmin() view returns (address) @29000000", + "function defaultAdminDelay() view returns (uint48) @29000000", + "function defaultAdminDelayIncreaseWait() view returns (uint48) @29000000", + "function dlcIDsByUUID(bytes32) view returns (uint256) @29000000", + "function dlcs(uint256) view returns (bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey) @29000000", + "function getAllDLCs(uint256 startIndex, uint256 endIndex) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[]) @29000000", + "function getDLC(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)) @29000000", + "function getDLCByIndex(uint256 index) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)) @29000000", + "function getMinimumThreshold() view returns (uint16) @29000000", + "function getRoleAdmin(bytes32 role) view returns (bytes32) @29000000", + "function getSignerCount() view returns (uint16) @29000000", + "function getThreshold() view returns (uint16) @29000000", + "function grantRole(bytes32 role, address account) @29000000", + "function hasRole(bytes32 role, address account) view returns (bool) @29000000", + "function initialize(address defaultAdmin, address dlcAdminRole, uint16 threshold) @29000000", + "function owner() view returns (address) @29000000", + "function pauseContract() @29000000", + "function paused() view returns (bool) @29000000", + "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule) @29000000", + "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule) @29000000", + "function postCloseDLC(bytes32 uuid, string btcTxId, bytes[] signatures) @29000000", + "function renounceRole(bytes32 role, address account) @29000000", + "function revokeRole(bytes32 role, address account) @29000000", + "function rollbackDefaultAdminDelay() @29000000", + "function setAttestorGroupPubKey(string pubKey) @29000000", + "function setStatusFunded(bytes32 uuid, string btcTxId, bytes[] signatures, string taprootPubKey) @29000000", + "function setTSSCommitment(bytes32 commitment) @29000000", + "function setThreshold(uint16 newThreshold) @29000000", + "function supportsInterface(bytes4 interfaceId) view returns (bool) @29000000", + "function tssCommitment() view returns (bytes32) @29000000", + "function unpauseContract() @29000000" + ] + } +} diff --git a/docker/deploymentFiles/hardhat/TokenManager.json b/docker/deploymentFiles/hardhat/TokenManager.json new file mode 100644 index 0000000..a5b2282 --- /dev/null +++ b/docker/deploymentFiles/hardhat/TokenManager.json @@ -0,0 +1,103 @@ +{ + "network": "hardhat", + "updatedAt": "2024-05-10T16:05:33.991Z", + "gitSHA": "N/A", + "contract": { + "name": "TokenManager", + "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "abi": [ + "constructor()", + "error DepositTooLarge(uint256 deposit, uint256 maximumDeposit)", + "error DepositTooSmall(uint256 deposit, uint256 minimumDeposit)", + "error FeeRateOutOfBounds(uint256 feeRate)", + "error InsufficientTokenBalance(uint256 balance, uint256 amount)", + "error NotDLCAdmin()", + "error NotDLCManagerContract()", + "error NotOwner()", + "error NotPauser()", + "error NotWhitelisted()", + "event Burn(address from, uint256 amount)", + "event CloseVault(bytes32 dlcUUID, address owner)", + "event DefaultAdminDelayChangeCanceled()", + "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", + "event DefaultAdminTransferCanceled()", + "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", + "event Initialized(uint8 version)", + "event Mint(address to, uint256 amount)", + "event NewDLCManagerContract(address newDLCManagerAddress)", + "event Paused(address account)", + "event PostCloseDLCHandler(bytes32 dlcUUID, string btcTxId, address owner)", + "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", + "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", + "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", + "event SetBtcFeeRecipient(string btcFeeRecipient)", + "event SetBtcMintFeeRate(uint256 newBtcMintFeeRate)", + "event SetBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", + "event SetMaximumDeposit(uint256 newMaximumDeposit)", + "event SetMinimumDeposit(uint256 newMinimumDeposit)", + "event SetStatusFunded(bytes32 dlcUUID, string btcTxId, address owner)", + "event SetWhitelistingEnabled(bool isWhitelistingEnabled)", + "event SetupVault(bytes32 dlcUUID, uint256 btcDeposit, address owner)", + "event TransferTokenContractOwnership(address newOwner)", + "event Unpaused(address account)", + "event UnwhitelistAddress(address addressToUnWhitelist)", + "event WhitelistAddress(address addressToWhitelist)", + "function DEFAULT_ADMIN_ROLE() view returns (bytes32) @29000000", + "function DLC_ADMIN_ROLE() view returns (bytes32) @29000000", + "function DLC_MANAGER_ROLE() view returns (bytes32) @29000000", + "function PAUSER_ROLE() view returns (bytes32) @29000000", + "function acceptDefaultAdminTransfer() @29000000", + "function beginDefaultAdminTransfer(address newAdmin) @29000000", + "function blacklistOnTokenContract(address account) @29000000", + "function btcFeeRecipient() view returns (string) @29000000", + "function btcMintFeeRate() view returns (uint256) @29000000", + "function btcRedeemFeeRate() view returns (uint256) @29000000", + "function cancelDefaultAdminTransfer() @29000000", + "function changeDefaultAdminDelay(uint48 newDelay) @29000000", + "function closeVault(bytes32 uuid) @29000000", + "function defaultAdmin() view returns (address) @29000000", + "function defaultAdminDelay() view returns (uint48) @29000000", + "function defaultAdminDelayIncreaseWait() view returns (uint48) @29000000", + "function dlcBTC() view returns (address) @29000000", + "function dlcManager() view returns (address) @29000000", + "function getAllVaultUUIDsForAddress(address owner) view returns (bytes32[]) @29000000", + "function getAllVaultsForAddress(address owner) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[]) @29000000", + "function getRoleAdmin(bytes32 role) view returns (bytes32) @29000000", + "function getVault(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)) @29000000", + "function grantRole(bytes32 role, address account) @29000000", + "function hasRole(bytes32 role, address account) view returns (bool) @29000000", + "function initialize(address defaultAdmin, address dlcAdminRole, address dlcManagerAddress, address tokenContract, string btcFeeRecipientToSet) @29000000", + "function maximumDeposit() view returns (uint256) @29000000", + "function minimumDeposit() view returns (uint256) @29000000", + "function owner() view returns (address) @29000000", + "function pauseContract() @29000000", + "function paused() view returns (bool) @29000000", + "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule) @29000000", + "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule) @29000000", + "function postCloseDLCHandler(bytes32 uuid, string btcTxId) @29000000", + "function renounceRole(bytes32 role, address account) @29000000", + "function revokeRole(bytes32 role, address account) @29000000", + "function rollbackDefaultAdminDelay() @29000000", + "function setBtcFeeRecipient(string btcFeeRecipientToSet) @29000000", + "function setBtcMintFeeRate(uint256 newBtcMintFeeRate) @29000000", + "function setBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate) @29000000", + "function setBurnerOnTokenContract(address burner) @29000000", + "function setMaximumDeposit(uint256 newMaximumDeposit) @29000000", + "function setMinimumDeposit(uint256 newMinimumDeposit) @29000000", + "function setMinterOnTokenContract(address minter) @29000000", + "function setStatusFunded(bytes32 uuid, string btcTxId) @29000000", + "function setWhitelistingEnabled(bool isWhitelistingEnabled) @29000000", + "function setupVault(uint256 btcDeposit) returns (bytes32) @29000000", + "function supportsInterface(bytes4 interfaceId) view returns (bool) @29000000", + "function transferTokenContractOwnership(address newOwner) @29000000", + "function unblacklistOnTokenContract(address account) @29000000", + "function unpauseContract() @29000000", + "function unwhitelistAddress(address addressToUnWhitelist) @29000000", + "function updateDLCManagerContract(address newDLCManagerAddress) @29000000", + "function userVaults(address, uint256) view returns (bytes32) @29000000", + "function whitelistAddress(address addressToWhitelist) @29000000", + "function whitelistingEnabled() view returns (bool) @29000000" + ] + } +} diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 0000000..4e7f33e --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Start the Hardhat node in the background +npx hardhat node >hardhat.log 2>&1 & + +# Wait for the Hardhat node to be ready +while ! nc -z localhost 8545; do + sleep 1 +done +echo "Hardhat node is ready" + +# Run your deployment and initialization scripts +# npx hardhat run --network localhost scripts/deploy.js +# npx hardhat run --network localhost scripts/initialize.js + +mkdir deploymentFiles +mkdir deploymentFiles/hardhat +node scripts/misc/deploy-all.js + +# Keep the script running so the Docker container doesn't exit +tail -f /dev/null diff --git a/docker/hardhat.config.docker.js b/docker/hardhat.config.docker.js index 61704bc..21309da 100644 --- a/docker/hardhat.config.docker.js +++ b/docker/hardhat.config.docker.js @@ -13,7 +13,7 @@ require('dotenv').config(); module.exports = { defaultNetwork: 'hardhat', solidity: { - version: '0.8.17', + version: '0.8.18', settings: { optimizer: { enabled: true, @@ -22,6 +22,8 @@ module.exports = { }, }, networks: { - hardhat: {}, + hardhat: { + chainId: 31337, + }, }, }; diff --git a/hardhat.config.js b/hardhat.config.js index dd6e48e..091c033 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -3,7 +3,6 @@ require('@nomicfoundation/hardhat-toolbox'); require('@openzeppelin/hardhat-upgrades'); require('@nomiclabs/hardhat-solhint'); -require('hardhat-gas-reporter'); require('solidity-coverage'); require('solidity-docgen'); diff --git a/scripts/99_contract-configs.js b/scripts/99_contract-configs.js index 570557b..33dcdcf 100644 --- a/scripts/99_contract-configs.js +++ b/scripts/99_contract-configs.js @@ -30,17 +30,26 @@ async function afterDeployment(contractName, contractObject) { ); try { await saveDeploymentInfo( - deploymentInfo(hardhat, contractObject, contractName) + deploymentInfo( + hardhat, + contractObject, + contractName, + process.env.GITSHA + ), + process.env.DEPLOYMENTPATH + ? `${process.env.DEPLOYMENTPATH}/${contractName}.json` + : undefined ); } catch (error) { console.error(error); } } -module.exports = function getContractConfigs(networkConfig) { +module.exports = function getContractConfigs(networkConfig, _btcFeeRecipient) { const network = hardhat.network.name; const { deployer, dlcAdminSafes } = networkConfig; - const btcFeeRecipient = '0014e60f61fa2f2941217934d5f9976bf27381b3b036'; + const btcFeeRecipient = + _btcFeeRecipient ?? '0014e60f61fa2f2941217934d5f9976bf27381b3b036'; const threshold = 2; return [ diff --git a/scripts/helpers/deployment-handlers_versioned.js b/scripts/helpers/deployment-handlers_versioned.js index 528720b..596c282 100644 --- a/scripts/helpers/deployment-handlers_versioned.js +++ b/scripts/helpers/deployment-handlers_versioned.js @@ -1,11 +1,12 @@ const fs = require('fs/promises'); const { execSync } = require('child_process'); -function deploymentInfo(hardhat, contract, contractName) { +function deploymentInfo(hardhat, contract, contractName, _gitSHA) { const deployInfo = { network: hardhat.network.name, updatedAt: new Date().toISOString(), - gitSHA: execSync('git rev-parse --short HEAD').toString().trim(), + gitSHA: + _gitSHA ?? execSync('git rev-parse --short HEAD').toString().trim(), contract: { name: contractName, address: contract.address, diff --git a/scripts/misc/deploy-all.js b/scripts/misc/deploy-all.js new file mode 100644 index 0000000..1c7d3c8 --- /dev/null +++ b/scripts/misc/deploy-all.js @@ -0,0 +1,58 @@ +require('dotenv').config(); +const prompts = require('prompts'); +const hardhat = require('hardhat'); +const getContractConfigs = require('../99_contract-configs'); +const dlcAdminSafesConfigs = require('../helpers/dlc-admin-safes'); +const { + saveDeploymentInfo, + deploymentInfo, + loadDeploymentInfo, +} = require('../helpers/deployment-handlers_versioned'); +const { loadContractAddress } = require('../helpers/utils'); + +prompts.inject([true, true, true, true, true, true]); + +async function main() { + const network = hardhat.network.name; + const accounts = await hardhat.ethers.getSigners(); + const deployer = accounts[0]; + const dlcAdminSafes = { + medium: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', + critical: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', + }; + + console.log(network, dlcAdminSafes); + + if (!dlcAdminSafes) throw new Error('DLC Admin Safe address not found.'); + + const contractConfigs = getContractConfigs( + { + deployer, + dlcAdminSafes, + }, + process.env.BTC_FEE_RECIPIENT + ); + + await hardhat.run('compile'); + + for (const contractConfig of contractConfigs) { + const requirements = contractConfig.requirements; + const reqs = {}; + for (const requirement of requirements) { + reqs[requirement] = await loadContractAddress(requirement, network); + } + await contractConfig.deploy(reqs); + } + + console.log('Deployment complete'); +} + +// make sure we catch all errors +main() + .then(() => { + process.exit(0); + }) + .catch((err) => { + console.error(err); + process.exit(1); + }); From 7b07a5785741740df38119caae8755159cefe8dc Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 16:44:17 +0200 Subject: [PATCH 07/27] working deployment dockerization --- .dockerignore | 7 + .github/workflows/hardhat-test.yaml | 8 +- .gitignore | 1 + contracts/upgrades/DLCLinkLibraryV2Test.sol | 43 -- contracts/upgrades/DLCManagerV2Test.sol | 442 ------------------ contracts/upgrades/IDLCManagerV2.sol | 30 -- contracts/upgrades/TokenManagerTest.sol | 359 -------------- deploymentFiles/localhost/DLCBTC.json | 6 +- deploymentFiles/localhost/DLCManager.json | 6 +- deploymentFiles/localhost/TokenManager.json | 6 +- docker-compose.yml | 3 - .../{hardhat => localhost}/DLCBTC.json | 56 +-- .../{hardhat => localhost}/DLCManager.json | 88 ++-- .../{hardhat => localhost}/TokenManager.json | 114 ++--- docker/entrypoint.sh | 19 +- docker/hardhat.config.docker.js | 6 - hardhat.config.js | 37 -- package.json | 2 +- scripts/99_contract-configs.js | 15 +- .../helpers/deployment-handlers_versioned.js | 12 +- scripts/misc/deploy-all.js | 6 - test/TokenManagerProxy.test.js | 2 +- 22 files changed, 166 insertions(+), 1102 deletions(-) delete mode 100644 contracts/upgrades/DLCLinkLibraryV2Test.sol delete mode 100644 contracts/upgrades/DLCManagerV2Test.sol delete mode 100644 contracts/upgrades/IDLCManagerV2.sol delete mode 100644 contracts/upgrades/TokenManagerTest.sol rename docker/deploymentFiles/{hardhat => localhost}/DLCBTC.json (51%) rename docker/deploymentFiles/{hardhat => localhost}/DLCManager.json (61%) rename docker/deploymentFiles/{hardhat => localhost}/TokenManager.json (58%) diff --git a/.dockerignore b/.dockerignore index fe2c952..615da49 100644 --- a/.dockerignore +++ b/.dockerignore @@ -8,3 +8,10 @@ artifacts/ .husky/ contracts/mocks/ contracts/upgrades/ + +scripts/log.txt +scripts/log.log +scripts/test.js + +scripts/helpers/local-setup.devnet.sh +.DS_Store diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index 294b3da..bbc0d43 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -19,7 +19,7 @@ jobs: uses: actions/checkout@v3 - name: Install Node.js uses: actions/setup-node@v3 - - name: 'Install the dependencies' - run: 'npm install' - - name: 'Run the tests' - run: 'HARDHAT_NETWORK=hardhat npm run test' + - name: Install the dependencies + run: npm install + - name: Run the tests + run: npm run coverage diff --git a/.gitignore b/.gitignore index d920e9c..e90aa56 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ .openzeppelin log.txt +log.log test.js local-setup.devnet.sh diff --git a/contracts/upgrades/DLCLinkLibraryV2Test.sol b/contracts/upgrades/DLCLinkLibraryV2Test.sol deleted file mode 100644 index 38fba10..0000000 --- a/contracts/upgrades/DLCLinkLibraryV2Test.sol +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-License-Identifier: MIT -// ___ __ ___ __ _ _ -// / \/ / / __\ / /(_)_ __ | | __ -// / /\ / / / / / / | | '_ \| |/ / -// / /_// /__/ /____/ /__| | | | | < -// /___,'\____|____(_)____/_|_| |_|_|\_\ - -pragma solidity 0.8.18; - -library DLCLinkV2 { - enum DLCStatus { - READY, - FUNDED, - CLOSING, - CLOSED, - AUX_STATE_1, - AUX_STATE_2, - AUX_STATE_3, - AUX_STATE_4, - AUX_STATE_5, - AUX_STATE_6, - AUX_STATE_7, - AUX_STATE_8, - AUX_STATE_9, - AUX_STATE_10 - } - - struct DLC { - bytes32 uuid; - address protocolContract; - uint256 timestamp; - uint256 valueLocked; - address creator; - DLCStatus status; - string fundingTxId; - string closingTxId; - string btcFeeRecipient; - uint256 btcMintFeeBasisPoints; - uint256 btcRedeemFeeBasisPoints; - string taprootPubKey; - address someNewField; - } -} diff --git a/contracts/upgrades/DLCManagerV2Test.sol b/contracts/upgrades/DLCManagerV2Test.sol deleted file mode 100644 index 5599812..0000000 --- a/contracts/upgrades/DLCManagerV2Test.sol +++ /dev/null @@ -1,442 +0,0 @@ -// SPDX-License-Identifier: MIT -// ___ __ ___ __ _ _ -// / \/ / / __\ / /(_)_ __ | | __ -// / /\ / / / / / / | | '_ \| |/ / -// / /_// /__/ /____/ /__| | | | | < -// /___,'\____|____(_)____/_|_| |_|_|\_\ - -pragma solidity 0.8.18; - -import "@openzeppelin/contracts-upgradeable/access/AccessControlDefaultAdminRulesUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/utils/cryptography/ECDSAUpgradeable.sol"; -import "../DLCLinkCompatible.sol"; -import "./IDLCManagerV2.sol"; -import "./DLCLinkLibraryV2Test.sol"; - -/** - * @author DLC.Link 2024 - * @title DLCManager - * @dev This is the contract the Attestor Layer listens to. - * Protocol contracts should implement the DLCLinkCompatible interface and interact with this contract. - * @dev It is upgradable through the OpenZeppelin proxy pattern - * @notice DLCManager is the main contract of the DLC.Link protocol. - * @custom:contact robert@dlc.link - * @custom:website https://www.dlc.link - */ -contract DLCManagerV2Test is - Initializable, - AccessControlDefaultAdminRulesUpgradeable, - PausableUpgradeable, - IDLCManager -{ - using DLCLinkV2 for DLCLinkV2.DLC; - using DLCLinkV2 for DLCLinkV2.DLCStatus; - - //////////////////////////////////////////////////////////////// - // STATE VARIABLES // - //////////////////////////////////////////////////////////////// - - bytes32 public constant DLC_ADMIN_ROLE = - 0x2bf88000669ee6f7a648a231f4adbc117f5a8e34f980c08420b9b9a9f2640aa1; // keccak256("DLC_ADMIN_ROLE") - bytes32 public constant WHITELISTED_CONTRACT = - 0xec26500344858148ae6c4dd068dc3bae426095ee44cdb32b94288d883648f619; // keccak256("WHITELISTED_CONTRACT") - bytes32 public constant APPROVED_SIGNER = - 0xc726b34d4e524d7255dc7e36b5dfca6bd2dcd2891ae8c75d511a7e82da8696e5; // keccak256("APPROVED_SIGNER") - - uint256 private _index; - mapping(uint256 => DLCLinkV2.DLC) public dlcs; - mapping(bytes32 => uint256) public dlcIDsByUUID; - - uint16 private _minimumThreshold; - uint16 private _threshold; - uint16 private _signerCount; - bytes32 public tssCommitment; - string public attestorGroupPubKey; - string public testString; - uint256[49] __gap; - - //////////////////////////////////////////////////////////////// - // ERRORS // - //////////////////////////////////////////////////////////////// - - error NotDLCAdmin(); - error IncompatibleRoles(); - error ContractNotWhitelisted(); - error NotCreatorContract(); - error DLCNotFound(); - error DLCNotReady(); - error DLCNotFunded(); - error DLCNotClosing(); - - error ThresholdMinimumReached(uint16 _minimumThreshold); - error ThresholdTooLow(uint16 _minimumThreshold); - error Unauthorized(); - error NotEnoughSignatures(); - error InvalidSigner(); - error DuplicateSignature(); - error SignerNotApproved(address signer); - - error InvalidRange(); - - //////////////////////////////////////////////////////////////// - // MODIFIERS // - //////////////////////////////////////////////////////////////// - - modifier onlyAdmin() { - if (!hasRole(DLC_ADMIN_ROLE, msg.sender)) revert NotDLCAdmin(); - _; - } - - modifier onlyWhiteListedContracts() { - if (!hasRole(WHITELISTED_CONTRACT, msg.sender)) - revert ContractNotWhitelisted(); - _; - } - - modifier onlyApprovedSigners() { - if (!hasRole(APPROVED_SIGNER, msg.sender)) revert Unauthorized(); - _; - } - - modifier onlyCreatorContract(bytes32 _uuid) { - if (dlcs[dlcIDsByUUID[_uuid]].protocolContract != msg.sender) - revert NotCreatorContract(); - _; - } - - function initialize( - address adminAddress, - uint16 threshold - ) public initializer { - __AccessControlDefaultAdminRules_init(2 days, adminAddress); - _grantRole(DLC_ADMIN_ROLE, adminAddress); - _minimumThreshold = 2; - if (threshold < _minimumThreshold) - revert ThresholdTooLow(_minimumThreshold); - _threshold = threshold; - _index = 0; - tssCommitment = 0x0; - } - - /// @custom:oz-upgrades-unsafe-allow constructor - constructor() { - _disableInitializers(); - } - - //////////////////////////////////////////////////////////////// - // EVENTS // - //////////////////////////////////////////////////////////////// - - event CreateDLC( - bytes32 uuid, - uint256 valueLocked, - address protocolContract, - address creator, - uint256 timestamp - ); - - event SetStatusFunded(bytes32 uuid, string btcTxId, address sender); - - event CloseDLC(bytes32 uuid, address sender); - - event PostCloseDLC(bytes32 uuid, string btcTxId, address sender); - - event SetThreshold(uint16 newThreshold); - - event SetStatusConfirmed(bytes32 uuid, string btcTxId, address sender); - - //////////////////////////////////////////////////////////////// - // INTERNAL FUNCTIONS // - //////////////////////////////////////////////////////////////// - - function _generateUUID( - address sender, - uint256 nonce - ) private view returns (bytes32) { - return - keccak256( - abi.encodePacked( - sender, - nonce, - blockhash(block.number - 1), - block.chainid - ) - ); - } - - function _attestorMultisigIsValid( - bytes memory message, - bytes[] memory signatures - ) internal view { - if (signatures.length < _threshold) revert NotEnoughSignatures(); - - bytes32 prefixedMessageHash = ECDSAUpgradeable.toEthSignedMessageHash( - keccak256(message) - ); - - if (_hasDuplicates(signatures)) revert DuplicateSignature(); - - for (uint256 i = 0; i < signatures.length; i++) { - address attestorPubKey = ECDSAUpgradeable.recover( - prefixedMessageHash, - signatures[i] - ); - if (!hasRole(APPROVED_SIGNER, attestorPubKey)) - revert InvalidSigner(); - } - } - - function _hasDuplicates( - bytes[] memory /* signatures */ - ) internal pure returns (bool) { - return false; - } - - //////////////////////////////////////////////////////////////// - // MAIN FUNCTIONS // - //////////////////////////////////////////////////////////////// - - /** - * @notice Triggers the creation of an Announcement in the Attestor Layer. - * @dev Call this function from a whitelisted protocol-contract. - * @param valueLocked Value to be locked in the DLC , in Satoshis. - * @param btcFeeRecipient Bitcoin address that will receive the DLC fees. - * @param btcMintFeeBasisPoints Basis points of the minting fee. - * @param btcRedeemFeeBasisPoints Basis points of the redeeming fee. - * @return bytes32 A generated UUID. - */ - function createDLC( - uint256 valueLocked, - string calldata btcFeeRecipient, - uint256 btcMintFeeBasisPoints, - uint256 btcRedeemFeeBasisPoints - ) - external - override - onlyWhiteListedContracts - whenNotPaused - returns (bytes32) - { - bytes32 _uuid = _generateUUID(tx.origin, _index); - - dlcs[_index] = DLCLinkV2.DLC({ - uuid: _uuid, - protocolContract: msg.sender, - valueLocked: valueLocked, - timestamp: block.timestamp, - creator: tx.origin, - status: DLCLinkV2.DLCStatus.READY, - fundingTxId: "", - closingTxId: "", - btcFeeRecipient: btcFeeRecipient, - btcMintFeeBasisPoints: btcMintFeeBasisPoints, - btcRedeemFeeBasisPoints: btcRedeemFeeBasisPoints, - taprootPubKey: "", - someNewField: address(0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9) - }); - - emit CreateDLC( - _uuid, - valueLocked, - msg.sender, - tx.origin, - block.timestamp - ); - - dlcIDsByUUID[_uuid] = _index; - _index++; - - return _uuid; - } - - /** - * @notice Confirms that a DLC was 'funded' on the Bitcoin blockchain. - * @dev Called by the Attestor Coordinator. - * @param uuid UUID of the DLC. - * @param btcTxId DLC Funding Transaction ID on the Bitcoin blockchain. - * @param signatures Signatures of the Attestors. - */ - function setStatusFunded( - bytes32 uuid, - string calldata btcTxId, - bytes[] calldata signatures, - string calldata taprootPubKey - ) external whenNotPaused onlyApprovedSigners { - _attestorMultisigIsValid( - abi.encode(uuid, btcTxId, "set-status-funded"), - signatures - ); - DLCLinkV2.DLC storage dlc = dlcs[dlcIDsByUUID[uuid]]; - - if (dlc.uuid == bytes32(0)) revert DLCNotFound(); - if (dlc.status != DLCLinkV2.DLCStatus.READY) revert DLCNotReady(); - - dlc.fundingTxId = btcTxId; - dlc.status = DLCLinkV2.DLCStatus.FUNDED; - - DLCLinkCompatible(dlc.protocolContract).setStatusFunded(uuid, btcTxId); - - emit SetStatusFunded(uuid, btcTxId, msg.sender); - } - - /** - * @notice Triggers the creation of an Attestation. - * @param uuid UUID of the DLC. - */ - function closeDLC( - bytes32 uuid - ) external onlyCreatorContract(uuid) whenNotPaused { - DLCLinkV2.DLC storage dlc = dlcs[dlcIDsByUUID[uuid]]; - - if (dlc.uuid == bytes32(0)) revert DLCNotFound(); - if (dlc.status != DLCLinkV2.DLCStatus.FUNDED) revert DLCNotFunded(); - - dlc.status = DLCLinkV2.DLCStatus.CLOSING; - - emit CloseDLC(uuid, msg.sender); - } - - /** - * @notice Triggered after a closing Tx has been confirmed Bitcoin. - * @dev Similarly to setStatusFunded, this is called by the Attestor Coordinator. - * @param uuid UUID of the DLC. - * @param btcTxId Closing Bitcoin Tx id. - * @param signatures Signatures of the Attestors. - */ - function postCloseDLC( - bytes32 uuid, - string calldata btcTxId, - bytes[] calldata signatures - ) external whenNotPaused onlyApprovedSigners { - _attestorMultisigIsValid( - abi.encode(uuid, btcTxId, "post-close-dlc"), - signatures - ); - DLCLinkV2.DLC storage dlc = dlcs[dlcIDsByUUID[uuid]]; - - if (dlc.uuid == bytes32(0)) revert DLCNotFound(); - if (dlc.status != DLCLinkV2.DLCStatus.CLOSING) revert DLCNotClosing(); - - dlc.closingTxId = btcTxId; - dlc.status = DLCLinkV2.DLCStatus.CLOSED; - - DLCLinkCompatible(dlc.protocolContract).postCloseDLCHandler( - uuid, - btcTxId - ); - - emit PostCloseDLC(uuid, btcTxId, msg.sender); - } - - //////////////////////////////////////////////////////////////// - // VIEW FUNCTIONS // - //////////////////////////////////////////////////////////////// - - function getDLC( - bytes32 uuid - ) external view override returns (DLCLinkV2.DLC memory) { - DLCLinkV2.DLC memory _dlc = dlcs[dlcIDsByUUID[uuid]]; - if (_dlc.uuid == bytes32(0)) revert DLCNotFound(); - if (_dlc.uuid != uuid) revert DLCNotFound(); - return _dlc; - } - - function getDLCByIndex( - uint256 index - ) external view returns (DLCLinkV2.DLC memory) { - return dlcs[index]; - } - - function getFundedDLCs( - uint256 startIndex, - uint256 endIndex - ) public view returns (DLCLinkV2.DLC[] memory) { - if (startIndex >= endIndex) revert InvalidRange(); - if (endIndex > _index) endIndex = _index; - - uint256 _indexRange = endIndex - startIndex; - DLCLinkV2.DLC[] memory fundedDLCs = new DLCLinkV2.DLC[](_indexRange); - - uint256 _fundedCount = 0; - - for (uint256 i = startIndex; i < endIndex; i++) { - if (dlcs[i].status == DLCLinkV2.DLCStatus.FUNDED) { - fundedDLCs[_fundedCount] = dlcs[i]; - _fundedCount++; - } - } - return fundedDLCs; - } - - //////////////////////////////////////////////////////////////// - // ADMIN FUNCTIONS // - //////////////////////////////////////////////////////////////// - - function _hasAnyRole(address account) internal view returns (bool) { - return - hasRole(DLC_ADMIN_ROLE, account) || - hasRole(WHITELISTED_CONTRACT, account) || - hasRole(APPROVED_SIGNER, account); - } - - function grantRole( - bytes32 role, - address account - ) public override(AccessControlDefaultAdminRulesUpgradeable) { - if (_hasAnyRole(account)) revert IncompatibleRoles(); - - // role based setup ensures that address can only be added once - super.grantRole(role, account); - if (role == APPROVED_SIGNER) _signerCount++; - } - - function revokeRole( - bytes32 role, - address account - ) public override(AccessControlDefaultAdminRulesUpgradeable) { - super.revokeRole(role, account); - - if (role == APPROVED_SIGNER) { - if (_signerCount == _minimumThreshold) - revert ThresholdMinimumReached(_minimumThreshold); - _signerCount--; - } - } - - function pauseContract() external onlyAdmin { - _pause(); - } - - function unpauseContract() external onlyAdmin { - _unpause(); - } - - function getThreshold() external view onlyAdmin returns (uint16) { - return _threshold; - } - - function setThreshold(uint16 newThreshold) external onlyAdmin { - if (newThreshold < _minimumThreshold) - revert ThresholdTooLow(_minimumThreshold); - _threshold = newThreshold; - emit SetThreshold(newThreshold); - } - - function setTSSCommitment(bytes32 commitment) external onlyAdmin { - tssCommitment = commitment; - } - - function setAttestorGroupPubKey(string calldata pubKey) external onlyAdmin { - attestorGroupPubKey = pubKey; - } - - function newTestFunction() public pure returns (uint) { - return 1; - } - - function setTestString(string calldata _testString) external { - testString = _testString; - } -} diff --git a/contracts/upgrades/IDLCManagerV2.sol b/contracts/upgrades/IDLCManagerV2.sol deleted file mode 100644 index be1db2d..0000000 --- a/contracts/upgrades/IDLCManagerV2.sol +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.18; - -import "./DLCLinkLibraryV2Test.sol"; - -interface IDLCManager { - function createDLC( - uint256 _valueLocked, - string calldata _btcFeeRecipient, - uint256 _btcMintFeeBasisPoints, - uint256 _btcRedeemFeeBasisPoints - ) external returns (bytes32); - - function setStatusFunded( - bytes32 _uuid, - string calldata _btcTxId, - bytes[] calldata _signatures, - string calldata _taprootPubKey - ) external; - - function closeDLC(bytes32 _uuid) external; - - function postCloseDLC( - bytes32 _uuid, - string calldata _btcTxId, - bytes[] calldata _signatures - ) external; - - function getDLC(bytes32 _uuid) external view returns (DLCLinkV2.DLC memory); -} diff --git a/contracts/upgrades/TokenManagerTest.sol b/contracts/upgrades/TokenManagerTest.sol deleted file mode 100644 index 37001aa..0000000 --- a/contracts/upgrades/TokenManagerTest.sol +++ /dev/null @@ -1,359 +0,0 @@ -// SPDX-License-Identifier: MIT -// ___ __ ___ __ _ _ -// / \/ / / __\ / /(_)_ __ | | __ -// / /\ / / / / / / | | '_ \| |/ / -// / /_// /__/ /____/ /__| | | | | < -// /___,'\____|____(_)____/_|_| |_|_|\_\ - -pragma solidity 0.8.18; - -import "@openzeppelin/contracts-upgradeable/access/AccessControlDefaultAdminRulesUpgradeable.sol"; -import "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol"; -import "@openzeppelin/contracts-upgradeable/security/PausableUpgradeable.sol"; -import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; -import "../IDLCManager.sol"; -import "../DLCLinkCompatible.sol"; -import "../DLCBTC.sol"; -import "../DLCLinkLibrary.sol"; - -/** - * @author DLC.Link 2024 - * @title TokenManager - * @notice This contract is responsible for minting and burning dlcBTC tokens - * It interacts with the DLCManager contract to handle DLCs - * When a DLC is funded, the DLCManager contract will call setStatusFunded(), - * which in turn will mint the tokens to the user. - * @dev This contract is the owner of the dlcBTC contract - * @dev It is upgradable through the OpenZeppelin proxy pattern - * @dev Launched with Whitelisted useraddresses enabled first - * @dev It is governed by the DLC_ADMIN_ROLE, a multisig wallet - * @custom:contact robert@dlc.link - * @custom:website https://www.dlc.link - */ -contract TokenManagerV2Test is - Initializable, - AccessControlDefaultAdminRulesUpgradeable, - PausableUpgradeable, - DLCLinkCompatible -{ - using SafeERC20 for DLCBTC; - using DLCLink for DLCLink.DLC; - - //////////////////////////////////////////////////////////////// - // STATE VARIABLES // - //////////////////////////////////////////////////////////////// - - // Hardcoded constants to save gas - bytes32 public constant DLC_ADMIN_ROLE = - 0x2bf88000669ee6f7a648a231f4adbc117f5a8e34f980c08420b9b9a9f2640aa1; // keccak256("DLC_ADMIN_ROLE") - bytes32 public constant DLC_MANAGER_ROLE = - 0xc0e7a011e039a863dc1cb785a717324b6601de5d97f6687eae961f972d1472fd; // keccak256("DLC_MANAGER_ROLE"); - bytes32 public constant PAUSER_ROLE = - 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a; // keccak256("PAUSER_ROLE"); - - DLCBTC public dlcBTC; // dlcBTC contract - IDLCManager public dlcManager; // DLCManager contract - string public btcFeeRecipient; // BTC address to send fees to - uint256 public minimumDeposit; // in sats - uint256 public maximumDeposit; // in sats - uint256 public btcMintFeeRate; // in basis points (100 = 1%) -- BTC - uint256 public btcRedeemFeeRate; // in basis points (100 = 1%) -- BTC - bool public whitelistingEnabled; - - mapping(address => bytes32[]) public userVaults; - mapping(address => bool) private _whitelistedAddresses; - uint256 someNewVar; - uint256[49] __gap; - - //////////////////////////////////////////////////////////////// - // ERRORS // - //////////////////////////////////////////////////////////////// - - error NotDLCAdmin(); - error NotDLCManagerContract(); - error NotPauser(); - error NotOwner(); - error NotWhitelisted(); - error DepositTooSmall(uint256 deposit, uint256 minimumDeposit); - error DepositTooLarge(uint256 deposit, uint256 maximumDeposit); - error InsufficientTokenBalance(uint256 balance, uint256 amount); - - //////////////////////////////////////////////////////////////// - // MODIFIERS // - //////////////////////////////////////////////////////////////// - - modifier onlyDLCAdmin() { - if (!hasRole(DLC_ADMIN_ROLE, msg.sender)) revert NotDLCAdmin(); - _; - } - - modifier onlyDLCManagerContract() { - if (!hasRole(DLC_MANAGER_ROLE, msg.sender)) - revert NotDLCManagerContract(); - _; - } - - modifier onlyPauser() { - if (!hasRole(PAUSER_ROLE, msg.sender)) revert NotPauser(); - _; - } - - modifier onlyWhitelisted() { - if (whitelistingEnabled && !_whitelistedAddresses[msg.sender]) - revert NotWhitelisted(); - _; - } - - function initialize( - address adminAddress, - address dlcManagerAddress, - DLCBTC tokenContract, - string memory btcFeeRecipientToSet - ) public initializer { - __AccessControlDefaultAdminRules_init(2 days, adminAddress); - _grantRole(DLC_ADMIN_ROLE, adminAddress); - _grantRole(DLC_MANAGER_ROLE, dlcManagerAddress); - _grantRole(PAUSER_ROLE, adminAddress); - dlcManager = IDLCManager(dlcManagerAddress); - dlcBTC = tokenContract; - minimumDeposit = 1000; // 0.00001 BTC - maximumDeposit = 1e9; // 10 BTC - whitelistingEnabled = true; - btcMintFeeRate = 100; // 1% BTC fee for now - btcRedeemFeeRate = 100; // 1% BTC fee for now - btcFeeRecipient = btcFeeRecipientToSet; - } - - /// @custom:oz-upgrades-unsafe-allow constructor - constructor() { - _disableInitializers(); - } - - //////////////////////////////////////////////////////////////// - // EVENTS // - //////////////////////////////////////////////////////////////// - - event SetupVault(bytes32 dlcUUID, uint256 btcDeposit, address owner); - - event CloseVault(bytes32 dlcUUID, address owner); - - event Mint(address to, uint256 amount); - - event Burn(address from, uint256 amount); - - event SetStatusFunded(bytes32 dlcUUID, string btcTxId, address owner); - - event PostCloseDLCHandler(bytes32 dlcUUID, string btcTxId, address owner); - - event WhitelistAddress(address addressToWhitelist); - event UnwhitelistAddress(address addressToUnWhitelist); - event SetMinimumDeposit(uint256 newMinimumDeposit); - event SetMaximumDeposit(uint256 newMaximumDeposit); - event SetBtcMintFeeRate(uint256 newBtcMintFeeRate); - event SetBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate); - event SetBtcFeeRecipient(string btcFeeRecipient); - event SetWhitelistingEnabled(bool isWhitelistingEnabled); - event NewDLCManagerContract(address newDLCManagerAddress); - event TransferTokenContractOwnership(address newOwner); - - //////////////////////////////////////////////////////////////// - // INTERNAL FUNCTIONS // - //////////////////////////////////////////////////////////////// - - function _mintTokens(address to, uint256 amount) internal { - dlcBTC.mint(to, amount); - emit Mint(to, amount); - } - - function _burnTokens(address from, uint256 amount) internal { - dlcBTC.burn(from, amount); - emit Burn(from, amount); - } - - //////////////////////////////////////////////////////////////// - // MAIN FUNCTIONS // - //////////////////////////////////////////////////////////////// - - /** - * @notice Creates a new vault for the user - * @dev It calls the DLCManager contract to create a new DLC - * @param btcDeposit amount to be locked (in sats) - * @return bytes32 uuid of the new vault/DLC - */ - function setupVault( - uint256 btcDeposit - ) external whenNotPaused onlyWhitelisted returns (bytes32) { - if (btcDeposit < minimumDeposit) - revert DepositTooSmall(btcDeposit, minimumDeposit); - if (btcDeposit > maximumDeposit) - revert DepositTooLarge(btcDeposit, maximumDeposit); - - bytes32 _uuid = dlcManager.createDLC( - btcDeposit, - btcFeeRecipient, - btcMintFeeRate, - btcRedeemFeeRate - ); - - userVaults[msg.sender].push(_uuid); - - emit SetupVault(_uuid, btcDeposit, msg.sender); - - return _uuid; - } - - /** - * @notice Callback function called by the DLCManager contract when a DLC is funded - * @dev It initiates the mint to the user - * @param uuid uuid of the vault/DLC - */ - function setStatusFunded( - bytes32 uuid, - string calldata btcTxId - ) external override whenNotPaused onlyDLCManagerContract { - DLCLink.DLC memory dlc = dlcManager.getDLC(uuid); - _mintTokens(dlc.creator, dlc.valueLocked); - emit SetStatusFunded(uuid, btcTxId, dlc.creator); - } - - /** - * @notice Burns the tokens and requests the closing of the vault - * @dev User must have enough dlcBTC tokens to close the DLC fully - * @param uuid uuid of the vault/DLC - */ - function closeVault(bytes32 uuid) external whenNotPaused { - DLCLink.DLC memory dlc = dlcManager.getDLC(uuid); - if (dlc.creator != msg.sender) revert NotOwner(); - - if (dlc.valueLocked > dlcBTC.balanceOf(dlc.creator)) - revert InsufficientTokenBalance( - dlcBTC.balanceOf(dlc.creator), - dlc.valueLocked - ); - - _burnTokens(dlc.creator, dlc.valueLocked); - - dlcManager.closeDLC(uuid); - emit CloseVault(uuid, msg.sender); - } - - function postCloseDLCHandler( - bytes32 uuid, - string calldata btcTxId - ) external override whenNotPaused onlyDLCManagerContract { - DLCLink.DLC memory dlc = dlcManager.getDLC(uuid); - emit PostCloseDLCHandler(uuid, btcTxId, dlc.creator); - } - - //////////////////////////////////////////////////////////////// - // VIEW FUNCTIONS // - //////////////////////////////////////////////////////////////// - - function getVault(bytes32 uuid) public view returns (DLCLink.DLC memory) { - return dlcManager.getDLC(uuid); - } - - function getAllVaultUUIDsForAddress( - address owner - ) public view returns (bytes32[] memory) { - return userVaults[owner]; - } - - function getAllVaultsForAddress( - address owner - ) public view returns (DLCLink.DLC[] memory) { - bytes32[] memory uuids = getAllVaultUUIDsForAddress(owner); - DLCLink.DLC[] memory vaults = new DLCLink.DLC[](uuids.length); - for (uint256 i = 0; i < uuids.length; i++) { - vaults[i] = getVault(uuids[i]); - } - return vaults; - } - - function newTestFunction() public pure returns (uint) { - return 1; - } - - //////////////////////////////////////////////////////////////// - // ADMIN FUNCTIONS // - //////////////////////////////////////////////////////////////// - - function whitelistAddress( - address addressToWhitelist - ) external onlyDLCAdmin { - _whitelistedAddresses[addressToWhitelist] = true; - emit WhitelistAddress(addressToWhitelist); - } - - function unwhitelistAddress( - address addressToUnWhitelist - ) external onlyDLCAdmin { - _whitelistedAddresses[addressToUnWhitelist] = false; - emit UnwhitelistAddress(addressToUnWhitelist); - } - - function setMinimumDeposit( - uint256 newMinimumDeposit - ) external onlyDLCAdmin { - minimumDeposit = newMinimumDeposit; - emit SetMinimumDeposit(newMinimumDeposit); - } - - function setMaximumDeposit( - uint256 newMaximumDeposit - ) external onlyDLCAdmin { - maximumDeposit = newMaximumDeposit; - emit SetMaximumDeposit(newMaximumDeposit); - } - - function setBtcMintFeeRate( - uint256 newBtcMintFeeRate - ) external onlyDLCAdmin { - btcMintFeeRate = newBtcMintFeeRate; - emit SetBtcMintFeeRate(newBtcMintFeeRate); - } - - function setBtcRedeemFeeRate( - uint256 newBtcRedeemFeeRate - ) external onlyDLCAdmin { - btcRedeemFeeRate = newBtcRedeemFeeRate; - emit SetBtcRedeemFeeRate(newBtcRedeemFeeRate); - } - - function setBtcFeeRecipient( - string calldata btcFeeRecipientToSet - ) external onlyDLCAdmin { - btcFeeRecipient = btcFeeRecipientToSet; - emit SetBtcFeeRecipient(btcFeeRecipient); - } - - function setWhitelistingEnabled( - bool isWhitelistingEnabled - ) external onlyDLCAdmin { - whitelistingEnabled = isWhitelistingEnabled; - emit SetWhitelistingEnabled(isWhitelistingEnabled); - } - - function updateDLCManagerContract( - address newDLCManagerAddress - ) external onlyDLCAdmin { - dlcManager = IDLCManager(newDLCManagerAddress); - _grantRole(DLC_MANAGER_ROLE, newDLCManagerAddress); - emit NewDLCManagerContract(newDLCManagerAddress); - } - - function transferTokenContractOwnership( - address newOwner - ) external onlyDLCAdmin { - dlcBTC.transferOwnership(newOwner); - emit TransferTokenContractOwnership(newOwner); - } - - function pauseContract() external onlyPauser { - _pause(); - } - - function unpauseContract() external onlyPauser { - _unpause(); - } -} diff --git a/deploymentFiles/localhost/DLCBTC.json b/deploymentFiles/localhost/DLCBTC.json index c1bd39b..a6a5fa4 100644 --- a/deploymentFiles/localhost/DLCBTC.json +++ b/deploymentFiles/localhost/DLCBTC.json @@ -1,10 +1,10 @@ { "network": "localhost", - "updatedAt": "2024-05-10T16:00:48.495Z", - "gitSHA": "15ebf73", + "updatedAt": "2024-05-13T13:29:00.473Z", + "gitSHA": "45a6ee8", "contract": { "name": "DLCBTC", - "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", + "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "abi": [ "constructor()", diff --git a/deploymentFiles/localhost/DLCManager.json b/deploymentFiles/localhost/DLCManager.json index 0b8a931..728b656 100644 --- a/deploymentFiles/localhost/DLCManager.json +++ b/deploymentFiles/localhost/DLCManager.json @@ -1,10 +1,10 @@ { "network": "localhost", - "updatedAt": "2024-05-10T16:00:48.405Z", - "gitSHA": "15ebf73", + "updatedAt": "2024-05-13T13:29:00.382Z", + "gitSHA": "45a6ee8", "contract": { "name": "DLCManager", - "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", + "address": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "abi": [ "constructor()", diff --git a/deploymentFiles/localhost/TokenManager.json b/deploymentFiles/localhost/TokenManager.json index 2e4507b..154755d 100644 --- a/deploymentFiles/localhost/TokenManager.json +++ b/deploymentFiles/localhost/TokenManager.json @@ -1,10 +1,10 @@ { "network": "localhost", - "updatedAt": "2024-05-10T16:00:48.565Z", - "gitSHA": "15ebf73", + "updatedAt": "2024-05-13T13:29:00.560Z", + "gitSHA": "45a6ee8", "contract": { "name": "TokenManager", - "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", + "address": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", "abi": [ "constructor()", diff --git a/docker-compose.yml b/docker-compose.yml index a324b11..764353d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,9 @@ -version: '3.9' services: hardhat: build: . - network_mode: "host" ports: - "8545:8545" volumes: - ./docker/deploymentFiles:/app/dlc-solidity/deploymentFiles environment: - GITSHA=N/A - - DEPLOYMENTPATH=/app/dlc-solidity/deploymentFiles/hardhat diff --git a/docker/deploymentFiles/hardhat/DLCBTC.json b/docker/deploymentFiles/localhost/DLCBTC.json similarity index 51% rename from docker/deploymentFiles/hardhat/DLCBTC.json rename to docker/deploymentFiles/localhost/DLCBTC.json index 0275ff1..3e85027 100644 --- a/docker/deploymentFiles/hardhat/DLCBTC.json +++ b/docker/deploymentFiles/localhost/DLCBTC.json @@ -1,6 +1,6 @@ { - "network": "hardhat", - "updatedAt": "2024-05-10T16:05:33.919Z", + "network": "localhost", + "updatedAt": "2024-05-13T14:20:32.732Z", "gitSHA": "N/A", "contract": { "name": "DLCBTC", @@ -20,32 +20,32 @@ "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", "event Transfer(address indexed from, address indexed to, uint256 value)", "event Unblacklisted(address account)", - "function DOMAIN_SEPARATOR() view returns (bytes32) @29000000", - "function allowance(address owner, address spender) view returns (uint256) @29000000", - "function approve(address spender, uint256 amount) returns (bool) @29000000", - "function balanceOf(address account) view returns (uint256) @29000000", - "function blacklist(address account) @29000000", - "function blacklisted(address) view returns (bool) @29000000", - "function burn(address from, uint256 amount) @29000000", - "function decimals() view returns (uint8) @29000000", - "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool) @29000000", - "function eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions) @29000000", - "function increaseAllowance(address spender, uint256 addedValue) returns (bool) @29000000", - "function initialize() @29000000", - "function mint(address to, uint256 amount) @29000000", - "function name() view returns (string) @29000000", - "function nonces(address owner) view returns (uint256) @29000000", - "function owner() view returns (address) @29000000", - "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) @29000000", - "function renounceOwnership() @29000000", - "function setBurner(address burner) @29000000", - "function setMinter(address minter) @29000000", - "function symbol() view returns (string) @29000000", - "function totalSupply() view returns (uint256) @29000000", - "function transfer(address to, uint256 amount) returns (bool) @29000000", - "function transferFrom(address from, address to, uint256 amount) returns (bool) @29000000", - "function transferOwnership(address newOwner) @29000000", - "function unblacklist(address account) @29000000" + "function DOMAIN_SEPARATOR() view returns (bytes32)", + "function allowance(address owner, address spender) view returns (uint256)", + "function approve(address spender, uint256 amount) returns (bool)", + "function balanceOf(address account) view returns (uint256)", + "function blacklist(address account)", + "function blacklisted(address) view returns (bool)", + "function burn(address from, uint256 amount)", + "function decimals() view returns (uint8)", + "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", + "function eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)", + "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", + "function initialize()", + "function mint(address to, uint256 amount)", + "function name() view returns (string)", + "function nonces(address owner) view returns (uint256)", + "function owner() view returns (address)", + "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", + "function renounceOwnership()", + "function setBurner(address burner)", + "function setMinter(address minter)", + "function symbol() view returns (string)", + "function totalSupply() view returns (uint256)", + "function transfer(address to, uint256 amount) returns (bool)", + "function transferFrom(address from, address to, uint256 amount) returns (bool)", + "function transferOwnership(address newOwner)", + "function unblacklist(address account)" ] } } diff --git a/docker/deploymentFiles/hardhat/DLCManager.json b/docker/deploymentFiles/localhost/DLCManager.json similarity index 61% rename from docker/deploymentFiles/hardhat/DLCManager.json rename to docker/deploymentFiles/localhost/DLCManager.json index ed266c7..7fb665b 100644 --- a/docker/deploymentFiles/hardhat/DLCManager.json +++ b/docker/deploymentFiles/localhost/DLCManager.json @@ -1,6 +1,6 @@ { - "network": "hardhat", - "updatedAt": "2024-05-10T16:05:33.730Z", + "network": "localhost", + "updatedAt": "2024-05-13T14:20:32.578Z", "gitSHA": "N/A", "contract": { "name": "DLCManager", @@ -39,48 +39,48 @@ "event SetStatusFunded(bytes32 uuid, string btcTxId, address sender)", "event SetThreshold(uint16 newThreshold)", "event Unpaused(address account)", - "function APPROVED_SIGNER() view returns (bytes32) @29000000", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32) @29000000", - "function DLC_ADMIN_ROLE() view returns (bytes32) @29000000", - "function WHITELISTED_CONTRACT() view returns (bytes32) @29000000", - "function acceptDefaultAdminTransfer() @29000000", - "function attestorGroupPubKey() view returns (string) @29000000", - "function beginDefaultAdminTransfer(address newAdmin) @29000000", - "function cancelDefaultAdminTransfer() @29000000", - "function changeDefaultAdminDelay(uint48 newDelay) @29000000", - "function closeDLC(bytes32 uuid) @29000000", - "function createDLC(uint256 valueLocked, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints) returns (bytes32) @29000000", - "function defaultAdmin() view returns (address) @29000000", - "function defaultAdminDelay() view returns (uint48) @29000000", - "function defaultAdminDelayIncreaseWait() view returns (uint48) @29000000", - "function dlcIDsByUUID(bytes32) view returns (uint256) @29000000", - "function dlcs(uint256) view returns (bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey) @29000000", - "function getAllDLCs(uint256 startIndex, uint256 endIndex) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[]) @29000000", - "function getDLC(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)) @29000000", - "function getDLCByIndex(uint256 index) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)) @29000000", - "function getMinimumThreshold() view returns (uint16) @29000000", - "function getRoleAdmin(bytes32 role) view returns (bytes32) @29000000", - "function getSignerCount() view returns (uint16) @29000000", - "function getThreshold() view returns (uint16) @29000000", - "function grantRole(bytes32 role, address account) @29000000", - "function hasRole(bytes32 role, address account) view returns (bool) @29000000", - "function initialize(address defaultAdmin, address dlcAdminRole, uint16 threshold) @29000000", - "function owner() view returns (address) @29000000", - "function pauseContract() @29000000", - "function paused() view returns (bool) @29000000", - "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule) @29000000", - "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule) @29000000", - "function postCloseDLC(bytes32 uuid, string btcTxId, bytes[] signatures) @29000000", - "function renounceRole(bytes32 role, address account) @29000000", - "function revokeRole(bytes32 role, address account) @29000000", - "function rollbackDefaultAdminDelay() @29000000", - "function setAttestorGroupPubKey(string pubKey) @29000000", - "function setStatusFunded(bytes32 uuid, string btcTxId, bytes[] signatures, string taprootPubKey) @29000000", - "function setTSSCommitment(bytes32 commitment) @29000000", - "function setThreshold(uint16 newThreshold) @29000000", - "function supportsInterface(bytes4 interfaceId) view returns (bool) @29000000", - "function tssCommitment() view returns (bytes32) @29000000", - "function unpauseContract() @29000000" + "function APPROVED_SIGNER() view returns (bytes32)", + "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", + "function DLC_ADMIN_ROLE() view returns (bytes32)", + "function WHITELISTED_CONTRACT() view returns (bytes32)", + "function acceptDefaultAdminTransfer()", + "function attestorGroupPubKey() view returns (string)", + "function beginDefaultAdminTransfer(address newAdmin)", + "function cancelDefaultAdminTransfer()", + "function changeDefaultAdminDelay(uint48 newDelay)", + "function closeDLC(bytes32 uuid)", + "function createDLC(uint256 valueLocked, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints) returns (bytes32)", + "function defaultAdmin() view returns (address)", + "function defaultAdminDelay() view returns (uint48)", + "function defaultAdminDelayIncreaseWait() view returns (uint48)", + "function dlcIDsByUUID(bytes32) view returns (uint256)", + "function dlcs(uint256) view returns (bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)", + "function getAllDLCs(uint256 startIndex, uint256 endIndex) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", + "function getDLC(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", + "function getDLCByIndex(uint256 index) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", + "function getMinimumThreshold() view returns (uint16)", + "function getRoleAdmin(bytes32 role) view returns (bytes32)", + "function getSignerCount() view returns (uint16)", + "function getThreshold() view returns (uint16)", + "function grantRole(bytes32 role, address account)", + "function hasRole(bytes32 role, address account) view returns (bool)", + "function initialize(address defaultAdmin, address dlcAdminRole, uint16 threshold)", + "function owner() view returns (address)", + "function pauseContract()", + "function paused() view returns (bool)", + "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", + "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", + "function postCloseDLC(bytes32 uuid, string btcTxId, bytes[] signatures)", + "function renounceRole(bytes32 role, address account)", + "function revokeRole(bytes32 role, address account)", + "function rollbackDefaultAdminDelay()", + "function setAttestorGroupPubKey(string pubKey)", + "function setStatusFunded(bytes32 uuid, string btcTxId, bytes[] signatures, string taprootPubKey)", + "function setTSSCommitment(bytes32 commitment)", + "function setThreshold(uint16 newThreshold)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function tssCommitment() view returns (bytes32)", + "function unpauseContract()" ] } } diff --git a/docker/deploymentFiles/hardhat/TokenManager.json b/docker/deploymentFiles/localhost/TokenManager.json similarity index 58% rename from docker/deploymentFiles/hardhat/TokenManager.json rename to docker/deploymentFiles/localhost/TokenManager.json index a5b2282..fd1329e 100644 --- a/docker/deploymentFiles/hardhat/TokenManager.json +++ b/docker/deploymentFiles/localhost/TokenManager.json @@ -1,6 +1,6 @@ { - "network": "hardhat", - "updatedAt": "2024-05-10T16:05:33.991Z", + "network": "localhost", + "updatedAt": "2024-05-13T14:20:32.879Z", "gitSHA": "N/A", "contract": { "name": "TokenManager", @@ -43,61 +43,61 @@ "event Unpaused(address account)", "event UnwhitelistAddress(address addressToUnWhitelist)", "event WhitelistAddress(address addressToWhitelist)", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32) @29000000", - "function DLC_ADMIN_ROLE() view returns (bytes32) @29000000", - "function DLC_MANAGER_ROLE() view returns (bytes32) @29000000", - "function PAUSER_ROLE() view returns (bytes32) @29000000", - "function acceptDefaultAdminTransfer() @29000000", - "function beginDefaultAdminTransfer(address newAdmin) @29000000", - "function blacklistOnTokenContract(address account) @29000000", - "function btcFeeRecipient() view returns (string) @29000000", - "function btcMintFeeRate() view returns (uint256) @29000000", - "function btcRedeemFeeRate() view returns (uint256) @29000000", - "function cancelDefaultAdminTransfer() @29000000", - "function changeDefaultAdminDelay(uint48 newDelay) @29000000", - "function closeVault(bytes32 uuid) @29000000", - "function defaultAdmin() view returns (address) @29000000", - "function defaultAdminDelay() view returns (uint48) @29000000", - "function defaultAdminDelayIncreaseWait() view returns (uint48) @29000000", - "function dlcBTC() view returns (address) @29000000", - "function dlcManager() view returns (address) @29000000", - "function getAllVaultUUIDsForAddress(address owner) view returns (bytes32[]) @29000000", - "function getAllVaultsForAddress(address owner) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[]) @29000000", - "function getRoleAdmin(bytes32 role) view returns (bytes32) @29000000", - "function getVault(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)) @29000000", - "function grantRole(bytes32 role, address account) @29000000", - "function hasRole(bytes32 role, address account) view returns (bool) @29000000", - "function initialize(address defaultAdmin, address dlcAdminRole, address dlcManagerAddress, address tokenContract, string btcFeeRecipientToSet) @29000000", - "function maximumDeposit() view returns (uint256) @29000000", - "function minimumDeposit() view returns (uint256) @29000000", - "function owner() view returns (address) @29000000", - "function pauseContract() @29000000", - "function paused() view returns (bool) @29000000", - "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule) @29000000", - "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule) @29000000", - "function postCloseDLCHandler(bytes32 uuid, string btcTxId) @29000000", - "function renounceRole(bytes32 role, address account) @29000000", - "function revokeRole(bytes32 role, address account) @29000000", - "function rollbackDefaultAdminDelay() @29000000", - "function setBtcFeeRecipient(string btcFeeRecipientToSet) @29000000", - "function setBtcMintFeeRate(uint256 newBtcMintFeeRate) @29000000", - "function setBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate) @29000000", - "function setBurnerOnTokenContract(address burner) @29000000", - "function setMaximumDeposit(uint256 newMaximumDeposit) @29000000", - "function setMinimumDeposit(uint256 newMinimumDeposit) @29000000", - "function setMinterOnTokenContract(address minter) @29000000", - "function setStatusFunded(bytes32 uuid, string btcTxId) @29000000", - "function setWhitelistingEnabled(bool isWhitelistingEnabled) @29000000", - "function setupVault(uint256 btcDeposit) returns (bytes32) @29000000", - "function supportsInterface(bytes4 interfaceId) view returns (bool) @29000000", - "function transferTokenContractOwnership(address newOwner) @29000000", - "function unblacklistOnTokenContract(address account) @29000000", - "function unpauseContract() @29000000", - "function unwhitelistAddress(address addressToUnWhitelist) @29000000", - "function updateDLCManagerContract(address newDLCManagerAddress) @29000000", - "function userVaults(address, uint256) view returns (bytes32) @29000000", - "function whitelistAddress(address addressToWhitelist) @29000000", - "function whitelistingEnabled() view returns (bool) @29000000" + "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", + "function DLC_ADMIN_ROLE() view returns (bytes32)", + "function DLC_MANAGER_ROLE() view returns (bytes32)", + "function PAUSER_ROLE() view returns (bytes32)", + "function acceptDefaultAdminTransfer()", + "function beginDefaultAdminTransfer(address newAdmin)", + "function blacklistOnTokenContract(address account)", + "function btcFeeRecipient() view returns (string)", + "function btcMintFeeRate() view returns (uint256)", + "function btcRedeemFeeRate() view returns (uint256)", + "function cancelDefaultAdminTransfer()", + "function changeDefaultAdminDelay(uint48 newDelay)", + "function closeVault(bytes32 uuid)", + "function defaultAdmin() view returns (address)", + "function defaultAdminDelay() view returns (uint48)", + "function defaultAdminDelayIncreaseWait() view returns (uint48)", + "function dlcBTC() view returns (address)", + "function dlcManager() view returns (address)", + "function getAllVaultUUIDsForAddress(address owner) view returns (bytes32[])", + "function getAllVaultsForAddress(address owner) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", + "function getRoleAdmin(bytes32 role) view returns (bytes32)", + "function getVault(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", + "function grantRole(bytes32 role, address account)", + "function hasRole(bytes32 role, address account) view returns (bool)", + "function initialize(address defaultAdmin, address dlcAdminRole, address dlcManagerAddress, address tokenContract, string btcFeeRecipientToSet)", + "function maximumDeposit() view returns (uint256)", + "function minimumDeposit() view returns (uint256)", + "function owner() view returns (address)", + "function pauseContract()", + "function paused() view returns (bool)", + "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", + "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", + "function postCloseDLCHandler(bytes32 uuid, string btcTxId)", + "function renounceRole(bytes32 role, address account)", + "function revokeRole(bytes32 role, address account)", + "function rollbackDefaultAdminDelay()", + "function setBtcFeeRecipient(string btcFeeRecipientToSet)", + "function setBtcMintFeeRate(uint256 newBtcMintFeeRate)", + "function setBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", + "function setBurnerOnTokenContract(address burner)", + "function setMaximumDeposit(uint256 newMaximumDeposit)", + "function setMinimumDeposit(uint256 newMinimumDeposit)", + "function setMinterOnTokenContract(address minter)", + "function setStatusFunded(bytes32 uuid, string btcTxId)", + "function setWhitelistingEnabled(bool isWhitelistingEnabled)", + "function setupVault(uint256 btcDeposit) returns (bytes32)", + "function supportsInterface(bytes4 interfaceId) view returns (bool)", + "function transferTokenContractOwnership(address newOwner)", + "function unblacklistOnTokenContract(address account)", + "function unpauseContract()", + "function unwhitelistAddress(address addressToUnWhitelist)", + "function updateDLCManagerContract(address newDLCManagerAddress)", + "function userVaults(address, uint256) view returns (bytes32)", + "function whitelistAddress(address addressToWhitelist)", + "function whitelistingEnabled() view returns (bool)" ] } } diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 4e7f33e..3f5164b 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -2,20 +2,7 @@ # Start the Hardhat node in the background npx hardhat node >hardhat.log 2>&1 & - -# Wait for the Hardhat node to be ready -while ! nc -z localhost 8545; do - sleep 1 -done -echo "Hardhat node is ready" - -# Run your deployment and initialization scripts -# npx hardhat run --network localhost scripts/deploy.js -# npx hardhat run --network localhost scripts/initialize.js - -mkdir deploymentFiles -mkdir deploymentFiles/hardhat -node scripts/misc/deploy-all.js - +mkdir -p deploymentFiles/localhost 2>/dev/null +npx hardhat run --network localhost scripts/misc/deploy-all.js # Keep the script running so the Docker container doesn't exit -tail -f /dev/null +tail -f hardhat.log diff --git a/docker/hardhat.config.docker.js b/docker/hardhat.config.docker.js index 21309da..7347168 100644 --- a/docker/hardhat.config.docker.js +++ b/docker/hardhat.config.docker.js @@ -2,12 +2,6 @@ require('@nomicfoundation/hardhat-toolbox'); require('@openzeppelin/hardhat-upgrades'); -require('@nomicfoundation/hardhat-chai-matchers'); -require('@nomiclabs/hardhat-solhint'); -require('hardhat-gas-reporter'); -require('solidity-coverage'); -require('solidity-docgen'); - require('dotenv').config(); module.exports = { diff --git a/hardhat.config.js b/hardhat.config.js index 091c033..0bf8941 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -4,8 +4,6 @@ require('@nomicfoundation/hardhat-toolbox'); require('@openzeppelin/hardhat-upgrades'); require('@nomiclabs/hardhat-solhint'); require('solidity-coverage'); -require('solidity-docgen'); - require('dotenv').config(); if (!process.env.KEY_FOR_SAFE) process.env.KEY_FOR_SAFE = process.env.KEY; @@ -60,42 +58,13 @@ module.exports = { process.env['KEY_FOR_SAFE'], ], }, - x1test: { - url: 'https://testrpc.x1.tech', - accounts: [ - process.env['KEY'], - process.env['KEY2'], - process.env['KEY3'], - process.env['KEY_FOR_SAFE'], - ], - }, - bobtest: { - url: 'https://testnet.rpc.gobob.xyz', - accounts: [ - process.env['KEY'], - process.env['KEY2'], - process.env['KEY3'], - process.env['KEY_FOR_SAFE'], - ], - }, }, etherscan: { - // Your API key for Etherscan - // Obtain one at https://etherscan.io/ - // apiKey: process.env['ETHERSCAN_API_KEY'], apiKey: { arbitrum: process.env['ARBISCAN_API_KEY'], arbsepolia: process.env['ARBISCAN_API_KEY'], }, customChains: [ - { - network: 'bobtest', - chainId: 111, - urls: { - apiURL: 'https://testnet-explorer.gobob.xyz/api', - browserURL: 'https://testnet-explorer.gobob.xyz', - }, - }, { network: 'arbsepolia', chainId: 421614, @@ -121,11 +90,5 @@ module.exports = { L2: 'arbitrum', L2Etherscan: process.env['ARBISCAN_API_KEY'], L1Etherscan: process.env['ETHERSCAN_API_KEY'], - // gasPriceApi: gasPriceApi, - // gasPrice: 1, - }, - docgen: { - pages: 'files', - exclude: ['mocks', 'test', 'examples'], }, }; diff --git a/package.json b/package.json index e5b0152..adb683a 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ }, "scripts": { "test": "npx hardhat test", - "coverage": "npx hardhat coverage", + "coverage": "hardhat coverage", "analyze": "slither . --filter-paths 'node_modules|contracts/examples/|contracts/mocks/'", "prepare": "husky install" }, diff --git a/scripts/99_contract-configs.js b/scripts/99_contract-configs.js index 33dcdcf..7af7ac7 100644 --- a/scripts/99_contract-configs.js +++ b/scripts/99_contract-configs.js @@ -6,10 +6,7 @@ const { } = require('./helpers/deployment-handlers_versioned'); const { promptUser, loadContractAddress } = require('./helpers/utils'); const getChainLinkBTCPriceFeedAddress = require('./helpers/chainlink-pricefeed-addresses'); -const { - grantRoleOnManager, - registerProtocol, -} = require('./00-grant-role-on-manager'); +const { registerProtocol } = require('./00-grant-role-on-manager'); // This is a pure function that just logs async function beforeDeployment(contractName, constructorArguments, network) { @@ -30,15 +27,7 @@ async function afterDeployment(contractName, contractObject) { ); try { await saveDeploymentInfo( - deploymentInfo( - hardhat, - contractObject, - contractName, - process.env.GITSHA - ), - process.env.DEPLOYMENTPATH - ? `${process.env.DEPLOYMENTPATH}/${contractName}.json` - : undefined + deploymentInfo(hardhat, contractObject, contractName) ); } catch (error) { console.error(error); diff --git a/scripts/helpers/deployment-handlers_versioned.js b/scripts/helpers/deployment-handlers_versioned.js index 596c282..dd908e4 100644 --- a/scripts/helpers/deployment-handlers_versioned.js +++ b/scripts/helpers/deployment-handlers_versioned.js @@ -1,12 +1,18 @@ const fs = require('fs/promises'); const { execSync } = require('child_process'); -function deploymentInfo(hardhat, contract, contractName, _gitSHA) { +function deploymentInfo(hardhat, contract, contractName) { + let _gitSHA; + try { + _gitSHA = execSync('git rev-parse --short HEAD').toString().trim(); + } catch (error) { + _gitSHA = 'N/A'; + } + const deployInfo = { network: hardhat.network.name, updatedAt: new Date().toISOString(), - gitSHA: - _gitSHA ?? execSync('git rev-parse --short HEAD').toString().trim(), + gitSHA: _gitSHA, contract: { name: contractName, address: contract.address, diff --git a/scripts/misc/deploy-all.js b/scripts/misc/deploy-all.js index 1c7d3c8..7e01547 100644 --- a/scripts/misc/deploy-all.js +++ b/scripts/misc/deploy-all.js @@ -2,12 +2,6 @@ require('dotenv').config(); const prompts = require('prompts'); const hardhat = require('hardhat'); const getContractConfigs = require('../99_contract-configs'); -const dlcAdminSafesConfigs = require('../helpers/dlc-admin-safes'); -const { - saveDeploymentInfo, - deploymentInfo, - loadDeploymentInfo, -} = require('../helpers/deployment-handlers_versioned'); const { loadContractAddress } = require('../helpers/utils'); prompts.inject([true, true, true, true, true, true]); diff --git a/test/TokenManagerProxy.test.js b/test/TokenManagerProxy.test.js index 798dd56..79dd5b2 100644 --- a/test/TokenManagerProxy.test.js +++ b/test/TokenManagerProxy.test.js @@ -16,7 +16,7 @@ const Status = { CLOSED: 3, }; -describe('TokenManager Proxy', function () { +xdescribe('TokenManager Proxy', function () { let tokenManager, tokenManagerV2, mockDLCManager, dlcBtc; let deployer, user, someRandomAccount; From 297128b6aafb60c06ed8a37526e34ece3db7e5ce Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 16:45:31 +0200 Subject: [PATCH 08/27] remove docker/dfs --- docker/deploymentFiles/localhost/DLCBTC.json | 51 --------- .../deploymentFiles/localhost/DLCManager.json | 86 --------------- .../localhost/TokenManager.json | 103 ------------------ 3 files changed, 240 deletions(-) delete mode 100644 docker/deploymentFiles/localhost/DLCBTC.json delete mode 100644 docker/deploymentFiles/localhost/DLCManager.json delete mode 100644 docker/deploymentFiles/localhost/TokenManager.json diff --git a/docker/deploymentFiles/localhost/DLCBTC.json b/docker/deploymentFiles/localhost/DLCBTC.json deleted file mode 100644 index 3e85027..0000000 --- a/docker/deploymentFiles/localhost/DLCBTC.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "network": "localhost", - "updatedAt": "2024-05-13T14:20:32.732Z", - "gitSHA": "N/A", - "contract": { - "name": "DLCBTC", - "address": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "abi": [ - "constructor()", - "error BlacklistedRecipient()", - "error BlacklistedSender()", - "error NotAuthorized()", - "event Approval(address indexed owner, address indexed spender, uint256 value)", - "event Blacklisted(address account)", - "event BurnerSet(address burner)", - "event EIP712DomainChanged()", - "event Initialized(uint8 version)", - "event MinterSet(address minter)", - "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", - "event Transfer(address indexed from, address indexed to, uint256 value)", - "event Unblacklisted(address account)", - "function DOMAIN_SEPARATOR() view returns (bytes32)", - "function allowance(address owner, address spender) view returns (uint256)", - "function approve(address spender, uint256 amount) returns (bool)", - "function balanceOf(address account) view returns (uint256)", - "function blacklist(address account)", - "function blacklisted(address) view returns (bool)", - "function burn(address from, uint256 amount)", - "function decimals() view returns (uint8)", - "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", - "function eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)", - "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", - "function initialize()", - "function mint(address to, uint256 amount)", - "function name() view returns (string)", - "function nonces(address owner) view returns (uint256)", - "function owner() view returns (address)", - "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", - "function renounceOwnership()", - "function setBurner(address burner)", - "function setMinter(address minter)", - "function symbol() view returns (string)", - "function totalSupply() view returns (uint256)", - "function transfer(address to, uint256 amount) returns (bool)", - "function transferFrom(address from, address to, uint256 amount) returns (bool)", - "function transferOwnership(address newOwner)", - "function unblacklist(address account)" - ] - } -} diff --git a/docker/deploymentFiles/localhost/DLCManager.json b/docker/deploymentFiles/localhost/DLCManager.json deleted file mode 100644 index 7fb665b..0000000 --- a/docker/deploymentFiles/localhost/DLCManager.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "network": "localhost", - "updatedAt": "2024-05-13T14:20:32.578Z", - "gitSHA": "N/A", - "contract": { - "name": "DLCManager", - "address": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "abi": [ - "constructor()", - "error ContractNotWhitelisted()", - "error DLCNotClosing()", - "error DLCNotFound()", - "error DLCNotFunded()", - "error DLCNotReady()", - "error DuplicateSignature()", - "error IncompatibleRoles()", - "error InvalidRange()", - "error InvalidSigner()", - "error NotCreatorContract()", - "error NotDLCAdmin()", - "error NotEnoughSignatures()", - "error SignerNotApproved(address signer)", - "error ThresholdMinimumReached(uint16 _minimumThreshold)", - "error ThresholdTooLow(uint16 _minimumThreshold)", - "error Unauthorized()", - "event CloseDLC(bytes32 uuid, address sender)", - "event CreateDLC(bytes32 uuid, uint256 valueLocked, address protocolContract, address creator, uint256 timestamp)", - "event DefaultAdminDelayChangeCanceled()", - "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", - "event DefaultAdminTransferCanceled()", - "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", - "event Initialized(uint8 version)", - "event Paused(address account)", - "event PostCloseDLC(bytes32 uuid, string btcTxId, address sender)", - "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", - "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", - "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", - "event SetStatusFunded(bytes32 uuid, string btcTxId, address sender)", - "event SetThreshold(uint16 newThreshold)", - "event Unpaused(address account)", - "function APPROVED_SIGNER() view returns (bytes32)", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", - "function DLC_ADMIN_ROLE() view returns (bytes32)", - "function WHITELISTED_CONTRACT() view returns (bytes32)", - "function acceptDefaultAdminTransfer()", - "function attestorGroupPubKey() view returns (string)", - "function beginDefaultAdminTransfer(address newAdmin)", - "function cancelDefaultAdminTransfer()", - "function changeDefaultAdminDelay(uint48 newDelay)", - "function closeDLC(bytes32 uuid)", - "function createDLC(uint256 valueLocked, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints) returns (bytes32)", - "function defaultAdmin() view returns (address)", - "function defaultAdminDelay() view returns (uint48)", - "function defaultAdminDelayIncreaseWait() view returns (uint48)", - "function dlcIDsByUUID(bytes32) view returns (uint256)", - "function dlcs(uint256) view returns (bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)", - "function getAllDLCs(uint256 startIndex, uint256 endIndex) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", - "function getDLC(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", - "function getDLCByIndex(uint256 index) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", - "function getMinimumThreshold() view returns (uint16)", - "function getRoleAdmin(bytes32 role) view returns (bytes32)", - "function getSignerCount() view returns (uint16)", - "function getThreshold() view returns (uint16)", - "function grantRole(bytes32 role, address account)", - "function hasRole(bytes32 role, address account) view returns (bool)", - "function initialize(address defaultAdmin, address dlcAdminRole, uint16 threshold)", - "function owner() view returns (address)", - "function pauseContract()", - "function paused() view returns (bool)", - "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", - "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", - "function postCloseDLC(bytes32 uuid, string btcTxId, bytes[] signatures)", - "function renounceRole(bytes32 role, address account)", - "function revokeRole(bytes32 role, address account)", - "function rollbackDefaultAdminDelay()", - "function setAttestorGroupPubKey(string pubKey)", - "function setStatusFunded(bytes32 uuid, string btcTxId, bytes[] signatures, string taprootPubKey)", - "function setTSSCommitment(bytes32 commitment)", - "function setThreshold(uint16 newThreshold)", - "function supportsInterface(bytes4 interfaceId) view returns (bool)", - "function tssCommitment() view returns (bytes32)", - "function unpauseContract()" - ] - } -} diff --git a/docker/deploymentFiles/localhost/TokenManager.json b/docker/deploymentFiles/localhost/TokenManager.json deleted file mode 100644 index fd1329e..0000000 --- a/docker/deploymentFiles/localhost/TokenManager.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "network": "localhost", - "updatedAt": "2024-05-13T14:20:32.879Z", - "gitSHA": "N/A", - "contract": { - "name": "TokenManager", - "address": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "abi": [ - "constructor()", - "error DepositTooLarge(uint256 deposit, uint256 maximumDeposit)", - "error DepositTooSmall(uint256 deposit, uint256 minimumDeposit)", - "error FeeRateOutOfBounds(uint256 feeRate)", - "error InsufficientTokenBalance(uint256 balance, uint256 amount)", - "error NotDLCAdmin()", - "error NotDLCManagerContract()", - "error NotOwner()", - "error NotPauser()", - "error NotWhitelisted()", - "event Burn(address from, uint256 amount)", - "event CloseVault(bytes32 dlcUUID, address owner)", - "event DefaultAdminDelayChangeCanceled()", - "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", - "event DefaultAdminTransferCanceled()", - "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", - "event Initialized(uint8 version)", - "event Mint(address to, uint256 amount)", - "event NewDLCManagerContract(address newDLCManagerAddress)", - "event Paused(address account)", - "event PostCloseDLCHandler(bytes32 dlcUUID, string btcTxId, address owner)", - "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", - "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", - "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", - "event SetBtcFeeRecipient(string btcFeeRecipient)", - "event SetBtcMintFeeRate(uint256 newBtcMintFeeRate)", - "event SetBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", - "event SetMaximumDeposit(uint256 newMaximumDeposit)", - "event SetMinimumDeposit(uint256 newMinimumDeposit)", - "event SetStatusFunded(bytes32 dlcUUID, string btcTxId, address owner)", - "event SetWhitelistingEnabled(bool isWhitelistingEnabled)", - "event SetupVault(bytes32 dlcUUID, uint256 btcDeposit, address owner)", - "event TransferTokenContractOwnership(address newOwner)", - "event Unpaused(address account)", - "event UnwhitelistAddress(address addressToUnWhitelist)", - "event WhitelistAddress(address addressToWhitelist)", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", - "function DLC_ADMIN_ROLE() view returns (bytes32)", - "function DLC_MANAGER_ROLE() view returns (bytes32)", - "function PAUSER_ROLE() view returns (bytes32)", - "function acceptDefaultAdminTransfer()", - "function beginDefaultAdminTransfer(address newAdmin)", - "function blacklistOnTokenContract(address account)", - "function btcFeeRecipient() view returns (string)", - "function btcMintFeeRate() view returns (uint256)", - "function btcRedeemFeeRate() view returns (uint256)", - "function cancelDefaultAdminTransfer()", - "function changeDefaultAdminDelay(uint48 newDelay)", - "function closeVault(bytes32 uuid)", - "function defaultAdmin() view returns (address)", - "function defaultAdminDelay() view returns (uint48)", - "function defaultAdminDelayIncreaseWait() view returns (uint48)", - "function dlcBTC() view returns (address)", - "function dlcManager() view returns (address)", - "function getAllVaultUUIDsForAddress(address owner) view returns (bytes32[])", - "function getAllVaultsForAddress(address owner) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", - "function getRoleAdmin(bytes32 role) view returns (bytes32)", - "function getVault(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", - "function grantRole(bytes32 role, address account)", - "function hasRole(bytes32 role, address account) view returns (bool)", - "function initialize(address defaultAdmin, address dlcAdminRole, address dlcManagerAddress, address tokenContract, string btcFeeRecipientToSet)", - "function maximumDeposit() view returns (uint256)", - "function minimumDeposit() view returns (uint256)", - "function owner() view returns (address)", - "function pauseContract()", - "function paused() view returns (bool)", - "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", - "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", - "function postCloseDLCHandler(bytes32 uuid, string btcTxId)", - "function renounceRole(bytes32 role, address account)", - "function revokeRole(bytes32 role, address account)", - "function rollbackDefaultAdminDelay()", - "function setBtcFeeRecipient(string btcFeeRecipientToSet)", - "function setBtcMintFeeRate(uint256 newBtcMintFeeRate)", - "function setBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", - "function setBurnerOnTokenContract(address burner)", - "function setMaximumDeposit(uint256 newMaximumDeposit)", - "function setMinimumDeposit(uint256 newMinimumDeposit)", - "function setMinterOnTokenContract(address minter)", - "function setStatusFunded(bytes32 uuid, string btcTxId)", - "function setWhitelistingEnabled(bool isWhitelistingEnabled)", - "function setupVault(uint256 btcDeposit) returns (bytes32)", - "function supportsInterface(bytes4 interfaceId) view returns (bool)", - "function transferTokenContractOwnership(address newOwner)", - "function unblacklistOnTokenContract(address account)", - "function unpauseContract()", - "function unwhitelistAddress(address addressToUnWhitelist)", - "function updateDLCManagerContract(address newDLCManagerAddress)", - "function userVaults(address, uint256) view returns (bytes32)", - "function whitelistAddress(address addressToWhitelist)", - "function whitelistingEnabled() view returns (bool)" - ] - } -} From e5d6847f15c17bab216e260643777369ac3d95b7 Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 16:47:07 +0200 Subject: [PATCH 09/27] chore: gitignore stuff --- .gitignore | 3 + deploymentFiles/localhost/DLCBTC.json | 51 ---------- deploymentFiles/localhost/DLCManager.json | 86 ---------------- deploymentFiles/localhost/TokenManager.json | 103 -------------------- 4 files changed, 3 insertions(+), 240 deletions(-) delete mode 100644 deploymentFiles/localhost/DLCBTC.json delete mode 100644 deploymentFiles/localhost/DLCManager.json delete mode 100644 deploymentFiles/localhost/TokenManager.json diff --git a/.gitignore b/.gitignore index e90aa56..31044b8 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,9 @@ log.txt log.log test.js +docker/deploymentFiles +deploymentFiles/localhost + local-setup.devnet.sh ### Node ### diff --git a/deploymentFiles/localhost/DLCBTC.json b/deploymentFiles/localhost/DLCBTC.json deleted file mode 100644 index a6a5fa4..0000000 --- a/deploymentFiles/localhost/DLCBTC.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "network": "localhost", - "updatedAt": "2024-05-13T13:29:00.473Z", - "gitSHA": "45a6ee8", - "contract": { - "name": "DLCBTC", - "address": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "abi": [ - "constructor()", - "error BlacklistedRecipient()", - "error BlacklistedSender()", - "error NotAuthorized()", - "event Approval(address indexed owner, address indexed spender, uint256 value)", - "event Blacklisted(address account)", - "event BurnerSet(address burner)", - "event EIP712DomainChanged()", - "event Initialized(uint8 version)", - "event MinterSet(address minter)", - "event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)", - "event Transfer(address indexed from, address indexed to, uint256 value)", - "event Unblacklisted(address account)", - "function DOMAIN_SEPARATOR() view returns (bytes32)", - "function allowance(address owner, address spender) view returns (uint256)", - "function approve(address spender, uint256 amount) returns (bool)", - "function balanceOf(address account) view returns (uint256)", - "function blacklist(address account)", - "function blacklisted(address) view returns (bool)", - "function burn(address from, uint256 amount)", - "function decimals() view returns (uint8)", - "function decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)", - "function eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)", - "function increaseAllowance(address spender, uint256 addedValue) returns (bool)", - "function initialize()", - "function mint(address to, uint256 amount)", - "function name() view returns (string)", - "function nonces(address owner) view returns (uint256)", - "function owner() view returns (address)", - "function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)", - "function renounceOwnership()", - "function setBurner(address burner)", - "function setMinter(address minter)", - "function symbol() view returns (string)", - "function totalSupply() view returns (uint256)", - "function transfer(address to, uint256 amount) returns (bool)", - "function transferFrom(address from, address to, uint256 amount) returns (bool)", - "function transferOwnership(address newOwner)", - "function unblacklist(address account)" - ] - } -} diff --git a/deploymentFiles/localhost/DLCManager.json b/deploymentFiles/localhost/DLCManager.json deleted file mode 100644 index 728b656..0000000 --- a/deploymentFiles/localhost/DLCManager.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "network": "localhost", - "updatedAt": "2024-05-13T13:29:00.382Z", - "gitSHA": "45a6ee8", - "contract": { - "name": "DLCManager", - "address": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "abi": [ - "constructor()", - "error ContractNotWhitelisted()", - "error DLCNotClosing()", - "error DLCNotFound()", - "error DLCNotFunded()", - "error DLCNotReady()", - "error DuplicateSignature()", - "error IncompatibleRoles()", - "error InvalidRange()", - "error InvalidSigner()", - "error NotCreatorContract()", - "error NotDLCAdmin()", - "error NotEnoughSignatures()", - "error SignerNotApproved(address signer)", - "error ThresholdMinimumReached(uint16 _minimumThreshold)", - "error ThresholdTooLow(uint16 _minimumThreshold)", - "error Unauthorized()", - "event CloseDLC(bytes32 uuid, address sender)", - "event CreateDLC(bytes32 uuid, uint256 valueLocked, address protocolContract, address creator, uint256 timestamp)", - "event DefaultAdminDelayChangeCanceled()", - "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", - "event DefaultAdminTransferCanceled()", - "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", - "event Initialized(uint8 version)", - "event Paused(address account)", - "event PostCloseDLC(bytes32 uuid, string btcTxId, address sender)", - "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", - "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", - "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", - "event SetStatusFunded(bytes32 uuid, string btcTxId, address sender)", - "event SetThreshold(uint16 newThreshold)", - "event Unpaused(address account)", - "function APPROVED_SIGNER() view returns (bytes32)", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", - "function DLC_ADMIN_ROLE() view returns (bytes32)", - "function WHITELISTED_CONTRACT() view returns (bytes32)", - "function acceptDefaultAdminTransfer()", - "function attestorGroupPubKey() view returns (string)", - "function beginDefaultAdminTransfer(address newAdmin)", - "function cancelDefaultAdminTransfer()", - "function changeDefaultAdminDelay(uint48 newDelay)", - "function closeDLC(bytes32 uuid)", - "function createDLC(uint256 valueLocked, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints) returns (bytes32)", - "function defaultAdmin() view returns (address)", - "function defaultAdminDelay() view returns (uint48)", - "function defaultAdminDelayIncreaseWait() view returns (uint48)", - "function dlcIDsByUUID(bytes32) view returns (uint256)", - "function dlcs(uint256) view returns (bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)", - "function getAllDLCs(uint256 startIndex, uint256 endIndex) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", - "function getDLC(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", - "function getDLCByIndex(uint256 index) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", - "function getMinimumThreshold() view returns (uint16)", - "function getRoleAdmin(bytes32 role) view returns (bytes32)", - "function getSignerCount() view returns (uint16)", - "function getThreshold() view returns (uint16)", - "function grantRole(bytes32 role, address account)", - "function hasRole(bytes32 role, address account) view returns (bool)", - "function initialize(address defaultAdmin, address dlcAdminRole, uint16 threshold)", - "function owner() view returns (address)", - "function pauseContract()", - "function paused() view returns (bool)", - "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", - "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", - "function postCloseDLC(bytes32 uuid, string btcTxId, bytes[] signatures)", - "function renounceRole(bytes32 role, address account)", - "function revokeRole(bytes32 role, address account)", - "function rollbackDefaultAdminDelay()", - "function setAttestorGroupPubKey(string pubKey)", - "function setStatusFunded(bytes32 uuid, string btcTxId, bytes[] signatures, string taprootPubKey)", - "function setTSSCommitment(bytes32 commitment)", - "function setThreshold(uint16 newThreshold)", - "function supportsInterface(bytes4 interfaceId) view returns (bool)", - "function tssCommitment() view returns (bytes32)", - "function unpauseContract()" - ] - } -} diff --git a/deploymentFiles/localhost/TokenManager.json b/deploymentFiles/localhost/TokenManager.json deleted file mode 100644 index 154755d..0000000 --- a/deploymentFiles/localhost/TokenManager.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "network": "localhost", - "updatedAt": "2024-05-13T13:29:00.560Z", - "gitSHA": "45a6ee8", - "contract": { - "name": "TokenManager", - "address": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "signerAddress": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", - "abi": [ - "constructor()", - "error DepositTooLarge(uint256 deposit, uint256 maximumDeposit)", - "error DepositTooSmall(uint256 deposit, uint256 minimumDeposit)", - "error FeeRateOutOfBounds(uint256 feeRate)", - "error InsufficientTokenBalance(uint256 balance, uint256 amount)", - "error NotDLCAdmin()", - "error NotDLCManagerContract()", - "error NotOwner()", - "error NotPauser()", - "error NotWhitelisted()", - "event Burn(address from, uint256 amount)", - "event CloseVault(bytes32 dlcUUID, address owner)", - "event DefaultAdminDelayChangeCanceled()", - "event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)", - "event DefaultAdminTransferCanceled()", - "event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)", - "event Initialized(uint8 version)", - "event Mint(address to, uint256 amount)", - "event NewDLCManagerContract(address newDLCManagerAddress)", - "event Paused(address account)", - "event PostCloseDLCHandler(bytes32 dlcUUID, string btcTxId, address owner)", - "event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)", - "event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)", - "event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)", - "event SetBtcFeeRecipient(string btcFeeRecipient)", - "event SetBtcMintFeeRate(uint256 newBtcMintFeeRate)", - "event SetBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", - "event SetMaximumDeposit(uint256 newMaximumDeposit)", - "event SetMinimumDeposit(uint256 newMinimumDeposit)", - "event SetStatusFunded(bytes32 dlcUUID, string btcTxId, address owner)", - "event SetWhitelistingEnabled(bool isWhitelistingEnabled)", - "event SetupVault(bytes32 dlcUUID, uint256 btcDeposit, address owner)", - "event TransferTokenContractOwnership(address newOwner)", - "event Unpaused(address account)", - "event UnwhitelistAddress(address addressToUnWhitelist)", - "event WhitelistAddress(address addressToWhitelist)", - "function DEFAULT_ADMIN_ROLE() view returns (bytes32)", - "function DLC_ADMIN_ROLE() view returns (bytes32)", - "function DLC_MANAGER_ROLE() view returns (bytes32)", - "function PAUSER_ROLE() view returns (bytes32)", - "function acceptDefaultAdminTransfer()", - "function beginDefaultAdminTransfer(address newAdmin)", - "function blacklistOnTokenContract(address account)", - "function btcFeeRecipient() view returns (string)", - "function btcMintFeeRate() view returns (uint256)", - "function btcRedeemFeeRate() view returns (uint256)", - "function cancelDefaultAdminTransfer()", - "function changeDefaultAdminDelay(uint48 newDelay)", - "function closeVault(bytes32 uuid)", - "function defaultAdmin() view returns (address)", - "function defaultAdminDelay() view returns (uint48)", - "function defaultAdminDelayIncreaseWait() view returns (uint48)", - "function dlcBTC() view returns (address)", - "function dlcManager() view returns (address)", - "function getAllVaultUUIDsForAddress(address owner) view returns (bytes32[])", - "function getAllVaultsForAddress(address owner) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey)[])", - "function getRoleAdmin(bytes32 role) view returns (bytes32)", - "function getVault(bytes32 uuid) view returns (tuple(bytes32 uuid, address protocolContract, uint256 timestamp, uint256 valueLocked, address creator, uint8 status, string fundingTxId, string closingTxId, string btcFeeRecipient, uint256 btcMintFeeBasisPoints, uint256 btcRedeemFeeBasisPoints, string taprootPubKey))", - "function grantRole(bytes32 role, address account)", - "function hasRole(bytes32 role, address account) view returns (bool)", - "function initialize(address defaultAdmin, address dlcAdminRole, address dlcManagerAddress, address tokenContract, string btcFeeRecipientToSet)", - "function maximumDeposit() view returns (uint256)", - "function minimumDeposit() view returns (uint256)", - "function owner() view returns (address)", - "function pauseContract()", - "function paused() view returns (bool)", - "function pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)", - "function pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)", - "function postCloseDLCHandler(bytes32 uuid, string btcTxId)", - "function renounceRole(bytes32 role, address account)", - "function revokeRole(bytes32 role, address account)", - "function rollbackDefaultAdminDelay()", - "function setBtcFeeRecipient(string btcFeeRecipientToSet)", - "function setBtcMintFeeRate(uint256 newBtcMintFeeRate)", - "function setBtcRedeemFeeRate(uint256 newBtcRedeemFeeRate)", - "function setBurnerOnTokenContract(address burner)", - "function setMaximumDeposit(uint256 newMaximumDeposit)", - "function setMinimumDeposit(uint256 newMinimumDeposit)", - "function setMinterOnTokenContract(address minter)", - "function setStatusFunded(bytes32 uuid, string btcTxId)", - "function setWhitelistingEnabled(bool isWhitelistingEnabled)", - "function setupVault(uint256 btcDeposit) returns (bytes32)", - "function supportsInterface(bytes4 interfaceId) view returns (bool)", - "function transferTokenContractOwnership(address newOwner)", - "function unblacklistOnTokenContract(address account)", - "function unpauseContract()", - "function unwhitelistAddress(address addressToUnWhitelist)", - "function updateDLCManagerContract(address newDLCManagerAddress)", - "function userVaults(address, uint256) view returns (bytes32)", - "function whitelistAddress(address addressToWhitelist)", - "function whitelistingEnabled() view returns (bool)" - ] - } -} From d7bdfb82f9ac1993f87c79578161b20878cd5ea9 Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 16:53:45 +0200 Subject: [PATCH 10/27] chore: fix ghwf --- .github/workflows/hardhat-test.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index bbc0d43..2ba9fa5 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -10,6 +10,11 @@ on: - reopened - synchronize +env: + KEY: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 + KEY2: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d + KEY3: 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a + jobs: test: runs-on: ubuntu-latest From 4435d7352d18e1c40f25f111ebf2d70c6e0479d2 Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 16:54:49 +0200 Subject: [PATCH 11/27] chore: fix ghwf --- .github/workflows/hardhat-test.yaml | 6 +++--- hardhat.config.js | 23 +++++++++++++---------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index 2ba9fa5..a47ad30 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -11,9 +11,9 @@ on: - synchronize env: - KEY: 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 - KEY2: 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d - KEY3: 0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a + KEY: '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' + KEY2: '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' + KEY3: '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a' jobs: test: diff --git a/hardhat.config.js b/hardhat.config.js index 0bf8941..76c011f 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -6,7 +6,13 @@ require('@nomiclabs/hardhat-solhint'); require('solidity-coverage'); require('dotenv').config(); -if (!process.env.KEY_FOR_SAFE) process.env.KEY_FOR_SAFE = process.env.KEY; +const arbitrumURL = process.env.ARB_NODE_ADDR ?? 'https://arb1.arbitrum.io/rpc'; +const arbSepoliaURL = + process.env.ARB_SEPOLIA_NODE_ADDR ?? + 'https://sepolia-rollup.arbitrum.io/rpc'; + +const arbDeployerKey = process.env.ARB_DEPLOYER ?? process.env.KEY; +const keyForSafe = process.env.KEY_FOR_SAFE ?? process.env.KEY; module.exports = { defaultNetwork: 'hardhat', @@ -32,30 +38,27 @@ module.exports = { process.env['KEY'], process.env['KEY2'], process.env['KEY3'], - process.env['KEY_FOR_SAFE'], + keyForSafe, ], }, arbsepolia: { - // url: 'https://sepolia-rollup.arbitrum.io/rpc', - url: process.env['ARB_SEPOLIA_NODE_ADDR'], + url: arbSepoliaURL, chainId: 421614, accounts: [ process.env['KEY'], process.env['KEY2'], process.env['KEY3'], - process.env['KEY_FOR_SAFE'], + keyForSafe, ], }, arbitrum: { - // url: 'https://arb1.arbitrum.io/rpc', - // url: `https://arbitrum-mainnet.infura.io/v3/ed8c014d7cdb486880718a5777ab0ff5`, - url: process.env['ARB_NODE_ADDR'], + url: arbitrumURL, chainId: 42161, accounts: [ - process.env['ARB_DEPLOYER'], + arbDeployerKey, process.env['KEY2'], process.env['KEY3'], - process.env['KEY_FOR_SAFE'], + keyForSafe, ], }, }, From 33129800b879198c19f7b72788aed2889f95aa86 Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 18:00:14 +0200 Subject: [PATCH 12/27] new ghwf --- .github/workflows/docker-on-tag.yaml | 57 ++++++++++++++++++++++++++++ Dockerfile | 2 + docker-compose.yml | 2 - scripts/misc/deploy-all.js | 6 +-- 4 files changed, 61 insertions(+), 6 deletions(-) create mode 100644 .github/workflows/docker-on-tag.yaml diff --git a/.github/workflows/docker-on-tag.yaml b/.github/workflows/docker-on-tag.yaml new file mode 100644 index 0000000..9756c75 --- /dev/null +++ b/.github/workflows/docker-on-tag.yaml @@ -0,0 +1,57 @@ +# Build and push docker image when tagged with v[0-9]* + +name: Build & Push Docker on Tag + +on: + push: + tags: + - v[0-9]* + +env: + KEY: '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' + KEY2: '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' + KEY3: '0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a' + +jobs: + test: + runs-on: ubuntu-latest + name: Hardhat unit tests + steps: + - name: Checkout code + uses: actions/checkout@v4 + - name: Install Node.js + uses: actions/setup-node@v4 + - name: Install the dependencies + run: npm install + - name: Run the tests + run: npm run coverage + build: + name: Build and push Docker image + runs-on: ubuntu-latest + needs: [test] + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.TF_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.TF_AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: Login to Amazon ECR Public + id: login-ecr-public + uses: aws-actions/amazon-ecr-login@v2 + with: + registry-type: public + - name: Set outputs + id: vars + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - name: Build and push Docker image + env: + ECR_PUBLIC_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} + REGISTRY_ALIAS: dlc-link + ECR_REPOSITORY: dlc-solidity + IMAGE_TAG: ${{ github.ref_name }} + run: | + docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG + docker push $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG diff --git a/Dockerfile b/Dockerfile index 9059e28..ca26599 100644 --- a/Dockerfile +++ b/Dockerfile @@ -21,4 +21,6 @@ COPY --from=dlc-solidity-build /app/dlc-solidity /app/dlc-solidity WORKDIR /app/dlc-solidity +RUN npx hardhat compile + ENTRYPOINT [ "/app/dlc-solidity/entrypoint.sh" ] diff --git a/docker-compose.yml b/docker-compose.yml index 764353d..8a504b5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,5 +5,3 @@ services: - "8545:8545" volumes: - ./docker/deploymentFiles:/app/dlc-solidity/deploymentFiles - environment: - - GITSHA=N/A diff --git a/scripts/misc/deploy-all.js b/scripts/misc/deploy-all.js index 7e01547..50f4ad8 100644 --- a/scripts/misc/deploy-all.js +++ b/scripts/misc/deploy-all.js @@ -2,6 +2,7 @@ require('dotenv').config(); const prompts = require('prompts'); const hardhat = require('hardhat'); const getContractConfigs = require('../99_contract-configs'); +const dlcAdminSafesConfigs = require('../helpers/dlc-admin-safes'); const { loadContractAddress } = require('../helpers/utils'); prompts.inject([true, true, true, true, true, true]); @@ -10,10 +11,7 @@ async function main() { const network = hardhat.network.name; const accounts = await hardhat.ethers.getSigners(); const deployer = accounts[0]; - const dlcAdminSafes = { - medium: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', - critical: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266', - }; + const dlcAdminSafes = dlcAdminSafesConfigs[network]; console.log(network, dlcAdminSafes); From 3a51e07801eb8944dc40a15a42d5e6ed2265c24a Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 18:03:15 +0200 Subject: [PATCH 13/27] fix: ghwf --- .github/workflows/docker-on-tag.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-on-tag.yaml b/.github/workflows/docker-on-tag.yaml index 9756c75..c7eed0a 100644 --- a/.github/workflows/docker-on-tag.yaml +++ b/.github/workflows/docker-on-tag.yaml @@ -53,5 +53,5 @@ jobs: ECR_REPOSITORY: dlc-solidity IMAGE_TAG: ${{ github.ref_name }} run: | - docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG + docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG From 86d9115f3163e70395582fa7bc9455270836e9d3 Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 18:23:31 +0200 Subject: [PATCH 14/27] dockerfile update --- .github/workflows/hardhat-test.yaml | 31 +++++++++++++++++++++++++++++ Dockerfile | 2 +- docker/entrypoint.sh | 7 +++++++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index a47ad30..e0646db 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -28,3 +28,34 @@ jobs: run: npm install - name: Run the tests run: npm run coverage + + build: + name: Build and push Docker image + runs-on: ubuntu-latest + needs: [test] + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Configure AWS credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ secrets.TF_AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.TF_AWS_SECRET_ACCESS_KEY }} + aws-region: us-east-1 + - name: Login to Amazon ECR Public + id: login-ecr-public + uses: aws-actions/amazon-ecr-login@v2 + with: + registry-type: public + - name: Set outputs + id: vars + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - name: Build and push Docker image + env: + ECR_PUBLIC_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} + REGISTRY_ALIAS: dlc-link + ECR_REPOSITORY: dlc-solidity + IMAGE_TAG: test-${{ steps.vars.outputs.sha_short }} + run: | + docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG . + docker push $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG diff --git a/Dockerfile b/Dockerfile index ca26599..c01e87b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ WORKDIR /app/dlc-solidity RUN npm ci +RUN npx hardhat compile # Copy the entrypoint script into the Docker image COPY ./docker/entrypoint.sh /app/dlc-solidity/entrypoint.sh RUN chmod +x /app/dlc-solidity/entrypoint.sh @@ -21,6 +22,5 @@ COPY --from=dlc-solidity-build /app/dlc-solidity /app/dlc-solidity WORKDIR /app/dlc-solidity -RUN npx hardhat compile ENTRYPOINT [ "/app/dlc-solidity/entrypoint.sh" ] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 3f5164b..1181bd8 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -3,6 +3,13 @@ # Start the Hardhat node in the background npx hardhat node >hardhat.log 2>&1 & mkdir -p deploymentFiles/localhost 2>/dev/null + +# Wait for the Hardhat node to start +while ! grep -q "Started HTTP and WebSocket JSON-RPC server" hardhat.log; do + echo "Waiting for Hardhat node to start..." + sleep 1 +done + npx hardhat run --network localhost scripts/misc/deploy-all.js # Keep the script running so the Docker container doesn't exit tail -f hardhat.log From 8422119b2f4ed6030fe01e8eea1df4f8b896d925 Mon Sep 17 00:00:00 2001 From: scolear Date: Mon, 13 May 2024 18:29:45 +0200 Subject: [PATCH 15/27] bump action v --- .github/workflows/hardhat-test.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index e0646db..6b3f25e 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -21,9 +21,9 @@ jobs: name: Hardhat unit tests steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 - name: Install the dependencies run: npm install - name: Run the tests From 028f456e6b95c82cbcf4dc5b27d7398c698f0217 Mon Sep 17 00:00:00 2001 From: scolear Date: Tue, 14 May 2024 10:58:58 +0200 Subject: [PATCH 16/27] private ECR --- .github/workflows/docker-on-tag.yaml | 6 ++++-- .github/workflows/hardhat-test.yaml | 14 ++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/docker-on-tag.yaml b/.github/workflows/docker-on-tag.yaml index c7eed0a..60c7548 100644 --- a/.github/workflows/docker-on-tag.yaml +++ b/.github/workflows/docker-on-tag.yaml @@ -1,11 +1,13 @@ -# Build and push docker image when tagged with v[0-9]* +# Build and push docker image when tagged with v[0-9]* or when pushed to dev branch -name: Build & Push Docker on Tag +name: Build & Push Docker on Push on: push: tags: - v[0-9]* + branches: + - dev env: KEY: '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' diff --git a/.github/workflows/hardhat-test.yaml b/.github/workflows/hardhat-test.yaml index 6b3f25e..5e4e956 100644 --- a/.github/workflows/hardhat-test.yaml +++ b/.github/workflows/hardhat-test.yaml @@ -1,4 +1,4 @@ -name: hardhat-test +name: Hardhat Tests & ECR Private on: pull_request: @@ -29,6 +29,7 @@ jobs: - name: Run the tests run: npm run coverage + # This will push a temp image to ECR private build: name: Build and push Docker image runs-on: ubuntu-latest @@ -43,19 +44,16 @@ jobs: aws-secret-access-key: ${{ secrets.TF_AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Login to Amazon ECR Public - id: login-ecr-public + id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - with: - registry-type: public - name: Set outputs id: vars run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Build and push Docker image env: - ECR_PUBLIC_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} - REGISTRY_ALIAS: dlc-link + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} ECR_REPOSITORY: dlc-solidity IMAGE_TAG: test-${{ steps.vars.outputs.sha_short }} run: | - docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG . - docker push $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG + docker build -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG From a6952a8e3c247b253074a092676e8757c326f528 Mon Sep 17 00:00:00 2001 From: scolear Date: Tue, 14 May 2024 17:15:11 +0200 Subject: [PATCH 17/27] move some fiels around --- Dockerfile | 11 ++++++++--- docker/entrypoint.sh | 6 +++++- docker/scripts/check-service.sh | 6 ++++++ {scripts/misc => docker/scripts}/deploy-all.js | 6 +++--- 4 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 docker/scripts/check-service.sh rename {scripts/misc => docker/scripts}/deploy-all.js (84%) diff --git a/Dockerfile b/Dockerfile index c01e87b..f0f8fbe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,9 +12,6 @@ WORKDIR /app/dlc-solidity RUN npm ci RUN npx hardhat compile -# Copy the entrypoint script into the Docker image -COPY ./docker/entrypoint.sh /app/dlc-solidity/entrypoint.sh -RUN chmod +x /app/dlc-solidity/entrypoint.sh FROM node:20-alpine @@ -22,5 +19,13 @@ COPY --from=dlc-solidity-build /app/dlc-solidity /app/dlc-solidity WORKDIR /app/dlc-solidity +COPY ./docker/scripts/check-service.sh /check-service.sh +RUN chmod +x /check-service.sh + +# Copy the entrypoint script into the Docker image +COPY ./docker/entrypoint.sh /app/dlc-solidity/entrypoint.sh +RUN chmod +x /app/dlc-solidity/entrypoint.sh + +COPY ./docker/scripts/deploy-all.js /app/dlc-solidity/docker/scripts/deploy-all.js ENTRYPOINT [ "/app/dlc-solidity/entrypoint.sh" ] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 1181bd8..0327ad0 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -10,6 +10,10 @@ while ! grep -q "Started HTTP and WebSocket JSON-RPC server" hardhat.log; do sleep 1 done -npx hardhat run --network localhost scripts/misc/deploy-all.js +npx hardhat run --network localhost docker/scripts/deploy-all.js + +# push the message "Deployment Complete" into the log file +echo "Deployment Complete" >>hardhat.log + # Keep the script running so the Docker container doesn't exit tail -f hardhat.log diff --git a/docker/scripts/check-service.sh b/docker/scripts/check-service.sh new file mode 100644 index 0000000..2098a0f --- /dev/null +++ b/docker/scripts/check-service.sh @@ -0,0 +1,6 @@ +#!/bin/sh +if grep -q "Deployment Complete" hardhat.log; then + exit 0 +else + exit 1 +fi diff --git a/scripts/misc/deploy-all.js b/docker/scripts/deploy-all.js similarity index 84% rename from scripts/misc/deploy-all.js rename to docker/scripts/deploy-all.js index 50f4ad8..7b3497b 100644 --- a/scripts/misc/deploy-all.js +++ b/docker/scripts/deploy-all.js @@ -1,9 +1,9 @@ require('dotenv').config(); const prompts = require('prompts'); const hardhat = require('hardhat'); -const getContractConfigs = require('../99_contract-configs'); -const dlcAdminSafesConfigs = require('../helpers/dlc-admin-safes'); -const { loadContractAddress } = require('../helpers/utils'); +const getContractConfigs = require('../../scripts/99_contract-configs'); +const dlcAdminSafesConfigs = require('../../scripts/helpers/dlc-admin-safes'); +const { loadContractAddress } = require('../../scripts/helpers/utils'); prompts.inject([true, true, true, true, true, true]); From 8414206cf029ad5f9350de56a65c6eda805109fc Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 15 May 2024 18:32:53 +0200 Subject: [PATCH 18/27] ref: scripts are runnable standalone --- scripts/00-grant-role-on-manager.js | 6 ++++++ scripts/00-revoke-role-on-manager.js | 6 ++++++ scripts/07-set-threshold.js | 11 +++++++++-- scripts/08-set-tss-commitment.js | 10 ++++++++-- scripts/09-set-attestor-gpk.js | 11 +++++++++-- scripts/10_whitelist-account.js | 11 +++++++++-- scripts/11_unwhitelist-account.js | 11 +++++++++-- scripts/12_setup-vault.js | 11 +++++++++-- scripts/13_set-whitelisting.js | 11 +++++++++-- scripts/14_set-btc-fee-recipient.js | 11 +++++++++-- 10 files changed, 83 insertions(+), 16 deletions(-) diff --git a/scripts/00-grant-role-on-manager.js b/scripts/00-grant-role-on-manager.js index 7916112..693f88a 100644 --- a/scripts/00-grant-role-on-manager.js +++ b/scripts/00-grant-role-on-manager.js @@ -20,3 +20,9 @@ async function grantRoleOnManager(role, grantRoleToAddress) { } module.exports = { grantRoleOnManager, registerProtocol, addSigner }; + +if (require.main === module) { + const role = process.argv[2]; + const address = process.argv[3]; + grantRoleOnManager(role, address).catch(console.error); +} diff --git a/scripts/00-revoke-role-on-manager.js b/scripts/00-revoke-role-on-manager.js index e583bdd..e40a03a 100644 --- a/scripts/00-revoke-role-on-manager.js +++ b/scripts/00-revoke-role-on-manager.js @@ -16,3 +16,9 @@ async function revokeRoleOnManager(role, revokeRoleFromAddress) { } module.exports = { revokeRoleOnManager, removeSigner }; + +if (require.main === module) { + const role = process.argv[2]; + const address = process.argv[3]; + revokeRoleOnManager(role, address).catch(console.error); +} diff --git a/scripts/07-set-threshold.js b/scripts/07-set-threshold.js index a82aa3e..64185f4 100644 --- a/scripts/07-set-threshold.js +++ b/scripts/07-set-threshold.js @@ -2,6 +2,13 @@ const { callManagerContractFunction, } = require('./helpers/00-call-dlc-manager-fn'); -module.exports = async function setThreshold(threshold) { +async function setThreshold(threshold) { await callManagerContractFunction('setThreshold', [threshold]); -}; +} + +module.exports = setThreshold; + +if (require.main === module) { + const threshold = process.argv[2]; + setThreshold(threshold).catch(console.error); +} diff --git a/scripts/08-set-tss-commitment.js b/scripts/08-set-tss-commitment.js index e250e5b..930626a 100644 --- a/scripts/08-set-tss-commitment.js +++ b/scripts/08-set-tss-commitment.js @@ -8,7 +8,7 @@ const { loadDeploymentInfo, } = require('./helpers/deployment-handlers_versioned'); -module.exports = async function setTSSCommitment() { +async function setTSSCommitment() { const accounts = await hardhat.ethers.getSigners(); const admin = accounts[0]; const deployInfo = await loadDeploymentInfo( @@ -59,4 +59,10 @@ module.exports = async function setTSSCommitment() { console.log('Commitment (bytes32): ', commitmentBytes32); await callManagerContractFunction('setTSSCommitment', [commitmentBytes32]); -}; +} + +module.exports = setTSSCommitment; + +if (require.main === module) { + setTSSCommitment().catch(console.error); +} diff --git a/scripts/09-set-attestor-gpk.js b/scripts/09-set-attestor-gpk.js index 783deb9..603afea 100644 --- a/scripts/09-set-attestor-gpk.js +++ b/scripts/09-set-attestor-gpk.js @@ -2,6 +2,13 @@ const { callManagerContractFunction, } = require('./helpers/00-call-dlc-manager-fn'); -module.exports = async function setAttestorGroupPubKey(attestorGPK) { +async function setAttestorGroupPubKey(attestorGPK) { await callManagerContractFunction('setAttestorGroupPubKey', [attestorGPK]); -}; +} + +module.exports = setAttestorGroupPubKey; + +if (require.main === module) { + const attestorGPK = process.argv[2]; + setAttestorGroupPubKey(attestorGPK).catch(console.error); +} diff --git a/scripts/10_whitelist-account.js b/scripts/10_whitelist-account.js index e7bf4e1..68fb879 100644 --- a/scripts/10_whitelist-account.js +++ b/scripts/10_whitelist-account.js @@ -2,6 +2,13 @@ const { callTokenManagerFunction, } = require('./helpers/10-call-token-manager-fn'); -module.exports = async function whitelistAccount(addressToWhitelist) { +async function whitelistAccount(addressToWhitelist) { await callTokenManagerFunction('whitelistAddress', [addressToWhitelist]); -}; +} + +module.exports = whitelistAccount; + +if (require.main === module) { + const addressToWhitelist = process.argv[2]; + whitelistAccount(addressToWhitelist).catch(console.error); +} diff --git a/scripts/11_unwhitelist-account.js b/scripts/11_unwhitelist-account.js index 09df479..38688cb 100644 --- a/scripts/11_unwhitelist-account.js +++ b/scripts/11_unwhitelist-account.js @@ -2,8 +2,15 @@ const { callTokenManagerFunction, } = require('./helpers/10-call-token-manager-fn'); -module.exports = async function unwhitelistAccount(addressToUnWhitelist) { +async function unwhitelistAccount(addressToUnWhitelist) { await callTokenManagerFunction('unwhitelistAddress', [ addressToUnWhitelist, ]); -}; +} + +module.exports = unwhitelistAccount; + +if (require.main === module) { + const addressToUnWhitelist = process.argv[2]; + unwhitelistAccount(addressToUnWhitelist).catch(console.error); +} diff --git a/scripts/12_setup-vault.js b/scripts/12_setup-vault.js index 75db770..af2bdd3 100644 --- a/scripts/12_setup-vault.js +++ b/scripts/12_setup-vault.js @@ -3,7 +3,7 @@ const { loadDeploymentInfo, } = require('./helpers/deployment-handlers_versioned'); -module.exports = async function tokenManagerSetupVault(btcDeposit = 1000000) { +async function tokenManagerSetupVault(btcDeposit = 1000000) { const deployInfo = await loadDeploymentInfo( hardhat.network.name, 'TokenManager' @@ -20,4 +20,11 @@ module.exports = async function tokenManagerSetupVault(btcDeposit = 1000000) { const receipt = await tx.wait(); console.dir(tx, { depth: 4 }); console.dir(receipt, { depth: 4 }); -}; +} + +module.exports = tokenManagerSetupVault; + +if (require.main === module) { + const deposit = process.argv[2]; + tokenManagerSetupVault(deposit).catch(console.error); +} diff --git a/scripts/13_set-whitelisting.js b/scripts/13_set-whitelisting.js index 40b2362..ea3ebad 100644 --- a/scripts/13_set-whitelisting.js +++ b/scripts/13_set-whitelisting.js @@ -2,7 +2,14 @@ const { callTokenManagerFunction, } = require('./helpers/10-call-token-manager-fn'); -module.exports = async function setWhitelisting(whitelistingEnabled) { +async function setWhitelisting(whitelistingEnabled) { const toSet = whitelistingEnabled === 'true' ? true : false; await callTokenManagerFunction('setWhitelistingEnabled', [toSet]); -}; +} + +module.exports = setWhitelisting; + +if (require.main === module) { + const whitelistingEnabled = process.argv[2]; + setWhitelisting(whitelistingEnabled).catch(console.error); +} diff --git a/scripts/14_set-btc-fee-recipient.js b/scripts/14_set-btc-fee-recipient.js index 208f62c..00aa0d6 100644 --- a/scripts/14_set-btc-fee-recipient.js +++ b/scripts/14_set-btc-fee-recipient.js @@ -2,6 +2,13 @@ const { callTokenManagerFunction, } = require('./helpers/10-call-token-manager-fn'); -module.exports = async function setBtcFeeRecipient(btcFeeRecipient) { +async function setBtcFeeRecipient(btcFeeRecipient) { await callTokenManagerFunction('setBtcFeeRecipient', [btcFeeRecipient]); -}; +} + +module.exports = setBtcFeeRecipient; + +if (require.main === module) { + const btcFeeRecipient = process.argv[2]; + setBtcFeeRecipient(btcFeeRecipient).catch(console.error); +} From 71eedef0fba9148fdd7fd751b1ab5b5b3f4b0d0a Mon Sep 17 00:00:00 2001 From: scolear Date: Thu, 16 May 2024 14:23:39 +0200 Subject: [PATCH 19/27] update ghwf --- .../workflows/{docker-on-tag.yaml => docker-build-and-push.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{docker-on-tag.yaml => docker-build-and-push.yaml} (100%) diff --git a/.github/workflows/docker-on-tag.yaml b/.github/workflows/docker-build-and-push.yaml similarity index 100% rename from .github/workflows/docker-on-tag.yaml rename to .github/workflows/docker-build-and-push.yaml From a6d3afa6ece161916affdad73bef99e98d541513 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 22 May 2024 12:54:15 +0200 Subject: [PATCH 20/27] wip: tasks --- scripts/12_setup-vault.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/scripts/12_setup-vault.js b/scripts/12_setup-vault.js index af2bdd3..af91f13 100644 --- a/scripts/12_setup-vault.js +++ b/scripts/12_setup-vault.js @@ -1,9 +1,11 @@ const hardhat = require('hardhat'); +const { task, types } = require('hardhat/config'); const { loadDeploymentInfo, } = require('./helpers/deployment-handlers_versioned'); -async function tokenManagerSetupVault(btcDeposit = 1000000) { +async function tokenManagerSetupVault(btcDeposit) { + if (!btcDeposit) btcDeposit = 1000000; const deployInfo = await loadDeploymentInfo( hardhat.network.name, 'TokenManager' @@ -28,3 +30,9 @@ if (require.main === module) { const deposit = process.argv[2]; tokenManagerSetupVault(deposit).catch(console.error); } + +task('tokenManager:setupVault', 'Setup vault for TokenManager') + .addParam('btcDeposit', 'BTC deposit amount', 1000000, types.int) + .setAction(async (taskArgs) => { + await tokenManagerSetupVault(taskArgs.btcDeposit); + }); From 8c3588c7a8b68a8b1283ecc9ed7aa9fd25470771 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 22 May 2024 16:26:46 +0200 Subject: [PATCH 21/27] task collection --- hardhat.config.js | 1 + scripts/12_setup-vault.js | 9 +++++---- scripts/tasks.js | 5 +++++ 3 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 scripts/tasks.js diff --git a/hardhat.config.js b/hardhat.config.js index 76c011f..f10f773 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -5,6 +5,7 @@ require('@openzeppelin/hardhat-upgrades'); require('@nomiclabs/hardhat-solhint'); require('solidity-coverage'); require('dotenv').config(); +require('./scripts/tasks'); const arbitrumURL = process.env.ARB_NODE_ADDR ?? 'https://arb1.arbitrum.io/rpc'; const arbSepoliaURL = diff --git a/scripts/12_setup-vault.js b/scripts/12_setup-vault.js index af91f13..323f149 100644 --- a/scripts/12_setup-vault.js +++ b/scripts/12_setup-vault.js @@ -1,11 +1,12 @@ -const hardhat = require('hardhat'); const { task, types } = require('hardhat/config'); const { loadDeploymentInfo, } = require('./helpers/deployment-handlers_versioned'); -async function tokenManagerSetupVault(btcDeposit) { +async function tokenManagerSetupVault(btcDeposit, hardhat) { + if (!hardhat || !hardhat.network) hardhat = require('hardhat'); if (!btcDeposit) btcDeposit = 1000000; + const deployInfo = await loadDeploymentInfo( hardhat.network.name, 'TokenManager' @@ -33,6 +34,6 @@ if (require.main === module) { task('tokenManager:setupVault', 'Setup vault for TokenManager') .addParam('btcDeposit', 'BTC deposit amount', 1000000, types.int) - .setAction(async (taskArgs) => { - await tokenManagerSetupVault(taskArgs.btcDeposit); + .setAction(async (taskArgs, hardhat) => { + await tokenManagerSetupVault(taskArgs.btcDeposit, hardhat); }); diff --git a/scripts/tasks.js b/scripts/tasks.js new file mode 100644 index 0000000..3d9e286 --- /dev/null +++ b/scripts/tasks.js @@ -0,0 +1,5 @@ +// lets import and re-export tasks from other files + +const { task } = require('hardhat/config'); + +require('./12_setup-vault'); From ee4df94380d47b86e4ff608bae51dc0ed96e7727 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 29 May 2024 13:30:11 +0200 Subject: [PATCH 22/27] feat: add default signers & set-whitelisting off --- docker/scripts/deploy-all.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docker/scripts/deploy-all.js b/docker/scripts/deploy-all.js index 7b3497b..23e9825 100644 --- a/docker/scripts/deploy-all.js +++ b/docker/scripts/deploy-all.js @@ -3,6 +3,8 @@ const prompts = require('prompts'); const hardhat = require('hardhat'); const getContractConfigs = require('../../scripts/99_contract-configs'); const dlcAdminSafesConfigs = require('../../scripts/helpers/dlc-admin-safes'); +const addSigner = require('../../scripts/00-grant-role-on-manager').addSigner; +const setWhitelisting = require('../../scripts/13_set-whitelisting'); const { loadContractAddress } = require('../../scripts/helpers/utils'); prompts.inject([true, true, true, true, true, true]); @@ -37,6 +39,19 @@ async function main() { } console.log('Deployment complete'); + + // Adding signers + const defaultSigners = [ + '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', + '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', + '0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc', + ]; + for (const signer of defaultSigners) { + await addSigner(signer); + } + + // Set whitelisting + await setWhitelisting('false'); } // make sure we catch all errors From 7bd627e7fa974a83a8190a975d17308a7c78ae19 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 29 May 2024 13:32:39 +0200 Subject: [PATCH 23/27] 2.4.2-dev --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 363be67..4463555 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dlc-link-eth", - "version": "2.2.0", + "version": "2.4.2-dev", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dlc-link-eth", - "version": "2.2.0", + "version": "2.4.2-dev", "license": "ISC", "dependencies": { "@chainlink/contracts": "^0.6.1", diff --git a/package.json b/package.json index adb683a..205cc07 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dlc-link-eth", - "version": "2.2.0", + "version": "2.4.2-dev", "main": "scripts/index.js", "directories": { "test": "test" From df32442415140a32b8ee7257e551e95e4035ae1b Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 29 May 2024 13:59:49 +0200 Subject: [PATCH 24/27] feat: add account 6,7,8 as signers --- docker/entrypoint.sh | 2 +- docker/scripts/deploy-all.js | 8 +- hardhat.config.js | 1 - scripts/08-set-tss-commitment.js | 53 ++-- scripts/51_deploy-V1.js | 489 ------------------------------- scripts/helpers/utils.js | 4 + scripts/index.js | 1 + scripts/tasks.js | 5 - 8 files changed, 39 insertions(+), 524 deletions(-) delete mode 100644 scripts/51_deploy-V1.js delete mode 100644 scripts/tasks.js diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 0327ad0..17aae7c 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -10,7 +10,7 @@ while ! grep -q "Started HTTP and WebSocket JSON-RPC server" hardhat.log; do sleep 1 done -npx hardhat run --network localhost docker/scripts/deploy-all.js +CLI_MODE='noninteractive' npx hardhat run --network localhost docker/scripts/deploy-all.js # push the message "Deployment Complete" into the log file echo "Deployment Complete" >>hardhat.log diff --git a/docker/scripts/deploy-all.js b/docker/scripts/deploy-all.js index 23e9825..208e90f 100644 --- a/docker/scripts/deploy-all.js +++ b/docker/scripts/deploy-all.js @@ -7,7 +7,7 @@ const addSigner = require('../../scripts/00-grant-role-on-manager').addSigner; const setWhitelisting = require('../../scripts/13_set-whitelisting'); const { loadContractAddress } = require('../../scripts/helpers/utils'); -prompts.inject([true, true, true, true, true, true]); +process.env.CLI_MODE = 'noninteractive'; async function main() { const network = hardhat.network.name; @@ -42,9 +42,9 @@ async function main() { // Adding signers const defaultSigners = [ - '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', - '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', - '0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc', + '0x976EA74026E726554dB657fA54763abd0C3a0aa9', // account[6] + '0x14dC79964da2C08b23698B3D3cc7Ca32193d9955', // account[7] + '0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f', // account[8] ]; for (const signer of defaultSigners) { await addSigner(signer); diff --git a/hardhat.config.js b/hardhat.config.js index f10f773..76c011f 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -5,7 +5,6 @@ require('@openzeppelin/hardhat-upgrades'); require('@nomiclabs/hardhat-solhint'); require('solidity-coverage'); require('dotenv').config(); -require('./scripts/tasks'); const arbitrumURL = process.env.ARB_NODE_ADDR ?? 'https://arb1.arbitrum.io/rpc'; const arbSepoliaURL = diff --git a/scripts/08-set-tss-commitment.js b/scripts/08-set-tss-commitment.js index 930626a..a300d1f 100644 --- a/scripts/08-set-tss-commitment.js +++ b/scripts/08-set-tss-commitment.js @@ -8,7 +8,7 @@ const { loadDeploymentInfo, } = require('./helpers/deployment-handlers_versioned'); -async function setTSSCommitment() { +async function setTSSCommitment(timestamp) { const accounts = await hardhat.ethers.getSigners(); const admin = accounts[0]; const deployInfo = await loadDeploymentInfo( @@ -28,31 +28,35 @@ async function setTSSCommitment() { ); console.log('Current Commitment (string): ', currentCommitment); - const response = await prompts({ - type: 'select', - name: 'set-unset', - message: 'Do you want to set or unset the TSS commitment?', - choices: [ - { title: 'Set (to Timestamp)', value: 'set' }, - { title: 'Unset (to HashZero)', value: 'unset' }, - ], - }); - let commitment, commitmentBytes32; - if (response['set-unset'] === 'unset') { - commitment = ethers.constants.HashZero; - commitmentBytes32 = ethers.constants.HashZero; - } else if (response['set-unset'] === 'set') { - // lets make the commitment a UNIX timestamp in seconds - commitment = Math.floor(Date.now() / 1000); - // Convert the number to a string and then to bytes32 - commitmentBytes32 = ethers.utils.formatBytes32String( - commitment.toString() - ); + if (timestamp) { + commitment = timestamp; } else { - console.log('No action taken'); - return; + const response = await prompts({ + type: 'select', + name: 'set-unset', + message: 'Do you want to set or unset the TSS commitment?', + choices: [ + { title: 'Set (to Timestamp)', value: 'set' }, + { title: 'Unset (to HashZero)', value: 'unset' }, + ], + }); + + if (response['set-unset'] === 'unset') { + commitment = ethers.constants.HashZero; + commitmentBytes32 = ethers.constants.HashZero; + } else if (response['set-unset'] === 'set') { + // lets make the commitment a UNIX timestamp in seconds + commitment = Math.floor(Date.now() / 1000); + // Convert the number to a string and then to bytes32 + commitmentBytes32 = ethers.utils.formatBytes32String( + commitment.toString() + ); + } else { + console.log('No action taken'); + return; + } } console.log('Commitment: ', commitment.toString()); @@ -64,5 +68,6 @@ async function setTSSCommitment() { module.exports = setTSSCommitment; if (require.main === module) { - setTSSCommitment().catch(console.error); + const timestamp = process.argv[2]; + setTSSCommitment(timestamp).catch(console.error); } diff --git a/scripts/51_deploy-V1.js b/scripts/51_deploy-V1.js deleted file mode 100644 index 95154dc..0000000 --- a/scripts/51_deploy-V1.js +++ /dev/null @@ -1,489 +0,0 @@ -require('dotenv').config(); -const hardhat = require('hardhat'); -const chalk = require('chalk'); -const prompts = require('prompts'); -const { - saveDeploymentInfo, - deploymentInfo, - loadDeploymentInfo, -} = require('./helpers/deployment-handlers_versioned'); -const chainlinkPricefeedAddresses = require('./helpers/chainlink-pricefeed-addresses'); - -// DEPRECATED -module.exports = async function deployV1(version) { - console.log(chalk.red('DEPRECATED: Please use contract-admin instead')); - return; - const network = hardhat.network.name; - const response = await prompts({ - type: 'confirm', - name: 'continue', - message: `You are about to deploy ${version} contracts to ${network}. Continue?`, - initial: false, - }); - if (!response.continue) { - return; - } - - let CLpricefeed = chainlinkPricefeedAddresses[network]; - const accounts = await hardhat.ethers.getSigners(); - const admin = accounts[0]; - const usdcDeployer = accounts[1]; - const protocol = accounts[2]; - - const contractSelectPrompt = await prompts({ - type: 'multiselect', - name: 'contracts', - message: `Select contracts to deploy to ${network}`, - choices: [ - { - title: `AttestorManager | deployer: ${admin.address}`, - value: 'AttestorManager', - }, - - { - title: `DLCManager | deployer: ${admin.address}`, - value: 'DLCManager', - }, - { - title: `MockProtocol | deployer: ${protocol.address}`, - value: 'MockProtocol', - }, - { - title: `USDC | deployer: ${usdcDeployer.address}`, - value: 'USDC', - }, - { - title: `LendingContract | deployer: ${protocol.address}`, - value: 'LendingContract', - }, - { - title: `BtcNft | deployer: ${admin.address}`, - value: 'BtcNft', - }, - { - title: `DLCBTCExample | deployer: ${admin.address}`, - value: 'DLCBTCExample', - }, - { - title: `DlcRouter | deployer: ${protocol.address}`, - value: 'DlcRouter', - }, - { - title: `DepositDemo | deployer: ${protocol.address}`, - value: 'DepositDemo', - }, - { - title: `USDCBorrowVault | deployer: ${protocol.address}`, - value: 'USDCBorrowVault', - }, - ], - min: 0, - max: 12, - }); - - console.log('Deploying contracts...', ...contractSelectPrompt.contracts); - - await hardhat.run('compile'); - - if (contractSelectPrompt.contracts.includes('AttestorManager')) { - console.log(`Deploying AttestorManager to ${network}...`); - const AttestorManager = - await hardhat.ethers.getContractFactory('AttestorManager'); - const attestorManager = await AttestorManager.deploy(); - await attestorManager.deployed(); - console.log( - `deployed contract AttestorManager to ${attestorManager.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, attestorManager, 'AttestorManager'), - version - ); - } - - if (contractSelectPrompt.contracts.includes('DLCManager')) { - if (!contractSelectPrompt.contracts.includes('AttestorManager')) - console.warn('Using earlier AttestorManager deployment...'); - - const attestorManagerAddress = ( - await loadDeploymentInfo(network, 'AttestorManager', version) - ).contract.address; - - console.log(`deploying contract DLCManager to network "${network}"...`); - const DLCManager = - await hardhat.ethers.getContractFactory('DLCManagerV1'); - const dlcManager = await DLCManager.deploy( - admin.address, - attestorManagerAddress - ); - await dlcManager.deployed(); - console.log( - `deployed contract DLCManager to ${dlcManager.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, dlcManager, 'DlcManager'), - version - ); - } - - if (contractSelectPrompt.contracts.includes('MockProtocol')) { - const dlcManagerAddress = ( - await loadDeploymentInfo(network, 'DlcManager', version) - ).contract.address; - console.log( - `deploying contract MockProcotol to network "${network}"...` - ); - const MockProtocol = - await hardhat.ethers.getContractFactory('MockProtocol'); - - const mockProtocol = await MockProtocol.connect(protocol).deploy( - dlcManagerAddress, - protocol.address - ); - await mockProtocol.deployed(); - console.log( - `deployed contract MockProtocol to ${mockProtocol.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, mockProtocol, 'MockProtocol'), - version - ); - } - - /////////////// Lending Demo /////////////// - // USDC contract deployment - - if (contractSelectPrompt.contracts.includes('USDC')) { - console.log( - `deploying contract for token USDStableCoinForDLCs (USDC) to network "${network}"...` - ); - const USDC = await hardhat.ethers.getContractFactory( - 'USDStableCoinForDLCs' - ); - const usdc = await USDC.connect(usdcDeployer).deploy(); - await usdc.deployed(); - console.log( - `deployed contract for token USDStableCoinForDLCs (USDC) to ${usdc.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, usdc, 'USDC'), - version - ); - } - - if (contractSelectPrompt.contracts.includes('LendingContract')) { - const dlcManagerDeployInfo = await loadDeploymentInfo( - network, - 'DlcManager', - version - ); - const dlcManagerAddress = dlcManagerDeployInfo.contract.address; - const usdcAddress = (await loadDeploymentInfo(network, 'USDC', version)) - .contract.address; - - const usdc = await hardhat.ethers.getContractAt( - 'USDStableCoinForDLCs', - usdcAddress - ); - - if (network === 'localhost') { - console.log( - `deploying contract MockV3Aggregator to network "${network}"...` - ); - const MockV3Aggregator = - await hardhat.ethers.getContractFactory('MockV3Aggregator'); - const mockV3Aggregator = await MockV3Aggregator.deploy( - 8, - 2612647400000 - ); - await mockV3Aggregator.deployTransaction.wait(); - console.log( - `deployed contract MockV3Aggregator to ${mockV3Aggregator.address} (network: ${network})` - ); - CLpricefeed = mockV3Aggregator.address; - } - - console.log( - `deploying contract LendingContractV1 to network "${network}"...` - ); - const LendingDemo = - await hardhat.ethers.getContractFactory('LendingContractV1'); - const lendingDemo = await LendingDemo.connect(protocol).deploy( - dlcManagerAddress, - usdcAddress, - protocol.address, - CLpricefeed - ); - - await lendingDemo.deployed(); - console.log( - `deployed contract LendingContractV1 to ${lendingDemo.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, lendingDemo, 'LendingContract'), - version - ); - - console.log('Minting 10M USDC to LendingContract...'); - await usdc - .connect(usdcDeployer) - .mint( - lendingDemo.address, - hardhat.ethers.utils.parseUnits('10000000', 'ether') - ); - - console.log('Done'); - - console.log( - 'Adding WHITELISTED_CONTRACT and WHITELISTED_WALLET to DlcManager...' - ); - const dlcManager = new hardhat.ethers.Contract( - dlcManagerDeployInfo.contract.address, - dlcManagerDeployInfo.contract.abi, - admin - ); - - await dlcManager.grantRole( - hardhat.ethers.utils.id('WHITELISTED_CONTRACT'), - lendingDemo.address - ); - await dlcManager.grantRole( - hardhat.ethers.utils.id('WHITELISTED_WALLET'), - protocol.address - ); - - console.log('Done'); - } - - /////////////// BTC NFT Demo /////////////// - - if (contractSelectPrompt.contracts.includes('BtcNft')) { - console.log(`deploying contract BtcNft to network "${network}"...`); - const BtcNft = await hardhat.ethers.getContractFactory('BtcNft'); - const btcNft = await BtcNft.deploy(); - await btcNft.deployed(); - console.log( - `deployed contract BtcNft to ${btcNft.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, btcNft, 'BtcNft'), - version - ); - } - - // NOTE: this was renamed after creating the real DLCBTC contract - if (contractSelectPrompt.contracts.includes('DLCBTCExample')) { - console.log( - `deploying contract DLCBTCExample to network "${network}"...` - ); - const DLCBTCExample = - await hardhat.ethers.getContractFactory('DLCBTCExample'); - const dlcBtcExample = await DLCBTCExample.deploy(); - await dlcBtcExample.deployed(); - console.log( - `deployed contract DLCBTCExample to ${dlcBtcExample.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, dlcBtcExample, 'DLCBTCExample'), - version - ); - } - - if (contractSelectPrompt.contracts.includes('DlcRouter')) { - const dlcManagerDeployInfo = await loadDeploymentInfo( - network, - 'DlcManager', - version - ); - const btcNftAddress = ( - await loadDeploymentInfo(network, 'BtcNft', version) - ).contract.address; - const dlcBtcAddress = ( - await loadDeploymentInfo(network, 'DLCBTCExample', version) - ).contract.address; - const protocolAddress = protocol.address; - - console.log(`deploying contract DlcRouter to network "${network}"...`); - console.log(`Constructor params:`); - console.log( - `dlcManagerAddress: ${dlcManagerDeployInfo.contract.address}` - ); - console.log(`btcNftAddress: ${btcNftAddress}`); - console.log(`dlcBtcAddress: ${dlcBtcAddress}`); - console.log(`protocolAddress: ${protocolAddress}`); - const DlcRouter = await hardhat.ethers.getContractFactory('DlcRouter'); - const dlcRouter = await DlcRouter.connect(protocol).deploy( - dlcManagerDeployInfo.contract.address, - btcNftAddress, - dlcBtcAddress, - protocolAddress - ); - await dlcRouter.deployed(); - console.log( - `deployed contract DlcRouter to ${dlcRouter.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, dlcRouter, 'DlcRouter'), - version - ); - - const btcnft = await hardhat.ethers.getContractAt( - 'BtcNft', - btcNftAddress - ); - - console.log('Adding MINTER_ROLE to DlcRouter on BtcNft...'); - await btcnft - .connect(admin) - .grantRole( - hardhat.ethers.utils.id('MINTER_ROLE'), - dlcRouter.address - ); - - console.log( - 'Adding WHITELISTED_CONTRACT and WHITELISTED_WALLET to DlcManager...' - ); - const dlcManager = new hardhat.ethers.Contract( - dlcManagerDeployInfo.contract.address, - dlcManagerDeployInfo.contract.abi, - admin - ); - - await dlcManager.grantRole( - hardhat.ethers.utils.id('WHITELISTED_CONTRACT'), - dlcRouter.address - ); - await dlcManager.grantRole( - hardhat.ethers.utils.id('WHITELISTED_WALLET'), - protocolAddress - ); - } - - /////////////// Deposit Demo /////////////// - - if (contractSelectPrompt.contracts.includes('DepositDemo')) { - let dlcManagerDeployInfo, dlcBtcAddress, protocolAddress; - try { - dlcManagerDeployInfo = await loadDeploymentInfo( - network, - 'DlcManager', - version - ); - dlcBtcAddress = ( - await loadDeploymentInfo(network, 'DLCBTCExample', version) - ).contract.address; - } catch (error) { - console.error( - 'Error: Missing dependencies. Please deploy DLCManager and DLCBTCExample first.' - ); - console.error(error); - return; - } - protocolAddress = protocol.address; - - console.log( - `deploying contract DepositDemo to network "${network}"...` - ); - console.log(`Constructor params:`); - console.log( - `dlcManagerAddress: ${dlcManagerDeployInfo.contract.address}` - ); - console.log(`dlcBtcAddress: ${dlcBtcAddress}`); - console.log(`protocolAddress: ${protocolAddress}`); - const DepositDemo = - await hardhat.ethers.getContractFactory('DepositDemo'); - const depositDemo = await DepositDemo.connect(protocol).deploy( - dlcManagerDeployInfo.contract.address, - dlcBtcAddress, - protocolAddress - ); - await depositDemo.deployed(); - console.log( - `deployed contract DepositDemo to ${depositDemo.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, depositDemo, 'DepositDemo'), - version - ); - - console.log( - 'Adding WHITELISTED_CONTRACT and WHITELISTED_WALLET to DlcManager...' - ); - const dlcManager = new hardhat.ethers.Contract( - dlcManagerDeployInfo.contract.address, - dlcManagerDeployInfo.contract.abi, - admin - ); - - await dlcManager.grantRole( - hardhat.ethers.utils.id('WHITELISTED_CONTRACT'), - depositDemo.address - ); - await dlcManager.grantRole( - hardhat.ethers.utils.id('WHITELISTED_WALLET'), - protocolAddress - ); - } - - if (contractSelectPrompt.contracts.includes('USDCBorrowVault')) { - const dlcBtcAddress = ( - await loadDeploymentInfo(network, 'DLCBTCExample', version) - ).contract.address; - - const usdcAddress = (await loadDeploymentInfo(network, 'USDC', version)) - .contract.address; - - const usdc = await hardhat.ethers.getContractAt( - 'USDStableCoinForDLCs', - usdcAddress - ); - - if (network === 'localhost') { - console.log( - `deploying contract MockV3Aggregator to network "${network}"...` - ); - const MockV3Aggregator = - await hardhat.ethers.getContractFactory('MockV3Aggregator'); - const mockV3Aggregator = await MockV3Aggregator.deploy( - 8, - 2612647400000 - ); - await mockV3Aggregator.deployTransaction.wait(); - console.log( - `deployed contract MockV3Aggregator to ${mockV3Aggregator.address} (network: ${network})` - ); - CLpricefeed = mockV3Aggregator.address; - } - - console.log( - `deploying contract USDCBorrowVault to network "${network}"...` - ); - const USDCBorrowVault = - await hardhat.ethers.getContractFactory('USDCBorrowVault'); - const usdcBorrowVault = await USDCBorrowVault.connect(protocol).deploy( - dlcBtcAddress, - 'vaultDLCBTC', - 'vDLCBTC', - usdcAddress, - CLpricefeed - ); - - await usdcBorrowVault.deployed(); - console.log( - `deployed contract USDCBorrowVault to ${usdcBorrowVault.address} (network: ${network})` - ); - await saveDeploymentInfo( - deploymentInfo(hardhat, usdcBorrowVault, 'USDCBorrowVault'), - version - ); - - console.log('Minting 10M USDC to USDCBorrowVault...'); - await usdc - .connect(usdcDeployer) - .mint( - usdcBorrowVault.address, - hardhat.ethers.utils.parseUnits('10000000', 'ether') - ); - - console.log('Done'); - } -}; diff --git a/scripts/helpers/utils.js b/scripts/helpers/utils.js index 247e3dd..5947327 100644 --- a/scripts/helpers/utils.js +++ b/scripts/helpers/utils.js @@ -1,7 +1,11 @@ +require('dotenv').config(); const prompts = require('prompts'); const { loadDeploymentInfo } = require('./deployment-handlers_versioned'); async function promptUser(message) { + if (process.env.CLI_MODE === 'noninteractive') { + return true; + } const response = await prompts({ type: 'confirm', name: 'continue', diff --git a/scripts/index.js b/scripts/index.js index c63b51b..5105979 100755 --- a/scripts/index.js +++ b/scripts/index.js @@ -135,6 +135,7 @@ async function main() { program .command('set-tss-commitment') .description('[admin] set TSS commitment') + .argument('[timestamp]', 'timestamp to set') .action(setTSSCommitment); program diff --git a/scripts/tasks.js b/scripts/tasks.js deleted file mode 100644 index 3d9e286..0000000 --- a/scripts/tasks.js +++ /dev/null @@ -1,5 +0,0 @@ -// lets import and re-export tasks from other files - -const { task } = require('hardhat/config'); - -require('./12_setup-vault'); From 6e4cb7dadaa31093cda33f4281d443a2c935e044 Mon Sep 17 00:00:00 2001 From: scolear Date: Wed, 29 May 2024 14:00:06 +0200 Subject: [PATCH 25/27] 2.4.3-dev --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4463555..a40ea72 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dlc-link-eth", - "version": "2.4.2-dev", + "version": "2.4.3-dev", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dlc-link-eth", - "version": "2.4.2-dev", + "version": "2.4.3-dev", "license": "ISC", "dependencies": { "@chainlink/contracts": "^0.6.1", diff --git a/package.json b/package.json index 205cc07..8c058ae 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dlc-link-eth", - "version": "2.4.2-dev", + "version": "2.4.3-dev", "main": "scripts/index.js", "directories": { "test": "test" From 299ee46af3cdc226bf3392af84596bb211eb06a6 Mon Sep 17 00:00:00 2001 From: scolear Date: Thu, 30 May 2024 15:39:18 +0200 Subject: [PATCH 26/27] update ghwf --- .github/workflows/docker-build-and-push.yaml | 7 +- docker/entrypoint.sh | 3 +- docker/scripts/check-service.sh | 2 +- docker/scripts/deploy-all.js | 1 - package-lock.json | 273 ++++++++----------- 5 files changed, 125 insertions(+), 161 deletions(-) diff --git a/.github/workflows/docker-build-and-push.yaml b/.github/workflows/docker-build-and-push.yaml index 60c7548..49cd247 100644 --- a/.github/workflows/docker-build-and-push.yaml +++ b/.github/workflows/docker-build-and-push.yaml @@ -45,15 +45,20 @@ jobs: uses: aws-actions/amazon-ecr-login@v2 with: registry-type: public + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 - name: Set outputs id: vars run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT - name: Build and push Docker image env: + ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} ECR_PUBLIC_REGISTRY: ${{ steps.login-ecr-public.outputs.registry }} REGISTRY_ALIAS: dlc-link ECR_REPOSITORY: dlc-solidity IMAGE_TAG: ${{ github.ref_name }} run: | - docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG . + docker build -t $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG . docker push $ECR_PUBLIC_REGISTRY/$REGISTRY_ALIAS/$ECR_REPOSITORY:$IMAGE_TAG + docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index 17aae7c..a714892 100644 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -13,7 +13,8 @@ done CLI_MODE='noninteractive' npx hardhat run --network localhost docker/scripts/deploy-all.js # push the message "Deployment Complete" into the log file -echo "Deployment Complete" >>hardhat.log +# NOTE: This is important! It's how the health check finishes +echo "Startup Complete" >>hardhat.log # Keep the script running so the Docker container doesn't exit tail -f hardhat.log diff --git a/docker/scripts/check-service.sh b/docker/scripts/check-service.sh index 2098a0f..3a9097e 100644 --- a/docker/scripts/check-service.sh +++ b/docker/scripts/check-service.sh @@ -1,5 +1,5 @@ #!/bin/sh -if grep -q "Deployment Complete" hardhat.log; then +if grep -q "Startup Complete" hardhat.log; then exit 0 else exit 1 diff --git a/docker/scripts/deploy-all.js b/docker/scripts/deploy-all.js index 208e90f..3c84986 100644 --- a/docker/scripts/deploy-all.js +++ b/docker/scripts/deploy-all.js @@ -1,5 +1,4 @@ require('dotenv').config(); -const prompts = require('prompts'); const hardhat = require('hardhat'); const getContractConfigs = require('../../scripts/99_contract-configs'); const dlcAdminSafesConfigs = require('../../scripts/helpers/dlc-admin-safes'); diff --git a/package-lock.json b/package-lock.json index a40ea72..cc49f68 100644 --- a/package-lock.json +++ b/package-lock.json @@ -76,12 +76,12 @@ } }, "node_modules/@aws-sdk/types": { - "version": "3.567.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.567.0.tgz", - "integrity": "sha512-JBznu45cdgQb8+T/Zab7WpBmfEAh77gsk99xuF4biIb2Sw1mdseONdoGDjEJX57a25TzIv/WUJ2oABWumckz1A==", + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", "dev": true, "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { @@ -110,12 +110,12 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.6.tgz", + "integrity": "sha512-ZJhac6FkEd1yhG2AHOmfcXG4ceoLltoCVJjN5XsWN9BifBQr+cHJbWi0h68HZuSORq+3WtJ2z0hwF2NG1b5kcA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/highlight": "^7.24.6", "picocolors": "^1.0.0" }, "engines": { @@ -123,21 +123,21 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.6.tgz", + "integrity": "sha512-4yA7s865JHaqUdRbnaxarZREuPTHrjpDT+pXoAZ1yhyo6uFnIEpS8VMu16siFOHDpZNKYv5BObhsB//ycbICyw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.6.tgz", + "integrity": "sha512-2YnuOp4HAk2BsBrJJvYCbItHx0zWscI1C3zgWkz+wDyD9I7GIVrfnLyrR4Y1VR+7p+chAEcrgRQYZAGIKMV7vQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.6", "chalk": "^2.4.2", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" @@ -1177,131 +1177,82 @@ } }, "node_modules/@nomicfoundation/edr": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.7.tgz", - "integrity": "sha512-v2JFWnFKRsnOa6PDUrD+sr8amcdhxnG/YbL7LzmgRGU1odWEyOF4/EwNeUajQr4ZNKVWrYnJ6XjydXtUge5OBQ==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.8.tgz", + "integrity": "sha512-u2UJ5QpznSHVkZRh6ePWoeVb6kmPrrqh08gCnZ9FHlJV9CITqlrTQHJkacd+INH31jx88pTAJnxePE4XAiH5qg==", "dev": true, + "dependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.3.8", + "@nomicfoundation/edr-darwin-x64": "0.3.8", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.8", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.8", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.8", + "@nomicfoundation/edr-linux-x64-musl": "0.3.8", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.8" + }, "engines": { "node": ">= 18" - }, - "optionalDependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.3.7", - "@nomicfoundation/edr-darwin-x64": "0.3.7", - "@nomicfoundation/edr-linux-arm64-gnu": "0.3.7", - "@nomicfoundation/edr-linux-arm64-musl": "0.3.7", - "@nomicfoundation/edr-linux-x64-gnu": "0.3.7", - "@nomicfoundation/edr-linux-x64-musl": "0.3.7", - "@nomicfoundation/edr-win32-x64-msvc": "0.3.7" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.7.tgz", - "integrity": "sha512-6tK9Lv/lSfyBvpEQ4nsTfgxyDT1y1Uv/x8Wa+aB+E8qGo3ToexQ1BMVjxJk6PChXCDOWxB3B4KhqaZFjdhl3Ow==", - "cpu": [ - "arm64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.8.tgz", + "integrity": "sha512-eB0leCexS8sQEmfyD72cdvLj9djkBzQGP4wSQw6SNf2I4Sw4Cnzb3d45caG2FqFFjbvfqL0t+badUUIceqQuMw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.7.tgz", - "integrity": "sha512-1RrQ/1JPwxrYO69e0tglFv5H+ggour5Ii3bb727+yBpBShrxtOTQ7fZyfxA5h62LCN+0Z9wYOPeQ7XFcVurMaQ==", - "cpu": [ - "x64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.8.tgz", + "integrity": "sha512-JksVCS1N5ClwVF14EvO25HCQ+Laljh/KRfHERMVAC9ZwPbTuAd/9BtKvToCBi29uCHWqsXMI4lxCApYQv2nznw==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.7.tgz", - "integrity": "sha512-ds/CKlBoVXIihjhflhgPn13EdKWed6r5bgvMs/YwRqT5wldQAQJZWAfA2+nYm0Yi2gMGh1RUpBcfkyl4pq7G+g==", - "cpu": [ - "arm64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.8.tgz", + "integrity": "sha512-raCE+fOeNXhVBLUo87cgsHSGvYYRB6arih4eG6B9KGACWK5Veebtm9xtKeiD8YCsdUlUfat6F7ibpeNm91fpsA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.7.tgz", - "integrity": "sha512-e29udiRaPujhLkM3+R6ju7QISrcyOqpcaxb2FsDWBkuD7H8uU9JPZEyyUIpEp5uIY0Jh1eEJPKZKIXQmQAEAuw==", - "cpu": [ - "arm64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.8.tgz", + "integrity": "sha512-PwiDp4wBZWMCIy29eKkv8moTKRrpiSDlrc+GQMSZLhOAm8T33JKKXPwD/2EbplbhCygJDGXZdtEKl9x9PaH66A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.7.tgz", - "integrity": "sha512-/xkjmTyv+bbJ4akBCW0qzFKxPOV4AqLOmqurov+s9umHb16oOv72osSa3SdzJED2gHDaKmpMITT4crxbar4Axg==", - "cpu": [ - "x64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.8.tgz", + "integrity": "sha512-6AcvA/XKoipGap5jJmQ9Y6yT7Uf39D9lu2hBcDCXnXbMcXaDGw4mn1/L4R63D+9VGZyu1PqlcJixCUZlGGIWlg==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.7.tgz", - "integrity": "sha512-QwBP9xlmsbf/ldZDGLcE4QiAb8Zt46E/+WLpxHBATFhGa7MrpJh6Zse+h2VlrT/SYLPbh2cpHgSmoSlqVxWG9g==", - "cpu": [ - "x64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.8.tgz", + "integrity": "sha512-cxb0sEmZjlwhYWO28sPsV64VDx31ekskhC1IsDXU1p9ntjHSJRmW4KEIqJ2O3QwJap/kLKfMS6TckvY10gjc6w==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.7.tgz", - "integrity": "sha512-j/80DEnkxrF2ewdbk/gQ2EOPvgF0XSsg8D0o4+6cKhUVAW6XwtWKzIphNL6dyD2YaWEPgIrNvqiJK/aln0ww4Q==", - "cpu": [ - "x64" - ], + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.8.tgz", + "integrity": "sha512-yVuVPqRRNLZk7TbBMkKw7lzCvI8XO8fNTPTYxymGadjr9rEGRuNTU1yBXjfJ59I1jJU/X2TSkRk1OFX0P5tpZQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { "node": ">= 18" } @@ -1430,9 +1381,9 @@ } }, "node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.6.tgz", - "integrity": "sha512-oKUI5fl8QC8jysE2LUBHE6rObzEmccJcc4b43Ov7LFMlCBZJE27qoqGIsg/++wX7L8Jdga+bkejPxl8NvsecpQ==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.7.tgz", + "integrity": "sha512-jiYHBX+K6bBN0YhwFHQ5SWWc3dQZliM3pdgpH33C7tnsVACsX1ubZn6gZ9hfwlzG0tyjFM72XQhpaXQ56cE6Ew==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", @@ -1805,9 +1756,9 @@ } }, "node_modules/@nomiclabs/hardhat-solhint": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-3.0.1.tgz", - "integrity": "sha512-GqDoStxL1aA9hZul9HRdk+3eEZ/XLBwvIlz3/EJUusUsoadNYEnio9aYOsBeNeZWo+B/Fd3EgMXgbf9wWQLyRA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-solhint/-/hardhat-solhint-3.1.0.tgz", + "integrity": "sha512-5jNiYwLuiHZ2B11Ds4U5jH+DR565PqpsdbXml6iYfqMguyJb+ulU2rt58+hprNhoFKZds8cOlf9FaoWvA9KqkA==", "dev": true, "dependencies": { "solhint": "^3.4.0" @@ -1833,9 +1784,9 @@ "integrity": "sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==" }, "node_modules/@openzeppelin/defender-base-client": { - "version": "1.54.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.54.1.tgz", - "integrity": "sha512-DRGz/7KN3ZQwu28YWMOaojrC7jjPkz/uCwkC8/C8B11qwZhA5qIVvyhYHhhFOCl0J84+E3TNdvkPD2q3p2WaJw==", + "version": "1.54.6", + "resolved": "https://registry.npmjs.org/@openzeppelin/defender-base-client/-/defender-base-client-1.54.6.tgz", + "integrity": "sha512-PTef+rMxkM5VQ7sLwLKSjp2DBakYQd661ZJiSRywx+q/nIpm3B/HYGcz5wPZCA5O/QcEP6TatXXDoeMwimbcnw==", "dev": true, "dependencies": { "amazon-cognito-identity-js": "^6.0.1", @@ -1990,9 +1941,9 @@ } }, "node_modules/@safe-global/safe-deployments": { - "version": "1.35.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.35.0.tgz", - "integrity": "sha512-Of8WQEcvL5Fm+xxnCDjah6Hkw+sNdzcApQnzr+OsPBxYtZL0RRtbmesypj36oOD8BQmyrH54V8DVN+pYjrfJ9g==", + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.36.0.tgz", + "integrity": "sha512-9MbDJveRR64AbmzjIpuUqmDBDtOZpXpvkyhTUs+5UOPT3WgSO375/ZTO7hZpywP7+EmxnjkGc9EoxjGcC4TAyw==", "dependencies": { "semver": "^7.6.0" } @@ -2177,15 +2128,15 @@ } }, "node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", "dev": true, "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/types/node_modules/tslib": { @@ -2405,9 +2356,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.12.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.11.tgz", - "integrity": "sha512-vDg9PZ/zi+Nqp6boSOT7plNuthRugEKixDv5sFTIpkE89MmNtEArAShI4mxuX2+UrLEe9pxC1vm2cjm9YlWbJw==", + "version": "20.12.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.13.tgz", + "integrity": "sha512-gBGeanV41c1L171rR7wjbMiEpEI/l5XFQdLLfhr/REwpgDy/4U8y89+i8kRiLzDyZdOkXh+cRaTetUnCYutoXA==", "dependencies": { "undici-types": "~5.26.4" } @@ -2870,14 +2821,14 @@ } }, "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", + "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==" }, "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dev": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -3066,12 +3017,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -3295,15 +3246,15 @@ } }, "node_modules/chai-as-promised": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.1.tgz", - "integrity": "sha512-azL6xMoi+uxu6z4rhWQ1jbdUhOMhis2PvscD/xjLqNMkv3BPPp2JyyuTHOrf9BOosGpNQ11v6BKv/g57RXbiaA==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, "dependencies": { "check-error": "^1.0.2" }, "peerDependencies": { - "chai": ">= 2.1.2 < 5" + "chai": ">= 2.1.2 < 6" } }, "node_modules/chalk": { @@ -3711,9 +3662,9 @@ } }, "node_modules/commander": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.0.0.tgz", - "integrity": "sha512-MwVNWlYjDTtOjX5PiD7o5pK0UrFU/OYgcJfjjK4RaHZETNtjJqrZa9Y9ds88+A+f+d5lv+561eZ+yCKoS3gbAA==", + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "engines": { "node": ">=18" } @@ -5044,9 +4995,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -5448,6 +5399,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -5640,14 +5592,14 @@ } }, "node_modules/hardhat": { - "version": "2.22.3", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.3.tgz", - "integrity": "sha512-k8JV2ECWNchD6ahkg2BR5wKVxY0OiKot7fuxiIpRK0frRqyOljcR2vKwgWSLw6YIeDcNNA4xybj7Og7NSxr2hA==", + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.4.tgz", + "integrity": "sha512-09qcXJFBHQUaraJkYNr7XlmwjOj27xBB0SL2rYS024hTj9tPMbp26AFjlf5quBMO9SR4AJFg+4qWahcYcvXBuQ==", "dev": true, "dependencies": { "@ethersproject/abi": "^5.1.2", "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/edr": "^0.3.5", + "@nomicfoundation/edr": "^0.3.7", "@nomicfoundation/ethereumjs-common": "4.0.4", "@nomicfoundation/ethereumjs-tx": "5.0.4", "@nomicfoundation/ethereumjs-util": "9.0.4", @@ -6141,9 +6093,9 @@ } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", "dev": true }, "node_modules/import-fresh": { @@ -6184,6 +6136,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -6897,12 +6850,12 @@ "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==" }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -7134,6 +7087,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -7747,9 +7701,9 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -8298,6 +8252,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -8452,6 +8407,7 @@ "version": "5.0.15", "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "integrity": "sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "inflight": "^1.0.4", @@ -8955,6 +8911,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -9043,6 +9000,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -9692,9 +9650,9 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.14.0.tgz", + "integrity": "sha512-oYs1UUtO97ZO2lJ4bwnWeQW8/zvOIQLGKcvPTsWmvc2SYgBb+upuNS5NxoLaMU4h8Ju3Nbj6Cq8mD2LQoqVKFA==", "dev": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -10026,6 +9984,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -10734,13 +10693,13 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", "dependencies": { "bufferutil": "^4.0.1", "debug": "^2.2.0", - "es5-ext": "^0.10.50", + "es5-ext": "^0.10.63", "typedarray-to-buffer": "^3.1.5", "utf-8-validate": "^5.0.2", "yaeti": "^0.0.6" From 5617e542ae88fbe62ce26a8e04a2e97fd6764fa4 Mon Sep 17 00:00:00 2001 From: scolear Date: Thu, 30 May 2024 15:40:09 +0200 Subject: [PATCH 27/27] 2.4.3 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc49f68..3aeb8ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dlc-link-eth", - "version": "2.4.3-dev", + "version": "2.4.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dlc-link-eth", - "version": "2.4.3-dev", + "version": "2.4.3", "license": "ISC", "dependencies": { "@chainlink/contracts": "^0.6.1", diff --git a/package.json b/package.json index 8c058ae..ccae954 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dlc-link-eth", - "version": "2.4.3-dev", + "version": "2.4.3", "main": "scripts/index.js", "directories": { "test": "test"